@odoo/o-spreadsheet 18.2.17 → 18.2.18

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.
@@ -1,4 +1,4 @@
1
- !function(e,t){"use strict";function o(e){return e.map(i).sort(((e,t)=>e.sequence-t.sequence))}let s=1;function i(e){const t=e.name,o=e.children,n=e.description,r=e.icon,a=e.secondaryIcon;return{id:(e.id||s++).toString(),name:"function"==typeof t?t:()=>t,isVisible:e.isVisible?e.isVisible:()=>!0,isEnabled:e.isEnabled?e.isEnabled:()=>!0,isActive:e.isActive,execute:e.execute,children:o?e=>o.map((t=>"function"==typeof t?t(e):t)).flat().map(i):()=>[],isReadonlyAllowed:e.isReadonlyAllowed||!1,separator:e.separator||!1,icon:"function"==typeof r?r:()=>r||"",iconColor:e.iconColor,secondaryIcon:"function"==typeof a?a:()=>a||"",description:"function"==typeof n?n:()=>n||"",textColor:e.textColor,sequence:e.sequence||0,onStartHover:e.onStartHover,onStopHover:e.onStopHover}}class n{content={};add(e,t){return this.content[e]=t,this}get(e){const t=this.content[e];if(!t&&!(e in this.content))throw new Error(`Cannot find ${e} in this registry!`);return t}contains(e){return e in this.content}getAll(){return Object.values(this.content)}getKeys(){return Object.keys(this.content)}remove(e){delete this.content[e]}}const r=.5,a="#37A850",l="#f5f5f5",c="#F8F9FA",h="#E8EAED",d="#595959",u="#666666",g="#c9ccd2",p="#3266ca",m="#FFFFFF",f="#CACACA",v=11982760,b="#017E84",S="#188038",y="#E0E2E4",C="#4A4F59",w="#999",x="#E2E3E3",I="#BCBCBC",E="#9B359B",R="#4EA7F2",T="#EA6175",A="#AAAAAA",_="#111827",D="#D8DADD",O="#E7E9ED",F="#F9FAFB",M="#374151",P=M+"C2",N="#111827",k="#714B67",V=O,L=D,H="#111827",U="#e6f2f3",B="#111827",z="#017E84",$="#D44C591A",G="#C34A41",W="#98DBE2",q="#E6F2F3",Z=20,j=10,Y=15,X=16,K=12,J="#F28C28",Q=["#000000","#434343","#666666","#999999","#B7B7B7","#CCCCCC","#D9D9D9","#EFEFEF","#F3F3F3","#FFFFFF","#980000","#FF0000","#FF9900","#FFFF00","#00FF00","#00FFFF","#4A86E8","#0000FF","#9900FF","#FF00FF","#E6B8AF","#F4CCCC","#FCE5CD","#FFF2CC","#D9EAD3","#D0E0E3","#C9DAF8","#CFE2F3","#D9D2E9","#EAD1DC","#DD7E6B","#EA9999","#F9CB9C","#FFE599","#B6D7A8","#A2C4C9","#A4C2F4","#9FC5E8","#B4A7D6","#D5A6BD","#CC4125","#E06666","#F6B26B","#FFD966","#93C47D","#76A5AF","#6D9EEB","#6FA8DC","#8E7CC3","#C27BA0","#A61C00","#CC0000","#E69138","#F1C232","#6AA84F","#45818E","#3C78D8","#3D85C6","#674EA7","#A64D79","#85200C","#990000","#B45F06","#BF9000","#38761D","#134F5C","#1155CC","#0B5394","#351C75","#741B47","#5B0F00","#660000","#783F04","#7F6000","#274E13","#0C343D","#1C4587","#073763","#20124D","#4C1130"],ee=26,te=48,oe=96,se=23,ie=15,ne=4,re=3,ae=ne,le=21,ce=17,he=2*se,de=250,ue={align:"left",verticalAlign:"bottom",wrapping:"overflow",bold:!1,italic:!1,strikethrough:!1,underline:!1,fontSize:10,fillColor:"",textColor:""},ge=ue.verticalAlign,pe=ue.wrapping,me="400",fe=ue.fontSize,ve="'Roboto', arial",be="thin",Se="#000000",ye="START_REVISION",Ce=1,we=20,xe="??",Ie="difference",Ee="#43C5B1",Re="#EA6175",Te=.4,Ae=2,_e=["'","*","?","/","\\","[","]"],De=/'|\*|\?|\/|\\|\[|\]/,Oe="|";var Fe;!function(e){e[e.Grid=0]="Grid",e[e.Highlight=5]="Highlight",e[e.HeaderGroupingButton=6]="HeaderGroupingButton",e[e.Figure=10]="Figure",e[e.ScrollBar=15]="ScrollBar",e[e.GridPopover=19]="GridPopover",e[e.GridComposer=20]="GridComposer",e[e.Dropdown=21]="Dropdown",e[e.IconPicker=25]="IconPicker",e[e.TopBarComposer=30]="TopBarComposer",e[e.Popover=35]="Popover",e[e.FigureAnchor=1e3]="FigureAnchor",e[e.FigureSnapLine=1001]="FigureSnapLine",e[e.FigureTooltip=1002]="FigureTooltip"}(Fe||(Fe={}));let Me=0;function Pe(){return Me}const Ne="\n",ke=[6,7,8,9,10,11,12,14,18,24,36],Ve={hasFilters:!1,totalRow:!1,firstColumn:!0,lastColumn:!1,numberOfHeaders:1,bandedRows:!0,bandedColumns:!1,styleId:"TableStyleMedium5",automaticAutofill:!1},Le={symbol:"$",position:"before",decimalPlaces:2,code:"",name:"Dollar"},He=new RegExp(De,"g");function Ue(e){return'"'===e[0]&&(e=e.slice(1)),'"'===e[e.length-1]&&"\\"!==e[e.length-2]?e.slice(0,e.length-1):e}function Be(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ze(e){switch(typeof e){case"object":{if(null===e)return e;if(function(e){return"clone"in e&&e.clone instanceof Function}(e))return e.clone();if(!(function(e){return"object"==typeof e&&null!==e&&(e?.constructor===Object||void 0===e?.constructor)}(e)||e instanceof Array))throw new Error("Unsupported type: only objects and arrays are supported");const t=Array.isArray(e)?new Array(e.length):{};if(Array.isArray(e))for(let o=0,s=e.length;o<s;o++)o in e&&(t[o]=ze(e[o]));else for(const o in e)t[o]=ze(e[o]);return t}case"number":case"string":case"boolean":case"function":case"undefined":return e;default:throw new Error("Unsupported type: "+typeof e)}}function $e(e){return Ge(e,"'")}function Ge(e,t='"'){return e.startsWith(t)&&(e=e.slice(1)),e.endsWith(t)&&(e=e.slice(0,-1)),e}function We(e){return e.match(/\w/g)?.length!==e.length&&(e=`'${e}'`),e}function qe(e,t=" "){return e.replace(He,t)}function Ze(e,t,o){return e<t?t:e>o?o:e}function je(e,t,o=1){if(t<=e&&o>0)return[];if(0===o)throw new Error("range() step must not be zero");const s=Math.ceil(Math.abs((t-e)/o)),i=Array(s);for(let t=0;t<s;t++)i[t]=e+t*o;return i}function Ye(e){return e.reduce(((e,t,o,s)=>{if(1===Math.abs(t-s[o-1])){e[e.length-1].push(t)}else e.push([t]);return e}),[])}function*Xe(e,t){t.next();for(const o of e){const e=t.next();yield{...o,next:e.done?void 0:e.value}}}function Ke(e){const t=e.toUpperCase();return"TRUE"===t||"FALSE"===t}const Je=/^\[(.+)\]\((.+)\)$/,Qe=/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/;function et(e){return Je.test(e)}function tt(e){return Qe.test(e)}function ot(e,t){return`[${e}](${t})`}function st(e){const t=e.match(Je)||[],o=t[1],s=t[2];if(!o||!s)throw new Error(`Could not parse markdown link ${e}.`);return{label:o,url:s}}const it="o-spreadsheet://";function nt(e){return e.startsWith(it)}function rt(e){return`${it}${e}`}function at(e){if(e.startsWith(it))return e.slice(it.length);throw new Error(`${e} is not a valid sheet link`)}function lt(e){return void 0!==e}function ct(e){return null!==e}function ht(e){return void 0===e||Object.values(e).every((e=>"object"==typeof e?ht(e):!e))}function dt(e,t,o){let s;const i=function(){const i=this,n=Array.from(arguments);const r=o&&!s;clearTimeout(s),s=setTimeout((function(){s=void 0,o||e.apply(i,n)}),t),r&&e.apply(i,n)};return i.isDebouncePending=()=>void 0!==s,i.stopDebounce=()=>{clearTimeout(s)},i}function ut(e){let t="";for(let o=0,s=e.length;o<s;o++)t+=e[o];return t}function gt(e){let t,o=!1;const s=()=>(o||(t=e instanceof Function?e():e,o=!0),t);return s.map=e=>gt((()=>e(s()))),s}function pt(e,t){let o=e.slice(t).find((e=>e));return o||(o=e.slice(0,t).reverse().find((e=>e))),o||""}function mt(e,t){return"after"===e?t+1:t}function ft(e,t){if(e===t)return!0;if(e&&!t||t&&!e)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;for(const o in t)if(!(o in e)&&void 0!==t[o])return!1;for(const o in e){if(typeof e[o]!=typeof t[o])return!1;if("object"==typeof e[o]){if(!ft(e[o],t[o]))return!1}else if(e[o]!==t[o])return!1}return!0}function vt(e,t){if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++)if(!ft(e[o],t[o]))return!1;return!0}function bt(e,t){if(e.length<t.length)return!1;const o=new Set(e);return t.every((e=>o.has(e)))}function St(e){if(!e)return e;const t={...e};return Object.keys(t).forEach((e=>!t[e]&&delete t[e])),t}const yt=["\t","\f","\v",String.fromCharCode(parseInt("00a0",16)),String.fromCharCode(parseInt("1680",16)),String.fromCharCode(parseInt("2000",16)),String.fromCharCode(parseInt("200a",16)),String.fromCharCode(parseInt("2028",16)),String.fromCharCode(parseInt("2029",16)),String.fromCharCode(parseInt("202f",16)),String.fromCharCode(parseInt("205f",16)),String.fromCharCode(parseInt("3000",16)),String.fromCharCode(parseInt("feff",16))],Ct=new RegExp(yt.join("|"),"g"),wt=/(\r\n|\r)/g;function xt(e){return e?e.replace(wt,Ne):""}function It(e){const t=Array.from(e).sort(((e,t)=>e-t));for(let e=1;e<t.length;e++)if(t[e]-t[e-1]!=1)return!1;return!0}function Et(e){const t=new Map,o=e.name?e.name+" (memoized)":"memoized";return{[o]:(...o)=>(t.has(o[0])||t.set(o[0],e(...o)),t.get(o[0]))}[o]}function Rt(e,t){return e.filter(((e,o)=>!t.includes(o)))}function Tt(e,t,o){const s=[...e];return s.splice(o,0,...t),s}function At(e){return e.split("\n").map((e=>e.replace(/\s+/g," ").trim())).join("\n")}function _t(e,t,o){return t>o?_t(e,o,t):e>=t&&e<=o}function Dt(e,t){let o=Be(e);const s=t.matchCase?"":"i";return t.exactMatch&&(o=`^${o}$`),RegExp(o,s)}function Ot(e){let t=e.length;if(t<1e5)return Math.max(...e);let o=-1/0;for(;t--;)o=e[t]>o?e[t]:o;return o}function Ft(e){let t=e.length;if(t<1e5)return Math.min(...e);let o=1/0;for(;t--;)o=e[t]<o?e[t]:o;return o}class Mt{text;currentIndex=0;current;constructor(e){this.text=e,this.current=e[0]}shift(){const e=this.current,t=this.text[++this.currentIndex];return this.current=t,e}advanceBy(e){this.currentIndex+=e,this.current=this.text[this.currentIndex]}isOver(){return this.currentIndex>=this.text.length}remaining(){return this.text.substring(this.currentIndex)}currentStartsWith(e){if(this.current!==e[0])return!1;for(let t=1;t<e.length;t++)if(this.text[this.currentIndex+t]!==e[t])return!1;return!0}}function Pt(e,t=(e=>e)){const o=new Set;return e.filter((e=>{const s=t(e);return!o.has(s)&&(o.add(s),!0)}))}function Nt(e){const t={};for(const o in e)for(const s in e[o])t[s]||(t[s]={}),t[s][o]=e[o][s];return t}function kt(e,t,o={}){const s=o.compute??((e,t)=>`${e} (${t})`),i=o.computeFirstOne??!1;let n=o.start??1,r=i?s(e,n):e;for(;t.includes(r);)r=s(e,n++);return r}const Vt=/rgba?\(|\s+|\)/gi,Lt=/^#([A-F\d]{2}){3,4}$/,Ht=["#eb6d00","#0074d9","#ad8e00","#169ed4","#b10dc9","#00a82d","#00a3a3","#f012be","#3d9970","#111111","#62A300","#ff4136","#949494","#85144b","#001f3f"];function Ut(e){return zt(e.toString(16).padStart(6,"0"))}function Bt(e){return"number"==typeof e?e:Number.parseInt(zt(e).slice(1),16)}function zt(e){let t=e;if(e.startsWith("rgb")?t=function(e){const t=e.replace(Vt,"").split(",");let o=255;if(3!==t.length&&4!==t.length)throw new Error("invalid color");if(4===t.length){const e=parseFloat(t.pop()||"1");if(isNaN(e))throw new Error("invalid alpha value");o=Math.round(255*e)}const s=t.map((e=>parseInt(e,10)));255!==o&&s.push(o);return"#"+ut(s.map((e=>e.toString(16).padStart(2,"0")))).toUpperCase()}(e):(t=e.replace("#","").toUpperCase(),3!==t.length&&4!==t.length||(t=t.split("").reduce(((e,t)=>e+t+t),"")),t=`#${t}`),!Lt.test(t))throw new Error(`invalid color input: ${e}`);return t}function $t(e){try{return zt(e),!0}catch(e){return!1}}const Gt=e=>e>=0&&e<=255;function Wt(e,t,o,s=1){if(!Gt(e)||!Gt(t)||!Gt(o)||s<0||s>1)throw new Error(`Invalid RGBA values ${[e,t,o,s]}`);return{a:s,b:o,g:t,r:e}}function qt(e){let{r:t,g:o,b:s}=jt(e);t/=255,o/=255,s/=255;const i=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4;return.2126*i(t)+.7152*i(o)+.0722*i(s)}function Zt(e){let t=e.r.toString(16),o=e.g.toString(16),s=e.b.toString(16),i=Math.round(255*e.a).toString(16);return 1===t.length&&(t="0"+t),1===o.length&&(o="0"+o),1===s.length&&(s="0"+s),1===i.length&&(i="0"+i),"ff"===i&&(i=""),("#"+t+o+s+i).toUpperCase()}function jt(e){let t,o,s,i;if(7===(e=zt(e)).length)t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),s=parseInt(e[5]+e[6],16),i=255;else{if(9!==e.length)throw new Error("Invalid color");t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),s=parseInt(e[5]+e[6],16),i=parseInt(e[7]+e[8],16)}return i=+(i/255).toFixed(3),{a:i,r:t,g:o,b:s}}function Yt(e){(e={...e}).s/=100,e.l/=100;let t=(1-Math.abs(2*e.l-1))*e.s,o=t*(1-Math.abs(e.h/60%2-1)),s=e.l-t/2,i=0,n=0,r=0;return 0<=e.h&&e.h<60?(i=t,n=o,r=0):60<=e.h&&e.h<120?(i=o,n=t,r=0):120<=e.h&&e.h<180?(i=0,n=t,r=o):180<=e.h&&e.h<240?(i=0,n=o,r=t):240<=e.h&&e.h<300?(i=o,n=0,r=t):300<=e.h&&e.h<360&&(i=t,n=0,r=o),i=Math.round(255*(i+s)),n=Math.round(255*(n+s)),r=Math.round(255*(r+s)),{a:e.a,r:i,g:n,b:r}}function Xt(e){const t=e.r/255,o=e.g/255,s=e.b/255;let i=Math.min(t,o,s),n=Math.max(t,o,s),r=n-i,a=0,l=0,c=0;return a=0===r?0:n===t?(o-s)/r%6:n===o?(s-t)/r+2:(t-o)/r+4,a=Math.round(60*a),a<0&&(a+=360),c=(n+i)/2,l=0===r?0:r/(1-Math.abs(2*c-1)),l=+(100*l).toFixed(1),c=+(100*c).toFixed(1),{a:e.a,h:a,s:l,l:c}}function Kt(e){return Zt(Yt(e))}function Jt(e){return Xt(jt(e))}function Qt(e,t){return 1===t?zt(e).slice(0,7):Zt({...jt(e),a:t})}function eo(e,t){const o=Jt(e);return 1===t?"#fff":(o.l=t*(100-o.l)+o.l,Kt(o))}function to(e,t){const o=Jt(e);return 1===t?"#000":(o.l=o.l-t*o.l,Kt(o))}const oo=["#4EA7F2","#EA6175","#43C5B1","#F4A261","#8481DD","#FFD86D"],so=["#4EA7F2","#3188E6","#43C5B1","#00A78D","#EA6175","#CE4257","#F4A261","#F48935","#8481DD","#5752D1","#FFD86D","#FFBC2C"],io=["#4EA7F2","#3188E6","#056BD9","#A76DBC","#7F4295","#6D2387","#EA6175","#CE4257","#982738","#43C5B1","#00A78D","#0E8270","#F4A261","#F48935","#BE5D10","#8481DD","#5752D1","#3A3580","#A4A8B6","#7E8290","#545B70","#FFD86D","#FFBC2C","#C08A16"],no=["#4EA7F2","#3188E6","#056BD9","#155193","#A76DBC","#7F4295","#6D2387","#4F1565","#EA6175","#CE4257","#982738","#791B29","#43C5B1","#00A78D","#0E8270","#105F53","#F4A261","#F48935","#BE5D10","#7D380D","#8481DD","#5752D1","#3A3580","#26235F","#A4A8B6","#7E8290","#545B70","#3F4250","#FFD86D","#FFBC2C","#C08A16","#936A12"],ro=["#4EA7F2","#43C5B1","#EA6175","#F4A261","#8481DD","#FFD86D","#3188E6","#00A78D","#CE4257","#F48935","#5752D1","#FFBC2C"],ao=["#4EA7F2","#A76DBC","#EA6175","#43C5B1","#F4A261","#8481DD","#A4A8B6","#FFD86D","#3188E6","#7F4295","#CE4257","#00A78D","#F48935","#5752D1","#7E8290","#FFBC2C","#056BD9","#6D2387","#982738","#0E8270","#BE5D10","#3A3580","#545B70","#C08A16"],lo=["#4EA7F2","#A76DBC","#EA6175","#43C5B1","#F4A261","#8481DD","#A4A8B6","#FFD86D","#3188E6","#7F4295","#CE4257","#00A78D","#F48935","#5752D1","#7E8290","#FFBC2C","#056BD9","#6D2387","#982738","#0E8270","#BE5D10","#3A3580","#545B70","#C08A16","#155193","#4F1565","#791B29","#105F53","#7D380D","#26235F","#3F4250","#936A12"];function co(e,t){return t[e%t.length]}function ho(e){return e<=6?oo:e<=12?so:e<=24?io:no}class uo{preferredColors;currentColorIndex=0;palette;constructor(e,t=[]){this.preferredColors=t,this.palette=ho(e).filter((e=>!t.includes(e)))}next(){return this.preferredColors?.[this.currentColorIndex]?this.preferredColors[this.currentColorIndex++]:co(this.currentColorIndex++,this.palette)}}class go extends uo{constructor(e,t=[]){var o;super(e,t),this.palette=(o=e,o<=6?oo:o<=12?ro:o<=24?ao:lo).filter((e=>!t.includes(e)))}}function po(e){if(e.length<2)throw new Error("Color scale must have at least 2 points");const t=[...e.sort(((e,t)=>e.value-t.value))],o=[];for(let e=1;e<t.length;e++){const s=Bt(t[e-1].color),i=Bt(t[e].color);o.push({min:t[e-1].value,max:t[e].value,minColor:s,maxColor:i,colorDiff:mo(t[e-1].value,t[e].value,s,i)})}return e=>{if(e<o[0].min)return Ut(o[0].minColor);for(const t of o)if(e>=t.min&&e<=t.max)return Ut(fo(e,t.min,t.minColor,t.colorDiff));return Ut(o[o.length-1].maxColor)}}function mo(e,t,o,s){const i=t-e;return[((o>>16)%256-(s>>16)%256)/i,((o>>8)%256-(s>>8)%256)/i,(o%256-s%256)/i]}function fo(e,t,o,s){const[i,n,r]=s;return Math.round((o>>16)%256-i*(e-t))<<16|Math.round((o>>8)%256-n*(e-t))<<8|Math.round(o%256-r*(e-t))}function vo(e){if(e<0)throw new Error(`number must be positive. Got ${e}`);return e<26?String.fromCharCode(65+e):vo(Math.floor(e/26)-1)+vo(e%26)}function bo(e){let t=0;const o=e.length;for(let s=0;s<o;s++){t=26*t+So(e[s])}return t-1}function So(e){const t=e.charCodeAt(0);return t>=65&&t<=90?t-64:t-96}function yo(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function Co(e){return e>="0"&&e<="9"}const wo=bo("ZZZ"),xo=9999998;function Io(e){for(;" "===e.current;)e.advanceBy(1)}function Eo(e){if("$"===e.current&&e.advanceBy(1),!e.current||!yo(e.current))return-1;let t=0;for(;e.current&&yo(e.current);)t=26*t+So(e.shift());return t}function Ro(e){if("$"===e.current&&e.advanceBy(1),!e.current||!Co(e.current))return-1;let t=0;for(;e.current&&Co(e.current);)t=10*t+Number(e.shift());return t}function To(e){const t=new Mt(e);Io(t);const o=Eo(t);if(-1===o||!t.current)throw new Error(`Invalid cell description: ${e}`);const s=Ro(t);Io(t);const i=o-1,n=s-1;if(!t.isOver()||i>wo||n>xo)throw new Error(`Invalid cell description: ${e}`);return{col:i,row:n}}function Ao(e,t,o={colFixed:!1,rowFixed:!1}){return(o.colFixed?"$":"")+vo(e)+(o.rowFixed?"$":"")+String(t+1)}function _o(e,t=[]){if(e.length<=1&&0===t.length)return e;const o=[0],s=new Map([[0,[]]]);return Do(o,s,e,!1),Do(o,s,t,!0),function(e,t){const o=[];let s=[];for(let i=0;i<e.length;i++){const n=e[i],r=t.get(n);if(!r||0===r.length){o.push(...s),s=[];continue}let a=e[i+1];void 0!==a&&a--;const l=[];for(let e=0;e<r.length;e+=2){const t=r[e];let o=r[e+1];void 0!==o&&o--;const i={top:t,left:n,bottom:o,right:a,hasHeader:void 0===o&&0!==t||void 0===a&&0!==n};let c=!1;for(let e=s.length-1;e>=0;e--){const t=s[e];if(t.top===i.top&&t.bottom===i.bottom){t.right=i.right,s.splice(e,1),l.push(t),c=!0;break}}c||l.push(i)}o.push(...s),s=l}return o.push(...s),o}(o,s)}function Do(e,t,o,s=!1){for(const i of o){const o=i.left,n=void 0===i.right?void 0:i.right+1,r=Oo(e,t,o,!0,0),a=Oo(e,t,n,!1,r);for(let o=r;o<=a;o++){Fo(t.get(e[o]),i,s)}Mo(e,t,r,a)}}function Oo(e,t,o,s,i){if(void 0===o)return e.length-1;const n=Po(e,o,i);return o!=e[n]?(e.splice(n+1,0,o),t.set(o,[...t.get(e[n])]),s?n+1:n):s?n:n-1}function Fo(e,t,o=!1){const s=t.top,i=void 0===t.bottom?void 0:t.bottom+1,n=[],r=Po(e,s,0,!1);if((r%2!=0&&!o||r%2==0&&o)&&n.push(s),void 0===i)return e.splice(r+1),void e.push(...n);const a=function(e,t,o=0,s=!0){let i=e.length-1,n=e.length;for(;o<=i;){const r=Math.floor((o+i)/2);if(e[r]===t&&s)return r;e[r]>t?(n=r,i=r-1):o=r+1}return n}(e,i,0,!1);(a%2==0&&!o||a%2!=0&&o)&&n.push(i),e.splice(r+1,a-r-1,...n)}function Mo(e,t,o,s){const i=o-1==-1?0:o-1;for(let o=s===e.length-1?s:s+1;o>i;o--)vt(t.get(e[o]),t.get(e[o-1]))&&(t.delete(e[o]),e.splice(o,1))}function Po(e,t,o=0,s=!0){let i=e.length-1,n=-1;for(;o<=i;){const r=Math.floor((o+i)/2);if(e[r]===t&&s)return r;e[r]<t?(n=r,o=r+1):i=r-1}return n}const No=e=>e,ko=()=>!1;let Vo=No,Lo=ko;function Ho(e,...t){if(1!==t.length||"object"!=typeof t[0]||t[0]instanceof String)t.length>0&&(e=e.replace(/\%s/g,(()=>t.shift())));else{const o=t[0];e=e.replace(/\%\(([^\)]+)\)s/g,((e,t)=>o[t]))}return e}const Uo=function(e,...t){return Lo()?Ho(Vo(e),...t):new Bo(e,t)};class Bo extends String{values;constructor(e,t){super(e),this.values=t}valueOf(){const e=super.valueOf();return Lo()?Ho(Vo(e),...this.values):Ho(e,...this.values)}toString(){return this.valueOf()}}function zo(e){const t=function(e){const t=new Mt(e);Io(t);const o=e.indexOf("!");-1!==o&&t.advanceBy(o+1);const s=Eo(t),i=Ro(t);let n,r,a,l,c=!1,h=!1,d=!1;if(-1===i?(a=l=s-1,n=r=0,c=!0):-1===s?(n=r=i-1,a=l=0,h=!0):(a=l=s-1,n=r=i-1,d=!0),Io(t),":"===t.current){t.advanceBy(1),Io(t);const e=Eo(t),o=Ro(t);-1===o?(l=e-1,c=!0):-1===e?(r=o-1,h=!0):(l=e-1,r=o-1,n=c?r:n,a=h?l:a,d=!0)}const u={top:n,left:a,bottom:c?void 0:r,right:h?void 0:l};return d=d&&(h||c),d&&(u.hasHeader=d),u}(e),o=as(t),s=o.bottom,i=o.right;if(void 0!==s&&s>xo||void 0!==i&&i>wo)throw new Error(`Range string out of bounds: ${e}`);if(void 0===s&&void 0===i)throw new Error("Wrong zone xc. The zone cannot be at the same time a full column and a full row");return o}function $o(e){const t=zo(e);if(void 0===t.bottom||void 0===t.right)throw new Error("This does not support unbounded ranges");return t}function Go(e){const{bottom:t,top:o,left:s,right:i}=e;return!(void 0!==t&&isNaN(t)||isNaN(o)||isNaN(s)||void 0!==i&&isNaN(i))&&(Wo(e)&&e.top>=0&&e.left>=0)}function Wo(e){return(void 0===e.bottom||e.bottom>=e.top&&e.bottom>=0)&&(void 0===e.right||e.right>=e.left&&e.right>=0)}function qo(e){const{top:t,bottom:o,left:s,right:i}=e,n="hasHeader"in e&&e.hasHeader,r=t===o&&s===i;if(void 0===o&&void 0!==i)return 0!==t||n?`${Ao(s,t)}:${vo(i)}`:`${vo(s)}:${vo(i)}`;if(void 0===i&&void 0!==o)return 0!==s||n?`${Ao(s,t)}:${o+1}`:`${t+1}:${o+1}`;if(void 0!==o&&void 0!==i)return r?Ao(s,t):`${Ao(s,t)}:${Ao(i,o)}`;throw new Error(Uo("Bad zone format"))}function Zo(e,t,o,s,i){const n="left"===t?"columns":"rows",r="before"===s?o-1:o,a=e["left"===t?"right":"bottom"];return e[t]<=r&&a&&a>r?ls(e,n,"RESIZE",i):r<e[t]?ls(e,n,"MOVE",i):{...e}}function jo(e,t,o,s,i){const n="left"===t?"columns":"rows",r="before"===s?o-1:o,a="left"===t?"right":"bottom";return e[t]<=r&&e[a]>r?ls(e,n,"RESIZE",i):r<e[t]?ls(e,n,"MOVE",i):{...e}}function Yo(e,t,o){const s="left"===t?"right":"bottom";let i=e[t],n=e[s];for(let r of o.sort(((e,t)=>t-e)))e[t]>r&&(i--,n--),e[t]<r&&e[s]>=r&&n--;return{...e,[t]:i,[s]:n}}function Xo(e,t,o){const s="left"===t?"right":"bottom";let i=e[t],n=e[s];const r=e[s];for(let s of o.sort(((e,t)=>t-e)))e[t]>s&&(i--,void 0!==n&&n--),void 0!==r&&void 0!==n&&e[t]<=s&&r>=s&&n--;if(!(void 0!==n&&i>n))return{...e,[t]:i,[s]:n}}function Ko(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:Math.max(...e.map((e=>e.bottom))),right:Math.max(...e.map((e=>e.right)))}}function Jo(e,t){if(es(e,t))return{top:Math.max(e.top,t.top),left:Math.max(e.left,t.left),bottom:Math.min(e.bottom,t.bottom),right:Math.min(e.right,t.right)}}function Qo(e,t){return e.left===t.left&&e.right===t.right&&e.top===t.top&&e.bottom===t.bottom}function es(e,t){return!(e.bottom<t.top||t.bottom<e.top)&&!(e.right<t.left||t.right<e.left)}function ts(e,t,o){const{left:s,right:i,top:n,bottom:r}=o;return e>=s&&e<=i&&t>=n&&t<=r}function os(e,t){return Qo(Ko(t,e),t)}function ss(e){return{numberOfRows:e.bottom-e.top+1,numberOfCols:e.right-e.left+1}}function is(e){const{numberOfCols:t,numberOfRows:o}=ss(e);return 1===t||1===o}function ns(e){const t={};for(const o of e)t[o.sheetId]??=[],t[o.sheetId].push(hs(o));for(const e in t)t[e]=_o(t[e]);return t}function rs(e){const t=[],{left:o,right:s,top:i,bottom:n}=as(e);for(const e of je(o,s+1))for(const o of je(i,n+1))t.push({col:e,row:o});return t}function as(e){return void 0!==e.right&&e.left>e.right&&(e={...e,left:e.right,right:e.left}),void 0!==e.bottom&&e.top>e.bottom&&(e={...e,top:e.bottom,bottom:e.top}),e}function ls(e,t,o,s){const i="both"===t?s[0]:"columns"===t?s:0,n="both"===t?s[1]:"rows"===t?s:0,r="hasHeader"in e&&e.hasHeader;let a;a=!function(e){return void 0===e.bottom}(e)||r?!(us(e)&&!r)||"columns"!==t:"rows"!==t;const l={...e};return a&&"MOVE"===o&&(l.left+=i,l.top+=n),void 0!==l.right&&(l.right+=i),void 0!==l.bottom&&(l.bottom+=n),l}function cs(e,t){let o,s;const{left:i,right:n,top:r,bottom:a}=e,{left:l,right:c,top:h,bottom:d}=t;return o=l!=i?l:c!=n?c:l,s=h!=r?h:d!=a?d:h,{col:o,row:s}}function hs(e){return{left:e.col,right:e.col,top:e.row,bottom:e.row}}function ds(e){return{...e,right:e.left,bottom:e.top}}function us(e){return void 0===e.right}function gs(e){return(e.bottom-e.top+1)*(e.right-e.left+1)}function ps(e){return e.length<2||1===_o(e).length}function ms(e){const t=[...e];let o=!0;for(;o;){o=!1;for(let e=0;e<t.length;e++){const s=t[e],i=t.findIndex(((t,o)=>{return e!==o&&(n=s,((i=t).right+1===n.left||i.left===n.right+1?i.top<=n.bottom&&i.top>=n.top||n.top<=i.bottom&&n.top>=i.top:(i.bottom+1===n.top||i.top===n.bottom+1)&&(i.left<=n.right&&i.left>=n.left||n.left<=i.right&&n.left>=i.left))||es(t,s));var i,n}));if(-1!==i){t[e]=Ko(t[i],s),t.splice(i,1),o=!0;break}}}return t}const fs=new WeakMap,vs=new WeakMap;function bs(e,t){fs.has(t)||(fs.set(t,new Map),vs.set(t,0));const o=fs.get(t),s=Cs(e);if(o.has(s)){const i=o.get(s);return t[i]=e,i}const i=vs.get(t)+1;return o.set(s,i),vs.set(t,i),t[i]=e,i}function Ss(e){const t={};for(const o in e){const s=_o(e[o].map(hs));for(const e of s)t[qo(e)]=Number(o)}return t}function*ys(e,t){for(const o in t){const s=$o(o),i=t[o];for(let t=s.top;t<=s.bottom;t++)for(let o=s.left;o<=s.right;o++){const s={sheetId:e,col:o,row:t};yield[s,i]}}}function Cs(e){if(null===e)return"null";if(void 0===e)return"undefined";if("object"!=typeof e)return String(e);if(Array.isArray(e)){const t=e.length;let o="[";for(let s=0;s<t;s++)s>0&&(o+=","),o+=Cs(e[s]);return o+"]"}const t=Object.keys(e).sort();let o="{";for(const s of t)void 0!==e[s]&&(o+=`"${s}":${Cs(e[s])},`);return o+="}",o}class ws{jsDate;constructor(e,t,o,s=0,i=0,n=0){this.jsDate=new Date(Date.UTC(e,t,o,s,i,n,0))}static fromTimestamp(e){const t=new Date(e);return new ws(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())}static now(){const e=new Date;return new ws(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())}toString(){return this.jsDate.toString()}toLocaleDateString(){return this.jsDate.toLocaleDateString()}getTime(){return this.jsDate.getTime()}getFullYear(){return this.jsDate.getUTCFullYear()}getMonth(){return this.jsDate.getUTCMonth()}getQuarter(){return Math.floor(this.getMonth()/3)+1}getDate(){return this.jsDate.getUTCDate()}getDay(){return this.jsDate.getUTCDay()}getHours(){return this.jsDate.getUTCHours()}getMinutes(){return this.jsDate.getUTCMinutes()}getSeconds(){return this.jsDate.getUTCSeconds()}getIsoWeek(){const e=new Date(this.jsDate.getTime()),t=e.getUTCDay()||7;e.setUTCDate(e.getUTCDate()+4-t);const o=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-o.getTime())/864e5+1)/7)}setFullYear(e){return this.jsDate.setUTCFullYear(e)}setMonth(e){return this.jsDate.setUTCMonth(e)}setDate(e){return this.jsDate.setUTCDate(e)}setHours(e){return this.jsDate.setUTCHours(e)}setMinutes(e){return this.jsDate.setUTCMinutes(e)}setSeconds(e){return this.jsDate.setUTCSeconds(e)}}const xs=new ws(1899,11,30),Is=864e5,Es=2e3,Rs=ws.now().getFullYear(),Ts=ws.now().getMonth(),As=ws.fromTimestamp(0).getTime()-xs.getTime(),_s=/^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/,Ds=/^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/,Os=/\/|-|\s/,Fs=/^(\d{1,4})[\/-\s](\d{1,4})([\/-\s](\d{1,4}))?$/,Ms=/((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;function Ps(e,t){switch(typeof e){case"number":return e;case"string":return Ns(e,t)?Vs(e,t)?.value:!e||isNaN(Number(e))?void 0:Number(e);default:return}}function Ns(e,t){return null!==Vs(e,t)}const ks=new Map;function Vs(e,t){return ks.has(t)||ks.set(t,new Map),ks.get(t).has(e)||ks.get(t).set(e,function(e,t){e=e.trim();let o=null;const s=e.match(Ms);if(s){if(o=function(e){if(e=e.trim(),Ms.test(e)){const t=/AM/i.test(e),o=/PM/i.test(e),s=(t||o?e.substring(0,e.length-2).trim():e).split(/:/),i=s.length>=2,n=3===s.length;let r=Number(s[0]),a=i?Number(s[1]):0,l=n?Number(s[2]):0,c=n?"hh:mm:ss":"hh:mm";if(t||o)c+=" a";else if(!i)return null;r>=12&&t?r-=12:r<12&&o&&(r+=12),a+=Math.floor(l/60),l%=60,r+=Math.floor(a/60),a%=60,r>=24&&(c="hhhh:mm:ss");return{value:r/24+a/1440+l/86400,format:c,jsDate:new ws(1899,11,30,r,a,l)}}return null}(s[0]),null===o)return null;e=e.replace(s[0],"").trim()}let i=null;const n=function(e,t){const o=e.match(Fs);if(!o)return null;const[,s,i,,n]=o;if(s.length>2&&n&&n.length>2)return null;if(s.length>2)return{year:s,month:i,day:n,dateString:e,type:"ymd"};const r=function(e){switch(e.dateFormat[0]){case"d":return"dmy";case"m":return"mdy";case"y":return"ymd"}throw new Error("Invalid date format in locale")}(t);if(!n)return i.length>2?{month:s,year:i,day:void 0,dateString:e,type:r}:"dmy"===r?{day:s,month:i,year:n,dateString:e,type:"dmy"}:{month:s,day:i,year:n,dateString:e,type:"mdy"};if(n.length>2)return"mdy"===r?{month:s,day:i,year:n,dateString:e,type:"mdy"}:{day:s,month:i,year:n,dateString:e,type:"dmy"};if("mdy"===r)return{month:s,day:i,year:n,dateString:e,type:"mdy"};if("ymd"===r)return{year:s,month:i,day:n,dateString:e,type:"ymd"};if("dmy"===r)return{day:s,month:i,year:n,dateString:e,type:"dmy"};return null}(e,t);if(n){const t=n.dateString.match(Os)[0];if(i=function(e,t){let{year:o,month:s,day:i}=e;const n=function(e){if(!e)return Ts;const t=Number(e);if(t>=1&&t<=12)return t-1;return null}(s),r=function(e){if(!e)return 1;const t=Number(e);if(t>=0&&t<=31)return t;return null}(i),a=function(e){if(!e)return Rs;const t=Number(e);switch(e.length){case 1:return Es+t;case 2:return Es+(Es+t>Rs+10?-100:0)+t;case 3:case 4:return t}return null}(o);if(null===a||null===n||null===r)return null;const l=2===s?.length&&n+1<10||2===i?.length&&r<10,c=2!==o?.length,h=new ws(a,n,r);if(h.getMonth()!==n||h.getDate()!==r)return null;const d=h.getTime()-xs.getTime(),u=function(e,t,o,s){const i=e.year?s?"yyyy":"yy":void 0,n=e.month?o?"mm":"m":void 0,r=e.day?o?"dd":"d":void 0;switch(e.type){case"mdy":return[n,r,i].filter(lt).join(t);case"ymd":return[i,n,r].filter(lt).join(t);case"dmy":return[r,n,i].filter(lt).join(t)}}(e,t,l,c);return{value:Math.round(d/Is),format:u,jsDate:h}}(n,t),null===i)return null;e=e.replace(n.dateString,"").trim()}if(""!==e||!i&&!o)return null;if(i&&i.jsDate&&o&&o.jsDate)return{value:i.value+o.value,format:i.format+" "+("hhhh:mm:ss"===o.format?"hh:mm:ss":o.format),jsDate:new ws(i.jsDate.getFullYear()+o.jsDate.getFullYear()-1899,i.jsDate.getMonth()+o.jsDate.getMonth()-11,i.jsDate.getDate()+o.jsDate.getDate()-30,i.jsDate.getHours()+o.jsDate.getHours(),i.jsDate.getMinutes()+o.jsDate.getMinutes(),i.jsDate.getSeconds()+o.jsDate.getSeconds())};return i||o}(e,t)),ks.get(t).get(e)}function Ls(e){const t=Math.trunc(e);let o=ws.fromTimestamp(t*Is-As),s=e-t;s=s<0?1+s:s;const i=Math.round(24*s),n=Math.round(24*(s-i/24)*60),r=Math.round(24*(s-i/24-n/24/60)*60*60);return o.setHours(i),o.setMinutes(n),o.setSeconds(r),o}function Hs(e){return Math.round(Us(e))}function Us(e){return(e.getTime()-xs.getTime())/Is}function Bs(e){return new ws(e.getFullYear(),e.getMonth()+1,0).getDate()}function zs(e){return Bs(e)===e.getDate()}function $s(e,t,o){const s=e.getFullYear(),i=e.getMonth(),n=e.getDate(),r=new ws(s,i+t,1);return o&&n===Bs(e)||n>Bs(r)?r.setDate(Bs(r)):r.setDate(n),r}function Gs(e){const t=Math.trunc(e);return t%4==0&&t%100!=0||t%400==0}function Ws(e,t,o){if(e===t)return 0;if(e>t){const o=t;t=e,e=o}const s=Ls(e),i=Ls(t);let n=s.getDate(),r=i.getDate();const a=s.getMonth(),l=i.getMonth(),c=s.getFullYear(),h=i.getFullYear();let d=0,u=0;switch(o){case 0:31===n&&(n=30),30===n&&31===r&&(r=30),1===a&&n===(Gs(c)?29:28)&&(n=30,1===l&&r===(Gs(h)?29:28)&&(r=30)),d=c+(30*a+n)/360,u=h+(30*l+r)/360;break;case 1:let o=365;const s=c===h;if(!s&&!(c+1===h)||!s&&a<l||!s&&a===l&&n<r){let e=0,t=0;for(let o=c;o<=h;o++)e++,t+=Gs(o)?366:365;o=t/e}else s?Gs(c)&&(o=366):(Gs(c)&&a<2&&(o=366),Gs(h)&&(l>1||1===l&&29===r)&&(o=366));d=e/o,u=t/o;break;case 2:d=e/360,u=t/360;break;case 3:d=e/365,u=t/365;break;case 4:31===n&&(n=30),31===r&&(r=30),d=c+(30*a+n)/360,u=h+(30*l+r)/360}return u-d}function qs(e,t){const o=12*(t.getFullYear()-e.getFullYear())+t.getMonth()-e.getMonth();return e.getDate()>t.getDate()?o-1:o}function Zs(e,t){const o=e.getTime(),s=t.getTime();return Math.floor((s-o)/Is)}function js(e,t){const o=t.getFullYear()-e.getFullYear(),s=e.getMonth(),i=t.getMonth(),n=e.getDate(),r=t.getDate();return i>s||i===s&&r>=n?o:o-1}function Ys(e,t,o){return t>o?Ys(e,o,t):(e=Math.trunc(e),t=Math.trunc(t),o=Math.trunc(o),e>=t&&e<=o)}const Xs=Et((function(e){return e=Be(e),new RegExp(`(?:^-?\\d+(?:${e}?\\d*(?:e(\\+|-)?\\d+)?)?|^-?${e}\\d+)(?!\\w|!)`)})),Ks=Et((function(e){const t=Be(e.decimalSeparator),o="(?:\\s*"+`(?:\\d+(?:${Be(e.thousandsSeparator||"")}\\d{3,})*(?:${t}\\d*)?)`+"|"+`(?:${t}\\d+)`+")(?:e(?:\\+|-)?\\d+)?(?:\\s*%)?",s="(?:\\s*-)?",i="(?:\\s*[\\$€])?",n="^(?:(?:"+[s+i+o,s+o+i,i+s+o].join(")|(?:")+"))$";return new RegExp(n,"i")}));function Js(e,t){return!!e&&Ks(t).test(e.trim())}const Qs=Et((function(e){return new RegExp(`[$€${Be(e.thousandsSeparator||"")}]`,"g")}));function ei(e,t){e=e.replace(Qs(t),""),"."!==t.decimalSeparator&&(e=e.replace(t.decimalSeparator,"."));let o=Number(e);return isNaN(o)&&e.includes("%")&&(o=Number(e.split("%")[0]),!isNaN(o))?o/100:o}function ti(e,t,o){const s=[...e].sort(((e,t)=>e-t));let i=(s.length+(o?-1:1))*t;if(o||i--,Number.isInteger(i))return s[i];const n=Math.ceil(i),r=Math.floor(i);return s[n]*(i-r)+s[r]*(n-i)}var oi,si;!function(e){e.boolean="boolean",e.number="number",e.text="text",e.empty="empty",e.error="error"}(oi||(oi={})),function(e){e.PlainText="text/plain",e.Html="text/html"}(si||(si={}));const ii=new Set(["RENAME_SHEET","DELETE_SHEET","CREATE_SHEET","DUPLICATE_SHEET","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","UNDO","REDO","ADD_MERGE","REMOVE_MERGE","DUPLICATE_SHEET","UPDATE_LOCALE","ADD_PIVOT","UPDATE_PIVOT","INSERT_PIVOT","RENAME_PIVOT","REMOVE_PIVOT","DUPLICATE_PIVOT"]),ni=new Set(["EVALUATE_CELLS","EVALUATE_CHARTS","UPDATE_CELL","UNHIDE_COLUMNS_ROWS","HIDE_COLUMNS_ROWS","GROUP_HEADERS","UNGROUP_HEADERS","FOLD_ALL_HEADER_GROUPS","FOLD_HEADER_GROUP","FOLD_HEADER_GROUPS_IN_ZONE","UNFOLD_ALL_HEADER_GROUPS","UNFOLD_HEADER_GROUP","UNFOLD_HEADER_GROUPS_IN_ZONE","UPDATE_TABLE","UPDATE_FILTER","UNDO","REDO"]),ri=new Set(["MOVE_RANGES"]),ai=new Set(["EVALUATE_CELLS","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","CHANGE_CONDITIONAL_FORMAT_PRIORITY"]),li=new Set(["AUTOFILL_CELL","SET_BORDER","SET_ZONE_BORDERS"]),ci=new Set(["START","ACTIVATE_SHEET","COPY","RESIZE_SHEETVIEW","SET_VIEWPORT_OFFSET","EVALUATE_CELLS","EVALUATE_CHARTS","SET_FORMULA_VISIBILITY","UPDATE_FILTER"]),hi=new Set(["UPDATE_CELL","UPDATE_CELL_POSITION","CLEAR_CELL","CLEAR_CELLS","DELETE_CONTENT","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","RESIZE_COLUMNS_ROWS","HIDE_COLUMNS_ROWS","UNHIDE_COLUMNS_ROWS","SET_GRID_LINES_VISIBILITY","UNFREEZE_COLUMNS","UNFREEZE_ROWS","FREEZE_COLUMNS","FREEZE_ROWS","UNFREEZE_COLUMNS_ROWS","ADD_MERGE","REMOVE_MERGE","CREATE_SHEET","DELETE_SHEET","DUPLICATE_SHEET","MOVE_SHEET","RENAME_SHEET","COLOR_SHEET","HIDE_SHEET","SHOW_SHEET","MOVE_RANGES","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","CHANGE_CONDITIONAL_FORMAT_PRIORITY","CREATE_FIGURE","DELETE_FIGURE","UPDATE_FIGURE","SET_FORMATTING","CLEAR_FORMATTING","SET_BORDER","SET_ZONE_BORDERS","SET_BORDERS_ON_TARGET","CREATE_CHART","UPDATE_CHART","CREATE_TABLE","REMOVE_TABLE","UPDATE_TABLE","CREATE_TABLE_STYLE","REMOVE_TABLE_STYLE","CREATE_IMAGE","GROUP_HEADERS","UNGROUP_HEADERS","UNFOLD_HEADER_GROUP","FOLD_HEADER_GROUP","FOLD_ALL_HEADER_GROUPS","UNFOLD_ALL_HEADER_GROUPS","UNFOLD_HEADER_GROUPS_IN_ZONE","FOLD_HEADER_GROUPS_IN_ZONE","ADD_DATA_VALIDATION_RULE","REMOVE_DATA_VALIDATION_RULE","UPDATE_LOCALE","ADD_PIVOT","UPDATE_PIVOT","INSERT_PIVOT","RENAME_PIVOT","REMOVE_PIVOT","DUPLICATE_PIVOT"]);function di(e){return hi.has(e.type)}class ui{reasons;constructor(e=[]){Array.isArray(e)||(e=[e]),e=[...new Set(e)],this.reasons=e.filter((e=>"Success"!==e))}static get Success(){return gi}get isSuccessful(){return 0===this.reasons.length}isCancelledBecause(e){return this.reasons.includes(e)}}const gi=new ui;var pi;e.CommandResult=void 0,(pi=e.CommandResult||(e.CommandResult={})).Success="Success",pi.CancelledForUnknownReason="CancelledForUnknownReason",pi.WillRemoveExistingMerge="WillRemoveExistingMerge",pi.MergeIsDestructive="MergeIsDestructive",pi.CellIsMerged="CellIsMerged",pi.InvalidTarget="InvalidTarget",pi.EmptyUndoStack="EmptyUndoStack",pi.EmptyRedoStack="EmptyRedoStack",pi.NotEnoughElements="NotEnoughElements",pi.NotEnoughSheets="NotEnoughSheets",pi.MissingSheetName="MissingSheetName",pi.UnchangedSheetName="UnchangedSheetName",pi.DuplicatedSheetName="DuplicatedSheetName",pi.DuplicatedSheetId="DuplicatedSheetId",pi.ForbiddenCharactersInSheetName="ForbiddenCharactersInSheetName",pi.WrongSheetMove="WrongSheetMove",pi.WrongSheetPosition="WrongSheetPosition",pi.InvalidAnchorZone="InvalidAnchorZone",pi.SelectionOutOfBound="SelectionOutOfBound",pi.TargetOutOfSheet="TargetOutOfSheet",pi.WrongCutSelection="WrongCutSelection",pi.WrongPasteSelection="WrongPasteSelection",pi.WrongPasteOption="WrongPasteOption",pi.WrongFigurePasteOption="WrongFigurePasteOption",pi.EmptyClipboard="EmptyClipboard",pi.EmptyRange="EmptyRange",pi.InvalidRange="InvalidRange",pi.InvalidZones="InvalidZones",pi.InvalidSheetId="InvalidSheetId",pi.InvalidCellId="InvalidCellId",pi.InvalidFigureId="InvalidFigureId",pi.InputAlreadyFocused="InputAlreadyFocused",pi.MaximumRangesReached="MaximumRangesReached",pi.MinimumRangesReached="MinimumRangesReached",pi.InvalidChartDefinition="InvalidChartDefinition",pi.InvalidDataSet="InvalidDataSet",pi.InvalidLabelRange="InvalidLabelRange",pi.InvalidScorecardKeyValue="InvalidScorecardKeyValue",pi.InvalidScorecardBaseline="InvalidScorecardBaseline",pi.InvalidGaugeDataRange="InvalidGaugeDataRange",pi.EmptyGaugeRangeMin="EmptyGaugeRangeMin",pi.GaugeRangeMinNaN="GaugeRangeMinNaN",pi.EmptyGaugeRangeMax="EmptyGaugeRangeMax",pi.GaugeRangeMaxNaN="GaugeRangeMaxNaN",pi.GaugeLowerInflectionPointNaN="GaugeLowerInflectionPointNaN",pi.GaugeUpperInflectionPointNaN="GaugeUpperInflectionPointNaN",pi.InvalidAutofillSelection="InvalidAutofillSelection",pi.MinBiggerThanMax="MinBiggerThanMax",pi.LowerBiggerThanUpper="LowerBiggerThanUpper",pi.MidBiggerThanMax="MidBiggerThanMax",pi.MinBiggerThanMid="MinBiggerThanMid",pi.FirstArgMissing="FirstArgMissing",pi.SecondArgMissing="SecondArgMissing",pi.MinNaN="MinNaN",pi.MidNaN="MidNaN",pi.MaxNaN="MaxNaN",pi.ValueUpperInflectionNaN="ValueUpperInflectionNaN",pi.ValueLowerInflectionNaN="ValueLowerInflectionNaN",pi.MinInvalidFormula="MinInvalidFormula",pi.MidInvalidFormula="MidInvalidFormula",pi.MaxInvalidFormula="MaxInvalidFormula",pi.ValueUpperInvalidFormula="ValueUpperInvalidFormula",pi.ValueLowerInvalidFormula="ValueLowerInvalidFormula",pi.InvalidSortAnchor="InvalidSortAnchor",pi.InvalidSortZone="InvalidSortZone",pi.SortZoneWithArrayFormulas="SortZoneWithArrayFormulas",pi.WaitingSessionConfirmation="WaitingSessionConfirmation",pi.MergeOverlap="MergeOverlap",pi.TooManyHiddenElements="TooManyHiddenElements",pi.Readonly="Readonly",pi.InvalidViewportSize="InvalidViewportSize",pi.InvalidScrollingDirection="InvalidScrollingDirection",pi.ViewportScrollLimitsReached="ViewportScrollLimitsReached",pi.FigureDoesNotExist="FigureDoesNotExist",pi.InvalidConditionalFormatId="InvalidConditionalFormatId",pi.InvalidCellPopover="InvalidCellPopover",pi.EmptyTarget="EmptyTarget",pi.InvalidFreezeQuantity="InvalidFreezeQuantity",pi.FrozenPaneOverlap="FrozenPaneOverlap",pi.ValuesNotChanged="ValuesNotChanged",pi.InvalidFilterZone="InvalidFilterZone",pi.TableNotFound="TableNotFound",pi.TableOverlap="TableOverlap",pi.InvalidTableConfig="InvalidTableConfig",pi.InvalidTableStyle="InvalidTableStyle",pi.FilterNotFound="FilterNotFound",pi.MergeInTable="MergeInTable",pi.NonContinuousTargets="NonContinuousTargets",pi.DuplicatedFigureId="DuplicatedFigureId",pi.InvalidSelectionStep="InvalidSelectionStep",pi.DuplicatedChartId="DuplicatedChartId",pi.ChartDoesNotExist="ChartDoesNotExist",pi.InvalidHeaderIndex="InvalidHeaderIndex",pi.InvalidQuantity="InvalidQuantity",pi.MoreThanOneColumnSelected="MoreThanOneColumnSelected",pi.EmptySplitSeparator="EmptySplitSeparator",pi.SplitWillOverwriteContent="SplitWillOverwriteContent",pi.NoSplitSeparatorInSelection="NoSplitSeparatorInSelection",pi.NoActiveSheet="NoActiveSheet",pi.InvalidLocale="InvalidLocale",pi.MoreThanOneRangeSelected="MoreThanOneRangeSelected",pi.NoColumnsProvided="NoColumnsProvided",pi.ColumnsNotIncludedInZone="ColumnsNotIncludedInZone",pi.DuplicatesColumnsSelected="DuplicatesColumnsSelected",pi.InvalidHeaderGroupStartEnd="InvalidHeaderGroupStartEnd",pi.HeaderGroupAlreadyExists="HeaderGroupAlreadyExists",pi.UnknownHeaderGroup="UnknownHeaderGroup",pi.UnknownDataValidationRule="UnknownDataValidationRule",pi.UnknownDataValidationCriterionType="UnknownDataValidationCriterionType",pi.InvalidDataValidationCriterionValue="InvalidDataValidationCriterionValue",pi.InvalidNumberOfCriterionValues="InvalidNumberOfCriterionValues",pi.InvalidCopyPasteSelection="InvalidCopyPasteSelection",pi.NoChanges="NoChanges",pi.InvalidInputId="InvalidInputId",pi.SheetIsHidden="SheetIsHidden",pi.InvalidTableResize="InvalidTableResize",pi.PivotIdNotFound="PivotIdNotFound",pi.PivotInError="PivotInError",pi.EmptyName="EmptyName",pi.ValueCellIsInvalidFormula="ValueCellIsInvalidFormula",pi.InvalidDefinition="InvalidDefinition",pi.InvalidColor="InvalidColor",pi.InvalidPivotDataSet="InvalidPivotDataSet";const mi=[{name:"English (US)",code:"en_US",thousandsSeparator:",",decimalSeparator:".",weekStart:7,dateFormat:"m/d/yyyy",timeFormat:"hh:mm:ss a",formulaArgSeparator:","},{name:"French",code:"fr_FR",thousandsSeparator:" ",decimalSeparator:",",weekStart:1,dateFormat:"dd/mm/yyyy",timeFormat:"hh:mm:ss",formulaArgSeparator:";"}],fi=mi[0],vi=["thin","medium","thick","dashed","dotted"];function bi(e){return Array.isArray(e)&&Array.isArray(e[0])}var Si;!function(e){e.UP="up",e.DOWN="down",e.LEFT="left",e.RIGHT="right"}(Si||(Si={}));const yi={Background:0,Highlights:1,Clipboard:2,Chart:4,Autofill:5,Selection:6,Headers:100},Ci=Et((()=>Object.keys(yi).sort(((e,t)=>yi[e]-yi[t]))));const wi={NotAvailable:"#N/A",InvalidReference:"#REF",BadExpression:"#BAD_EXPR",CircularDependency:"#CYCLE",UnknownFunction:"#NAME?",DivisionByZero:"#DIV/0!",SpilledBlocked:"#SPILL!",GenericError:"#ERROR",NullError:"#NULL!"},xi=new Set(Object.values(wi));class Ii{message;value;constructor(e=Uo("Error"),t=wi.GenericError){this.message=e,this.value=t,this.message=e.toString()}}class Ei extends Ii{constructor(e=Uo("Invalid expression")){super(e,wi.BadExpression)}}class Ri extends Ii{constructor(e=Uo("Circular reference")){super(e,wi.CircularDependency)}}class Ti extends Ii{constructor(e=Uo("Invalid reference")){super(e,wi.InvalidReference)}}class Ai extends Ii{constructor(e=Uo("Data not available")){super(e,wi.NotAvailable)}}class _i extends Ii{constructor(e=Uo("Unknown function")){super(e,wi.UnknownFunction)}}class Di extends Ii{constructor(e=Uo("Spill range is not empty")){super(e,wi.SpilledBlocked)}}const Oi=["number","string","boolean","undefined"];function Fi(e,t,o){if(!e())throw new Ii(t,o)}function Mi(e){if(void 0!==e)return bi(e)?e[0][0]?.format:e.format}function Pi(e){return"string"==typeof e&&xi.has(e)}const Ni=e=>Uo("The function [[FUNCTION_NAME]] expects a number value, but '%s' is a string, and cannot be coerced to a number.",e);function ki(e,t){const o=Yi(e);switch(typeof o){case"number":return o;case"boolean":return o?1:0;case"string":if(Js(o,t)||""===o)return ei(o,t);const e=Vs(o,t);if(e)return e.value;throw new Ii(Ni(o));default:return 0}}function Vi(e,t){try{return ki(e,t)}catch(e){return}}function Li(e,t){return vn(e).map((e=>e.map((e=>{if("number"!=typeof e.value)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects number values for %s, but got a %s.",t,typeof e.value));return e.value}))))}function Hi(e,t){const o=Yi(e);if(""===o)throw new Ii(Ni(o));return ki(o,t)}function Ui(e,t){return Math.trunc(ki(e,t))}function Bi(e,t){return Math.trunc(Hi(e,t))}function zi(e){Fi((()=>e>=1),Uo("The function [[FUNCTION_NAME]] expects a number value to be greater than or equal to 1, but receives %s.",e.toString()))}function $i(e){Fi((()=>0!==e),Uo("Evaluation of function [[FUNCTION_NAME]] caused a divide by zero error."),wi.DivisionByZero)}function Gi(e){const t=Yi(e);switch(typeof t){case"string":return t;case"number":return t.toString();case"boolean":return t?"TRUE":"FALSE";default:return""}}const Wi=Et((function(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"")})),qi=e=>Uo("The function [[FUNCTION_NAME]] expects a boolean value, but '%s' is a text, and cannot be coerced to a boolean.",e);function Zi(e){const t=Yi(e);switch(typeof t){case"boolean":return t;case"string":if(t){let e=t.toUpperCase();if("TRUE"===e)return!0;if("FALSE"===e)return!1;throw new Ii(qi(t))}return!1;case"number":return!!t;default:return!1}}function ji(e,t){return Ls(ki(Yi(e),t))}function Yi(e){if("object"==typeof e&&null!==e&&"value"in e){if(Pi(e.value))throw e;return e.value}if(Pi(e))throw new Ii("",e);return e}function Xi(e,t,o){for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;for(let i=0;i<o;i++)for(let o=0;o<e;o++)t(s[o][i])}else o(s)}function Ki(e,t){Xi(e,(e=>{if(Pi(e.value))throw e;t(e)}),(e=>{if(Pi(e?.value))throw e;t(e)}))}function Ji(e,t,o){Xi(e,(e=>{if("number"==typeof e?.value&&t(e),Pi(e?.value))throw e}),(e=>{t({value:Hi(e,o),format:e?.format})}))}function Qi(e,t,o,s,i="rowFirst"){let n=s;for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;if("rowFirst"===i)for(let i=0;i<o;i++)for(let o=0;o<e;o++)n=t(n,s[o][i]);else for(let i=0;i<e;i++)for(let e=0;e<o;e++)n=t(n,s[i][e])}else n=o(n,s);return n}function en(e,t,o,s="rowFirst"){return Qi(e,t,t,o,s)}function tn(e,t,o,s){return Qi(e,((e,o)=>{const s=o?.value;if("number"==typeof s)return t(e,s);if(Pi(s))throw o;return e}),((e,o)=>t(e,Hi(o,s))),o)}function on(e,t,o,s){return Qi(e,((e,o)=>{const i=o?.value;if(null!=i){if("number"==typeof i)return t(e,i);if("boolean"==typeof i)return t(e,ki(i,s));if(Pi(i))throw o;return t(e,0)}return e}),((e,o)=>t(e,ki(o,s))),o)}function sn(e,t,o){const s=Array(e);for(let i=0;i<e;i++){s[i]=Array(t);for(let e=0;e<t;e++)s[i][e]=o(i,e)}return s}function nn(e,t){return 0===e.length?[]:sn(e.length,e[0].length,((o,s)=>t(e[o][s])))}function rn(e){return e.length?sn(e[0].length,e.length,((t,o)=>e[o][t])):[]}function an(e,t,o=void 0){let s,i=1,n=1,r=1/0,a=1/0;for(let e=0;e<t.length;e++){const l=t[e];if(bi(l)&&(void 0===o||o[e])){const o=l.length,c=l[0].length;1!==o||1!==c?(s??=new Array(t.length),1!==o&&1!==c?(s[e]="matrix",i=Math.max(i,o),n=Math.max(n,c),r=Math.min(r,o),a=Math.min(a,c)):1!==o?(s[e]="horizontal",i=Math.max(i,o),r=Math.min(r,o)):1!==c&&(s[e]="vertical",n=Math.max(n,c),a=Math.min(a,c))):t[e]=l[0][0]}}if(1===i&&1===n)return e(...t);return sn(i,n,((o,i)=>{if(o>r-1||i>a-1)return new Ai(Uo("Array arguments to [[FUNCTION_NAME]] are of different size."));const n=e(...(l=o,c=i,t.map(((e,t)=>{switch(s?.[t]){case"matrix":return e[l][c];case"horizontal":return e[l][0];case"vertical":return e[0][c];case void 0:return e}}))));var l,c;return bi(n)?n[0][0]:n}))}function ln(e,t){return function(e,t,o){for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;for(let i=0;i<o;i++)for(let o=0;o<e;o++)if(!t(s[o][i]??void 0))return}else if(!o(s))return}(e,(e=>{const o=e?.value;if("boolean"==typeof o)return t(o);if("number"==typeof o)return t(!!o);if(Pi(o))throw e;return!0}),(e=>void 0===e||null===e.value||t(function(e){const t=Yi(e);if(""===t)throw new Ii(qi(t));return Zi(t)}(e))))}function cn(e,t){let o,s,i=e.substring(0,2);return"<="===i||">="===i||"<>"===i?(o=i,s=e.substring(2)):(i=e.substring(0,1),"<"===i||">"===i||"="===i?(o=i,s=e.substring(1)):(o="=",s=e)),Js(s,t)||Ns(s,t)?s=ki(s,t):"TRUE"!==s&&"FALSE"!==s||(s=Zi(s)),{operator:o,operand:s}}const hn=Et((function(e){if("*"===e)return/.+/;let t="",o="";for(let s of e)"?"===s&&"~"!==o?t+=".":"*"===s&&"~"!==o?t+=".*":("*"!==s&&"?"!==s||(t=t.slice(0,-1)),["^",".","[","]","$","(",")","*","+","?","|","{","}","\\"].includes(s)&&(t+="\\"),t+=s),o=s;return new RegExp("^"+t+"$","i")}));function dn(e="",t,o){const{operator:s,operand:i}=t;if(void 0===i||null===e||null===i)return!1;if("number"==typeof i&&"="===s)return"string"==typeof e&&(Js(e,o)||Ns(e,o))?ki(e,o)===i:e===i;if("<>"===s||"="===s){let t;return t=typeof e==typeof i&&("string"==typeof e&&"string"==typeof i?hn(i).test(e):e===i),"="===s?t:!t}if(typeof e==typeof i)switch(s){case"<":return e<i;case">":return e>i;case"<=":return e<=i;case">=":return e>=i}return!1}function un(e,t,o,s=!1){const i=e.length;if(i%2==1)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects criteria_range and criterion to be in pairs."));const n=vn(e[0]),r=n.length,a=n[0].length;let l=[];for(let t=0;t<i-1;t+=2){const i=vn(e[t]);if(i.length!==r||i[0].length!==a)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects criteria_range to have the same dimension"));const n=cn(Gi(e[t+1]),o);s&&"string"==typeof n.operand&&(n.operand+="*"),l.push(n)}for(let s=0;s<r;s++)for(let n=0;n<a;n++){let r=!0;for(let t=0;t<i-1;t+=2){if(r=dn(vn(e[t])[s][n].value??void 0,l[t/2],o),!r)break}r&&t(s,n)}}function gn(e,t,o,s,i,n){if(void 0===t||null===t.value)return-1;if(Pi(t.value))throw t;const r=mn(t.value),a=typeof r;let l,c,h,d,u,g,p=0,m=i-1;const f="desc"===s?t=>mn(n(e,i-t-1)):t=>mn(n(e,t));for(;m-p>=0;){for(h=Math.floor((p+m)/2),d=h,u=f(d),g=typeof u;p<d&&a!==g;)d--,u=f(d),g=typeof u;g===a&&null!=u?("strict"===o&&u===r?(l=u,c=d):"nextSmaller"===o&&u<=r?(null==l||l<u||l===u&&c<d)&&(l=u,c=d):"nextGreater"===o&&u>=r&&(void 0===l||l>u||l===u&&c<d)&&(l=u,c=d),u>r||"strict"===o&&u===r?m=d-1:p=h+1):p=h+1}return void 0===c?-1:"desc"===s?i-c-1:c}function pn(e,t,o,s,i,n,r=!1){if(void 0===t||null===t.value)return-1;if(Pi(t.value))throw t;const a=mn(t.value),l=r?(e,t)=>mn(i(e,s-t-1)):(e,t)=>mn(i(e,t)),c="wildcard"!==o||"string"!=typeof a||!(a.includes("*")||a.includes("?"));if(n&&c){const t=r?"reverseSearch":"forwardSearch";let i=n[t].get(e);if(void 0===i){i=new Map;for(let t=0;t<s;t++){const o=l(e,t)??null;i.has(o)||i.set(o,t)}n[t].set(e,i)}if(i.has(a)){const e=i.get(a);return r?s-e-1:e}if("strict"===o)return-1}const h=function(e,t,o,s,i){let n=o=>i(e,o)===t;if("wildcard"===o&&"string"==typeof t&&(t.includes("*")||t.includes("?"))){const o=hn(t);n=t=>{const s=i(e,t);return"string"==typeof s&&o.test(s)}}let r,a=-1;"nextSmaller"===o&&(n=o=>{const s=i(e,o);return(!r&&fn(t,s)>=0||fn(t,s)>=0&&fn(s,r)>0)&&(r=s,a=o),s===t});"nextGreater"===o&&(n=o=>{const s=i(e,o);return(!r&&fn(t,s)<=0||fn(t,s)<=0&&fn(s,r)<0)&&(r=s,a=o),s===t});for(let e=0;e<s;e++)if(n(e))return e;return a}(e,a,o,s,l);return r&&-1!==h?s-h-1:h}function mn(e){return"string"==typeof e?Wi(e):e}function fn(e,t){let o=Oi.indexOf(typeof e)-Oi.indexOf(typeof t);return 0===o&&("string"==typeof e&&"string"==typeof t?o=e.localeCompare(t):"number"==typeof e&&"number"==typeof t?o=e-t:"boolean"==typeof e&&"boolean"==typeof t&&(o=Number(e)-Number(t))),o}function vn(e){return void 0===e?[[]]:bi(e)?e:[[e]]}function bn(e,t){return en(e,((e,o)=>(e.push(t(o)),e)),[],"rowFirst")}function Sn(e){if(void 0===e)return!1;const{value:t}=e;return null!==t&&""!==t}function yn(e){return/^https?:\/\//i.test(e)?e:`https://${e}`}const Cn=new n;function wn(e,t){return{url:e=yn(e),label:t||e,isExternal:!0,isUrlEditable:!0}}Cn.add("sheet_URL",{match:e=>nt(e),createLink:(e,t)=>({label:t,url:e,isExternal:!1,isUrlEditable:!1}),urlRepresentation(e,t){const o=at(e);return t.tryGetSheetName(o)||Uo("Invalid sheet")},open(e,t){const o=at(e);t.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t.model.getters.getActiveSheetId(),sheetIdTo:o}).isCancelledBecause("SheetIsHidden")&&t.notifyUser({type:"warning",sticky:!1,text:Uo("Cannot open the link because the linked sheet is hidden.")})},sequence:0});const xn={createLink:wn,match:e=>tt(e),open:e=>window.open(e,"_blank"),urlRepresentation:e=>e,sequence:0};function In(e){return Cn.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((t=>t.match(e)))||xn}function En(e,t){return In(e.url).urlRepresentation(e.url,t)}function Rn(e,t){In(e.url).open(e.url,t)}function Tn(e){if("string"==typeof e){if(et(e)){const{label:t,url:o}=st(e);return In(o).createLink(o,t)}return tt(e)?wn(e):void 0}}function An(e){let t;if('"'===e.current?(e.shift(),t='"'):e.currentStartsWith("[$")&&(e.advanceBy(2),t="]"),!t)return null;let o="";for(;e.current&&e.current!==t;)o+=e.shift();if(e.current!==t)throw new Error("Unterminated string in format");return e.shift(),{type:"STRING",value:o}}const _n=new Set("$+-/():!^&~{}<>= ");function Dn(e){if("\\"===e.current){e.shift();const t=e.shift();if(!t)throw new Error("Unexpected end of format string");return{type:"CHAR",value:t}}return _n.has(e.current)?{type:"CHAR",value:e.shift()}:null}function On(e){return","===e.current?(e.shift(),{type:"THOUSANDS_SEPARATOR",value:","}):null}function Fn(e){return"@"===e.current?(e.shift(),{type:"TEXT_PLACEHOLDER",value:"@"}):null}function Mn(e){return"."===e.current?(e.shift(),{type:"DECIMAL_POINT",value:"."}):null}function Pn(e){return"%"===e.current?(e.shift(),{type:"PERCENT",value:"%"}):null}function Nn(e){if("0"===e.current||"#"===e.current){const t=e.current;return e.shift(),{type:"DIGIT",value:t}}return null}const kn=new Set("dmqyhsa");function Vn(e){if(!kn.has(e.current))return null;const t=e.current;let o="";for(;e.current===t;)o+=e.shift();return{type:"DATE_PART",value:o}}function Ln(e){if("*"!==e.current)return null;e.shift();const t=e.shift();if(!t)throw new Error("Unexpected end of format string");return{type:"REPEATED_CHAR",value:t}}const Hn=20,Un={};function Bn(e){let t=Un[e];return void 0===t&&(t=function(e){const t=function(e){const t=new Mt(e),o=[];let s=[];for(o.push(s);!t.isOver();){if(";"===t.current){s=[],o.push(s),t.shift();continue}let e=Nn(t)||An(t)||Dn(t)||On(t)||Mn(t)||Pn(t)||Vn(t)||Fn(t)||Ln(t);if(!e)throw new Error("Unknown token at "+t.remaining());s.push(e)}return o}(e);for(const e of t){const t=e.filter((e=>"REPEATED_CHAR"===e.type));for(const e of t.slice(1))e.type="CHAR"}const o=$n(t[0])||zn(t[0])||Gn(t[0]);if(!o)throw new Error("Invalid first format part of: "+e);if(t.length>1&&"text"===o.type)throw new Error("The first format in a multi-part format must be a number format: "+e);const s=$n(t[1])||zn(t[1]);if(t[1]?.length&&!s)throw new Error("Invalid second format part of: "+e);const i=$n(t[2])||zn(t[2]);if(t[2]?.length&&!i)throw new Error("Invalid third format part of: "+e);const n=Gn(t[3]);if(t[3]?.length&&!n)throw new Error("Invalid fourth format part of: "+e);return{positive:o,negative:s,zero:i,text:n}}(e),Un[e]=t),t}function zn(e){if(!e||!function(e){return e.every((e=>"DIGIT"===e.type||"DECIMAL_POINT"===e.type||"THOUSANDS_SEPARATOR"===e.type||"PERCENT"===e.type||"STRING"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e))return;const t=[];let o,s=t,i=0,n=0,r=e.findLastIndex((e=>"DIGIT"===e.type)),a=!1,l=0;for(let c=0;c<e.length;c++){const h=e[c];switch(h.type){case"DIGIT":s===t?s.push(h):l<Hn&&(s.push(h),l++);break;case"DECIMAL_POINT":if(s!==t)throw new Error("Multiple decimal points in a number format");o=[],s=o;break;case"REPEATED_CHAR":case"CHAR":case"STRING":s.push(h);break;case"PERCENT":i++,s.push(h);break;case"THOUSANDS_SEPARATOR":c-1===r?(n+=1,r++,s.push(h)):"DIGIT"===e[c+1]?.type&&"DIGIT"===e[c-1]?.type?(s===t&&(a=!0),s.push(h)):s.push({type:"CHAR",value:","})}}return{type:"number",integerPart:t,decimalPart:o,percentSymbols:i,thousandsSeparator:a,magnitude:n}}function $n(e){const t=e&&function(e){return e.every((e=>"DATE_PART"===e.type||"DECIMAL_POINT"===e.type||"THOUSANDS_SEPARATOR"===e.type||"STRING"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e)?{type:"date",tokens:e}:void 0;if(!t)return;if(t.tokens.length&&t.tokens.every((e=>"DATE_PART"===e.type&&"a"===e.value)))throw new Error("Invalid date format");const o=function(e){const t=e.filter((e=>"DATE_PART"===e.type));for(let e=0;e<t.length;e++)!t[e].value.startsWith("m")||t[e].value.length>2||(t[e-1]?.value.startsWith("h")||t[e+1]?.value.startsWith("s"))&&(t[e].value=t[e].value.replaceAll("m","M"));return e}(t.tokens.map((e=>"THOUSANDS_SEPARATOR"===e.type||"DECIMAL_POINT"===e.type?{type:"CHAR",value:e.value}:e)));return{type:"date",tokens:o}}function Gn(e){return e&&function(e){return e.every((e=>"STRING"===e.type||"TEXT_PLACEHOLDER"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e)?{type:"text",tokens:e}:void 0}function Wn(e){return[qn(e.positive),qn(e.negative),qn(e.zero),qn(e.text)].filter(lt).join(";")}function qn(e){if(!e)return;let t="";const o="number"!==e.type?e.tokens:function(e){let t=[...e.integerPart];e.decimalPart&&(t.push({type:"DECIMAL_POINT",value:"."}),t.push(...e.decimalPart));return t}(e);for(let e of o)switch(e.type){case"STRING":t+=`[$${e.value}]`;break;case"CHAR":t+=(s=e.value,_n.has(s)?e.value:`\\${e.value}`);break;case"REPEATED_CHAR":t+="*"+e.value;break;default:t+=e.value}var s;return t}const Zn=11,jn="REPEATED_CHAR_PLACEHOLDER_",Yn={0:Uo("January"),1:Uo("February"),2:Uo("March"),3:Uo("April"),4:Uo("May"),5:Uo("June"),6:Uo("July"),7:Uo("August"),8:Uo("September"),9:Uo("October"),10:Uo("November"),11:Uo("December")},Xn={0:Uo("Sunday"),1:Uo("Monday"),2:Uo("Tuesday"),3:Uo("Wednesday"),4:Uo("Thursday"),5:Uo("Friday"),6:Uo("Saturday")};function Kn(e,{format:t,locale:o,formatWidth:s}){switch("boolean"==typeof e&&(e=e?"TRUE":"FALSE"),typeof e){case"string":{if(e.includes('\\"')&&(e=e.replaceAll(/\\"/g,'"')),!t)return e;const o=Bn(t);let i=o.text||o.positive;return i&&"text"===i.type?Jn(e,i,s):e}case"number":t||(t=lr(e));const i=Bn(t);if("text"===i.positive.type)return Jn(e.toString(),i.positive,s);let n=i.positive;if(e<0&&i.negative?(n=i.negative,e=-e):0===e&&i.zero&&(n=i.zero),"date"===n.type)return Qn(function(e,t){const o=Ls(e),s=t.tokens.some((e=>"DATE_PART"===e.type&&"a"===e.value));let i="";for(const e of t.tokens)switch(e.type){case"DATE_PART":i+=rr(o,e.value,s);break;case"REPEATED_CHAR":i+=jn+e.value;break;default:i+=e.value}return i}(e,n),s);const r=e<0,a=Qn(function(e,t,o){if(e===1/0)return"∞"+(t.percentSymbols?"%":"");const s=2*t.percentSymbols-3*t.magnitude;e*=10**s;let i=0;void 0!==t.decimalPart&&(i=t.decimalPart.filter((e=>"DIGIT"===e.type)).length);const{integerDigits:n,decimalDigits:r}=tr(Math.abs(e),i);let a=function(e,t,o){let s=t.integerPart;s.some((e=>"DIGIT"===e.type))||(s=[...s,{type:"DIGIT",value:"#"}]);"0"===e&&(e="");let i="";const n=s.findIndex((e=>"DIGIT"===e.type));let r=e.length-1;function a(t,s){if("0"===s&&(t=t||"0"),!t)return;const n=e.length-1-r;i=o&&n>0&&n%3==0?t+o+i:t+i}for(let t=s.length-1;t>=0;t--){const o=s[t];switch(o.type){case"DIGIT":if(a(e[r],o.value),r--,n===t)for(;r>=0;)a(e[r],"0"),r--;break;case"THOUSANDS_SEPARATOR":break;case"REPEATED_CHAR":i=jn+o.value+i;break;default:i=o.value+i}}return i}(n,t,t.thousandsSeparator?o.thousandsSeparator:void 0);void 0!==t.decimalPart&&(a+=o.decimalSeparator+function(e,t){if(!t.decimalPart)return"";let o="",s=0;for(const i of t.decimalPart)switch(i.type){case"DIGIT":o+="#"===i.value?e[s]||"":e[s]||"0",s++;break;case"THOUSANDS_SEPARATOR":break;case"REPEATED_CHAR":o+=jn+i.value;break;default:o+=i.value}return o}(r||"",t));return a}(Math.abs(e),n,o),s);return r?"-"+a:a;case"object":return""}}function Jn(e,t,o){let s="";for(const o of t.tokens)switch(o.type){case"TEXT_PLACEHOLDER":s+=e;break;case"CHAR":case"STRING":s+=o.value;break;case"REPEATED_CHAR":s+=jn+o.value}return Qn(s,o)}function Qn(e,t){const o=e.indexOf(jn);if(-1===o)return e;const s=e.slice(0,o),i=e.slice(o+jn.length+1),n=e[o+jn.length];const{timesToRepeat:r,padding:a}=function(){if(!t)return{timesToRepeat:0,padding:""};const e=t.measureText(s+i),o=t.measureText(n),r=t.availableWidth-e;if(r<=0)return{timesToRepeat:0,padding:""};const a=Math.floor(r/o),l=r-a*o,c=t.measureText(" ");return{timesToRepeat:a,padding:" ".repeat(Math.floor(l/c))}}();return s+n.repeat(r)+a+i}const er=[];function tr(e,t=Hn){const o=e.toString();if(o.includes("e"))return function(e,t=Hn){let o=er[t];o||(o=new Intl.NumberFormat("en-US",{maximumFractionDigits:t,useGrouping:!1}),er[t]=o);const[s,i]=o.format(e).split(".");return{integerDigits:s,decimalDigits:i}}(e,t);if(Number.isInteger(e))return{integerDigits:o,decimalDigits:void 0};const s=o.indexOf(".");let i=o.substring(0,s),n=o.substring(s+1);if(0===t)return Number(n[0])>=5&&(i=(Number(i)+1).toString()),{integerDigits:i,decimalDigits:void 0};if(n.length>t){const{integerDigits:e,decimalDigits:o}=function(e,t){let o="0",s=e,i=e.slice(0,t);const n=t;if(Number(e[n])<5)return{integerDigits:o,decimalDigits:i};const r=i.match(sr)?.[0]||"",a=(Number(i)+1).toString(),l=i.slice(r.length),c=a.length>l.length;c&&!r?(o="1",s=void 0):s=c?r.slice(0,-1)+a:r+a;return{integerDigits:o,decimalDigits:s}}(n,t);n=o,"0"!==e&&(i=(Number(i)+Number(e)).toString())}return{integerDigits:i,decimalDigits:or(n||"")}}function or(e){let t=e.length-1;for(;t>=0&&"0"===e[t];)t--;return e.slice(0,t+1)||void 0}const sr=/^0+/;function ir(e,t){const{integerDigits:o,decimalDigits:s}=tr(e,20);return s?o+t+s:o}const nr=Et((function(e){if(!e)return!1;try{return"date"===Bn(e).positive.type}catch(e){return!1}}));function rr(e,t,o){switch(t){case"d":return e.getDate();case"dd":return e.getDate().toString().padStart(2,"0");case"ddd":return Xn[e.getDay()].slice(0,3);case"dddd":return Xn[e.getDay()].toString();case"m":return e.getMonth()+1;case"mm":return String(e.getMonth()+1).padStart(2,"0");case"mmm":return Yn[e.getMonth()].slice(0,3);case"mmmm":return Yn[e.getMonth()].toString();case"mmmmm":return Yn[e.getMonth()].slice(0,1);case"qq":return Uo("Q%(quarter)s",{quarter:e.getQuarter()}).toString();case"qqqq":return Uo("Quarter %(quarter)s",{quarter:e.getQuarter()}).toString();case"yy":const s=String(e.getFullYear()).replace("-","").padStart(2,"0");return s.slice(s.length-2);case"yyyy":return e.getFullYear();case"hhhh":return Math.floor((e.getTime()-xs.getTime())/36e5).toString();case"hh":let i=e.getHours();return o&&(i=0===i?12:i>12?i-12:i),i.toString().padStart(2,"0");case"MM":return e.getMinutes().toString().padStart(2,"0");case"ss":return e.getSeconds().toString().padStart(2,"0");case"a":return e.getHours()>=12?"PM":"AM";default:throw new Error(`invalid date format token: ${t}`)}}const ar=Et((function(e){return new RegExp(`[0-9]+${Be(e.decimalSeparator)}[0-9]`)}));function lr(e){let{integerDigits:t,decimalDigits:o}=tr(e);if(!o)return"0";const s=t.replace("-","").length;if(s+2>Zn)return"0";const i=Zn-s-1;return({decimalDigits:o}=tr(e,Math.min(i,o.length))),o?"0."+"0".repeat(o.length):"0"}function cr(e,t){if(!Ns(e,t))return;return Vs(e,t).format}function hr(e){const t=e.includes(".")?"0.00":"0",o=e.match(/[\$€]/);if(o){const s=e.match(/[\d]/),i="[$"+o.values().next().value+"]";return s.index<o.index?"#,##"+t+i:i+"#,##"+t}if(e.includes("%"))return t+"%"}function dr(e){const t=e.decimalPlaces??2,o=e.position??"before",s=e.code??"",i=e.symbol??"",n="#,##0"+(t?"."+"0".repeat(t):"");let r=`${s} ${i}`.trim();return"after"===o&&s&&(r=" "+r),function(e,t,o){const s=`[$${e}]`;return"before"===t?s+o:o+s}(r,o,n)}function ur(e){const t=e.decimalPlaces??2,o=e.position??"before",s=e.code??"",i=e.symbol??"",n="#,##0"+(t?"."+"0".repeat(t):"");let r=`${s} ${i}`.trim();"after"===o&&s&&(r=" "+r);return[gr(r,o,` ${n} `),gr(r,o,`(${n})`),gr(r,o," - ")].join(";")}function gr(e,t,o){const s=`[$${e}]`;return"before"===t?s+"* "+o:o+"* "+s}function pr(e){const t=Bn(e);return Wn({positive:mr(t.positive),negative:t.negative?mr(t.negative):void 0,zero:t.zero?mr(t.zero):void 0,text:t.text})}function mr(e){if("number"!==e.type||!e.decimalPart)return e;const t=e.decimalPart.filter((e=>"DIGIT"!==e.type));return{...e,decimalPart:void 0,integerPart:[...e.integerPart,...t]}}function fr({value:e,format:t},o){return Kn(e,{format:vr({value:e,format:t},void 0,o),locale:o})}function vr(e,t,o){let s=0;try{s=Math.abs(ki(e?.value,o))}catch(e){return""}const i=e?.format;if(void 0!==t){const e=t?.value;switch(e){case"k":return br(i,1,"k");case"m":return br(i,2,"m");case"b":return br(i,3,"b");default:throw new Ii(Uo("The formatting unit should be 'k', 'm' or 'b'."))}}return s<1e5?br(i,0,""):s<1e8?br(i,1,"k"):s<1e11?br(i,2,"m"):br(i,3,"b")}function br(e,t,o,s){const i=Bn(e||"#,##0");return Wn({positive:Sr(i.positive,t,o),negative:i.negative?Sr(i.negative,t,o):void 0,zero:i.zero?Sr(i.zero,t,o):void 0,text:i.text})}function Sr(e,t,o){if("number"!==e.type)return e;const s={type:"STRING",value:o};let i=[...e.integerPart];const n=i.findLastIndex((e=>"DIGIT"===e.type));if(-1===n)throw new Error("Cannot create a large number format from a format with no digit.");for(;"THOUSANDS_SEPARATOR"===i[n+1]?.type;)i=Rt(i,[n+1]);const r=i[n+1];i="STRING"===r?.type&&["m","k","b"].includes(r.value)?function(e,t,o){const s=[...e];return s.splice(o,1,t),s}(i,s,n+1):Tt(i,[s],n+1),t>0&&(i=Tt(i,Array(t).fill({type:"THOUSANDS_SEPARATOR",value:","}),n+1));const a=e.percentSymbols-i.filter((e=>"PERCENT"===e.type)).length;return i.push(...new Array(a).fill({type:"PERCENT",value:"%"})),{...e,integerPart:i,decimalPart:void 0,magnitude:t}}function yr(e,t){const o=Bn(e);return Wn(Bn(Wn({positive:Cr(o.positive,t),negative:o.negative?Cr(o.negative,t):void 0,zero:o.zero?Cr(o.zero,t):void 0,text:o.text})))}function Cr(e,t){return"number"!==e.type?e:t>0?function(e,t){let o=e.integerPart,s=e.decimalPart;if(!s){const e=o.findLastIndex((e=>"DIGIT"===e.type));s=o.slice(e+1),o=o.slice(0,e+1)}const i=je(0,t).map((()=>({type:"DIGIT",value:"0"}))),n=s.findLastIndex((e=>"DIGIT"===e.type));s=-1===n?[...i,...s]:Tt(s,i,n+1);return{...e,decimalPart:s,integerPart:o}}(e,t):function(e,t){let o=e.decimalPart;if(!o)return e;const s=[];let i=0;for(let e=o.length-1;e>=0&&!(i>=Math.abs(t));e--)"DIGIT"===o[e].type&&(i++,s.push(e));if(o=Rt(o,s),o.some((e=>"DIGIT"===e.type)))return{...e,decimalPart:o};return{...e,decimalPart:void 0,integerPart:[...e.integerPart,...o]}}(e,Math.abs(t))}function wr(e){const t=Bn(e);for(const e of[t.positive,t.negative,t.zero])if(e&&"date"===e.type&&e.tokens.some((e=>"DATE_PART"===e.type&&e.value.includes("q"))))return!1;return!0}function xr(e){if(!e)return!1;try{return"text"===Bn(e).positive.type}catch{return!1}}function Ir(e,t){return Rr({value:xr(t.format)&&null!==e.parsedValue?e.content:e.parsedValue,format:t.format},t.locale)}function Er(e,t){if(e.startsWith("="))throw new Error(`Cannot parse "${e}" because it's not a literal value. It's a formula`);if(""===e)return null;if(Js(e,fi))return ei(e,fi);const o=Vs(e,t);return o?o.value:Ke(e)?"TRUE"===e.toUpperCase():e}function Rr(e,t=fi,o){const s=Tn(e.value);if(!s)return Tr(e,t,o);const i=Er(s.label,t);return{...Tr({value:i,format:e.format||("number"==typeof i?cr(s.label,t)||hr(s.label):void 0)},t,o),link:s}}function Tr(e,t,o){let{value:s,format:i,message:n}=e;i=o?.format||i;const r=Kn(s,{format:i,locale:t});return Pi(s)?function(e,t){return{value:e,formattedValue:e,message:t,type:oi.error,isAutoSummable:!1,defaultAlign:"center"}}(s,n):null===s?_r(i):xr(i)?Ar(Gi(s),i,r):"number"==typeof s?nr(i||"")?function(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.number,isAutoSummable:!1,defaultAlign:"right"}}(s,i,r):function(e,t,o){return{value:e||0,format:t,formattedValue:o,type:oi.number,isAutoSummable:!0,defaultAlign:"right"}}(s,i,r):"boolean"==typeof s?function(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.boolean,isAutoSummable:!1,defaultAlign:"center"}}(s,i,r):Ar(s,i,r)}function Ar(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.text,isAutoSummable:!0,defaultAlign:"left"}}const _r=Et((function(e){return{value:null,format:e,formattedValue:"",type:oi.empty,isAutoSummable:!0,defaultAlign:"left"}}));function Dr(e){const t=ws.now();switch(e){case"today":return Us(t);case"yesterday":return Us(ws.fromTimestamp(t.setDate(t.getDate()-1)));case"tomorrow":return Us(ws.fromTimestamp(t.setDate(t.getDate()+1)));case"lastWeek":return Us(ws.fromTimestamp(t.setDate(t.getDate()-7)));case"lastMonth":return Us(ws.fromTimestamp(t.setMonth(t.getMonth()-1)));case"lastYear":return Us(ws.fromTimestamp(t.setFullYear(t.getFullYear()-1)))}}function Or(e,t){return"dateValue"in e&&"exactDate"!==e.dateValue?[Dr(e.dateValue)]:e.values.map((e=>Ps(e,t)))}function Fr(e,t){return e.values.map((e=>Vi(e,t)))}function Mr(e,t){return e.map((e=>{if(e.startsWith("="))return e;const o=Er(e,t);return"number"==typeof o?Kn(o,{format:t.dateFormat,locale:t}):""}))}function Pr(e){return 20+120*Math.exp(-.035*(e-1))}const Nr=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,"i"),kr=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,"i"),Vr=new RegExp(/^\$?([A-Z]{1,3})+$/,"i"),Lr=new RegExp(/^\$?([0-9]{1,7})+$/,"i"),Hr=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,"i"),Ur=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,"i"),Br=new RegExp(/^\s*('.+'!|[^']+!)?/.source+"("+[Nr.source,/(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*:\s*(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*/i.source,/\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*:\s*\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*/i.source].join("|")+")"+/$/.source,"i");function zr(e){return Ur.test(e)}function $r(e){return Vr.test(e)}function Gr(e){return Lr.test(e)}function Wr(e){return kr.test(e)}function qr(e){if(!e.includes("!"))return{xc:e};const t=e.split("!"),o=t.pop();return{sheetName:$e(t.join("!"))||void 0,xc:o}}function Zr(e,t){return void 0!==e?`${We(e)}!${t}`:t}class jr{getSheetSize;_zone;parts;invalidXc;prefixSheet=!1;sheetId;invalidSheetName;constructor(e,t){this.getSheetSize=t,this._zone=e.zone,this.prefixSheet=e.prefixSheet,this.invalidXc=e.invalidXc,this.sheetId=e.sheetId,this.invalidSheetName=e.invalidSheetName;let o=[...e.parts];1===e.parts.length&&gs(this.zone)>1?o.push({...e.parts[0]}):2===e.parts.length&&1===gs(this.zone)&&o.pop(),this.parts=o}static fromRange(e,t){return e instanceof jr?e:new jr(e,t.getSheetSize)}get unboundedZone(){return this._zone}get zone(){const{left:e,top:t,bottom:o,right:s}=this._zone;if(void 0!==s&&void 0!==o)return this._zone;if(void 0===o&&void 0!==s)return{right:s,top:t,left:e,bottom:this.getSheetSize(this.sheetId).numberOfRows-1};if(void 0===s&&void 0!==o)return{bottom:o,left:e,top:t,right:this.getSheetSize(this.sheetId).numberOfCols-1};throw new Error(Uo("Bad zone format"))}static getRangeParts(e,t){const o=e.split(":").map((e=>{const t=zr(e);return{colFixed:!t&&e.startsWith("$"),rowFixed:t?e.startsWith("$"):e.includes("$",1)}})),s=void 0===t.bottom,i=void 0===t.right;return s&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed),i&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed),o}get isFullCol(){return void 0===this._zone.bottom}get isFullRow(){return void 0===this._zone.right}get rangeData(){return{_zone:this._zone,_sheetId:this.sheetId}}orderZone(){if(Wo(this._zone))return this;const e={...this._zone};let t=this.parts;if(void 0!==e.right&&e.right<e.left){let o=e.right;e.right=e.left,e.left=o,t=[{colFixed:t[1]?.colFixed||!1,rowFixed:t[0]?.rowFixed||!1},{colFixed:t[0]?.colFixed||!1,rowFixed:t[1]?.rowFixed||!1}]}if(void 0!==e.bottom&&e.bottom<e.top){let o=e.bottom;e.bottom=e.top,e.top=o,t=[{colFixed:t[0]?.colFixed||!1,rowFixed:t[1]?.rowFixed||!1},{colFixed:t[1]?.colFixed||!1,rowFixed:t[0]?.rowFixed||!1}]}return this.clone({zone:e,parts:t})}clone(e){return new jr({zone:e?.zone?e.zone:{...this._zone},sheetId:e?.sheetId?e.sheetId:this.sheetId,invalidSheetName:e&&"invalidSheetName"in e?e.invalidSheetName:this.invalidSheetName,invalidXc:e&&"invalidXc"in e?e.invalidXc:this.invalidXc,parts:e?.parts?e.parts:this.parts.map((e=>({rowFixed:e.rowFixed,colFixed:e.colFixed}))),prefixSheet:void 0!==e?.prefixSheet?e.prefixSheet:this.prefixSheet},this.getSheetSize)}}function Yr(e,t,o){const s=o.sheetId===e?t:o.sheetId;return o.clone({sheetId:s})}function Xr(e,t,o){if(!o)return;const s=e.getRangeFromSheetXC(t,o);return s.invalidSheetName||s.invalidXc?void 0:s}function Kr(e,t){const o=[];for(const s of t){const t=s.dataRange;if(!e.isRangeValid(t)){o.push(s);continue}const{sheetName:i}=qr(t),n=i?`${i}!`:"",r=zo(t);if(r.bottom!==r.top&&r.left!=r.right)if(r.right)for(let e=r.left;e<=r.right;++e){const t=e===r.left?s:{yAxisId:s.yAxisId};o.push({...t,dataRange:`${n}${qo({left:e,right:e,top:r.top,bottom:r.bottom})}`})}else for(let e=r.top;e<=r.bottom;++e){const t=e===r.top?s:{yAxisId:s.yAxisId};o.push({...t,dataRange:`${n}${qo({left:r.left,right:r.right,top:e,bottom:e})}`})}else o.push(s)}return o}function Jr(e){const t=[];for(const o of e)for(const e of rs(o.zone))t.push({...e,sheetId:o.sheetId});return t}function Qr(e,t,o){const s=[];return t.forEach((t=>{const i=function(e,t){e=e.toLocaleLowerCase();let o=0,s=0,i=(t=t.toLocaleLowerCase()).length,n=0;for(let r=0;r<i;r++)t[r]===e[n]?(n++,s+=100+s-r/200):s=0,o+=s;return n===e.length?o:0}(e,o(t));i>0&&s.push({score:i,elem:t})})),s.sort(((e,t)=>t.score-e.score)),s.map((e=>e.elem))}function ea(e){const t=[];for(let o=0;o<e;o++){const e={cells:{}};t.push(e)}return t}function ta(e,t,o){return o.map((o=>o>=e?o+t:o))}function oa(e,t){return e=[...e].sort(((e,t)=>t-e)),t.map((t=>{for(const o of e)if(t>o)t--;else if(t===o)return;return t})).filter(lt)}function sa(e,t="Sheet"){let o=1,s=`${t}${o}`;for(;e.includes(s);)s=`${t}${o}`,o++;return s}function ia(e,t){let o=1;const s=Uo("Copy of %s",e);let i=s.toString();for(;t.includes(i);)i=`${s} (${o})`,o++;return i}function na(e,t){return void 0!==e&&void 0!==t&&$e(e.trim().toUpperCase())===$e(t.trim().toUpperCase())}function ra(e,t=1){return t*(e+ne)-ne}function aa(e,t,o,s){const i=ba(e,t,o,"wrap"===o?.wrapping?s-2*ne:void 0).length;return ra(fa(o),i)+2*re}function la(e,t=!1,o=!1){return`${o?"italic":""} ${t?"bold":""} ${e}px ${ve}`}const ca={};function ha(e,t,o,s="pt"){const i=ma(o,s);e.save(),e.font=i;const n=da(e,t);return e.restore(),n}function da(e,t){const o=e.font;return ca[o]||(ca[o]={}),void 0===ca[o][t]&&(ca[o][t]=e.measureText(t).width),ca[o][t]}const ua={};function ga(e,t,o,s="pt"){const i=ma(o,s);e.save(),e.font=i;const n=function(e,t){const o=e.font;ua[o]||(ua[o]={});if(void 0===ua[o][t]){const s=e.measureText(t),i=s.width,n=s.fontBoundingBoxAscent+s.fontBoundingBoxDescent;ua[o][t]={width:i,height:n}}return ua[o][t]}(e,t);return e.restore(),n}function pa(e){return Math.round(96*e/72)}function ma(e,t="pt"){return`${e.italic?"italic ":""}${e.bold?"bold":me} ${("pt"===t?fa(e):e.fontSize)??fe}px ${ve}`}function fa(e){return pa(e?.fontSize||fe)}function va(e,t,o,s){if(ha(e,t,s)<=o)return[t];const i=[];let n="";for(let r of t){ha(e,n+r,s)>o?(i.push(n),n=r):n+=r}return i.push(n),i}function ba(e,t,o,s){o||(o={});const i=[],n=t.includes(Ne)?t.split(Ne):[t];for(const t of n){const n=t.includes(" ")?t.split(" "):[t];if(!s){i.push(t);continue}let r="",a=s;for(let t of n){const n=va(e,t,s,o),l=n.pop(),c=ha(e,l,o);if(n.length)""!==r&&(i.push(r),r="",a=s),n.forEach((e=>{i.push(e)})),r=l,a=s-c;else{const t=""===r?l:" "+l,n=ha(e,t,o);n<=a?(r+=t,a-=n):(i.push(r),r=l,a=s-c)}}""!==r&&i.push(r)}return i}function Sa(e){return e?e.toLowerCase():""}const ya=/([0-9\.]*)px/;function Ca(e,t,o){let s=da(e,t);if(s<=o)return t;const i=da(e,"…");if(s<=i)return t;let n=t.length;for(;s>=o-i&&n-- >0;)s=da(e,t=t.substring(0,n));return t+"…"}function wa(e,t,o,s=!1,i=!1,n=function(e){return Number(e.match(ya)?.[1])}(e.font)/10){if(e.fillText(t,o.x,o.y),!s&&!i)return;const r=e.measureText(t),a=r.width,l=r.actualBoundingBoxAscent+r.actualBoundingBoxDescent,c=r.fontBoundingBoxAscent+r.fontBoundingBoxDescent;let{x:h,y:d}=o,u=d,g=d;switch(e.textAlign){case"center":h-=a/2;break;case"right":h-=a}switch(e.textBaseline){case"top":g+=c-2*n,u+=c/2-n;break;case"middle":g+=c/2-n;break;case"alphabetic":g+=2*n,u-=3*n;break;case"bottom":g=d,u-=l/2-n/2}s&&(e.lineWidth=n,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(h,g),e.lineTo(h+a,g),e.stroke()),i&&(e.lineWidth=n,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(h,u),e.lineTo(h+a,u),e.stroke())}class xa{smallUuid(){return window.crypto?"10000000-1000".replace(/[01]/g,(e=>{const t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})):"xxxxxxxx-xxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}uuidv4(){return window.crypto?"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(e=>{const t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})):"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}}function Ia(e,t){const o=new Set(t.map((e=>e.left))),s=new Set(t.map((e=>e.right))),i=new Set(t.map((e=>e.top))),n=new Set(t.map((e=>e.bottom))),r=1===i.size&&1===n.size||1===o.size&&1===s.size?function(e){return e.reduce(((e,t)=>{const o=e.length;for(let s=0;s<o;s++)if(es(e[s],t))return e[s]=Ko(e[s],t),e;return e[o]=t,e}),[])}(t):[t[t.length-1]],a=r.map((e=>rs(e))).flat();return{sheetId:e,zones:t,clippedZones:r,columnsIndexes:[...new Set(a.map((e=>e.col)))].sort(((e,t)=>e-t)),rowsIndexes:[...new Set(a.map((e=>e.row)))].sort(((e,t)=>e-t))}}function Ea(e,t){if(!t.length||!t[0].length)return e;const o=t[0].length,s=t.length;return e.map((e=>function(e,t,o){const s=Math.max(e.right-t+1,e.left),i=Math.max(e.bottom-o+1,e.top),n=[];for(let r=e.left;r<=s;r+=t)for(let s=e.top;s<=i;s+=o)n.push({left:r,top:s,bottom:s+o-1,right:r+t-1});return n}(e,o,s))).flat()}function Ra(e){if(!e[si.Html])return{text:e[si.PlainText]};const t=(new DOMParser).parseFromString(e[si.Html],"text/html"),o=t.querySelector("div")?.getAttribute("data-osheet-clipboard"),s=o&&JSON.parse(o);return{text:e[si.PlainText],data:s}}class Ta{getters;dispatch;constructor(e,t){this.getters=e,this.dispatch=t}copy(e){}paste(e,t,o){}isPasteAllowed(e,t,o,s){return"Success"}isCutAllowed(e){return"Success"}getPasteTarget(e,t,o,s){return{zones:[],sheetId:e}}convertTextToClipboardData(e){}}class Aa extends Ta{copy(e){}pasteFromCopy(e,t,o,s){if(1===t.length)for(const i of Ea(t,o))this.pasteZone(e,i.left,i.top,o,s);else for(const i of _o(t))for(let t=i.left;t<=i.right;t++)for(let n=i.top;n<=i.bottom;n++)this.pasteZone(e,t,n,o,s)}pasteZone(e,t,o,s,i){}}class _a extends Aa{queuedBordersToAdd={};copy(e){const t=e.sheetId;if(0===e.zones.length)return;const{rowsIndexes:o,columnsIndexes:s}=e,i=[];for(const e of o){const o=[];for(const i of s){const s={col:i,row:e,sheetId:t};o.push(this.getters.getCellBorder(s))}i.push(o)}return{borders:i}}paste(e,t,o){const s=e.sheetId;if("asValue"===o.pasteOption)return;const i=e.zones;if(o.isCutOperation){const{left:e,top:o}=i[0];this.pasteZone(s,e,o,t.borders)}else this.pasteFromCopy(s,i,t.borders);this.executeQueuedChanges(s)}pasteZone(e,t,o,s){for(const[i,n]of s.entries())for(const[s,r]of n.entries()){const n={col:t+s,row:o+i,sheetId:e};this.pasteBorder(r,n)}}pasteBorder(e,t){const o={...this.getters.getCellBorder(t),...e},s=JSON.stringify(o);this.queuedBordersToAdd[s]||(this.queuedBordersToAdd[s]=[]),this.queuedBordersToAdd[s].push(hs(t))}executeQueuedChanges(e){for(const t in this.queuedBordersToAdd){const o=this.queuedBordersToAdd[t],s=JSON.parse(t),i=_o(o,[]);this.dispatch("SET_BORDERS_ON_TARGET",{sheetId:e,target:i,border:s})}this.queuedBordersToAdd={}}}const Da=["%"],Oa="+,-,*,/,:,=,<>,>=,>,<=,<,^,&".split(",").concat(Da);function Fa(e,t=fi){e=xt(e);const o=new Mt(e),s=[],i=Ct.test(e)?Ga:Wa;for(;!o.isOver();){let e=qa(o)||i(o)||ka(o,t)||Na(o)||Va(o)||Ua(o)||Ma(o)||Za(o)||Ha(o,t)||$a(o);e||(e={type:"UNKNOWN",value:o.shift()}),s.push(e)}return s}function Ma(e){return"?"===e.current?(e.shift(),{type:"DEBUGGER",value:"?"}):null}const Pa={"(":{type:"LEFT_PAREN",value:"("},")":{type:"RIGHT_PAREN",value:")"}};function Na(e){if("("===e.current||")"===e.current){const t=e.shift();return Pa[t]}return null}function ka(e,t){if(e.current===t.formulaArgSeparator){return{type:"ARG_SEPARATOR",value:e.shift()}}return null}function Va(e){for(let t of Oa)if(e.currentStartsWith(t))return e.advanceBy(t.length),{type:"OPERATOR",value:t};return null}const La=new Set("0123456789");function Ha(e,t){if(!La.has(e.current)&&e.current!==t.decimalSeparator)return null;const o=e.remaining().match(Xs(t.decimalSeparator));return o?(e.advanceBy(o[0].length),{type:"NUMBER",value:o[0]}):null}function Ua(e){if('"'===e.current){const t=e.shift();let o=t;for(;e.current&&(e.current!==t||"\\"===o[o.length-1]);)o+=e.shift();return'"'===e.current&&(o+=e.shift()),{type:"STRING",value:o}}return null}const Ba=/\p{L}|\p{N}|_|\.|!|\$/u,za=new Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.!$");function $a(e){let t="";if("'"===e.current){let o=e.shift();for(t+=o;e.current;)if(o=e.shift(),t+=o,"'"===o){if(!e.current||"'"!==e.current)break;o=e.shift(),t+=o}if("'"!==o)return{type:"UNKNOWN",value:t}}for(;e.current&&(za.has(e.current)||e.current.match(Ba));)t+=e.shift();if(t.length){const e=t;return Br.test(e)?{type:"REFERENCE",value:e}:{type:"SYMBOL",value:e}}return null}function Ga(e){let t="";for(;" "===e.current||e.current&&e.current.match(Ct);)t+=e.shift();return t?{type:"SPACE",value:t}:null}function Wa(e){let t="";for(;" "===e.current;)t+=e.shift();return t?{type:"SPACE",value:t}:null}function qa(e){let t=0;for(;e.current===Ne;)t++,e.shift();return t?{type:"SPACE",value:Ne.repeat(t)}:null}function Za(e){return e.currentStartsWith(wi.InvalidReference)?(e.advanceBy(wi.InvalidReference.length),{type:"INVALID_REFERENCE",value:wi.InvalidReference}):null}function ja(e){if(!e||"object"!=typeof e||e.thousandsSeparator&&"string"!=typeof e.thousandsSeparator)return!1;for(const t of["code","name","decimalSeparator","dateFormat","timeFormat","formulaArgSeparator"])if(!e[t]||"string"!=typeof e[t])return!1;if(e.formulaArgSeparator===e.decimalSeparator)return!1;if(e.thousandsSeparator===e.decimalSeparator)return!1;try{Kn(1,{locale:e,format:"#,##0.00"}),Kn(1,{locale:e,format:e.dateFormat}),Kn(1,{locale:e,format:e.timeFormat})}catch{return!1}return!0}function Ya(e,t){return e.startsWith("=")?Qa(e,t):ol(e,t)}function Xa(e,t){return e.startsWith("=")?Qa(e,t):function(e,t){if(Ns(e,t)){const o=ki(e,t);let s=fi.dateFormat;return Number.isInteger(o)||(s+=" "+fi.timeFormat),Kn(o,{locale:fi,format:s})}return ol(e,t)}(e,t)}function Ka(e,t){return e.startsWith("=")?el(e,t):function(e,t){if(Ns(e,fi)){const o=ki(e,fi);let s=t.dateFormat;return Number.isInteger(o)||(s+=" "+t.timeFormat),Kn(o,{locale:t,format:s})}return function(e,t){if("."===t.decimalSeparator||!Js(e,fi))return e;const o=ar(fi);return e.replace(o,(e=>e.replace(".",t.decimalSeparator)))}(e,t)}(e,t)}function Ja(e,t){return e.startsWith("=")?Qa(e,t):ol(e,t)}function Qa(e,t){return tl(e,t,fi)}function el(e,t){return tl(e,fi,t)}function tl(e,t,o){if(t.formulaArgSeparator===o.formulaArgSeparator&&t.decimalSeparator===o.decimalSeparator)return e;const s=Fa(e,t);let i="";for(const e of s)"NUMBER"===e.type?i+=e.value.replace(t.decimalSeparator,o.decimalSeparator):"ARG_SEPARATOR"===e.type?i+=o.formulaArgSeparator:i+=e.value;return i}function ol(e,t){return"."!==t.decimalSeparator&&Js(e,t)?(t.thousandsSeparator&&(e=e.replaceAll(t.thousandsSeparator,"")),e.replace(t.decimalSeparator,".")):e}function sl(e,t){return rl(e,(e=>Xa(e,t)))}function il(e,t){return rl(e,(e=>Ka(e,t)))}function nl(e,t){const o=ze(e);return o.criterion.values=o.criterion.values.map((e=>Ka(e,t))),o}function rl(e,t){switch((e=ze(e)).type){case"CellIsRule":switch(e.operator){case"Between":case"NotBetween":case"Equal":case"NotEqual":case"GreaterThan":case"GreaterThanOrEqual":case"LessThan":case"LessThanOrEqual":return e.values=e.values.map((e=>t(e))),e;case"BeginsWith":case"ContainsText":case"EndsWith":case"NotContains":case"IsEmpty":case"IsNotEmpty":return e}case"DataBarRule":return e;case"ColorScaleRule":return e.minimum=al(e.minimum,t),e.maximum=al(e.maximum,t),e.midpoint&&(e.midpoint=al(e.midpoint,t)),e;case"IconSetRule":return e.lowerInflectionPoint.value=t(e.lowerInflectionPoint.value),e.upperInflectionPoint.value=t(e.upperInflectionPoint.value),e}}function al(e,t){if(!e?.value)return e;const o=t("formula"===e.type?"="+e.value:e.value),s="formula"===e.type?o.slice(1):o;return{...e,value:s}}function ll(e){return e.dateFormat+" "+e.timeFormat}function cl(e){let t=!1,o=!0;return ln(e,(e=>(t=!0,o=o&&e,o))),{foundBoolean:t,result:o}}function hl(e){let t=!1,o=!1;return ln(e,(e=>(t=!0,o=o||e,!o))),{foundBoolean:t,result:o}}function dl(e,t){return tn(e,((e,t)=>e+t),0,t)}function ul(e){return en(e,((e,t)=>Sn(t)?e.add(t?.value):e),new Set).size}function gl(e){const t=Array(e);for(let o=0;o<e;o++)t[o]=Array(e).fill(0),t[o][o]=1;return t}function pl(e){if(e.length!==e[0].length)throw new Ii(Uo("Function [[FUNCTION_NAME]] invert matrix error, only square matrices are invertible"));let t=1;const o=e.length,s=gl(o),i=e.map((e=>e.slice()));for(let e=0;e<o;e++){let n=i[e][e];if(0===n){for(let n=e+1;n<o;n++)if(0!=i[e][n]){ml(i,e,n),ml(s,e,n),t*=-1;break}if(n=i[e][e],0===n)return{determinant:0}}for(let t=0;t<o;t++)i[t][e]=i[t][e]/n,s[t][e]=s[t][e]/n;t*=n;for(let t=0;t<o;t++){if(t===e)continue;const n=i[e][t];for(let r=0;r<o;r++)i[r][t]-=n*i[r][e],s[r][t]-=n*s[r][e]}}return{inverted:s,determinant:t}}function ml(e,t,o){for(let s=0;s<e.length;s++){const i=e[s][t];e[s][t]=e[s][o],e[s][o]=i}}function fl(e,t){if(e.length!==t[0].length)throw new Ii(Uo("Cannot multiply matrices : incompatible matrices size."));const o=e[0].length,s=t.length,i=e.length,n=Array(s);for(let r=0;r<s;r++){n[r]=Array(o);for(let s=0;s<o;s++){let o=0;for(let n=0;n<i;n++)o+=e[n][s]*t[r][n];n[r][s]=o}}return n}function vl(e){if(!bi(e))return e;if(!bl(e))throw new Ii(Uo("The value should be a scalar or a 1x1 matrix"));return e[0][0]}function bl(e){return 1===e.length&&1===e[0].length}function Sl(e){return bi(e)&&!bl(e)}function yl(...e){const t=e[0].length;e.forEach(((e,o)=>Fi((()=>e.length===t),Uo("[[FUNCTION_NAME]] has mismatched dimensions for argument %s (%s vs %s).",o.toString(),t.toString(),e.length.toString()))))}function Cl(e,t){let o=0;const s=tn(e,((e,t)=>(o+=1,e+t)),0,t);return $i(o),s/o}function wl(e,t){let o=0;for(let s of e)if(bi(s))for(let e of s)for(let t of e)"number"==typeof t.value&&(o+=1);else{const e=s?.value;Pi(e)||"string"==typeof e&&!Js(e,t)&&!Vs(e,t)||(o+=1)}return o}function xl(e){return en(e,((e,t)=>void 0!==t&&null!==t.value?e+1:e),0)}function Il(e,t){let o={value:-1/0};return Ji(e,(e=>{e.value>=o.value&&(o=e)}),t),o.value===-1/0?{value:0}:o}function El(e,t){let o={value:1/0};return Ji(e,(e=>{e.value<=o.value&&(o=e)}),t),o.value===1/0?{value:0}:o}function Rl(e,t,o){const s=e[0].length?e:[je(1,t.flat().length+1)],i=s.length;let n=o[0].length?o:s;return n=n.length===i?rn(n):n,{_X:s,_newX:n}}function Tl(e,t,o=!0,s=!1){const i=t.flat(),n=i.length;let{_X:r}=Rl(e,t,[[]]);r=r.length===n?rn(r):r.slice(),yl(r[0],i);const a=r.length,l=n-a-(o?1:0),c=[i],h=rn(r.reverse());let d=[];for(let e=0;e<a;e++)if(d.push(0),o){for(const t of r[e])d[e]+=t;d[e]/=n}let u=0;if(o){for(const e of i)u+=e;u/=n}const g=h.map((e=>e.map(((e,t)=>e-d[t]))));o&&h.forEach((e=>e.push(1)));const p=_l(h,c);if(o||p.push([0]),!s)return p;const m=fl(g,rn(g)),{inverted:f}=pl(m);if(void 0===f)throw new Ii(Uo("Matrix is not invertible"));let v=0,b=0;for(let e=0;e<n;e++){const t=i[e]-u;let o=0;for(let t=0;t<a;t++){o+=g[e][t]*p[t][0]}const s=t-o;v+=s*s,b+=o*o}const S=Math.sqrt(v/l),y=b/(b+v),C=b/a/(v/l),w=[];for(let e=0;e<a;e++)w.push(S*Math.sqrt(f[e][e]));if(o){const e=fl(f,[d]),t=fl(rn([d]),e);w.push(S*Math.sqrt(t[0][0]+1/i.length))}const x=[[p[0][0],w[0],y,C,b],[p[1][0],w[1],S,l,v]];for(let e=2;e<a;e++)x.push([p[e][0],w[e],"","",""]);return o?x.push([p[a][0],w[a],"","",""]):x.push([0,"","","",""]),x}function Al(e,t,o,s){yl(t,e),Fi((()=>o>=1),Uo("Function [[FUNCTION_NAME]] A regression of order less than 1 cannot be possible."));const i=[e],n=t.map((e=>je(0,o).map((t=>Math.pow(e,o-t)))));s&&n.forEach((e=>e.push(1)));const r=_l(n,i);return s||r.push([0]),r}function _l(e,t){const o=fl(e,rn(e)),{inverted:s}=pl(o);if(void 0===s)throw new Ii(Uo("Matrix is not invertible"));const i=fl(e,t);return rn(fl(s,i))}function Dl(e,t,o){return e.reduce(((e,s,i)=>e+s*Math.pow(t,o-i)),0)}function Ol(e){return e.map((e=>e.map((e=>Math.exp(e)))))}function Fl(e){return e.map((e=>e.map((e=>Math.log(e)))))}function Ml(e,t,o,s){const{_X:i,_newX:n}=Rl(t,e,o),r=Tl(i,e,s,!1),a=r.length-1,l=n.map((e=>{let t=0;for(let o=0;o<a;o++)t+=r[o][0]*e[a-o-1];return t+=r[a][0],[t]}));return l.length===o.length?l:rn(l)}const Pl="(previous)",Nl="(next)";function kl(e,t){const o=e.definition.rows.map((e=>e.nameWithGranularity)),s=t.filter((e=>o.includes(e.field))),i=e.definition.columns.map((e=>e.nameWithGranularity));return{colDomain:t.filter((e=>i.includes(e.field))),rowDomain:s}}function Vl(e,t,o){return"column"===t?kl(e,o).colDomain:kl(e,o).rowDomain}function Ll(e,t){return void 0!==Hl(e,t)}function Hl(e,t,o){let s=t;for(const t of e){const e=s.find((e=>e.value===t.value));if(!e)return;if(e.field===o)return s;s=e.children}return s}function Ul(e,t,o){const s=(e=ze(e)).find((e=>e.field===t));return s?(s.value=o,e):e}function Bl(e,t){return t.some((t=>t.field===e))}function zl(e,t){if(e.definition.rows.map((e=>e.nameWithGranularity)).includes(t))return"row";if(e.definition.columns.map((e=>e.nameWithGranularity)).includes(t))return"column";throw new Error(`Field ${t} not found in pivot`)}function $l(e){return e?e.map(Gl).join(", "):""}function Gl(e){return e?`${e.field}=${e.value}`:""}function Wl(e,t){const o=e.findIndex((e=>e.field===t));if(-1===o)return"";const s=e.slice(0,o),i=e.at(-1);return $l(i.field===t?s:[...s,i])}function ql(e,t){const o=e.findIndex((e=>e.field===t));return-1===o?"":$l([...e.slice(0,o),...e.slice(o+1)])}function Zl(e,t,o){const s=[...e],i=[...t];s.sort(((e,t)=>o([...i,e],[...i,t])));for(const t of e){const e=Zl(t.children,[...i,t],o);t.children=e}return s}const jl=new n;function Yl(e){return jl.get(e)}const Xl={normalizeFunctionValue:e=>ki(e,fi),toValueAndFormat:(e,t)=>({value:ki(e,fi),format:"dd mmm yyyy"}),toFunctionValue:e=>`"${Kn(ki(e,fi),{locale:fi,format:"mm/dd/yyyy"})}"`},Kl={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>31)throw new Ii(Uo("%s is not a valid day of month (it should be a number between 1 and 31)",t));return t},toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},Jl={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>7)throw new Ii(Uo("%s is not a valid day of week (it should be a number between 1 and 7)",t));return t},toValueAndFormat(e,t){const o=(e-1+(t||fi).weekStart)%7;return{value:Xn[o].toString(),format:"@"}},toFunctionValue:e=>`${e}`},Ql={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>53)throw new Ii(Uo("%s is not a valid week (it should be a number between 0 and 53)",t));return t},toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},ec={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>12)throw new Ii(Uo("%s is not a valid month (it should be a number between 1 and 12)",t));return t},toValueAndFormat:e=>({value:Yn[ki(e,fi)-1].toString(),format:"@"}),toFunctionValue:e=>`${e}`},tc={normalizeFunctionValue:e=>Kn(ki(e,fi),{locale:fi,format:"mm/yyyy"}),toValueAndFormat:e=>({value:ki(e,fi),format:"mmmm yyyy"}),toFunctionValue:e=>`"${e}"`},oc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>4)throw new Ii(Uo("%s is not a valid quarter (it should be a number between 1 and 4)",t));return t},toValueAndFormat:e=>({value:Uo("Q%(quarter_number)s",{quarter_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},sc={normalizeFunctionValue:e=>ki(e,fi),toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},ic={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>23)throw new Ii(Uo("%s is not a valid hour (it should be a number between 0 and 23)",t));return t},toValueAndFormat:e=>({value:Uo("%(hour_number)sh",{hour_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},nc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>59)throw new Ii(Uo("%s is not a valid minute (it should be a number between 0 and 59)",t));return t},toValueAndFormat:e=>({value:Uo("%(minute_number)s'",{minute_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},rc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>59)throw new Ii(Uo("%s is not a valid second (it should be a number between 0 and 59)",t));return t},toValueAndFormat:e=>({value:Uo("%(second_number)s''",{second_number:e}),format:"@"}),toFunctionValue:e=>`${e}`};function ac(e){return{normalizeFunctionValue:t=>null===t?null:e.normalizeFunctionValue(t),toValueAndFormat:(t,o)=>null===t?{value:Uo("(Undefined)")}:e.toValueAndFormat(t,o),toFunctionValue:t=>null===t?"false":e.toFunctionValue(t)}}jl.add("day",ac(Xl)).add("year",ac(sc)).add("day_of_month",ac(Kl)).add("iso_week_number",ac(Ql)).add("month_number",ac(ec)).add("month",ac(tc)).add("quarter_number",ac(oc)).add("day_of_week",ac(Jl)).add("hour_number",ac(ic)).add("minute_number",ac(nc)).add("second_number",ac(rc));const lc={count:Uo("Count"),count_distinct:Uo("Count Distinct"),bool_and:Uo("Boolean And"),bool_or:Uo("Boolean Or"),max:Uo("Maximum"),min:Uo("Minimum"),avg:Uo("Average"),sum:Uo("Sum")},cc=["max","min","avg","sum","count_distinct","count"],hc={integer:cc,char:cc,boolean:["count_distinct","count","bool_and","bool_or"],datetime:["max","min","count_distinct","count"]},dc={};for(const e in hc){dc[e]={};for(const t of hc[e])dc[e][t]=lc[t]}const uc={count:e=>({value:xl([e]),format:"0"}),count_distinct:e=>({value:ul([e]),format:"0"}),bool_and:e=>({value:cl([e]).result}),bool_or:e=>({value:hl([e]).result}),max:(e,t)=>Il([e],t),min:(e,t)=>El([e],t),avg:(e,t)=>({value:Cl([e],t),format:Mi(e)}),sum:(e,t)=>({value:dl([e],t),format:Mi(e)})};function gc(e){const t=Object.keys(e);if(!t.length)return 0;const o=t.map((e=>parseInt(e,10)));return Math.max(...o)}const pc={year:Uo("Year"),quarter:Uo("Quarter & Year"),month:Uo("Month & Year"),week:Uo("Week & Year"),day:Uo("Day"),quarter_number:Uo("Quarter"),month_number:Uo("Month"),iso_week_number:Uo("Week"),day_of_month:Uo("Day of Month"),day_of_week:Uo("Day of Week"),hour_number:Uo("Hour"),minute_number:Uo("Minute"),second_number:Uo("Second")},mc=["date","datetime"];function fc(e){const[t,o]=e.split(":");return o?{fieldName:t,granularity:o}:{fieldName:t}}function vc(e){return mc.includes(e.type)}function bc(e,t,o){const s=[e];o&&s.push(`"${o}"`);for(const{field:e,value:o,type:i}of t){if("measure"===e){s.push('"measure"',`"${o}"`);continue}const{granularity:t}=fc(e),n=xc(o,{type:i,granularity:t});s.push(`"${e}"`,n)}return s}function Sc(e,t){let o=0,s=0;const i=t.columns.map((e=>e.nameWithGranularity)),n=t.rows.map((e=>e.nameWithGranularity));for(;void 0!==e[o]&&e[o]===n[s];)o++,s++;for(s=0;void 0!==e[o]&&e[o]===i[s];)o++,s++;return e.length===o}function yc(e,t){switch(t.type){case"HEADER":return`=PIVOT.HEADER(${bc(e,t.domain).join(",")})`;case"VALUE":return`=PIVOT.VALUE(${bc(e,t.domain,t.measure).join(",")})`;case"MEASURE_HEADER":return`=PIVOT.HEADER(${bc(e,[...t.domain,{field:"measure",value:t.measure,type:"char"}]).join(",")})`}return""}function Cc(e,t){if(null===t||"null"===t)return null;const o="boolean"==typeof t?Gi(t).toLocaleLowerCase():Gi(t);if("null"===o)return null;if(!Ec.contains(e.type))throw new Ii(Uo("Field %(field)s is not supported because of its type (%(type)s)",{field:e.displayName,type:e.type}));if("false"===o.toLowerCase())return!1;return Ec.get(e.type)(o,e.granularity)}function wc(e,t){return Yl(t??"month").normalizeFunctionValue(e)}function xc(e,t){return null===e?'"null"':Rc.contains(t.type)?Rc.get(t.type)(e,t.granularity):`"${e}"`}function Ic(e,t){return Yl(t??"month").toFunctionValue(e)}const Ec=new n;Ec.add("date",wc).add("datetime",wc).add("integer",(e=>ki(e,fi))).add("boolean",(e=>Zi(e))).add("char",(e=>Gi(e)));const Rc=new n;function Tc(e){return e.displayName+(e.granularity?` (${pc[e.granularity]})`:"")}function Ac(e,t,o){const{rowDomain:s,colDomain:i}=kl(e,t);if(0===s.length&&0===i.length)return o;if(0===s.length&&i.length>0)return{...o,format:(o.format||"@")+"* "};const n=s.length-1,r=o.format||"@";return{...o,format:`${" ".repeat(n)}${r}* `}}function _c(e,t){try{if(!t.getMeasure(e.measure))return!1;const o=t.definition.columns;for(let s=0;s<e.domain.length;s++){if(o[s].nameWithGranularity!==e.domain[s].field)return!1;const i=t.getPossibleFieldValues(o[s]).map((e=>e.value));if(!(i.includes(e.domain[s].value)||null===e.domain[s].value&&i.includes("")))return!1}return!0}catch(e){return!1}}Rc.add("date",Ic).add("datetime",Ic).add("integer",(e=>`${ki(e,fi)}`)).add("boolean",(e=>Zi(e)?"TRUE":"FALSE")).add("char",(e=>`"${Gi(e).replace(/"/g,'\\"')}"`));class Dc extends Aa{isCutAllowed(e){return 1!==e.zones.length?"WrongCutSelection":"Success"}copy(e){const t=e.sheetId,{clippedZones:o,rowsIndexes:s,columnsIndexes:i}=e,n=[],r=1==s.length&&1==i.length;for(let o of s){let a=[];for(let n of i){const l={col:n,row:o,sheetId:t};let c=this.getters.getCell(l);const h=this.getters.getEvaluatedCell(l),d=this.getters.getPivotIdFromPosition(l),u=this.getters.getArrayFormulaSpreadingOn(l);if(d&&u){const t=this.getters.getSpreadZone(u);if((!ft(u,l)||!r)&&t&&!e.zones.some((e=>os(t,e)))){const e=this.getters.getPivotCellFromPosition(l),t=yc(this.getters.getPivotFormulaId(d),e);c={id:c?.id||"",style:c?.style,format:c?.format,content:t,isFormula:!1,parsedValue:h.value}}}else if(u&&!ft(u,l)){const e=s.includes(u.row)&&i.includes(u.col)?"":Kn(h.value,{locale:this.getters.getLocale()});c={id:c?.id||"",style:c?.style,format:h.format,content:e,isFormula:!1,parsedValue:h.value}}a.push({content:c?.content??"",style:c?.style,format:c?.format,tokens:c?.isFormula?c.compiledFormula.tokens.map((({value:e,type:t})=>({value:e,type:t}))):[],border:this.getters.getCellBorder(l)||void 0,evaluatedCell:h,position:l})}n.push(a)}return{cells:n,zones:o,sheetId:e.sheetId}}isPasteAllowed(e,t,o,s){if(!o.cells)return"Success";if(s?.isCutOperation&&void 0!==s?.pasteOption)return"WrongPasteOption";if(t.length>1&&(o.cells.length>1||o.cells[0].length>1))return"WrongPasteSelection";const i=o.cells.length,n=o.cells[0].length;for(const s of Ea(t,o.cells))if(this.getters.doesIntersectMerge(e,s)&&(t.length>1||!this.getters.isSingleCellOrMerge(e,t[0])||i*n!=1))return"WillRemoveExistingMerge";return"Success"}paste(e,t,o){const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t,o):this.pasteFromCopy(i,s,t.cells,o)}getPasteTarget(e,t,o,s){const i=o.cells[0].length,n=o.cells.length;return s?.isCutOperation?{sheetId:e,zones:[{left:t[0].left,top:t[0].top,right:t[0].left+i-1,bottom:t[0].top+n-1}]}:1===i&&1===n?{zones:[],sheetId:e}:{sheetId:e,zones:Ea(t,o.cells)}}pasteFromCut(e,t,o,s){this.clearClippedZones(o);const i=t[0];this.pasteZone(e,i.left,i.top,o.cells,s)}clearClippedZones(e){this.dispatch("CLEAR_CELLS",{sheetId:e.sheetId,target:e.zones}),this.dispatch("CLEAR_FORMATTING",{sheetId:e.sheetId,target:e.zones})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){if(!a)continue;const r={col:t+s,row:o+n,sheetId:e};this.pasteCell(a,r,i)}}pasteCell(e,t,o){const{sheetId:s,col:i,row:n}=t,r=this.getters.getEvaluatedCell(t),a=e?.format??e.evaluatedCell.format;if("asValue"===o?.pasteOption)return void this.dispatch("UPDATE_CELL",{...t,content:e.evaluatedCell.value?.toString()||"",format:a});if("onlyFormat"===o?.pasteOption)return void this.dispatch("UPDATE_CELL",{...t,style:e?.style??null,format:a??r.format});let l=e?.content;e?.tokens&&e.tokens.length>0&&!o?.isCutOperation?l=this.getters.getTranslatedCellFormula(s,i-e.position.col,n-e.position.row,e.tokens):e?.tokens&&e.tokens.length>0&&(l=this.getters.getFormulaMovedInSheet(e.position.sheetId,s,e.tokens)),""!==l||e?.format||e?.style?this.dispatch("UPDATE_CELL",{...t,content:l,style:e?.style||null,format:e?.format}):r&&this.dispatch("CLEAR_CELL",t)}convertTextToClipboardData(e){const t=this.getters.getLocale(),o={cells:[]},s=[];let i=0;for(const[t,o]of e.replace(/\r/g,"").split("\n").entries())s.push(o.split("\t")),s[t].length>i&&(i=s[t].length);for(const e of s){const s=[];for(let o=0;o<i;o++){const i=Ja(e[o]||"",t);s.push({content:i,evaluatedCell:{formattedValue:i}})}o.cells.push(s)}return o}}class Oc extends Ta{copy(e){}}class Fc extends Aa{uuidGenerator=new xa;queuedChanges={};copy(e){if(!e.zones.length)return;const{rowsIndexes:t,columnsIndexes:o}=e,s=e.sheetId,i=[];for(const e of t){const t=[];for(const i of o){const o=Array.from(this.getters.getRulesByCell(s,i,e));t.push({position:{col:i,row:e,sheetId:s},rules:o})}i.push(t)}return{cfRules:i}}paste(e,t,o){if(this.queuedChanges={},"asValue"===o.pasteOption)return;const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t):this.pasteFromCopy(i,s,t.cfRules,o),this.executeQueuedChanges()}pasteFromCut(e,t,o){const s=t[0];this.pasteZone(e,s.left,s.top,o.cfRules,{isCutOperation:!0})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){const r={col:t+s,row:o+n,sheetId:e};this.pasteCf(a,r,i?.isCutOperation)}}pasteCf(e,t,o){if(e?.rules&&e.rules.length>0){const s=hs(e.position),i=hs(t);for(const n of e.rules){const r=[];if(o&&r.push(s),e.position.sheetId===t.sheetId)this.adaptCFRules(e.position.sheetId,n,[i],r);else{this.adaptCFRules(e.position.sheetId,n,[],r);const o=this.getCFToCopyTo(t.sheetId,n);this.adaptCFRules(t.sheetId,o,[i],[])}}}}adaptCFRules(e,t,o,s){this.queuedChanges[e]||(this.queuedChanges[e]=[]);const i=this.queuedChanges[e].find((e=>e.cf.id===t.id));i?(i.toAdd.push(...o),i.toRemove.push(...s)):this.queuedChanges[e].push({toAdd:o,toRemove:s,cf:t})}executeQueuedChanges(){for(const e in this.queuedChanges)for(const{toAdd:t,toRemove:o,cf:s}of this.queuedChanges[e]){const i=this.getters.getAdaptedCfRanges(e,s,t,o);i&&(0!==i.length?this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:s.id,rule:s.rule,stopIfTrue:s.stopIfTrue},ranges:i,sheetId:e}):this.dispatch("REMOVE_CONDITIONAL_FORMAT",{id:s.id,sheetId:e}))}}getCFToCopyTo(e,t){let o=this.getters.getConditionalFormats(e).find((e=>e.stopIfTrue===t.stopIfTrue&&ft(e.rule,t.rule)));const s=this.queuedChanges[e];return!o&&s&&(o=s.find((e=>e.cf.stopIfTrue===t.stopIfTrue&&ft(e.cf.rule,t.rule)))?.cf),o||{...t,id:this.uuidGenerator.smallUuid(),ranges:[]}}}class Mc extends Aa{copy(e){const t=e.sheetId,{rowsIndexes:o,columnsIndexes:s,zones:i}=e,n=new Set,r=[];for(let e of o){let o=[];r.push(o);for(let r of s){const s={col:r,row:e,sheetId:t},a=this.getters.getTable(s);if(!a){o.push({});continue}const l=this.getters.getCoreTable(s),c=l?.range.zone;let h;!n.has(a.id)&&l&&c&&i.some((e=>os(c,e)))&&(n.add(a.id),h={range:l.range.rangeData,config:l.config,type:l.type}),o.push({table:h,style:this.getTableStyleToCopy(s),isWholeTableCopied:n.has(a.id)})}}return{tableCells:r,sheetId:e.sheetId}}getTableStyleToCopy(e){const t=this.getters.getCellTableStyle(e),o=this.getters.getCellStyle(e),s=this.getters.getCellTableBorder(e),i=this.getters.getCellBorder(e);return{style:{...t,...St(o)},border:{...s,...St(i)}}}paste(e,t,o){const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t,o):this.pasteFromCopy(i,s,t.tableCells,o)}pasteFromCut(e,t,o,s){for(const e of o.tableCells)for(const t of e)t.table&&this.dispatch("REMOVE_TABLE",{sheetId:o.sheetId,target:[this.getters.getRangeFromRangeData(t.table.range).zone]});const i=t[0];this.pasteZone(e,i.left,i.top,o.tableCells,s)}pasteZone(e,t,o,s,i){for(let n=0;n<s.length;n++){const r=s[n];for(let s=0;s<r.length;s++){const a=r[s];if(!a)continue;const l={col:t+s,row:o+n,sheetId:e};this.pasteTableCell(e,a,l,i)}}if(1===s.length)for(let i=0;i<s[0].length;i++)this.dispatch("AUTOFILL_TABLE_COLUMN",{col:t+i,row:o,sheetId:e})}pasteTableCell(e,t,o,s){if(t.table&&!s?.pasteOption){const{range:s}=t.table,i=ss(this.getters.getRangeFromRangeData(s).zone),n={left:o.col,top:o.row,right:o.col+i.numberOfCols-1,bottom:o.row+i.numberOfRows-1};this.dispatch("CREATE_TABLE",{sheetId:o.sheetId,ranges:[this.getters.getRangeDataFromZone(e,n)],config:t.table.config,tableType:t.table.type})}this.getters.getCoreTable(o)||"asValue"===s?.pasteOption||(s?.pasteOption||t.isWholeTableCopied)&&"onlyFormat"!==s?.pasteOption||(t.style?.style&&this.dispatch("UPDATE_CELL",{...o,style:t.style.style}),t.style?.border&&this.dispatch("SET_BORDER",{...o,border:t.style.border}))}}const Pc={figureHandlers:new n,cellHandlers:new n};function Nc(e,t){return"REMOVE_COLUMNS_ROWS"===t.type?Xo(e,"COL"===t.dimension?"left":"top",t.elements):"ADD_COLUMNS_ROWS"===t.type?Zo(e,"COL"===t.dimension?"left":"top",t.base,t.position,t.quantity):e}function kc(e,t){const o="DELETE_SHEET"===t.type&&t.sheetId;if("sheetId"in t&&e._sheetId!==t.sheetId)return e;{const s=Nc(e._zone,t);if(s&&o!==e._sheetId)return{...e,_zone:s}}}Pc.figureHandlers.add("chart",class extends Oc{copy(e){const t=e.sheetId,o=this.getters.getFigure(t,e.figureId);if(!o)throw new Error(`No figure for the given id: ${e.figureId}`);if("chart"!==o.tag)return;const s={...o},i=this.getters.getChart(e.figureId);if(!i)throw new Error(`No chart for the given id: ${e.figureId}`);const n=i.copyInSheetId(t);return{figureId:e.figureId,copiedFigure:s,copiedChart:n}}getPasteTarget(e,t,o,s){return{zones:[],figureId:(new xa).smallUuid(),sheetId:e}}paste(e,t,o){if(!e.figureId)return;const{zones:s,figureId:i}=e,n=e.sheetId,r=this.getters.getNumberCols(n),a=this.getters.getNumberRows(n),l=this.getters.getColDimensions(n,s[0].left).start,c=this.getters.getRowDimensions(n,s[0].top).start,h=this.getters.getColDimensions(n,r-1).end,d=this.getters.getRowDimensions(n,a-1).end,{width:u,height:g}=t.copiedFigure,p={x:h<u?0:Math.min(l,h-u),y:d<g?0:Math.min(c,d-g)},m=t.copiedChart.copyInSheetId(n);this.dispatch("CREATE_CHART",{id:i,sheetId:n,position:p,size:{height:g,width:u},definition:m.getDefinition()}),o.isCutOperation&&this.dispatch("DELETE_FIGURE",{sheetId:t.copiedChart.sheetId,id:t.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}isPasteAllowed(e,t,o,s){return 0===t.length?"EmptyTarget":void 0!==s?.pasteOption?"WrongFigurePasteOption":"Success"}}).add("image",class extends Oc{copy(e){const t=e.sheetId,o=this.getters.getFigure(t,e.figureId);if(!o)throw new Error(`No figure for the given id: ${e.figureId}`);const s={...o};if("image"!==o.tag)return;const i=ze(this.getters.getImage(e.figureId));return{figureId:e.figureId,copiedFigure:s,copiedImage:i,sheetId:t}}getPasteTarget(e,t,o,s){return{sheetId:e,zones:[],figureId:(new xa).smallUuid()}}paste(e,t,o){if(!e.figureId)return;const{zones:s,figureId:i}=e,n=this.getters.getActiveSheetId(),r=this.getters.getNumberCols(n),a=this.getters.getNumberRows(n),l=this.getters.getColDimensions(n,s[0].left).start,c=this.getters.getRowDimensions(n,s[0].top).start,h=this.getters.getColDimensions(n,r-1).end,d=this.getters.getRowDimensions(n,a-1).end,{width:u,height:g}=t.copiedFigure,p={x:h<u?0:Math.min(l,h-u),y:d<g?0:Math.min(c,d-g)},m=ze(t.copiedImage);this.dispatch("CREATE_IMAGE",{figureId:i,sheetId:n,position:p,size:{height:g,width:u},definition:m}),o.isCutOperation&&this.dispatch("DELETE_FIGURE",{sheetId:t.sheetId,id:t.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}isPasteAllowed(e,t,o,s){return 0===t.length?"EmptyTarget":void 0!==s?.pasteOption?"WrongFigurePasteOption":"Success"}}),Pc.cellHandlers.add("dataValidation",class extends Aa{uuidGenerator=new xa;queuedChanges={};copy(e){const{rowsIndexes:t,columnsIndexes:o}=e,s=e.sheetId,i=[];for(const e of t){const t=[];for(const i of o){const o={sheetId:s,col:i,row:e},n=this.getters.getValidationRuleForCell(o);t.push({position:o,rule:n})}i.push(t)}return{dvRules:i}}paste(e,t,o){if(this.queuedChanges={},o.pasteOption)return;const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t):this.pasteFromCopy(i,s,t.dvRules),this.executeQueuedChanges()}pasteFromCut(e,t,o){const s=t[0];this.pasteZone(e,s.left,s.top,o.dvRules,{isCutOperation:!0})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){const r={col:t+s,row:o+n,sheetId:e};this.pasteDataValidation(a,r,i?.isCutOperation)}}pasteDataValidation(e,t,o){if(e){const s=hs(t),i=hs(e.position),n=e.rule;if(!n){const e=this.getters.getValidationRuleForCell(t);return void(e&&this.adaptDataValidationRule(t.sheetId,e,[],[s]))}const r=[];if(o&&r.push(i),e.position.sheetId===t.sheetId){const o=this.getDataValidationRuleToCopyTo(t.sheetId,n,!1);this.adaptDataValidationRule(e.position.sheetId,o,[s],r)}else{const o=this.getters.getValidationRuleForCell(e.position);o&&this.adaptDataValidationRule(e.position.sheetId,o,[],r);const i=this.getDataValidationRuleToCopyTo(t.sheetId,n);this.adaptDataValidationRule(t.sheetId,i,[s],[])}}}getDataValidationRuleToCopyTo(e,t,o=!0){let s=this.getters.getDataValidationRules(e).find((e=>ft(t.criterion,e.criterion)&&t.isBlocking===e.isBlocking));const i=this.queuedChanges[e];return!s&&i&&(s=i.find((e=>ft(t.criterion,e.rule.criterion)&&t.isBlocking===e.rule.isBlocking))?.rule),s||{...t,id:o?this.uuidGenerator.smallUuid():t.id,ranges:[]}}adaptDataValidationRule(e,t,o,s){this.queuedChanges[e]||(this.queuedChanges[e]=[]);const i=this.queuedChanges[e].find((e=>e.rule.id===t.id));i?(i.toAdd.push(...o),i.toRemove.push(...s)):this.queuedChanges[e].push({toAdd:o,toRemove:s,rule:t})}executeQueuedChanges(){for(const e in this.queuedChanges)for(const{toAdd:t,toRemove:o,rule:s}of this.queuedChanges[e]){const i=s.ranges.map((e=>e.zone)),n=_o(i,o),r=_o([...n,...t],[]);0!==r.length?this.dispatch("ADD_DATA_VALIDATION_RULE",{rule:{id:s.id,criterion:s.criterion,isBlocking:s.isBlocking},ranges:r.map((t=>this.getters.getRangeDataFromZone(e,t))),sheetId:e}):this.dispatch("REMOVE_DATA_VALIDATION_RULE",{sheetId:e,id:s.id})}}}).add("cell",Dc).add("sheet",class extends Aa{isPasteAllowed(e,t,o,s){if(!("cells"in o))return"Success";const{xSplit:i,ySplit:n}=this.getters.getPaneDivisions(e);for(const e of Ea(t,o.cells))if(e.left<i&&e.right>=i||e.top<n&&e.bottom>=n)return"FrozenPaneOverlap";return"Success"}}).add("merge",class extends Aa{copy(e){const t=this.getters.getActiveSheetId(),{rowsIndexes:o,columnsIndexes:s}=e,i=[];for(const e of o){const o=[];for(const i of s){const s={col:i,row:e,sheetId:t};o.push(this.getters.getMerge(s))}i.push(o)}return{merges:i,sheetId:t}}paste(e,t,o){if(o.isCutOperation){const e=t.merges.flat().filter(lt);this.dispatch("REMOVE_MERGE",{sheetId:t.sheetId,target:e})}this.pasteFromCopy(e.sheetId,e.zones,t.merges,o)}pasteZone(e,t,o,s){for(const[i,n]of s.entries())for(const[s,r]of n.entries()){const n={col:t+s,row:o+i,sheetId:e};this.pasteMerge(r,n)}}pasteMerge(e,t){if(!e)return;if(this.getters.isInMerge(t))return;const{sheetId:o,col:s,row:i}=t;this.dispatch("ADD_MERGE",{sheetId:o,force:!0,target:[{left:s,top:i,right:s+e.right-e.left,bottom:i+e.bottom-e.top}]})}}).add("border",_a).add("table",Mc).add("conditionalFormat",Fc).add("references",class extends Aa{copy(e){return{zones:e.clippedZones,sheetId:e.sheetId}}paste(e,t,o){if(o.isCutOperation){const o=e.zones[0];this.dispatch("MOVE_RANGES",{target:t.zones,sheetId:t.sheetId,targetSheetId:e.sheetId,col:o.left,row:o.top})}}});class Vc{subscriptions={};on(e,t,o){if(!o)throw new Error("Missing callback");this.subscriptions[e]||(this.subscriptions[e]=[]),this.subscriptions[e].push({owner:t,callback:o})}trigger(e,t){const o=this.subscriptions[e]||[];for(let e=0,s=o.length;e<s;e++){const s=o[e];s.callback.call(s.owner,t)}}off(e,t){const o=this.subscriptions[e];o&&(this.subscriptions[e]=o.filter((e=>e.owner!==t)))}clear(){this.subscriptions={}}}class Lc extends Vc{dependencies=new Map;factory=new Hc(this.get.bind(this));inject(e,t){if(this.dependencies.has(e)&&this.dependencies.get(e)!==t)throw new Error(`Store ${e.name} already has an instance`);this.dependencies.set(e,t)}get(e){return this.dependencies.has(e)||this.dependencies.set(e,this.instantiate(e)),this.dependencies.get(e)}instantiate(e,...t){return this.factory.build(e,...t)}resetStores(){this.dependencies.clear()}}class Hc{get;pendingBuilds=new Set;constructor(e){this.get=e}build(e,...t){if(this.pendingBuilds.has(e))throw new Error(`Circular dependency detected: ${[...this.pendingBuilds,e].map((e=>e.name)).join(" -> ")}`);this.pendingBuilds.add(e);const o=new e(this.get,...t);return this.pendingBuilds.delete(e),o}}class Uc{get;disposeCallbacks=[];constructor(e){this.get=e}onDispose(e){this.disposeCallbacks.push(e)}dispose(){this.disposeCallbacks.forEach((e=>e()))}}function Bc(){const e=t.useEnv();if(e.__spreadsheet_stores__ instanceof Lc)return e.__spreadsheet_stores__;const o=new Lc;return t.useSubEnv({__spreadsheet_stores__:o,getStore:e=>Wc(o.get(e),(()=>o.trigger("store-updated")))}),o}function zc(e){const o=qc(t.useEnv()),s=o.get(e);return Gc(o,s)}function $c(e,...o){const s=qc(t.useEnv()),i=s.instantiate(e,...o);return t.onWillUnmount((()=>i.dispose())),Gc(s,i)}function Gc(e,o){const s=t.useComponent();return Wc(o,(()=>{"mounted"===t.status(s)&&e.trigger("store-updated")}))}function Wc(e,t){return new Proxy(e,{get(o,s,i){const n=o,r=Reflect.get(o,s,n);if(e.mutators?.includes(s)){const e=new Proxy(r,{apply(e,o,s){"noStateChange"!==Reflect.apply(e,n,s)&&t()}});return e}return r}})}function qc(e){const t=e.__spreadsheet_stores__;if(!(t instanceof Lc))throw new Error("No store provider found. Did you forget to call useStoreProvider()?");return t}const Zc=(jc="Model",class{constructor(e){throw new Error(`This is a abstract store for ${jc}, it cannot be instantiated.\nDid you forget to inject your store instance?\n\nconst stores = useStoreProvider();\nstores.inject(MyMetaStore, storeInstance);\n`)}});var jc;class Yc{mutators=["register","unRegister","drawLayer"];renderers={};register(e){if(e.renderingLayers.length)for(const t of e.renderingLayers)this.renderers[t]||(this.renderers[t]=[]),this.renderers[t].push(e)}unRegister(e){for(const t of Object.keys(this.renderers))this.renderers[t]=this.renderers[t].filter((t=>t!==e))}drawLayer(e,t){const o=this.renderers[t];if(o)for(const s of o)e.ctx.save(),s.drawLayer(e,t),e.ctx.restore();return"noStateChange"}}class Xc extends Uc{model=this.get(Zc);getters=this.model.getters;renderer=this.get(Yc);constructor(e){super(e),this.model.on("command-dispatched",this,this.handle),this.model.on("command-finalized",this,this.finalize),this.renderer.register(this),this.onDispose((()=>{this.model.off("command-dispatched",this),this.model.off("command-finalized",this),this.renderer.unRegister(this)}))}get renderingLayers(){return[]}handle(e){}finalize(){}drawLayer(e,t){}}const Kc={id:"void-composer",get editionMode(){return"inactive"},startEdition:()=>{throw new Error("No composer is registered")},stopEdition:()=>{throw new Error("No composer is registered")},setCurrentContent:()=>{throw new Error("No composer is registered")}};class Jc extends Xc{mutators=["focusComposer","focusActiveComposer"];activeComposer=Kc;_focusMode="inactive";get focusMode(){return"inactive"===this.activeComposer.editionMode?"inactive":this._focusMode}focusComposer(e,t){if(this.activeComposer=e,this.getters.isReadonly())return"noStateChange";this._focusMode=t.focusMode||"contentFocus","inactive"!==this._focusMode&&this.setComposerContent(t)}focusActiveComposer(e){if(this.getters.isReadonly())return"noStateChange";if(!this.activeComposer)throw new Error("No composer is registered");this._focusMode=e.focusMode||"contentFocus","inactive"!==this._focusMode&&this.setComposerContent(e)}setComposerContent({content:e,selection:t}){"inactive"===this.activeComposer.editionMode?this.activeComposer.startEdition(e,t):e&&this.activeComposer.setCurrentContent(e,t)}}const Qc={};let eh=0;function th(e,...t){const o="__sheet__"+eh++;return function(e,t){const o=document.createElement("style");o.textContent=function(e){const t=e.split(/(\{|\}|;)/).map((e=>e.trim())),o=[],s=[];let i=[];function n(e,t){const s=[];for(const i of o[e]){let r=t&&t+" "+i||i;r.includes("&")&&(r=i.replace(/&/g,t||"")),e<o.length-1&&(r=n(e+1,r)),s.push(r)}return s.join(", ")}function r(){i.length&&(s.push(n(0)+" {"),s.push(...i),s.push("}"),i=[])}for(;t.length;){let e=t.shift();"}"===e?(r(),o.pop()):("{"===t[0]&&(r(),o.push(e.split(/\s*,\s*/)),t.shift()),";"===t[0]&&i.push(" "+e+";"))}return s.join("\n")}(t),Qc[e]=o}(o,String.raw(e,...t)),function(e){const t=Qc[e];t.setAttribute("component",e),document.head.appendChild(t)}(o),o}function oh({strikethrough:e,underline:t}){return e||t?`${e?"line-through":""} ${t?"underline":""}`:"none"}function sh(e){const t=function(e){const t={};if(!e)return t;e.bold&&(t["font-weight"]="bold");e.italic&&(t["font-style"]="italic");if(e.strikethrough||e.underline){let o=e.strikethrough?"line-through":"";o=e.underline?o+" underline":o,t["text-decoration"]=o}e.textColor&&(t.color=e.textColor);return t}(e);return e?(e.fillColor&&(t.background=e.fillColor),t):t}function ih(e){let t="";for(const o in e)e[o]&&(t+=`${o}:${e[o]}; `);return t}const nh=new n;function rh(){if(window.Chart&&!window.Chart.registry.plugins.get("chartShowValuesPlugin"))for(const e of nh.getAll())e.register(window.Chart)}const ah="x1",lh="xMovingAverage";function ch(e,t,o,s){let i=!1;const n=[];for(let s in o){let r=o[s];if(r.labelCell){const e=uh(r.labelCell,t);r.labelCell!==e&&(i=!0,r={...r,labelCell:e})}const a=uh(r.dataRange,t);void 0===a||e.getRangeString(a,a.sheetId)===wi.InvalidReference?(i=!0,r=void 0):a!==r.dataRange&&(i=!0,r={...r,dataRange:a}),n[s]=r}let r=s;const a=uh(r,t);a!==r&&(i=!0,r=a);return{isStale:i,dataSets:n.filter(lt),labelRange:r}}function hh(e,t,o){return o.map((o=>({dataRange:Yr(e,t,o.dataRange),labelCell:o.labelCell?Yr(e,t,o.labelCell):void 0})))}function dh(e,t,o){return o?Yr(e,t,o):void 0}function uh(e,t){if(!e)return;const o=t(e);switch(o.changeType){case"NONE":return e;case"REMOVE":return;default:return o.range}}function gh(e,t,o,s){const i=[];for(const n of t){const t=e.getRangeFromSheetXC(o,n.dataRange),{unboundedZone:r,sheetId:a,invalidSheetName:l,invalidXc:c}=t;if(!l&&!c)if(r.left!==r.right&&r.top!==r.bottom){if(void 0===r.right)continue;for(let t=r.left;t<=r.right;t++){const o={...r,left:t,right:t};i.push({...ph(e,a,o,s?{top:o.top,bottom:o.top,left:o.left,right:o.left}:void 0),backgroundColor:n.backgroundColor,rightYAxis:"y1"===n.yAxisId,customLabel:n.label})}}else i.push({...ph(e,a,r,s?{top:r.top,bottom:r.top,left:r.left,right:r.left}:void 0),backgroundColor:n.backgroundColor,rightYAxis:"y1"===n.yAxisId,customLabel:n.label})}return i}function ph(e,t,o,s){if(o.left!==o.right&&o.top!==o.bottom)throw new Error(`Zone should be a single column or row: ${qo(o)}`);if(s){const i=qo(o),n=qo(s);return{labelCell:e.getRangeFromSheetXC(t,n),dataRange:e.getRangeFromSheetXC(t,i)}}return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,qo(o))}}function mh(e,t){const o=t.labelCell?.zone;let s=t.dataRange.zone;if(o){const{numberOfRows:e,numberOfCols:t}=ss(s);1===e?s={...s,left:s.left+1}:1===t&&(s={...s,top:s.top+1})}const i=t.dataRange.clone({zone:s});let n={};return t.customLabel?n={text:t.customLabel}:t.labelCell&&(n={reference:e.getRangeString(t.labelCell,"forceSheetReference",{useBoundedReference:!0})}),{label:n,range:e.getRangeString(i,"forceSheetReference",{useBoundedReference:!0}),backgroundColor:t.backgroundColor,rightYAxis:t.rightYAxis}}function fh(e,t,o){if(!t)return;let s={...t.zone};o&&t.zone.bottom>t.zone.top&&(s.top=s.top+1);const i=t.clone({zone:s});return e.getRangeString(i,"forceSheetReference",{useBoundedReference:!0})}function vh(e,t){let o;if(e.labelRange){const s=Nc(zo(e.labelRange),t);o=s?qo(s):void 0}const s=e.dataSets.map((e=>zo(e.dataRange))).map((e=>Nc(e,t))).filter(lt).map((e=>({dataRange:qo(e)})));return{...e,labelRange:o,dataSets:s}}function bh(e){return e&&qt(e)<.3?"#FFFFFF":"#000000"}function Sh(e){return e&&qt(e)<.3?"#C8C8C8":"#666666"}function yh(e){if(e.dataSets){const t=void 0!==e.dataSets.find((e=>!Br.test(e.dataRange)));if(t)return"InvalidDataSet";if(e.dataSets.map((e=>zo(e.dataRange))).some((e=>e.top!==e.bottom&&us(e))))return"InvalidDataSet"}return"Success"}function Ch(e){if(e.labelRange){if(!Br.test(e.labelRange||""))return"InvalidLabelRange"}return"Success"}function wh(e,t,o){if(!o)return!1;if(!e)return!1;if(!t)return!0;const s=gs(t.dataRange.zone);return!(gs(e.zone)<s)}function xh(e,t){const{x:o,y:s}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:n}=e.getActiveSheetScrollInfo(),{width:r,height:a}=e.getVisibleRect(e.getActiveMainViewport());return{x:o+i+Math.max(0,(r-t.width)/2),y:s+n+Math.max(0,(a-t.height)/2)}}function Ih(e){let t=!1,o=!1;if("horizontal"in e&&e.horizontal)return{useLeftAxis:!0,useRightAxis:!1};for(const s of e.dataSets||[])"y1"===s.yAxisId?o=!0:t=!0;return t||=!o,{useLeftAxis:t,useRightAxis:o}}function Eh(e,t){return(o,s)=>{const i=e?.[s];return Rh({format:i,locale:t})(o)}}function Rh(e){return t=>{if(t=Number(t),isNaN(t))return t;const{locale:o,format:s}=e;return _h(Kn(t,{locale:o,format:!s&&Math.abs(t)>=1e3?"#,##":s}))}}const Th=[{value:"left",label:Uo("Left")},{value:"right",label:Uo("Right")}];function Ah(e,t){const o=[],s=Ot(t.map((e=>e.data.length)));for(let t=0;t<=s;t++)o.push(e.next());return o}function _h(e){return e?e.length>we?e.substring(0,we)+"…":e:""}function Dh(e){return e===ah||e===lh}const Oh={id:"chartShowValuesPlugin",afterDatasetsDraw(e,t,o){if(!o.showValues)return;const s=e._metasets?.[0]?.data;if(!s)return;const i=e.ctx;switch(i.save(),i.textAlign="center",i.textBaseline="middle",i.miterLimit=1,e.config.type){case"pie":case"doughnut":!function(e,t,o){for(const s of e._metasets)for(let e=0;e<s._parsed.length;e++){const i=Number(s._parsed[e]);if(isNaN(i)||0===i)continue;const n=s.data[e],{startAngle:r,endAngle:a,innerRadius:l,outerRadius:c}=n,h=(r+a)/2,d=(l+c)/2,u=n.x+d*Math.cos(h),g=n.y+d*Math.sin(h),p=t.callback(i,s,e),m=12,f=ha(o,p,{fontSize:m},"px"),v=c-l;if(f>=v||v<m)continue;const b=a-r,S=2*d*Math.tan(b/2);b<Math.PI/2&&(f>=S||S<m)||(o.fillStyle=bh(t.background),o.strokeStyle=t.background||"#ffffff",Fh(p,u,g,o))}}(e,o,i);break;case"bar":case"line":case"radar":o.horizontal?function(e,t,o){const s=e.chartArea.right,i=e.chartArea.left,n={};for(const r of e._metasets){if(Dh(r.xAxisID))return;for(let e=0;e<r._parsed.length;e++){const a=Number(r._parsed[e].x);if(isNaN(a))continue;const l=t.callback(a,r,e),c=r.data[e],h=c.y;let d=a<0?c.x+c.width/2:c.x-c.width/2;d=Math.min(d,s),d=Math.max(d,i),n[h]||(n[h]=[]);const u=ha(o,l,{fontSize:12},"px");for(const e of n[h])Math.abs(e-d)<u&&(d=e+u+3);n[h].push(d),o.fillStyle=c.options.backgroundColor,o.strokeStyle=t.background||"#ffffff",Fh(l,d,h,o)}}}(e,o,i):function(e,t,o){const s=e.chartArea.bottom,i=e.chartArea.top,n={};for(const r of e._metasets)if(!Dh(r.xAxisID)&&!r.hidden)for(let a=0;a<r._parsed.length;a++){const l=r._parsed[a],c=Number("radar"===e.config.type?l.r:l.y);if(isNaN(c))continue;const h=r.data[a],d=h.x;let u=0;u="line"===e.config.type||"radar"===e.config.type?h.y-10:c<0?h.y-h.height/2:h.y+h.height/2,u=Math.min(u,s),u=Math.max(u,i),n[d]||(n[d]=[]);for(const e of n[d]||[])Math.abs(e-u)<13&&(u=e-13);n[d].push(u),o.fillStyle=h.options.backgroundColor,o.strokeStyle=t.background||"#ffffff";Fh(t.callback(Number(c),r,a),d,u,o)}}(e,o,i)}i.restore()}};function Fh(e,t,o,s){s.lineWidth=3,s.strokeText(e,t,o),s.lineWidth=1,s.fillText(e,t,o)}const Mh={id:"waterfallLinesPlugin",beforeDraw(e,t,o){if(!o.showConnectorLines)return;const s=e._metasets?.[0]?.data;if(!s)return;const i=e.ctx;i.save(),i.setLineDash([3,2]);for(let e=0;e<s.length;e++){const t=s[e];if(0===t.height)continue;const o=Nh(s,e);if(!o)break;const n=Ph(t),r=Ph(o),a=t.$context.raw,l=a[1]-a[0],c=Math.round(l<0?n.bottom-1:n.top),h=Math.round(n.right),d=Math.round(r.left);i.strokeStyle="#999",i.beginPath(),i.moveTo(h+1,c+.5),i.lineTo(d,c+.5),i.stroke()}i.restore()}};function Ph(e){const t=e.base<e.y;return{left:e.x-e.width/2,right:e.x+e.width/2,bottom:t?e.base+e.height:e.y+e.height,top:t?e.base:e.y}}function Nh(e,t){return e.find(((e,o)=>o>t&&0!==e.height))}th`
1
+ !function(e,t){"use strict";function o(e){return e.map(i).sort(((e,t)=>e.sequence-t.sequence))}let s=1;function i(e){const t=e.name,o=e.children,n=e.description,r=e.icon,a=e.secondaryIcon;return{id:(e.id||s++).toString(),name:"function"==typeof t?t:()=>t,isVisible:e.isVisible?e.isVisible:()=>!0,isEnabled:e.isEnabled?e.isEnabled:()=>!0,isActive:e.isActive,execute:e.execute,children:o?e=>o.map((t=>"function"==typeof t?t(e):t)).flat().map(i):()=>[],isReadonlyAllowed:e.isReadonlyAllowed||!1,separator:e.separator||!1,icon:"function"==typeof r?r:()=>r||"",iconColor:e.iconColor,secondaryIcon:"function"==typeof a?a:()=>a||"",description:"function"==typeof n?n:()=>n||"",textColor:e.textColor,sequence:e.sequence||0,onStartHover:e.onStartHover,onStopHover:e.onStopHover}}class n{content={};add(e,t){return this.content[e]=t,this}get(e){const t=this.content[e];if(!t&&!(e in this.content))throw new Error(`Cannot find ${e} in this registry!`);return t}contains(e){return e in this.content}getAll(){return Object.values(this.content)}getKeys(){return Object.keys(this.content)}remove(e){delete this.content[e]}}const r=.5,a="#37A850",l="#f5f5f5",c="#F8F9FA",h="#E8EAED",d="#595959",u="#666666",g="#c9ccd2",p="#3266ca",m="#FFFFFF",f="#CACACA",v=11982760,b="#017E84",S="#188038",y="#E0E2E4",C="#4A4F59",w="#999",x="#E2E3E3",I="#BCBCBC",E="#9B359B",R="#4EA7F2",T="#EA6175",A="#AAAAAA",_="#111827",D="#D8DADD",O="#E7E9ED",F="#F9FAFB",M="#374151",P=M+"C2",N="#111827",k="#714B67",V=O,L=D,H="#111827",U="#e6f2f3",B="#111827",z="#017E84",$="#D44C591A",G="#C34A41",W="#98DBE2",q="#E6F2F3",Z=20,j=10,Y=15,X=16,K=12,J="#F28C28",Q=["#000000","#434343","#666666","#999999","#B7B7B7","#CCCCCC","#D9D9D9","#EFEFEF","#F3F3F3","#FFFFFF","#980000","#FF0000","#FF9900","#FFFF00","#00FF00","#00FFFF","#4A86E8","#0000FF","#9900FF","#FF00FF","#E6B8AF","#F4CCCC","#FCE5CD","#FFF2CC","#D9EAD3","#D0E0E3","#C9DAF8","#CFE2F3","#D9D2E9","#EAD1DC","#DD7E6B","#EA9999","#F9CB9C","#FFE599","#B6D7A8","#A2C4C9","#A4C2F4","#9FC5E8","#B4A7D6","#D5A6BD","#CC4125","#E06666","#F6B26B","#FFD966","#93C47D","#76A5AF","#6D9EEB","#6FA8DC","#8E7CC3","#C27BA0","#A61C00","#CC0000","#E69138","#F1C232","#6AA84F","#45818E","#3C78D8","#3D85C6","#674EA7","#A64D79","#85200C","#990000","#B45F06","#BF9000","#38761D","#134F5C","#1155CC","#0B5394","#351C75","#741B47","#5B0F00","#660000","#783F04","#7F6000","#274E13","#0C343D","#1C4587","#073763","#20124D","#4C1130"],ee=26,te=48,oe=96,se=23,ie=15,ne=4,re=3,ae=ne,le=21,ce=17,he=2*se,de=250,ue={align:"left",verticalAlign:"bottom",wrapping:"overflow",bold:!1,italic:!1,strikethrough:!1,underline:!1,fontSize:10,fillColor:"",textColor:""},ge=ue.verticalAlign,pe=ue.wrapping,me="400",fe=ue.fontSize,ve="'Roboto', arial",be="thin",Se="#000000",ye="START_REVISION",Ce=1,we=20,xe="??",Ie="difference",Ee="#43C5B1",Re="#EA6175",Te=.4,Ae=2,_e=["'","*","?","/","\\","[","]"],De=/'|\*|\?|\/|\\|\[|\]/,Oe="|";var Fe;!function(e){e[e.Grid=0]="Grid",e[e.Highlight=5]="Highlight",e[e.HeaderGroupingButton=6]="HeaderGroupingButton",e[e.Figure=10]="Figure",e[e.ScrollBar=15]="ScrollBar",e[e.GridPopover=19]="GridPopover",e[e.GridComposer=20]="GridComposer",e[e.Dropdown=21]="Dropdown",e[e.IconPicker=25]="IconPicker",e[e.TopBarComposer=30]="TopBarComposer",e[e.Popover=35]="Popover",e[e.FigureAnchor=1e3]="FigureAnchor",e[e.FigureSnapLine=1001]="FigureSnapLine",e[e.FigureTooltip=1002]="FigureTooltip"}(Fe||(Fe={}));let Me=0;function Pe(){return Me}const Ne="\n",ke=[6,7,8,9,10,11,12,14,18,24,36],Ve={hasFilters:!1,totalRow:!1,firstColumn:!0,lastColumn:!1,numberOfHeaders:1,bandedRows:!0,bandedColumns:!1,styleId:"TableStyleMedium5",automaticAutofill:!1},Le={symbol:"$",position:"before",decimalPlaces:2,code:"",name:"Dollar"},He=new RegExp(De,"g");function Ue(e){return'"'===e[0]&&(e=e.slice(1)),'"'===e[e.length-1]&&"\\"!==e[e.length-2]?e.slice(0,e.length-1):e}function Be(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ze(e){switch(typeof e){case"object":{if(null===e)return e;if(function(e){return"clone"in e&&e.clone instanceof Function}(e))return e.clone();if(!(function(e){return"object"==typeof e&&null!==e&&(e?.constructor===Object||void 0===e?.constructor)}(e)||e instanceof Array))throw new Error("Unsupported type: only objects and arrays are supported");const t=Array.isArray(e)?new Array(e.length):{};if(Array.isArray(e))for(let o=0,s=e.length;o<s;o++)o in e&&(t[o]=ze(e[o]));else for(const o in e)t[o]=ze(e[o]);return t}case"number":case"string":case"boolean":case"function":case"undefined":return e;default:throw new Error("Unsupported type: "+typeof e)}}function $e(e){return Ge(e,"'")}function Ge(e,t='"'){return e.startsWith(t)&&(e=e.slice(1)),e.endsWith(t)&&(e=e.slice(0,-1)),e}function We(e){return e.match(/\w/g)?.length!==e.length&&(e=`'${e}'`),e}function qe(e,t=" "){return e.replace(He,t)}function Ze(e,t,o){return e<t?t:e>o?o:e}function je(e,t,o=1){if(t<=e&&o>0)return[];if(0===o)throw new Error("range() step must not be zero");const s=Math.ceil(Math.abs((t-e)/o)),i=Array(s);for(let t=0;t<s;t++)i[t]=e+t*o;return i}function Ye(e){return e.reduce(((e,t,o,s)=>{if(1===Math.abs(t-s[o-1])){e[e.length-1].push(t)}else e.push([t]);return e}),[])}function*Xe(e,t){t.next();for(const o of e){const e=t.next();yield{...o,next:e.done?void 0:e.value}}}function Ke(e){const t=e.toUpperCase();return"TRUE"===t||"FALSE"===t}const Je=/^\[(.+)\]\((.+)\)$/,Qe=/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/;function et(e){return Je.test(e)}function tt(e){return Qe.test(e)}function ot(e,t){return`[${e}](${t})`}function st(e){const t=e.match(Je)||[],o=t[1],s=t[2];if(!o||!s)throw new Error(`Could not parse markdown link ${e}.`);return{label:o,url:s}}const it="o-spreadsheet://";function nt(e){return e.startsWith(it)}function rt(e){return`${it}${e}`}function at(e){if(e.startsWith(it))return e.slice(it.length);throw new Error(`${e} is not a valid sheet link`)}function lt(e){return void 0!==e}function ct(e){return null!==e}function ht(e){return void 0===e||Object.values(e).every((e=>"object"==typeof e?ht(e):!e))}function dt(e,t,o){let s;const i=function(){const i=this,n=Array.from(arguments);const r=o&&!s;clearTimeout(s),s=setTimeout((function(){s=void 0,o||e.apply(i,n)}),t),r&&e.apply(i,n)};return i.isDebouncePending=()=>void 0!==s,i.stopDebounce=()=>{clearTimeout(s)},i}function ut(e){let t="";for(let o=0,s=e.length;o<s;o++)t+=e[o];return t}function gt(e){let t,o=!1;const s=()=>(o||(t=e instanceof Function?e():e,o=!0),t);return s.map=e=>gt((()=>e(s()))),s}function pt(e,t){let o=e.slice(t).find((e=>e));return o||(o=e.slice(0,t).reverse().find((e=>e))),o||""}function mt(e,t){return"after"===e?t+1:t}function ft(e,t){if(e===t)return!0;if(e&&!t||t&&!e)return!1;if(typeof e!=typeof t)return!1;if("object"!=typeof e)return!1;for(const o in t)if(!(o in e)&&void 0!==t[o])return!1;for(const o in e){if(typeof e[o]!=typeof t[o])return!1;if("object"==typeof e[o]){if(!ft(e[o],t[o]))return!1}else if(e[o]!==t[o])return!1}return!0}function vt(e,t){if(e.length!==t.length)return!1;for(let o=0;o<e.length;o++)if(!ft(e[o],t[o]))return!1;return!0}function bt(e,t){if(e.length<t.length)return!1;const o=new Set(e);return t.every((e=>o.has(e)))}function St(e){if(!e)return e;const t={...e};return Object.keys(t).forEach((e=>!t[e]&&delete t[e])),t}const yt=["\t","\f","\v",String.fromCharCode(parseInt("00a0",16)),String.fromCharCode(parseInt("1680",16)),String.fromCharCode(parseInt("2000",16)),String.fromCharCode(parseInt("200a",16)),String.fromCharCode(parseInt("2028",16)),String.fromCharCode(parseInt("2029",16)),String.fromCharCode(parseInt("202f",16)),String.fromCharCode(parseInt("205f",16)),String.fromCharCode(parseInt("3000",16)),String.fromCharCode(parseInt("feff",16))],Ct=new RegExp(yt.join("|"),"g"),wt=/(\r\n|\r)/g;function xt(e){return e?e.replace(wt,Ne):""}function It(e){const t=Array.from(e).sort(((e,t)=>e-t));for(let e=1;e<t.length;e++)if(t[e]-t[e-1]!=1)return!1;return!0}function Et(e){const t=new Map,o=e.name?e.name+" (memoized)":"memoized";return{[o]:(...o)=>(t.has(o[0])||t.set(o[0],e(...o)),t.get(o[0]))}[o]}function Rt(e,t){return e.filter(((e,o)=>!t.includes(o)))}function Tt(e,t,o){const s=[...e];return s.splice(o,0,...t),s}function At(e){return e.split("\n").map((e=>e.replace(/\s+/g," ").trim())).join("\n")}function _t(e,t,o){return t>o?_t(e,o,t):e>=t&&e<=o}function Dt(e,t){let o=Be(e);const s=t.matchCase?"":"i";return t.exactMatch&&(o=`^${o}$`),RegExp(o,s)}function Ot(e){let t=e.length;if(t<1e5)return Math.max(...e);let o=-1/0;for(;t--;)o=e[t]>o?e[t]:o;return o}function Ft(e){let t=e.length;if(t<1e5)return Math.min(...e);let o=1/0;for(;t--;)o=e[t]<o?e[t]:o;return o}class Mt{text;currentIndex=0;current;constructor(e){this.text=e,this.current=e[0]}shift(){const e=this.current,t=this.text[++this.currentIndex];return this.current=t,e}advanceBy(e){this.currentIndex+=e,this.current=this.text[this.currentIndex]}isOver(){return this.currentIndex>=this.text.length}remaining(){return this.text.substring(this.currentIndex)}currentStartsWith(e){if(this.current!==e[0])return!1;for(let t=1;t<e.length;t++)if(this.text[this.currentIndex+t]!==e[t])return!1;return!0}}function Pt(e,t=(e=>e)){const o=new Set;return e.filter((e=>{const s=t(e);return!o.has(s)&&(o.add(s),!0)}))}function Nt(e){const t={};for(const o in e)for(const s in e[o])t[s]||(t[s]={}),t[s][o]=e[o][s];return t}function kt(e,t,o={}){const s=o.compute??((e,t)=>`${e} (${t})`),i=o.computeFirstOne??!1;let n=o.start??1,r=i?s(e,n):e;for(;t.includes(r);)r=s(e,n++);return r}const Vt=/rgba?\(|\s+|\)/gi,Lt=/^#([A-F\d]{2}){3,4}$/,Ht=["#eb6d00","#0074d9","#ad8e00","#169ed4","#b10dc9","#00a82d","#00a3a3","#f012be","#3d9970","#111111","#62A300","#ff4136","#949494","#85144b","#001f3f"];function Ut(e){return zt(e.toString(16).padStart(6,"0"))}function Bt(e){return"number"==typeof e?e:Number.parseInt(zt(e).slice(1),16)}function zt(e){let t=e;if(e.startsWith("rgb")?t=function(e){const t=e.replace(Vt,"").split(",");let o=255;if(3!==t.length&&4!==t.length)throw new Error("invalid color");if(4===t.length){const e=parseFloat(t.pop()||"1");if(isNaN(e))throw new Error("invalid alpha value");o=Math.round(255*e)}const s=t.map((e=>parseInt(e,10)));255!==o&&s.push(o);return"#"+ut(s.map((e=>e.toString(16).padStart(2,"0")))).toUpperCase()}(e):(t=e.replace("#","").toUpperCase(),3!==t.length&&4!==t.length||(t=t.split("").reduce(((e,t)=>e+t+t),"")),t=`#${t}`),!Lt.test(t))throw new Error(`invalid color input: ${e}`);return t}function $t(e){try{return zt(e),!0}catch(e){return!1}}const Gt=e=>e>=0&&e<=255;function Wt(e,t,o,s=1){if(!Gt(e)||!Gt(t)||!Gt(o)||s<0||s>1)throw new Error(`Invalid RGBA values ${[e,t,o,s]}`);return{a:s,b:o,g:t,r:e}}function qt(e){let{r:t,g:o,b:s}=jt(e);t/=255,o/=255,s/=255;const i=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4;return.2126*i(t)+.7152*i(o)+.0722*i(s)}function Zt(e){let t=e.r.toString(16),o=e.g.toString(16),s=e.b.toString(16),i=Math.round(255*e.a).toString(16);return 1===t.length&&(t="0"+t),1===o.length&&(o="0"+o),1===s.length&&(s="0"+s),1===i.length&&(i="0"+i),"ff"===i&&(i=""),("#"+t+o+s+i).toUpperCase()}function jt(e){let t,o,s,i;if(7===(e=zt(e)).length)t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),s=parseInt(e[5]+e[6],16),i=255;else{if(9!==e.length)throw new Error("Invalid color");t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),s=parseInt(e[5]+e[6],16),i=parseInt(e[7]+e[8],16)}return i=+(i/255).toFixed(3),{a:i,r:t,g:o,b:s}}function Yt(e){(e={...e}).s/=100,e.l/=100;let t=(1-Math.abs(2*e.l-1))*e.s,o=t*(1-Math.abs(e.h/60%2-1)),s=e.l-t/2,i=0,n=0,r=0;return 0<=e.h&&e.h<60?(i=t,n=o,r=0):60<=e.h&&e.h<120?(i=o,n=t,r=0):120<=e.h&&e.h<180?(i=0,n=t,r=o):180<=e.h&&e.h<240?(i=0,n=o,r=t):240<=e.h&&e.h<300?(i=o,n=0,r=t):300<=e.h&&e.h<360&&(i=t,n=0,r=o),i=Math.round(255*(i+s)),n=Math.round(255*(n+s)),r=Math.round(255*(r+s)),{a:e.a,r:i,g:n,b:r}}function Xt(e){const t=e.r/255,o=e.g/255,s=e.b/255;let i=Math.min(t,o,s),n=Math.max(t,o,s),r=n-i,a=0,l=0,c=0;return a=0===r?0:n===t?(o-s)/r%6:n===o?(s-t)/r+2:(t-o)/r+4,a=Math.round(60*a),a<0&&(a+=360),c=(n+i)/2,l=0===r?0:r/(1-Math.abs(2*c-1)),l=+(100*l).toFixed(1),c=+(100*c).toFixed(1),{a:e.a,h:a,s:l,l:c}}function Kt(e){return Zt(Yt(e))}function Jt(e){return Xt(jt(e))}function Qt(e,t){return 1===t?zt(e).slice(0,7):Zt({...jt(e),a:t})}function eo(e,t){const o=Jt(e);return 1===t?"#fff":(o.l=t*(100-o.l)+o.l,Kt(o))}function to(e,t){const o=Jt(e);return 1===t?"#000":(o.l=o.l-t*o.l,Kt(o))}const oo=["#4EA7F2","#EA6175","#43C5B1","#F4A261","#8481DD","#FFD86D"],so=["#4EA7F2","#3188E6","#43C5B1","#00A78D","#EA6175","#CE4257","#F4A261","#F48935","#8481DD","#5752D1","#FFD86D","#FFBC2C"],io=["#4EA7F2","#3188E6","#056BD9","#A76DBC","#7F4295","#6D2387","#EA6175","#CE4257","#982738","#43C5B1","#00A78D","#0E8270","#F4A261","#F48935","#BE5D10","#8481DD","#5752D1","#3A3580","#A4A8B6","#7E8290","#545B70","#FFD86D","#FFBC2C","#C08A16"],no=["#4EA7F2","#3188E6","#056BD9","#155193","#A76DBC","#7F4295","#6D2387","#4F1565","#EA6175","#CE4257","#982738","#791B29","#43C5B1","#00A78D","#0E8270","#105F53","#F4A261","#F48935","#BE5D10","#7D380D","#8481DD","#5752D1","#3A3580","#26235F","#A4A8B6","#7E8290","#545B70","#3F4250","#FFD86D","#FFBC2C","#C08A16","#936A12"],ro=["#4EA7F2","#43C5B1","#EA6175","#F4A261","#8481DD","#FFD86D","#3188E6","#00A78D","#CE4257","#F48935","#5752D1","#FFBC2C"],ao=["#4EA7F2","#A76DBC","#EA6175","#43C5B1","#F4A261","#8481DD","#A4A8B6","#FFD86D","#3188E6","#7F4295","#CE4257","#00A78D","#F48935","#5752D1","#7E8290","#FFBC2C","#056BD9","#6D2387","#982738","#0E8270","#BE5D10","#3A3580","#545B70","#C08A16"],lo=["#4EA7F2","#A76DBC","#EA6175","#43C5B1","#F4A261","#8481DD","#A4A8B6","#FFD86D","#3188E6","#7F4295","#CE4257","#00A78D","#F48935","#5752D1","#7E8290","#FFBC2C","#056BD9","#6D2387","#982738","#0E8270","#BE5D10","#3A3580","#545B70","#C08A16","#155193","#4F1565","#791B29","#105F53","#7D380D","#26235F","#3F4250","#936A12"];function co(e,t){return t[e%t.length]}function ho(e){return e<=6?oo:e<=12?so:e<=24?io:no}class uo{preferredColors;currentColorIndex=0;palette;constructor(e,t=[]){this.preferredColors=t,this.palette=ho(e).filter((e=>!t.includes(e)))}next(){return this.preferredColors?.[this.currentColorIndex]?this.preferredColors[this.currentColorIndex++]:co(this.currentColorIndex++,this.palette)}}class go extends uo{constructor(e,t=[]){var o;super(e,t),this.palette=(o=e,o<=6?oo:o<=12?ro:o<=24?ao:lo).filter((e=>!t.includes(e)))}}function po(e){if(e.length<2)throw new Error("Color scale must have at least 2 points");const t=[...e.sort(((e,t)=>e.value-t.value))],o=[];for(let e=1;e<t.length;e++){const s=Bt(t[e-1].color),i=Bt(t[e].color);o.push({min:t[e-1].value,max:t[e].value,minColor:s,maxColor:i,colorDiff:mo(t[e-1].value,t[e].value,s,i)})}return e=>{if(e<o[0].min)return Ut(o[0].minColor);for(const t of o)if(e>=t.min&&e<=t.max)return Ut(fo(e,t.min,t.minColor,t.colorDiff));return Ut(o[o.length-1].maxColor)}}function mo(e,t,o,s){const i=t-e;return[((o>>16)%256-(s>>16)%256)/i,((o>>8)%256-(s>>8)%256)/i,(o%256-s%256)/i]}function fo(e,t,o,s){const[i,n,r]=s;return Math.round((o>>16)%256-i*(e-t))<<16|Math.round((o>>8)%256-n*(e-t))<<8|Math.round(o%256-r*(e-t))}function vo(e){if(e<0)throw new Error(`number must be positive. Got ${e}`);return e<26?String.fromCharCode(65+e):vo(Math.floor(e/26)-1)+vo(e%26)}function bo(e){let t=0;const o=e.length;for(let s=0;s<o;s++){t=26*t+So(e[s])}return t-1}function So(e){const t=e.charCodeAt(0);return t>=65&&t<=90?t-64:t-96}function yo(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function Co(e){return e>="0"&&e<="9"}const wo=bo("ZZZ"),xo=9999998;function Io(e){for(;" "===e.current;)e.advanceBy(1)}function Eo(e){if("$"===e.current&&e.advanceBy(1),!e.current||!yo(e.current))return-1;let t=0;for(;e.current&&yo(e.current);)t=26*t+So(e.shift());return t}function Ro(e){if("$"===e.current&&e.advanceBy(1),!e.current||!Co(e.current))return-1;let t=0;for(;e.current&&Co(e.current);)t=10*t+Number(e.shift());return t}function To(e){const t=new Mt(e);Io(t);const o=Eo(t);if(-1===o||!t.current)throw new Error(`Invalid cell description: ${e}`);const s=Ro(t);Io(t);const i=o-1,n=s-1;if(!t.isOver()||i>wo||n>xo)throw new Error(`Invalid cell description: ${e}`);return{col:i,row:n}}function Ao(e,t,o={colFixed:!1,rowFixed:!1}){return(o.colFixed?"$":"")+vo(e)+(o.rowFixed?"$":"")+String(t+1)}function _o(e,t=[]){if(e.length<=1&&0===t.length)return e;const o=[0],s=new Map([[0,[]]]);return Do(o,s,e,!1),Do(o,s,t,!0),function(e,t){const o=[];let s=[];for(let i=0;i<e.length;i++){const n=e[i],r=t.get(n);if(!r||0===r.length){o.push(...s),s=[];continue}let a=e[i+1];void 0!==a&&a--;const l=[];for(let e=0;e<r.length;e+=2){const t=r[e];let o=r[e+1];void 0!==o&&o--;const i={top:t,left:n,bottom:o,right:a,hasHeader:void 0===o&&0!==t||void 0===a&&0!==n};let c=!1;for(let e=s.length-1;e>=0;e--){const t=s[e];if(t.top===i.top&&t.bottom===i.bottom){t.right=i.right,s.splice(e,1),l.push(t),c=!0;break}}c||l.push(i)}o.push(...s),s=l}return o.push(...s),o}(o,s)}function Do(e,t,o,s=!1){for(const i of o){const o=i.left,n=void 0===i.right?void 0:i.right+1,r=Oo(e,t,o,!0,0),a=Oo(e,t,n,!1,r);for(let o=r;o<=a;o++){Fo(t.get(e[o]),i,s)}Mo(e,t,r,a)}}function Oo(e,t,o,s,i){if(void 0===o)return e.length-1;const n=Po(e,o,i);return o!=e[n]?(e.splice(n+1,0,o),t.set(o,[...t.get(e[n])]),s?n+1:n):s?n:n-1}function Fo(e,t,o=!1){const s=t.top,i=void 0===t.bottom?void 0:t.bottom+1,n=[],r=Po(e,s,0,!1);if((r%2!=0&&!o||r%2==0&&o)&&n.push(s),void 0===i)return e.splice(r+1),void e.push(...n);const a=function(e,t,o=0,s=!0){let i=e.length-1,n=e.length;for(;o<=i;){const r=Math.floor((o+i)/2);if(e[r]===t&&s)return r;e[r]>t?(n=r,i=r-1):o=r+1}return n}(e,i,0,!1);(a%2==0&&!o||a%2!=0&&o)&&n.push(i),e.splice(r+1,a-r-1,...n)}function Mo(e,t,o,s){const i=o-1==-1?0:o-1;for(let o=s===e.length-1?s:s+1;o>i;o--)vt(t.get(e[o]),t.get(e[o-1]))&&(t.delete(e[o]),e.splice(o,1))}function Po(e,t,o=0,s=!0){let i=e.length-1,n=-1;for(;o<=i;){const r=Math.floor((o+i)/2);if(e[r]===t&&s)return r;e[r]<t?(n=r,o=r+1):i=r-1}return n}const No=e=>e,ko=()=>!1;let Vo=No,Lo=ko;function Ho(e,...t){if(1!==t.length||"object"!=typeof t[0]||t[0]instanceof String)t.length>0&&(e=e.replace(/\%s/g,(()=>t.shift())));else{const o=t[0];e=e.replace(/\%\(([^\)]+)\)s/g,((e,t)=>o[t]))}return e}const Uo=function(e,...t){return Lo()?Ho(Vo(e),...t):new Bo(e,t)};class Bo extends String{values;constructor(e,t){super(e),this.values=t}valueOf(){const e=super.valueOf();return Lo()?Ho(Vo(e),...this.values):Ho(e,...this.values)}toString(){return this.valueOf()}}function zo(e){const t=function(e){const t=new Mt(e);Io(t);const o=e.indexOf("!");-1!==o&&t.advanceBy(o+1);const s=Eo(t),i=Ro(t);let n,r,a,l,c=!1,h=!1,d=!1;if(-1===i?(a=l=s-1,n=r=0,c=!0):-1===s?(n=r=i-1,a=l=0,h=!0):(a=l=s-1,n=r=i-1,d=!0),Io(t),":"===t.current){t.advanceBy(1),Io(t);const e=Eo(t),o=Ro(t);-1===o?(l=e-1,c=!0):-1===e?(r=o-1,h=!0):(l=e-1,r=o-1,n=c?r:n,a=h?l:a,d=!0)}const u={top:n,left:a,bottom:c?void 0:r,right:h?void 0:l};return d=d&&(h||c),d&&(u.hasHeader=d),u}(e),o=as(t),s=o.bottom,i=o.right;if(void 0!==s&&s>xo||void 0!==i&&i>wo)throw new Error(`Range string out of bounds: ${e}`);if(void 0===s&&void 0===i)throw new Error("Wrong zone xc. The zone cannot be at the same time a full column and a full row");return o}function $o(e){const t=zo(e);if(void 0===t.bottom||void 0===t.right)throw new Error("This does not support unbounded ranges");return t}function Go(e){const{bottom:t,top:o,left:s,right:i}=e;return!(void 0!==t&&isNaN(t)||isNaN(o)||isNaN(s)||void 0!==i&&isNaN(i))&&(Wo(e)&&e.top>=0&&e.left>=0)}function Wo(e){return(void 0===e.bottom||e.bottom>=e.top&&e.bottom>=0)&&(void 0===e.right||e.right>=e.left&&e.right>=0)}function qo(e){const{top:t,bottom:o,left:s,right:i}=e,n="hasHeader"in e&&e.hasHeader,r=t===o&&s===i;if(void 0===o&&void 0!==i)return 0!==t||n?`${Ao(s,t)}:${vo(i)}`:`${vo(s)}:${vo(i)}`;if(void 0===i&&void 0!==o)return 0!==s||n?`${Ao(s,t)}:${o+1}`:`${t+1}:${o+1}`;if(void 0!==o&&void 0!==i)return r?Ao(s,t):`${Ao(s,t)}:${Ao(i,o)}`;throw new Error(Uo("Bad zone format"))}function Zo(e,t,o,s,i){const n="left"===t?"columns":"rows",r="before"===s?o-1:o,a=e["left"===t?"right":"bottom"];return e[t]<=r&&a&&a>r?ls(e,n,"RESIZE",i):r<e[t]?ls(e,n,"MOVE",i):{...e}}function jo(e,t,o,s,i){const n="left"===t?"columns":"rows",r="before"===s?o-1:o,a="left"===t?"right":"bottom";return e[t]<=r&&e[a]>r?ls(e,n,"RESIZE",i):r<e[t]?ls(e,n,"MOVE",i):{...e}}function Yo(e,t,o){const s="left"===t?"right":"bottom";let i=e[t],n=e[s];for(let r of o.sort(((e,t)=>t-e)))e[t]>r&&(i--,n--),e[t]<r&&e[s]>=r&&n--;return{...e,[t]:i,[s]:n}}function Xo(e,t,o){const s="left"===t?"right":"bottom";let i=e[t],n=e[s];const r=e[s];for(let s of o.sort(((e,t)=>t-e)))e[t]>s&&(i--,void 0!==n&&n--),void 0!==r&&void 0!==n&&e[t]<=s&&r>=s&&n--;if(!(void 0!==n&&i>n))return{...e,[t]:i,[s]:n}}function Ko(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:Math.max(...e.map((e=>e.bottom))),right:Math.max(...e.map((e=>e.right)))}}function Jo(e,t){if(es(e,t))return{top:Math.max(e.top,t.top),left:Math.max(e.left,t.left),bottom:Math.min(e.bottom,t.bottom),right:Math.min(e.right,t.right)}}function Qo(e,t){return e.left===t.left&&e.right===t.right&&e.top===t.top&&e.bottom===t.bottom}function es(e,t){return!(e.bottom<t.top||t.bottom<e.top)&&!(e.right<t.left||t.right<e.left)}function ts(e,t,o){const{left:s,right:i,top:n,bottom:r}=o;return e>=s&&e<=i&&t>=n&&t<=r}function os(e,t){return Qo(Ko(t,e),t)}function ss(e){return{numberOfRows:e.bottom-e.top+1,numberOfCols:e.right-e.left+1}}function is(e){const{numberOfCols:t,numberOfRows:o}=ss(e);return 1===t||1===o}function ns(e){const t={};for(const o of e)t[o.sheetId]??=[],t[o.sheetId].push(hs(o));for(const e in t)t[e]=_o(t[e]);return t}function rs(e){const t=[],{left:o,right:s,top:i,bottom:n}=as(e);for(const e of je(o,s+1))for(const o of je(i,n+1))t.push({col:e,row:o});return t}function as(e){return void 0!==e.right&&e.left>e.right&&(e={...e,left:e.right,right:e.left}),void 0!==e.bottom&&e.top>e.bottom&&(e={...e,top:e.bottom,bottom:e.top}),e}function ls(e,t,o,s){const i="both"===t?s[0]:"columns"===t?s:0,n="both"===t?s[1]:"rows"===t?s:0,r="hasHeader"in e&&e.hasHeader;let a;a=!function(e){return void 0===e.bottom}(e)||r?!(us(e)&&!r)||"columns"!==t:"rows"!==t;const l={...e};return a&&"MOVE"===o&&(l.left+=i,l.top+=n),void 0!==l.right&&(l.right+=i),void 0!==l.bottom&&(l.bottom+=n),l}function cs(e,t){let o,s;const{left:i,right:n,top:r,bottom:a}=e,{left:l,right:c,top:h,bottom:d}=t;return o=l!=i?l:c!=n?c:l,s=h!=r?h:d!=a?d:h,{col:o,row:s}}function hs(e){return{left:e.col,right:e.col,top:e.row,bottom:e.row}}function ds(e){return{...e,right:e.left,bottom:e.top}}function us(e){return void 0===e.right}function gs(e){return(e.bottom-e.top+1)*(e.right-e.left+1)}function ps(e){return e.length<2||1===_o(e).length}function ms(e){const t=[...e];let o=!0;for(;o;){o=!1;for(let e=0;e<t.length;e++){const s=t[e],i=t.findIndex(((t,o)=>{return e!==o&&(n=s,((i=t).right+1===n.left||i.left===n.right+1?i.top<=n.bottom&&i.top>=n.top||n.top<=i.bottom&&n.top>=i.top:(i.bottom+1===n.top||i.top===n.bottom+1)&&(i.left<=n.right&&i.left>=n.left||n.left<=i.right&&n.left>=i.left))||es(t,s));var i,n}));if(-1!==i){t[e]=Ko(t[i],s),t.splice(i,1),o=!0;break}}}return t}const fs=new WeakMap,vs=new WeakMap;function bs(e,t){fs.has(t)||(fs.set(t,new Map),vs.set(t,0));const o=fs.get(t),s=Cs(e);if(o.has(s)){const i=o.get(s);return t[i]=e,i}const i=vs.get(t)+1;return o.set(s,i),vs.set(t,i),t[i]=e,i}function Ss(e){const t={};for(const o in e){const s=_o(e[o].map(hs));for(const e of s)t[qo(e)]=Number(o)}return t}function*ys(e,t){for(const o in t){const s=$o(o),i=t[o];for(let t=s.top;t<=s.bottom;t++)for(let o=s.left;o<=s.right;o++){const s={sheetId:e,col:o,row:t};yield[s,i]}}}function Cs(e){if(null===e)return"null";if(void 0===e)return"undefined";if("object"!=typeof e)return String(e);if(Array.isArray(e)){const t=e.length;let o="[";for(let s=0;s<t;s++)s>0&&(o+=","),o+=Cs(e[s]);return o+"]"}const t=Object.keys(e).sort();let o="{";for(const s of t)void 0!==e[s]&&(o+=`"${s}":${Cs(e[s])},`);return o+="}",o}class ws{jsDate;constructor(e,t,o,s=0,i=0,n=0){this.jsDate=new Date(Date.UTC(e,t,o,s,i,n,0))}static fromTimestamp(e){const t=new Date(e);return new ws(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),t.getUTCHours(),t.getUTCMinutes(),t.getUTCSeconds())}static now(){const e=new Date;return new ws(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds())}toString(){return this.jsDate.toString()}toLocaleDateString(){return this.jsDate.toLocaleDateString()}getTime(){return this.jsDate.getTime()}getFullYear(){return this.jsDate.getUTCFullYear()}getMonth(){return this.jsDate.getUTCMonth()}getQuarter(){return Math.floor(this.getMonth()/3)+1}getDate(){return this.jsDate.getUTCDate()}getDay(){return this.jsDate.getUTCDay()}getHours(){return this.jsDate.getUTCHours()}getMinutes(){return this.jsDate.getUTCMinutes()}getSeconds(){return this.jsDate.getUTCSeconds()}getIsoWeek(){const e=new Date(this.jsDate.getTime()),t=e.getUTCDay()||7;e.setUTCDate(e.getUTCDate()+4-t);const o=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-o.getTime())/864e5+1)/7)}setFullYear(e){return this.jsDate.setUTCFullYear(e)}setMonth(e){return this.jsDate.setUTCMonth(e)}setDate(e){return this.jsDate.setUTCDate(e)}setHours(e){return this.jsDate.setUTCHours(e)}setMinutes(e){return this.jsDate.setUTCMinutes(e)}setSeconds(e){return this.jsDate.setUTCSeconds(e)}}const xs=new ws(1899,11,30),Is=864e5,Es=2e3,Rs=ws.now().getFullYear(),Ts=ws.now().getMonth(),As=ws.fromTimestamp(0).getTime()-xs.getTime(),_s=/^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/,Ds=/^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/,Os=/\/|-|\s/,Fs=/^(\d{1,4})[\/-\s](\d{1,4})([\/-\s](\d{1,4}))?$/,Ms=/((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;function Ps(e,t){switch(typeof e){case"number":return e;case"string":return Ns(e,t)?Vs(e,t)?.value:!e||isNaN(Number(e))?void 0:Number(e);default:return}}function Ns(e,t){return null!==Vs(e,t)}const ks=new Map;function Vs(e,t){return ks.has(t)||ks.set(t,new Map),ks.get(t).has(e)||ks.get(t).set(e,function(e,t){e=e.trim();let o=null;const s=e.match(Ms);if(s){if(o=function(e){if(e=e.trim(),Ms.test(e)){const t=/AM/i.test(e),o=/PM/i.test(e),s=(t||o?e.substring(0,e.length-2).trim():e).split(/:/),i=s.length>=2,n=3===s.length;let r=Number(s[0]),a=i?Number(s[1]):0,l=n?Number(s[2]):0,c=n?"hh:mm:ss":"hh:mm";if(t||o)c+=" a";else if(!i)return null;r>=12&&t?r-=12:r<12&&o&&(r+=12),a+=Math.floor(l/60),l%=60,r+=Math.floor(a/60),a%=60,r>=24&&(c="hhhh:mm:ss");return{value:r/24+a/1440+l/86400,format:c,jsDate:new ws(1899,11,30,r,a,l)}}return null}(s[0]),null===o)return null;e=e.replace(s[0],"").trim()}let i=null;const n=function(e,t){const o=e.match(Fs);if(!o)return null;const[,s,i,,n]=o;if(s.length>2&&n&&n.length>2)return null;if(s.length>2)return{year:s,month:i,day:n,dateString:e,type:"ymd"};const r=function(e){switch(e.dateFormat[0]){case"d":return"dmy";case"m":return"mdy";case"y":return"ymd"}throw new Error("Invalid date format in locale")}(t);if(!n)return i.length>2?{month:s,year:i,day:void 0,dateString:e,type:r}:"dmy"===r?{day:s,month:i,year:n,dateString:e,type:"dmy"}:{month:s,day:i,year:n,dateString:e,type:"mdy"};if(n.length>2)return"mdy"===r?{month:s,day:i,year:n,dateString:e,type:"mdy"}:{day:s,month:i,year:n,dateString:e,type:"dmy"};if("mdy"===r)return{month:s,day:i,year:n,dateString:e,type:"mdy"};if("ymd"===r)return{year:s,month:i,day:n,dateString:e,type:"ymd"};if("dmy"===r)return{day:s,month:i,year:n,dateString:e,type:"dmy"};return null}(e,t);if(n){const t=n.dateString.match(Os)[0];if(i=function(e,t){let{year:o,month:s,day:i}=e;const n=function(e){if(!e)return Ts;const t=Number(e);if(t>=1&&t<=12)return t-1;return null}(s),r=function(e){if(!e)return 1;const t=Number(e);if(t>=0&&t<=31)return t;return null}(i),a=function(e){if(!e)return Rs;const t=Number(e);switch(e.length){case 1:return Es+t;case 2:return Es+(Es+t>Rs+10?-100:0)+t;case 3:case 4:return t}return null}(o);if(null===a||null===n||null===r)return null;const l=2===s?.length&&n+1<10||2===i?.length&&r<10,c=2!==o?.length,h=new ws(a,n,r);if(h.getMonth()!==n||h.getDate()!==r)return null;const d=h.getTime()-xs.getTime(),u=function(e,t,o,s){const i=e.year?s?"yyyy":"yy":void 0,n=e.month?o?"mm":"m":void 0,r=e.day?o?"dd":"d":void 0;switch(e.type){case"mdy":return[n,r,i].filter(lt).join(t);case"ymd":return[i,n,r].filter(lt).join(t);case"dmy":return[r,n,i].filter(lt).join(t)}}(e,t,l,c);return{value:Math.round(d/Is),format:u,jsDate:h}}(n,t),null===i)return null;e=e.replace(n.dateString,"").trim()}if(""!==e||!i&&!o)return null;if(i&&i.jsDate&&o&&o.jsDate)return{value:i.value+o.value,format:i.format+" "+("hhhh:mm:ss"===o.format?"hh:mm:ss":o.format),jsDate:new ws(i.jsDate.getFullYear()+o.jsDate.getFullYear()-1899,i.jsDate.getMonth()+o.jsDate.getMonth()-11,i.jsDate.getDate()+o.jsDate.getDate()-30,i.jsDate.getHours()+o.jsDate.getHours(),i.jsDate.getMinutes()+o.jsDate.getMinutes(),i.jsDate.getSeconds()+o.jsDate.getSeconds())};return i||o}(e,t)),ks.get(t).get(e)}function Ls(e){const t=Math.trunc(e);let o=ws.fromTimestamp(t*Is-As),s=e-t;s=s<0?1+s:s;const i=Math.round(24*s),n=Math.round(24*(s-i/24)*60),r=Math.round(24*(s-i/24-n/24/60)*60*60);return o.setHours(i),o.setMinutes(n),o.setSeconds(r),o}function Hs(e){return Math.round(Us(e))}function Us(e){return(e.getTime()-xs.getTime())/Is}function Bs(e){return new ws(e.getFullYear(),e.getMonth()+1,0).getDate()}function zs(e){return Bs(e)===e.getDate()}function $s(e,t,o){const s=e.getFullYear(),i=e.getMonth(),n=e.getDate(),r=new ws(s,i+t,1);return o&&n===Bs(e)||n>Bs(r)?r.setDate(Bs(r)):r.setDate(n),r}function Gs(e){const t=Math.trunc(e);return t%4==0&&t%100!=0||t%400==0}function Ws(e,t,o){if(e===t)return 0;if(e>t){const o=t;t=e,e=o}const s=Ls(e),i=Ls(t);let n=s.getDate(),r=i.getDate();const a=s.getMonth(),l=i.getMonth(),c=s.getFullYear(),h=i.getFullYear();let d=0,u=0;switch(o){case 0:31===n&&(n=30),30===n&&31===r&&(r=30),1===a&&n===(Gs(c)?29:28)&&(n=30,1===l&&r===(Gs(h)?29:28)&&(r=30)),d=c+(30*a+n)/360,u=h+(30*l+r)/360;break;case 1:let o=365;const s=c===h;if(!s&&!(c+1===h)||!s&&a<l||!s&&a===l&&n<r){let e=0,t=0;for(let o=c;o<=h;o++)e++,t+=Gs(o)?366:365;o=t/e}else s?Gs(c)&&(o=366):(Gs(c)&&a<2&&(o=366),Gs(h)&&(l>1||1===l&&29===r)&&(o=366));d=e/o,u=t/o;break;case 2:d=e/360,u=t/360;break;case 3:d=e/365,u=t/365;break;case 4:31===n&&(n=30),31===r&&(r=30),d=c+(30*a+n)/360,u=h+(30*l+r)/360}return u-d}function qs(e,t){const o=12*(t.getFullYear()-e.getFullYear())+t.getMonth()-e.getMonth();return e.getDate()>t.getDate()?o-1:o}function Zs(e,t){const o=e.getTime(),s=t.getTime();return Math.floor((s-o)/Is)}function js(e,t){const o=t.getFullYear()-e.getFullYear(),s=e.getMonth(),i=t.getMonth(),n=e.getDate(),r=t.getDate();return i>s||i===s&&r>=n?o:o-1}function Ys(e,t,o){return t>o?Ys(e,o,t):(e=Math.trunc(e),t=Math.trunc(t),o=Math.trunc(o),e>=t&&e<=o)}const Xs=Et((function(e){return e=Be(e),new RegExp(`(?:^-?\\d+(?:${e}?\\d*(?:e(\\+|-)?\\d+)?)?|^-?${e}\\d+)(?!\\w|!)`)})),Ks=Et((function(e){const t=Be(e.decimalSeparator),o="(?:\\s*"+`(?:\\d+(?:${Be(e.thousandsSeparator||"")}\\d{3,})*(?:${t}\\d*)?)`+"|"+`(?:${t}\\d+)`+")(?:e(?:\\+|-)?\\d+)?(?:\\s*%)?",s="(?:\\s*-)?",i="(?:\\s*[\\$€])?",n="^(?:(?:"+[s+i+o,s+o+i,i+s+o].join(")|(?:")+"))$";return new RegExp(n,"i")}));function Js(e,t){return!!e&&Ks(t).test(e.trim())}const Qs=Et((function(e){return new RegExp(`[$€${Be(e.thousandsSeparator||"")}]`,"g")}));function ei(e,t){e=e.replace(Qs(t),""),"."!==t.decimalSeparator&&(e=e.replace(t.decimalSeparator,"."));let o=Number(e);return isNaN(o)&&e.includes("%")&&(o=Number(e.split("%")[0]),!isNaN(o))?o/100:o}function ti(e,t,o){const s=[...e].sort(((e,t)=>e-t));let i=(s.length+(o?-1:1))*t;if(o||i--,Number.isInteger(i))return s[i];const n=Math.ceil(i),r=Math.floor(i);return s[n]*(i-r)+s[r]*(n-i)}var oi,si;!function(e){e.boolean="boolean",e.number="number",e.text="text",e.empty="empty",e.error="error"}(oi||(oi={})),function(e){e.PlainText="text/plain",e.Html="text/html"}(si||(si={}));const ii=new Set(["RENAME_SHEET","DELETE_SHEET","CREATE_SHEET","DUPLICATE_SHEET","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","UNDO","REDO","ADD_MERGE","REMOVE_MERGE","DUPLICATE_SHEET","UPDATE_LOCALE","ADD_PIVOT","UPDATE_PIVOT","INSERT_PIVOT","RENAME_PIVOT","REMOVE_PIVOT","DUPLICATE_PIVOT"]),ni=new Set(["EVALUATE_CELLS","EVALUATE_CHARTS","UPDATE_CELL","UNHIDE_COLUMNS_ROWS","HIDE_COLUMNS_ROWS","GROUP_HEADERS","UNGROUP_HEADERS","FOLD_ALL_HEADER_GROUPS","FOLD_HEADER_GROUP","FOLD_HEADER_GROUPS_IN_ZONE","UNFOLD_ALL_HEADER_GROUPS","UNFOLD_HEADER_GROUP","UNFOLD_HEADER_GROUPS_IN_ZONE","UPDATE_TABLE","UPDATE_FILTER","UNDO","REDO"]),ri=new Set(["MOVE_RANGES"]),ai=new Set(["EVALUATE_CELLS","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","CHANGE_CONDITIONAL_FORMAT_PRIORITY"]),li=new Set(["AUTOFILL_CELL","SET_BORDER","SET_ZONE_BORDERS"]),ci=new Set(["START","ACTIVATE_SHEET","COPY","RESIZE_SHEETVIEW","SET_VIEWPORT_OFFSET","EVALUATE_CELLS","EVALUATE_CHARTS","SET_FORMULA_VISIBILITY","UPDATE_FILTER"]),hi=new Set(["UPDATE_CELL","UPDATE_CELL_POSITION","CLEAR_CELL","CLEAR_CELLS","DELETE_CONTENT","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","RESIZE_COLUMNS_ROWS","HIDE_COLUMNS_ROWS","UNHIDE_COLUMNS_ROWS","SET_GRID_LINES_VISIBILITY","UNFREEZE_COLUMNS","UNFREEZE_ROWS","FREEZE_COLUMNS","FREEZE_ROWS","UNFREEZE_COLUMNS_ROWS","ADD_MERGE","REMOVE_MERGE","CREATE_SHEET","DELETE_SHEET","DUPLICATE_SHEET","MOVE_SHEET","RENAME_SHEET","COLOR_SHEET","HIDE_SHEET","SHOW_SHEET","MOVE_RANGES","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","CHANGE_CONDITIONAL_FORMAT_PRIORITY","CREATE_FIGURE","DELETE_FIGURE","UPDATE_FIGURE","SET_FORMATTING","CLEAR_FORMATTING","SET_BORDER","SET_ZONE_BORDERS","SET_BORDERS_ON_TARGET","CREATE_CHART","UPDATE_CHART","CREATE_TABLE","REMOVE_TABLE","UPDATE_TABLE","CREATE_TABLE_STYLE","REMOVE_TABLE_STYLE","CREATE_IMAGE","GROUP_HEADERS","UNGROUP_HEADERS","UNFOLD_HEADER_GROUP","FOLD_HEADER_GROUP","FOLD_ALL_HEADER_GROUPS","UNFOLD_ALL_HEADER_GROUPS","UNFOLD_HEADER_GROUPS_IN_ZONE","FOLD_HEADER_GROUPS_IN_ZONE","ADD_DATA_VALIDATION_RULE","REMOVE_DATA_VALIDATION_RULE","UPDATE_LOCALE","ADD_PIVOT","UPDATE_PIVOT","INSERT_PIVOT","RENAME_PIVOT","REMOVE_PIVOT","DUPLICATE_PIVOT"]);function di(e){return hi.has(e.type)}class ui{reasons;constructor(e=[]){Array.isArray(e)||(e=[e]),e=[...new Set(e)],this.reasons=e.filter((e=>"Success"!==e))}static get Success(){return gi}get isSuccessful(){return 0===this.reasons.length}isCancelledBecause(e){return this.reasons.includes(e)}}const gi=new ui;var pi;e.CommandResult=void 0,(pi=e.CommandResult||(e.CommandResult={})).Success="Success",pi.CancelledForUnknownReason="CancelledForUnknownReason",pi.WillRemoveExistingMerge="WillRemoveExistingMerge",pi.MergeIsDestructive="MergeIsDestructive",pi.CellIsMerged="CellIsMerged",pi.InvalidTarget="InvalidTarget",pi.EmptyUndoStack="EmptyUndoStack",pi.EmptyRedoStack="EmptyRedoStack",pi.NotEnoughElements="NotEnoughElements",pi.NotEnoughSheets="NotEnoughSheets",pi.MissingSheetName="MissingSheetName",pi.UnchangedSheetName="UnchangedSheetName",pi.DuplicatedSheetName="DuplicatedSheetName",pi.DuplicatedSheetId="DuplicatedSheetId",pi.ForbiddenCharactersInSheetName="ForbiddenCharactersInSheetName",pi.WrongSheetMove="WrongSheetMove",pi.WrongSheetPosition="WrongSheetPosition",pi.InvalidAnchorZone="InvalidAnchorZone",pi.SelectionOutOfBound="SelectionOutOfBound",pi.TargetOutOfSheet="TargetOutOfSheet",pi.WrongCutSelection="WrongCutSelection",pi.WrongPasteSelection="WrongPasteSelection",pi.WrongPasteOption="WrongPasteOption",pi.WrongFigurePasteOption="WrongFigurePasteOption",pi.EmptyClipboard="EmptyClipboard",pi.EmptyRange="EmptyRange",pi.InvalidRange="InvalidRange",pi.InvalidZones="InvalidZones",pi.InvalidSheetId="InvalidSheetId",pi.InvalidCellId="InvalidCellId",pi.InvalidFigureId="InvalidFigureId",pi.InputAlreadyFocused="InputAlreadyFocused",pi.MaximumRangesReached="MaximumRangesReached",pi.MinimumRangesReached="MinimumRangesReached",pi.InvalidChartDefinition="InvalidChartDefinition",pi.InvalidDataSet="InvalidDataSet",pi.InvalidLabelRange="InvalidLabelRange",pi.InvalidScorecardKeyValue="InvalidScorecardKeyValue",pi.InvalidScorecardBaseline="InvalidScorecardBaseline",pi.InvalidGaugeDataRange="InvalidGaugeDataRange",pi.EmptyGaugeRangeMin="EmptyGaugeRangeMin",pi.GaugeRangeMinNaN="GaugeRangeMinNaN",pi.EmptyGaugeRangeMax="EmptyGaugeRangeMax",pi.GaugeRangeMaxNaN="GaugeRangeMaxNaN",pi.GaugeLowerInflectionPointNaN="GaugeLowerInflectionPointNaN",pi.GaugeUpperInflectionPointNaN="GaugeUpperInflectionPointNaN",pi.InvalidAutofillSelection="InvalidAutofillSelection",pi.MinBiggerThanMax="MinBiggerThanMax",pi.LowerBiggerThanUpper="LowerBiggerThanUpper",pi.MidBiggerThanMax="MidBiggerThanMax",pi.MinBiggerThanMid="MinBiggerThanMid",pi.FirstArgMissing="FirstArgMissing",pi.SecondArgMissing="SecondArgMissing",pi.MinNaN="MinNaN",pi.MidNaN="MidNaN",pi.MaxNaN="MaxNaN",pi.ValueUpperInflectionNaN="ValueUpperInflectionNaN",pi.ValueLowerInflectionNaN="ValueLowerInflectionNaN",pi.MinInvalidFormula="MinInvalidFormula",pi.MidInvalidFormula="MidInvalidFormula",pi.MaxInvalidFormula="MaxInvalidFormula",pi.ValueUpperInvalidFormula="ValueUpperInvalidFormula",pi.ValueLowerInvalidFormula="ValueLowerInvalidFormula",pi.InvalidSortAnchor="InvalidSortAnchor",pi.InvalidSortZone="InvalidSortZone",pi.SortZoneWithArrayFormulas="SortZoneWithArrayFormulas",pi.WaitingSessionConfirmation="WaitingSessionConfirmation",pi.MergeOverlap="MergeOverlap",pi.TooManyHiddenElements="TooManyHiddenElements",pi.Readonly="Readonly",pi.InvalidViewportSize="InvalidViewportSize",pi.InvalidScrollingDirection="InvalidScrollingDirection",pi.ViewportScrollLimitsReached="ViewportScrollLimitsReached",pi.FigureDoesNotExist="FigureDoesNotExist",pi.InvalidConditionalFormatId="InvalidConditionalFormatId",pi.InvalidCellPopover="InvalidCellPopover",pi.EmptyTarget="EmptyTarget",pi.InvalidFreezeQuantity="InvalidFreezeQuantity",pi.FrozenPaneOverlap="FrozenPaneOverlap",pi.ValuesNotChanged="ValuesNotChanged",pi.InvalidFilterZone="InvalidFilterZone",pi.TableNotFound="TableNotFound",pi.TableOverlap="TableOverlap",pi.InvalidTableConfig="InvalidTableConfig",pi.InvalidTableStyle="InvalidTableStyle",pi.FilterNotFound="FilterNotFound",pi.MergeInTable="MergeInTable",pi.NonContinuousTargets="NonContinuousTargets",pi.DuplicatedFigureId="DuplicatedFigureId",pi.InvalidSelectionStep="InvalidSelectionStep",pi.DuplicatedChartId="DuplicatedChartId",pi.ChartDoesNotExist="ChartDoesNotExist",pi.InvalidHeaderIndex="InvalidHeaderIndex",pi.InvalidQuantity="InvalidQuantity",pi.MoreThanOneColumnSelected="MoreThanOneColumnSelected",pi.EmptySplitSeparator="EmptySplitSeparator",pi.SplitWillOverwriteContent="SplitWillOverwriteContent",pi.NoSplitSeparatorInSelection="NoSplitSeparatorInSelection",pi.NoActiveSheet="NoActiveSheet",pi.InvalidLocale="InvalidLocale",pi.MoreThanOneRangeSelected="MoreThanOneRangeSelected",pi.NoColumnsProvided="NoColumnsProvided",pi.ColumnsNotIncludedInZone="ColumnsNotIncludedInZone",pi.DuplicatesColumnsSelected="DuplicatesColumnsSelected",pi.InvalidHeaderGroupStartEnd="InvalidHeaderGroupStartEnd",pi.HeaderGroupAlreadyExists="HeaderGroupAlreadyExists",pi.UnknownHeaderGroup="UnknownHeaderGroup",pi.UnknownDataValidationRule="UnknownDataValidationRule",pi.UnknownDataValidationCriterionType="UnknownDataValidationCriterionType",pi.InvalidDataValidationCriterionValue="InvalidDataValidationCriterionValue",pi.InvalidNumberOfCriterionValues="InvalidNumberOfCriterionValues",pi.InvalidCopyPasteSelection="InvalidCopyPasteSelection",pi.NoChanges="NoChanges",pi.InvalidInputId="InvalidInputId",pi.SheetIsHidden="SheetIsHidden",pi.InvalidTableResize="InvalidTableResize",pi.PivotIdNotFound="PivotIdNotFound",pi.PivotInError="PivotInError",pi.EmptyName="EmptyName",pi.ValueCellIsInvalidFormula="ValueCellIsInvalidFormula",pi.InvalidDefinition="InvalidDefinition",pi.InvalidColor="InvalidColor",pi.InvalidPivotDataSet="InvalidPivotDataSet";const mi=[{name:"English (US)",code:"en_US",thousandsSeparator:",",decimalSeparator:".",weekStart:7,dateFormat:"m/d/yyyy",timeFormat:"hh:mm:ss a",formulaArgSeparator:","},{name:"French",code:"fr_FR",thousandsSeparator:" ",decimalSeparator:",",weekStart:1,dateFormat:"dd/mm/yyyy",timeFormat:"hh:mm:ss",formulaArgSeparator:";"}],fi=mi[0],vi=["thin","medium","thick","dashed","dotted"];function bi(e){return Array.isArray(e)&&Array.isArray(e[0])}var Si;!function(e){e.UP="up",e.DOWN="down",e.LEFT="left",e.RIGHT="right"}(Si||(Si={}));const yi={Background:0,Highlights:1,Clipboard:2,Chart:4,Autofill:5,Selection:6,Headers:100},Ci=Et((()=>Object.keys(yi).sort(((e,t)=>yi[e]-yi[t]))));const wi={NotAvailable:"#N/A",InvalidReference:"#REF",BadExpression:"#BAD_EXPR",CircularDependency:"#CYCLE",UnknownFunction:"#NAME?",DivisionByZero:"#DIV/0!",SpilledBlocked:"#SPILL!",GenericError:"#ERROR",NullError:"#NULL!"},xi=new Set(Object.values(wi));class Ii{message;value;constructor(e=Uo("Error"),t=wi.GenericError){this.message=e,this.value=t,this.message=e.toString()}}class Ei extends Ii{constructor(e=Uo("Invalid expression")){super(e,wi.BadExpression)}}class Ri extends Ii{constructor(e=Uo("Circular reference")){super(e,wi.CircularDependency)}}class Ti extends Ii{constructor(e=Uo("Invalid reference")){super(e,wi.InvalidReference)}}class Ai extends Ii{constructor(e=Uo("Data not available")){super(e,wi.NotAvailable)}}class _i extends Ii{constructor(e=Uo("Unknown function")){super(e,wi.UnknownFunction)}}class Di extends Ii{constructor(e=Uo("Spill range is not empty")){super(e,wi.SpilledBlocked)}}const Oi=["number","string","boolean","undefined"];function Fi(e,t,o){if(!e())throw new Ii(t,o)}function Mi(e){if(void 0!==e)return bi(e)?e[0][0]?.format:e.format}function Pi(e){return"string"==typeof e&&xi.has(e)}const Ni=e=>Uo("The function [[FUNCTION_NAME]] expects a number value, but '%s' is a string, and cannot be coerced to a number.",e);function ki(e,t){const o=Yi(e);switch(typeof o){case"number":return o;case"boolean":return o?1:0;case"string":if(Js(o,t)||""===o)return ei(o,t);const e=Vs(o,t);if(e)return e.value;throw new Ii(Ni(o));default:return 0}}function Vi(e,t){try{return ki(e,t)}catch(e){return}}function Li(e,t){return vn(e).map((e=>e.map((e=>{if("number"!=typeof e.value)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects number values for %s, but got a %s.",t,typeof e.value));return e.value}))))}function Hi(e,t){const o=Yi(e);if(""===o)throw new Ii(Ni(o));return ki(o,t)}function Ui(e,t){return Math.trunc(ki(e,t))}function Bi(e,t){return Math.trunc(Hi(e,t))}function zi(e){Fi((()=>e>=1),Uo("The function [[FUNCTION_NAME]] expects a number value to be greater than or equal to 1, but receives %s.",e.toString()))}function $i(e){Fi((()=>0!==e),Uo("Evaluation of function [[FUNCTION_NAME]] caused a divide by zero error."),wi.DivisionByZero)}function Gi(e){const t=Yi(e);switch(typeof t){case"string":return t;case"number":return t.toString();case"boolean":return t?"TRUE":"FALSE";default:return""}}const Wi=Et((function(e){return e.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"")})),qi=e=>Uo("The function [[FUNCTION_NAME]] expects a boolean value, but '%s' is a text, and cannot be coerced to a boolean.",e);function Zi(e){const t=Yi(e);switch(typeof t){case"boolean":return t;case"string":if(t){let e=t.toUpperCase();if("TRUE"===e)return!0;if("FALSE"===e)return!1;throw new Ii(qi(t))}return!1;case"number":return!!t;default:return!1}}function ji(e,t){return Ls(ki(Yi(e),t))}function Yi(e){if("object"==typeof e&&null!==e&&"value"in e){if(Pi(e.value))throw e;return e.value}if(Pi(e))throw new Ii("",e);return e}function Xi(e,t,o){for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;for(let i=0;i<o;i++)for(let o=0;o<e;o++)t(s[o][i])}else o(s)}function Ki(e,t){Xi(e,(e=>{if(Pi(e.value))throw e;t(e)}),(e=>{if(Pi(e?.value))throw e;t(e)}))}function Ji(e,t,o){Xi(e,(e=>{if("number"==typeof e?.value&&t(e),Pi(e?.value))throw e}),(e=>{t({value:Hi(e,o),format:e?.format})}))}function Qi(e,t,o,s,i="rowFirst"){let n=s;for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;if("rowFirst"===i)for(let i=0;i<o;i++)for(let o=0;o<e;o++)n=t(n,s[o][i]);else for(let i=0;i<e;i++)for(let e=0;e<o;e++)n=t(n,s[i][e])}else n=o(n,s);return n}function en(e,t,o,s="rowFirst"){return Qi(e,t,t,o,s)}function tn(e,t,o,s){return Qi(e,((e,o)=>{const s=o?.value;if("number"==typeof s)return t(e,s);if(Pi(s))throw o;return e}),((e,o)=>t(e,Hi(o,s))),o)}function on(e,t,o,s){return Qi(e,((e,o)=>{const i=o?.value;if(null!=i){if("number"==typeof i)return t(e,i);if("boolean"==typeof i)return t(e,ki(i,s));if(Pi(i))throw o;return t(e,0)}return e}),((e,o)=>t(e,ki(o,s))),o)}function sn(e,t,o){const s=Array(e);for(let i=0;i<e;i++){s[i]=Array(t);for(let e=0;e<t;e++)s[i][e]=o(i,e)}return s}function nn(e,t){return 0===e.length?[]:sn(e.length,e[0].length,((o,s)=>t(e[o][s])))}function rn(e){return e.length?sn(e[0].length,e.length,((t,o)=>e[o][t])):[]}function an(e,t,o=void 0){let s,i=1,n=1,r=1/0,a=1/0;for(let e=0;e<t.length;e++){const l=t[e];if(bi(l)&&(void 0===o||o[e])){const o=l.length,c=l[0].length;1!==o||1!==c?(s??=new Array(t.length),1!==o&&1!==c?(s[e]="matrix",i=Math.max(i,o),n=Math.max(n,c),r=Math.min(r,o),a=Math.min(a,c)):1!==o?(s[e]="horizontal",i=Math.max(i,o),r=Math.min(r,o)):1!==c&&(s[e]="vertical",n=Math.max(n,c),a=Math.min(a,c))):t[e]=l[0][0]}}if(1===i&&1===n)return e(...t);return sn(i,n,((o,i)=>{if(o>r-1||i>a-1)return new Ai(Uo("Array arguments to [[FUNCTION_NAME]] are of different size."));const n=e(...(l=o,c=i,t.map(((e,t)=>{switch(s?.[t]){case"matrix":return e[l][c];case"horizontal":return e[l][0];case"vertical":return e[0][c];case void 0:return e}}))));var l,c;return bi(n)?n[0][0]:n}))}function ln(e,t){return function(e,t,o){for(let s of e)if(bi(s)){const e=s.length,o=s[0].length;for(let i=0;i<o;i++)for(let o=0;o<e;o++)if(!t(s[o][i]??void 0))return}else if(!o(s))return}(e,(e=>{const o=e?.value;if("boolean"==typeof o)return t(o);if("number"==typeof o)return t(!!o);if(Pi(o))throw e;return!0}),(e=>void 0===e||null===e.value||t(function(e){const t=Yi(e);if(""===t)throw new Ii(qi(t));return Zi(t)}(e))))}function cn(e,t){let o,s,i=e.substring(0,2);return"<="===i||">="===i||"<>"===i?(o=i,s=e.substring(2)):(i=e.substring(0,1),"<"===i||">"===i||"="===i?(o=i,s=e.substring(1)):(o="=",s=e)),Js(s,t)||Ns(s,t)?s=ki(s,t):"TRUE"!==s&&"FALSE"!==s||(s=Zi(s)),{operator:o,operand:s}}const hn=Et((function(e){if("*"===e)return/.+/;let t="",o="";for(let s of e)"?"===s&&"~"!==o?t+=".":"*"===s&&"~"!==o?t+=".*":("*"!==s&&"?"!==s||(t=t.slice(0,-1)),["^",".","[","]","$","(",")","*","+","?","|","{","}","\\"].includes(s)&&(t+="\\"),t+=s),o=s;return new RegExp("^"+t+"$","i")}));function dn(e="",t,o){const{operator:s,operand:i}=t;if(void 0===i||null===e||null===i)return!1;if("number"==typeof i&&"="===s)return"string"==typeof e&&(Js(e,o)||Ns(e,o))?ki(e,o)===i:e===i;if("<>"===s||"="===s){let t;return t=typeof e==typeof i&&("string"==typeof e&&"string"==typeof i?hn(i).test(e):e===i),"="===s?t:!t}if(typeof e==typeof i)switch(s){case"<":return e<i;case">":return e>i;case"<=":return e<=i;case">=":return e>=i}return!1}function un(e,t,o,s=!1){const i=e.length;if(i%2==1)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects criteria_range and criterion to be in pairs."));const n=vn(e[0]),r=n.length,a=n[0].length;let l=[];for(let t=0;t<i-1;t+=2){const i=vn(e[t]);if(i.length!==r||i[0].length!==a)throw new Ii(Uo("Function [[FUNCTION_NAME]] expects criteria_range to have the same dimension"));const n=cn(Gi(e[t+1]),o);s&&"string"==typeof n.operand&&(n.operand+="*"),l.push(n)}for(let s=0;s<r;s++)for(let n=0;n<a;n++){let r=!0;for(let t=0;t<i-1;t+=2){if(r=dn(vn(e[t])[s][n].value??void 0,l[t/2],o),!r)break}r&&t(s,n)}}function gn(e,t,o,s,i,n){if(void 0===t||null===t.value)return-1;if(Pi(t.value))throw t;const r=mn(t.value),a=typeof r;let l,c,h,d,u,g,p=0,m=i-1;const f="desc"===s?t=>mn(n(e,i-t-1)):t=>mn(n(e,t));for(;m-p>=0;){for(h=Math.floor((p+m)/2),d=h,u=f(d),g=typeof u;p<d&&a!==g;)d--,u=f(d),g=typeof u;g===a&&null!=u?("strict"===o&&u===r?(l=u,c=d):"nextSmaller"===o&&u<=r?(null==l||l<u||l===u&&c<d)&&(l=u,c=d):"nextGreater"===o&&u>=r&&(void 0===l||l>u||l===u&&c<d)&&(l=u,c=d),u>r||"strict"===o&&u===r?m=d-1:p=h+1):p=h+1}return void 0===c?-1:"desc"===s?i-c-1:c}function pn(e,t,o,s,i,n,r=!1){if(void 0===t||null===t.value)return-1;if(Pi(t.value))throw t;const a=mn(t.value),l=r?(e,t)=>mn(i(e,s-t-1)):(e,t)=>mn(i(e,t)),c="wildcard"!==o||"string"!=typeof a||!(a.includes("*")||a.includes("?"));if(n&&c){const t=r?"reverseSearch":"forwardSearch";let i=n[t].get(e);if(void 0===i){i=new Map;for(let t=0;t<s;t++){const o=l(e,t)??null;i.has(o)||i.set(o,t)}n[t].set(e,i)}if(i.has(a)){const e=i.get(a);return r?s-e-1:e}if("strict"===o)return-1}const h=function(e,t,o,s,i){let n=o=>i(e,o)===t;if("wildcard"===o&&"string"==typeof t&&(t.includes("*")||t.includes("?"))){const o=hn(t);n=t=>{const s=i(e,t);return"string"==typeof s&&o.test(s)}}let r,a=-1;"nextSmaller"===o&&(n=o=>{const s=i(e,o);return(!r&&fn(t,s)>=0||fn(t,s)>=0&&fn(s,r)>0)&&(r=s,a=o),s===t});"nextGreater"===o&&(n=o=>{const s=i(e,o);return(!r&&fn(t,s)<=0||fn(t,s)<=0&&fn(s,r)<0)&&(r=s,a=o),s===t});for(let e=0;e<s;e++)if(n(e))return e;return a}(e,a,o,s,l);return r&&-1!==h?s-h-1:h}function mn(e){return"string"==typeof e?Wi(e):e}function fn(e,t){let o=Oi.indexOf(typeof e)-Oi.indexOf(typeof t);return 0===o&&("string"==typeof e&&"string"==typeof t?o=e.localeCompare(t):"number"==typeof e&&"number"==typeof t?o=e-t:"boolean"==typeof e&&"boolean"==typeof t&&(o=Number(e)-Number(t))),o}function vn(e){return void 0===e?[[]]:bi(e)?e:[[e]]}function bn(e,t){return en(e,((e,o)=>(e.push(t(o)),e)),[],"rowFirst")}function Sn(e){if(void 0===e)return!1;const{value:t}=e;return null!==t&&""!==t}function yn(e){return/^https?:\/\//i.test(e)?e:`https://${e}`}const Cn=new n;function wn(e,t){return{url:e=yn(e),label:t||e,isExternal:!0,isUrlEditable:!0}}Cn.add("sheet_URL",{match:e=>nt(e),createLink:(e,t)=>({label:t,url:e,isExternal:!1,isUrlEditable:!1}),urlRepresentation(e,t){const o=at(e);return t.tryGetSheetName(o)||Uo("Invalid sheet")},open(e,t){const o=at(e);t.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t.model.getters.getActiveSheetId(),sheetIdTo:o}).isCancelledBecause("SheetIsHidden")&&t.notifyUser({type:"warning",sticky:!1,text:Uo("Cannot open the link because the linked sheet is hidden.")})},sequence:0});const xn={createLink:wn,match:e=>tt(e),open:e=>window.open(e,"_blank"),urlRepresentation:e=>e,sequence:0};function In(e){return Cn.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((t=>t.match(e)))||xn}function En(e,t){return In(e.url).urlRepresentation(e.url,t)}function Rn(e,t){In(e.url).open(e.url,t)}function Tn(e){if("string"==typeof e){if(et(e)){const{label:t,url:o}=st(e);return In(o).createLink(o,t)}return tt(e)?wn(e):void 0}}function An(e){let t;if('"'===e.current?(e.shift(),t='"'):e.currentStartsWith("[$")&&(e.advanceBy(2),t="]"),!t)return null;let o="";for(;e.current&&e.current!==t;)o+=e.shift();if(e.current!==t)throw new Error("Unterminated string in format");return e.shift(),{type:"STRING",value:o}}const _n=new Set("$+-/():!^&~{}<>= ");function Dn(e){if("\\"===e.current){e.shift();const t=e.shift();if(!t)throw new Error("Unexpected end of format string");return{type:"CHAR",value:t}}return _n.has(e.current)?{type:"CHAR",value:e.shift()}:null}function On(e){return","===e.current?(e.shift(),{type:"THOUSANDS_SEPARATOR",value:","}):null}function Fn(e){return"@"===e.current?(e.shift(),{type:"TEXT_PLACEHOLDER",value:"@"}):null}function Mn(e){return"."===e.current?(e.shift(),{type:"DECIMAL_POINT",value:"."}):null}function Pn(e){return"%"===e.current?(e.shift(),{type:"PERCENT",value:"%"}):null}function Nn(e){if("0"===e.current||"#"===e.current){const t=e.current;return e.shift(),{type:"DIGIT",value:t}}return null}const kn=new Set("dmqyhsa");function Vn(e){if(!kn.has(e.current))return null;const t=e.current;let o="";for(;e.current===t;)o+=e.shift();return{type:"DATE_PART",value:o}}function Ln(e){if("*"!==e.current)return null;e.shift();const t=e.shift();if(!t)throw new Error("Unexpected end of format string");return{type:"REPEATED_CHAR",value:t}}const Hn=20,Un={};function Bn(e){let t=Un[e];return void 0===t&&(t=function(e){const t=function(e){const t=new Mt(e),o=[];let s=[];for(o.push(s);!t.isOver();){if(";"===t.current){s=[],o.push(s),t.shift();continue}let e=Nn(t)||An(t)||Dn(t)||On(t)||Mn(t)||Pn(t)||Vn(t)||Fn(t)||Ln(t);if(!e)throw new Error("Unknown token at "+t.remaining());s.push(e)}return o}(e);for(const e of t){const t=e.filter((e=>"REPEATED_CHAR"===e.type));for(const e of t.slice(1))e.type="CHAR"}const o=$n(t[0])||zn(t[0])||Gn(t[0]);if(!o)throw new Error("Invalid first format part of: "+e);if(t.length>1&&"text"===o.type)throw new Error("The first format in a multi-part format must be a number format: "+e);const s=$n(t[1])||zn(t[1]);if(t[1]?.length&&!s)throw new Error("Invalid second format part of: "+e);const i=$n(t[2])||zn(t[2]);if(t[2]?.length&&!i)throw new Error("Invalid third format part of: "+e);const n=Gn(t[3]);if(t[3]?.length&&!n)throw new Error("Invalid fourth format part of: "+e);return{positive:o,negative:s,zero:i,text:n}}(e),Un[e]=t),t}function zn(e){if(!e||!function(e){return e.every((e=>"DIGIT"===e.type||"DECIMAL_POINT"===e.type||"THOUSANDS_SEPARATOR"===e.type||"PERCENT"===e.type||"STRING"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e))return;const t=[];let o,s=t,i=0,n=0,r=e.findLastIndex((e=>"DIGIT"===e.type)),a=!1,l=0;for(let c=0;c<e.length;c++){const h=e[c];switch(h.type){case"DIGIT":s===t?s.push(h):l<Hn&&(s.push(h),l++);break;case"DECIMAL_POINT":if(s!==t)throw new Error("Multiple decimal points in a number format");o=[],s=o;break;case"REPEATED_CHAR":case"CHAR":case"STRING":s.push(h);break;case"PERCENT":i++,s.push(h);break;case"THOUSANDS_SEPARATOR":c-1===r?(n+=1,r++,s.push(h)):"DIGIT"===e[c+1]?.type&&"DIGIT"===e[c-1]?.type?(s===t&&(a=!0),s.push(h)):s.push({type:"CHAR",value:","})}}return{type:"number",integerPart:t,decimalPart:o,percentSymbols:i,thousandsSeparator:a,magnitude:n}}function $n(e){const t=e&&function(e){return e.every((e=>"DATE_PART"===e.type||"DECIMAL_POINT"===e.type||"THOUSANDS_SEPARATOR"===e.type||"STRING"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e)?{type:"date",tokens:e}:void 0;if(!t)return;if(t.tokens.length&&t.tokens.every((e=>"DATE_PART"===e.type&&"a"===e.value)))throw new Error("Invalid date format");const o=function(e){const t=e.filter((e=>"DATE_PART"===e.type));for(let e=0;e<t.length;e++)!t[e].value.startsWith("m")||t[e].value.length>2||(t[e-1]?.value.startsWith("h")||t[e+1]?.value.startsWith("s"))&&(t[e].value=t[e].value.replaceAll("m","M"));return e}(t.tokens.map((e=>"THOUSANDS_SEPARATOR"===e.type||"DECIMAL_POINT"===e.type?{type:"CHAR",value:e.value}:e)));return{type:"date",tokens:o}}function Gn(e){return e&&function(e){return e.every((e=>"STRING"===e.type||"TEXT_PLACEHOLDER"===e.type||"CHAR"===e.type||"REPEATED_CHAR"===e.type))}(e)?{type:"text",tokens:e}:void 0}function Wn(e){return[qn(e.positive),qn(e.negative),qn(e.zero),qn(e.text)].filter(lt).join(";")}function qn(e){if(!e)return;let t="";const o="number"!==e.type?e.tokens:function(e){let t=[...e.integerPart];e.decimalPart&&(t.push({type:"DECIMAL_POINT",value:"."}),t.push(...e.decimalPart));return t}(e);for(let e of o)switch(e.type){case"STRING":t+=`[$${e.value}]`;break;case"CHAR":t+=(s=e.value,_n.has(s)?e.value:`\\${e.value}`);break;case"REPEATED_CHAR":t+="*"+e.value;break;default:t+=e.value}var s;return t}const Zn=11,jn="REPEATED_CHAR_PLACEHOLDER_",Yn={0:Uo("January"),1:Uo("February"),2:Uo("March"),3:Uo("April"),4:Uo("May"),5:Uo("June"),6:Uo("July"),7:Uo("August"),8:Uo("September"),9:Uo("October"),10:Uo("November"),11:Uo("December")},Xn={0:Uo("Sunday"),1:Uo("Monday"),2:Uo("Tuesday"),3:Uo("Wednesday"),4:Uo("Thursday"),5:Uo("Friday"),6:Uo("Saturday")};function Kn(e,{format:t,locale:o,formatWidth:s}){switch("boolean"==typeof e&&(e=e?"TRUE":"FALSE"),typeof e){case"string":{if(e.includes('\\"')&&(e=e.replaceAll(/\\"/g,'"')),!t)return e;const o=Bn(t);let i=o.text||o.positive;return i&&"text"===i.type?Jn(e,i,s):e}case"number":t||(t=lr(e));const i=Bn(t);if("text"===i.positive.type)return Jn(e.toString(),i.positive,s);let n=i.positive;if(e<0&&i.negative?(n=i.negative,e=-e):0===e&&i.zero&&(n=i.zero),"date"===n.type)return Qn(function(e,t){const o=Ls(e),s=t.tokens.some((e=>"DATE_PART"===e.type&&"a"===e.value));let i="";for(const e of t.tokens)switch(e.type){case"DATE_PART":i+=rr(o,e.value,s);break;case"REPEATED_CHAR":i+=jn+e.value;break;default:i+=e.value}return i}(e,n),s);const r=e<0,a=Qn(function(e,t,o){if(e===1/0)return"∞"+(t.percentSymbols?"%":"");const s=2*t.percentSymbols-3*t.magnitude;e*=10**s;let i=0;void 0!==t.decimalPart&&(i=t.decimalPart.filter((e=>"DIGIT"===e.type)).length);const{integerDigits:n,decimalDigits:r}=tr(Math.abs(e),i);let a=function(e,t,o){let s=t.integerPart;s.some((e=>"DIGIT"===e.type))||(s=[...s,{type:"DIGIT",value:"#"}]);"0"===e&&(e="");let i="";const n=s.findIndex((e=>"DIGIT"===e.type));let r=e.length-1;function a(t,s){if("0"===s&&(t=t||"0"),!t)return;const n=e.length-1-r;i=o&&n>0&&n%3==0?t+o+i:t+i}for(let t=s.length-1;t>=0;t--){const o=s[t];switch(o.type){case"DIGIT":if(a(e[r],o.value),r--,n===t)for(;r>=0;)a(e[r],"0"),r--;break;case"THOUSANDS_SEPARATOR":break;case"REPEATED_CHAR":i=jn+o.value+i;break;default:i=o.value+i}}return i}(n,t,t.thousandsSeparator?o.thousandsSeparator:void 0);void 0!==t.decimalPart&&(a+=o.decimalSeparator+function(e,t){if(!t.decimalPart)return"";let o="",s=0;for(const i of t.decimalPart)switch(i.type){case"DIGIT":o+="#"===i.value?e[s]||"":e[s]||"0",s++;break;case"THOUSANDS_SEPARATOR":break;case"REPEATED_CHAR":o+=jn+i.value;break;default:o+=i.value}return o}(r||"",t));return a}(Math.abs(e),n,o),s);return r?"-"+a:a;case"object":return""}}function Jn(e,t,o){let s="";for(const o of t.tokens)switch(o.type){case"TEXT_PLACEHOLDER":s+=e;break;case"CHAR":case"STRING":s+=o.value;break;case"REPEATED_CHAR":s+=jn+o.value}return Qn(s,o)}function Qn(e,t){const o=e.indexOf(jn);if(-1===o)return e;const s=e.slice(0,o),i=e.slice(o+jn.length+1),n=e[o+jn.length];const{timesToRepeat:r,padding:a}=function(){if(!t)return{timesToRepeat:0,padding:""};const e=t.measureText(s+i),o=t.measureText(n),r=t.availableWidth-e;if(r<=0)return{timesToRepeat:0,padding:""};const a=Math.floor(r/o),l=r-a*o,c=t.measureText(" ");return{timesToRepeat:a,padding:" ".repeat(Math.floor(l/c))}}();return s+n.repeat(r)+a+i}const er=[];function tr(e,t=Hn){const o=e.toString();if(o.includes("e"))return function(e,t=Hn){let o=er[t];o||(o=new Intl.NumberFormat("en-US",{maximumFractionDigits:t,useGrouping:!1}),er[t]=o);const[s,i]=o.format(e).split(".");return{integerDigits:s,decimalDigits:i}}(e,t);if(Number.isInteger(e))return{integerDigits:o,decimalDigits:void 0};const s=o.indexOf(".");let i=o.substring(0,s),n=o.substring(s+1);if(0===t)return Number(n[0])>=5&&(i=(Number(i)+1).toString()),{integerDigits:i,decimalDigits:void 0};if(n.length>t){const{integerDigits:e,decimalDigits:o}=function(e,t){let o="0",s=e,i=e.slice(0,t);const n=t;if(Number(e[n])<5)return{integerDigits:o,decimalDigits:i};const r=i.match(sr)?.[0]||"",a=(Number(i)+1).toString(),l=i.slice(r.length),c=a.length>l.length;c&&!r?(o="1",s=void 0):s=c?r.slice(0,-1)+a:r+a;return{integerDigits:o,decimalDigits:s}}(n,t);n=o,"0"!==e&&(i=(Number(i)+Number(e)).toString())}return{integerDigits:i,decimalDigits:or(n||"")}}function or(e){let t=e.length-1;for(;t>=0&&"0"===e[t];)t--;return e.slice(0,t+1)||void 0}const sr=/^0+/;function ir(e,t){const{integerDigits:o,decimalDigits:s}=tr(e,20);return s?o+t+s:o}const nr=Et((function(e){if(!e)return!1;try{return"date"===Bn(e).positive.type}catch(e){return!1}}));function rr(e,t,o){switch(t){case"d":return e.getDate();case"dd":return e.getDate().toString().padStart(2,"0");case"ddd":return Xn[e.getDay()].slice(0,3);case"dddd":return Xn[e.getDay()].toString();case"m":return e.getMonth()+1;case"mm":return String(e.getMonth()+1).padStart(2,"0");case"mmm":return Yn[e.getMonth()].slice(0,3);case"mmmm":return Yn[e.getMonth()].toString();case"mmmmm":return Yn[e.getMonth()].slice(0,1);case"qq":return Uo("Q%(quarter)s",{quarter:e.getQuarter()}).toString();case"qqqq":return Uo("Quarter %(quarter)s",{quarter:e.getQuarter()}).toString();case"yy":const s=String(e.getFullYear()).replace("-","").padStart(2,"0");return s.slice(s.length-2);case"yyyy":return e.getFullYear();case"hhhh":return Math.floor((e.getTime()-xs.getTime())/36e5).toString();case"hh":let i=e.getHours();return o&&(i=0===i?12:i>12?i-12:i),i.toString().padStart(2,"0");case"MM":return e.getMinutes().toString().padStart(2,"0");case"ss":return e.getSeconds().toString().padStart(2,"0");case"a":return e.getHours()>=12?"PM":"AM";default:throw new Error(`invalid date format token: ${t}`)}}const ar=Et((function(e){return new RegExp(`[0-9]+${Be(e.decimalSeparator)}[0-9]`)}));function lr(e){let{integerDigits:t,decimalDigits:o}=tr(e);if(!o)return"0";const s=t.replace("-","").length;if(s+2>Zn)return"0";const i=Zn-s-1;return({decimalDigits:o}=tr(e,Math.min(i,o.length))),o?"0."+"0".repeat(o.length):"0"}function cr(e,t){if(!Ns(e,t))return;return Vs(e,t).format}function hr(e){const t=e.includes(".")?"0.00":"0",o=e.match(/[\$€]/);if(o){const s=e.match(/[\d]/),i="[$"+o.values().next().value+"]";return s.index<o.index?"#,##"+t+i:i+"#,##"+t}if(e.includes("%"))return t+"%"}function dr(e){const t=e.decimalPlaces??2,o=e.position??"before",s=e.code??"",i=e.symbol??"",n="#,##0"+(t?"."+"0".repeat(t):"");let r=`${s} ${i}`.trim();return"after"===o&&s&&(r=" "+r),function(e,t,o){const s=`[$${e}]`;return"before"===t?s+o:o+s}(r,o,n)}function ur(e){const t=e.decimalPlaces??2,o=e.position??"before",s=e.code??"",i=e.symbol??"",n="#,##0"+(t?"."+"0".repeat(t):"");let r=`${s} ${i}`.trim();"after"===o&&s&&(r=" "+r);return[gr(r,o,` ${n} `),gr(r,o,`(${n})`),gr(r,o," - ")].join(";")}function gr(e,t,o){const s=`[$${e}]`;return"before"===t?s+"* "+o:o+"* "+s}function pr(e){const t=Bn(e);return Wn({positive:mr(t.positive),negative:t.negative?mr(t.negative):void 0,zero:t.zero?mr(t.zero):void 0,text:t.text})}function mr(e){if("number"!==e.type||!e.decimalPart)return e;const t=e.decimalPart.filter((e=>"DIGIT"!==e.type));return{...e,decimalPart:void 0,integerPart:[...e.integerPart,...t]}}function fr({value:e,format:t},o){return Kn(e,{format:vr({value:e,format:t},void 0,o),locale:o})}function vr(e,t,o){let s=0;try{s=Math.abs(ki(e?.value,o))}catch(e){return""}const i=e?.format;if(void 0!==t){const e=t?.value;switch(e){case"k":return br(i,1,"k");case"m":return br(i,2,"m");case"b":return br(i,3,"b");default:throw new Ii(Uo("The formatting unit should be 'k', 'm' or 'b'."))}}return s<1e5?br(i,0,""):s<1e8?br(i,1,"k"):s<1e11?br(i,2,"m"):br(i,3,"b")}function br(e,t,o,s){const i=Bn(e||"#,##0");return Wn({positive:Sr(i.positive,t,o),negative:i.negative?Sr(i.negative,t,o):void 0,zero:i.zero?Sr(i.zero,t,o):void 0,text:i.text})}function Sr(e,t,o){if("number"!==e.type)return e;const s={type:"STRING",value:o};let i=[...e.integerPart];const n=i.findLastIndex((e=>"DIGIT"===e.type));if(-1===n)throw new Error("Cannot create a large number format from a format with no digit.");for(;"THOUSANDS_SEPARATOR"===i[n+1]?.type;)i=Rt(i,[n+1]);const r=i[n+1];i="STRING"===r?.type&&["m","k","b"].includes(r.value)?function(e,t,o){const s=[...e];return s.splice(o,1,t),s}(i,s,n+1):Tt(i,[s],n+1),t>0&&(i=Tt(i,Array(t).fill({type:"THOUSANDS_SEPARATOR",value:","}),n+1));const a=e.percentSymbols-i.filter((e=>"PERCENT"===e.type)).length;return i.push(...new Array(a).fill({type:"PERCENT",value:"%"})),{...e,integerPart:i,decimalPart:void 0,magnitude:t}}function yr(e,t){const o=Bn(e);return Wn(Bn(Wn({positive:Cr(o.positive,t),negative:o.negative?Cr(o.negative,t):void 0,zero:o.zero?Cr(o.zero,t):void 0,text:o.text})))}function Cr(e,t){return"number"!==e.type?e:t>0?function(e,t){let o=e.integerPart,s=e.decimalPart;if(!s){const e=o.findLastIndex((e=>"DIGIT"===e.type));s=o.slice(e+1),o=o.slice(0,e+1)}const i=je(0,t).map((()=>({type:"DIGIT",value:"0"}))),n=s.findLastIndex((e=>"DIGIT"===e.type));s=-1===n?[...i,...s]:Tt(s,i,n+1);return{...e,decimalPart:s,integerPart:o}}(e,t):function(e,t){let o=e.decimalPart;if(!o)return e;const s=[];let i=0;for(let e=o.length-1;e>=0&&!(i>=Math.abs(t));e--)"DIGIT"===o[e].type&&(i++,s.push(e));if(o=Rt(o,s),o.some((e=>"DIGIT"===e.type)))return{...e,decimalPart:o};return{...e,decimalPart:void 0,integerPart:[...e.integerPart,...o]}}(e,Math.abs(t))}function wr(e){const t=Bn(e);for(const e of[t.positive,t.negative,t.zero])if(e&&"date"===e.type&&e.tokens.some((e=>"DATE_PART"===e.type&&e.value.includes("q"))))return!1;return!0}function xr(e){if(!e)return!1;try{return"text"===Bn(e).positive.type}catch{return!1}}function Ir(e,t){return Rr({value:xr(t.format)&&null!==e.parsedValue?e.content:e.parsedValue,format:t.format},t.locale)}function Er(e,t){if(e.startsWith("="))throw new Error(`Cannot parse "${e}" because it's not a literal value. It's a formula`);if(""===e)return null;if(Js(e,fi))return ei(e,fi);const o=Vs(e,t);return o?o.value:Ke(e)?"TRUE"===e.toUpperCase():e}function Rr(e,t=fi,o){const s=Tn(e.value);if(!s)return Tr(e,t,o);const i=Er(s.label,t);return{...Tr({value:i,format:e.format||("number"==typeof i?cr(s.label,t)||hr(s.label):void 0)},t,o),link:s}}function Tr(e,t,o){let{value:s,format:i,message:n}=e;i=o?.format||i;const r=Kn(s,{format:i,locale:t});return Pi(s)?function(e,t){return{value:e,formattedValue:e,message:t,type:oi.error,isAutoSummable:!1,defaultAlign:"center"}}(s,n):null===s?_r(i):xr(i)?Ar(Gi(s),i,r):"number"==typeof s?nr(i||"")?function(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.number,isAutoSummable:!1,defaultAlign:"right"}}(s,i,r):function(e,t,o){return{value:e||0,format:t,formattedValue:o,type:oi.number,isAutoSummable:!0,defaultAlign:"right"}}(s,i,r):"boolean"==typeof s?function(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.boolean,isAutoSummable:!1,defaultAlign:"center"}}(s,i,r):Ar(s,i,r)}function Ar(e,t,o){return{value:e,format:t,formattedValue:o,type:oi.text,isAutoSummable:!0,defaultAlign:"left"}}const _r=Et((function(e){return{value:null,format:e,formattedValue:"",type:oi.empty,isAutoSummable:!0,defaultAlign:"left"}}));function Dr(e){const t=ws.now();switch(e){case"today":return Us(t);case"yesterday":return Us(ws.fromTimestamp(t.setDate(t.getDate()-1)));case"tomorrow":return Us(ws.fromTimestamp(t.setDate(t.getDate()+1)));case"lastWeek":return Us(ws.fromTimestamp(t.setDate(t.getDate()-7)));case"lastMonth":return Us(ws.fromTimestamp(t.setMonth(t.getMonth()-1)));case"lastYear":return Us(ws.fromTimestamp(t.setFullYear(t.getFullYear()-1)))}}function Or(e,t){return"dateValue"in e&&"exactDate"!==e.dateValue?[Dr(e.dateValue)]:e.values.map((e=>Ps(e,t)))}function Fr(e,t){return e.values.map((e=>Vi(e,t)))}function Mr(e,t){return e.map((e=>{if(e.startsWith("="))return e;const o=Er(e,t);return"number"==typeof o?Kn(o,{format:t.dateFormat,locale:t}):""}))}function Pr(e){return 20+120*Math.exp(-.035*(e-1))}const Nr=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,"i"),kr=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,"i"),Vr=new RegExp(/^\$?([A-Z]{1,3})+$/,"i"),Lr=new RegExp(/^\$?([0-9]{1,7})+$/,"i"),Hr=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,"i"),Ur=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,"i"),Br=new RegExp(/^\s*('.+'!|[^']+!)?/.source+"("+[Nr.source,/(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*:\s*(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*/i.source,/\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*:\s*\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*/i.source].join("|")+")"+/$/.source,"i");function zr(e){return Ur.test(e)}function $r(e){return Vr.test(e)}function Gr(e){return Lr.test(e)}function Wr(e){return kr.test(e)}function qr(e){if(!e.includes("!"))return{xc:e};const t=e.split("!"),o=t.pop();return{sheetName:$e(t.join("!"))||void 0,xc:o}}function Zr(e,t){return void 0!==e?`${We(e)}!${t}`:t}class jr{getSheetSize;_zone;parts;invalidXc;prefixSheet=!1;sheetId;invalidSheetName;constructor(e,t){this.getSheetSize=t,this._zone=e.zone,this.prefixSheet=e.prefixSheet,this.invalidXc=e.invalidXc,this.sheetId=e.sheetId,this.invalidSheetName=e.invalidSheetName;let o=[...e.parts];1===e.parts.length&&gs(this.zone)>1?o.push({...e.parts[0]}):2===e.parts.length&&1===gs(this.zone)&&o.pop(),this.parts=o}static fromRange(e,t){return e instanceof jr?e:new jr(e,t.getSheetSize)}get unboundedZone(){return this._zone}get zone(){const{left:e,top:t,bottom:o,right:s}=this._zone;if(void 0!==s&&void 0!==o)return this._zone;if(void 0===o&&void 0!==s)return{right:s,top:t,left:e,bottom:this.getSheetSize(this.sheetId).numberOfRows-1};if(void 0===s&&void 0!==o)return{bottom:o,left:e,top:t,right:this.getSheetSize(this.sheetId).numberOfCols-1};throw new Error(Uo("Bad zone format"))}static getRangeParts(e,t){const o=e.split(":").map((e=>{const t=zr(e);return{colFixed:!t&&e.startsWith("$"),rowFixed:t?e.startsWith("$"):e.includes("$",1)}})),s=void 0===t.bottom,i=void 0===t.right;return s&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed),i&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed),o}get isFullCol(){return void 0===this._zone.bottom}get isFullRow(){return void 0===this._zone.right}get rangeData(){return{_zone:this._zone,_sheetId:this.sheetId}}orderZone(){if(Wo(this._zone))return this;const e={...this._zone};let t=this.parts;if(void 0!==e.right&&e.right<e.left){let o=e.right;e.right=e.left,e.left=o,t=[{colFixed:t[1]?.colFixed||!1,rowFixed:t[0]?.rowFixed||!1},{colFixed:t[0]?.colFixed||!1,rowFixed:t[1]?.rowFixed||!1}]}if(void 0!==e.bottom&&e.bottom<e.top){let o=e.bottom;e.bottom=e.top,e.top=o,t=[{colFixed:t[0]?.colFixed||!1,rowFixed:t[1]?.rowFixed||!1},{colFixed:t[1]?.colFixed||!1,rowFixed:t[0]?.rowFixed||!1}]}return this.clone({zone:e,parts:t})}clone(e){return new jr({zone:e?.zone?e.zone:{...this._zone},sheetId:e?.sheetId?e.sheetId:this.sheetId,invalidSheetName:e&&"invalidSheetName"in e?e.invalidSheetName:this.invalidSheetName,invalidXc:e&&"invalidXc"in e?e.invalidXc:this.invalidXc,parts:e?.parts?e.parts:this.parts.map((e=>({rowFixed:e.rowFixed,colFixed:e.colFixed}))),prefixSheet:void 0!==e?.prefixSheet?e.prefixSheet:this.prefixSheet},this.getSheetSize)}}function Yr(e,t,o){const s=o.sheetId===e?t:o.sheetId;return o.clone({sheetId:s})}function Xr(e,t,o){if(!o)return;const s=e.getRangeFromSheetXC(t,o);return s.invalidSheetName||s.invalidXc?void 0:s}function Kr(e,t){const o=[];for(const s of t){const t=s.dataRange;if(!e.isRangeValid(t)){o.push(s);continue}const{sheetName:i}=qr(t),n=i?`${i}!`:"",r=zo(t);if(r.bottom!==r.top&&r.left!=r.right)if(r.right)for(let e=r.left;e<=r.right;++e){const t=e===r.left?s:{yAxisId:s.yAxisId};o.push({...t,dataRange:`${n}${qo({left:e,right:e,top:r.top,bottom:r.bottom})}`})}else for(let e=r.top;e<=r.bottom;++e){const t=e===r.top?s:{yAxisId:s.yAxisId};o.push({...t,dataRange:`${n}${qo({left:r.left,right:r.right,top:e,bottom:e})}`})}else o.push(s)}return o}function Jr(e){const t=[];for(const o of e)for(const e of rs(o.zone))t.push({...e,sheetId:o.sheetId});return t}function Qr(e,t,o){const s=[];return t.forEach((t=>{const i=function(e,t){e=e.toLocaleLowerCase();let o=0,s=0,i=(t=t.toLocaleLowerCase()).length,n=0;for(let r=0;r<i;r++)t[r]===e[n]?(n++,s+=100+s-r/200):s=0,o+=s;return n===e.length?o:0}(e,o(t));i>0&&s.push({score:i,elem:t})})),s.sort(((e,t)=>t.score-e.score)),s.map((e=>e.elem))}function ea(e){const t=[];for(let o=0;o<e;o++){const e={cells:{}};t.push(e)}return t}function ta(e,t,o){return o.map((o=>o>=e?o+t:o))}function oa(e,t){return e=[...e].sort(((e,t)=>t-e)),t.map((t=>{for(const o of e)if(t>o)t--;else if(t===o)return;return t})).filter(lt)}function sa(e,t="Sheet"){let o=1,s=`${t}${o}`;for(;e.includes(s);)s=`${t}${o}`,o++;return s}function ia(e,t){let o=1;const s=Uo("Copy of %s",e);let i=s.toString();for(;t.includes(i);)i=`${s} (${o})`,o++;return i}function na(e,t){return void 0!==e&&void 0!==t&&$e(e.trim().toUpperCase())===$e(t.trim().toUpperCase())}function ra(e,t=1){return t*(e+ne)-ne}function aa(e,t,o,s){const i=ba(e,t,o,"wrap"===o?.wrapping?s-2*ne:void 0).length;return ra(fa(o),i)+2*re}function la(e,t=!1,o=!1){return`${o?"italic":""} ${t?"bold":""} ${e}px ${ve}`}const ca={};function ha(e,t,o,s="pt"){const i=ma(o,s);e.save(),e.font=i;const n=da(e,t);return e.restore(),n}function da(e,t){const o=e.font;return ca[o]||(ca[o]={}),void 0===ca[o][t]&&(ca[o][t]=e.measureText(t).width),ca[o][t]}const ua={};function ga(e,t,o,s="pt"){const i=ma(o,s);e.save(),e.font=i;const n=function(e,t){const o=e.font;ua[o]||(ua[o]={});if(void 0===ua[o][t]){const s=e.measureText(t),i=s.width,n=s.fontBoundingBoxAscent+s.fontBoundingBoxDescent;ua[o][t]={width:i,height:n}}return ua[o][t]}(e,t);return e.restore(),n}function pa(e){return Math.round(96*e/72)}function ma(e,t="pt"){return`${e.italic?"italic ":""}${e.bold?"bold":me} ${("pt"===t?fa(e):e.fontSize)??fe}px ${ve}`}function fa(e){return pa(e?.fontSize||fe)}function va(e,t,o,s){if(ha(e,t,s)<=o)return[t];const i=[];let n="";for(let r of t){ha(e,n+r,s)>o?(i.push(n),n=r):n+=r}return i.push(n),i}function ba(e,t,o,s){o||(o={});const i=[],n=t.includes(Ne)?t.split(Ne):[t];for(const t of n){const n=t.includes(" ")?t.split(" "):[t];if(!s){i.push(t);continue}let r="",a=s;for(let t of n){const n=va(e,t,s,o),l=n.pop(),c=ha(e,l,o);if(n.length)""!==r&&(i.push(r),r="",a=s),n.forEach((e=>{i.push(e)})),r=l,a=s-c;else{const t=""===r?l:" "+l,n=ha(e,t,o);n<=a?(r+=t,a-=n):(i.push(r),r=l,a=s-c)}}""!==r&&i.push(r)}return i}function Sa(e){return e?e.toLowerCase():""}const ya=/([0-9\.]*)px/;function Ca(e,t,o){let s=da(e,t);if(s<=o)return t;const i=da(e,"…");if(s<=i)return t;let n=t.length;for(;s>=o-i&&n-- >0;)s=da(e,t=t.substring(0,n));return t+"…"}function wa(e,t,o,s=!1,i=!1,n=function(e){return Number(e.match(ya)?.[1])}(e.font)/10){if(e.fillText(t,o.x,o.y),!s&&!i)return;const r=e.measureText(t),a=r.width,l=r.actualBoundingBoxAscent+r.actualBoundingBoxDescent,c=r.fontBoundingBoxAscent+r.fontBoundingBoxDescent;let{x:h,y:d}=o,u=d,g=d;switch(e.textAlign){case"center":h-=a/2;break;case"right":h-=a}switch(e.textBaseline){case"top":g+=c-2*n,u+=c/2-n;break;case"middle":g+=c/2-n;break;case"alphabetic":g+=2*n,u-=3*n;break;case"bottom":g=d,u-=l/2-n/2}s&&(e.lineWidth=n,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(h,g),e.lineTo(h+a,g),e.stroke()),i&&(e.lineWidth=n,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(h,u),e.lineTo(h+a,u),e.stroke())}class xa{smallUuid(){return window.crypto?"10000000-1000".replace(/[01]/g,(e=>{const t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})):"xxxxxxxx-xxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}uuidv4(){return window.crypto?"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(e=>{const t=Number(e);return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)})):"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))}}function Ia(e,t){const o=new Set(t.map((e=>e.left))),s=new Set(t.map((e=>e.right))),i=new Set(t.map((e=>e.top))),n=new Set(t.map((e=>e.bottom))),r=1===i.size&&1===n.size||1===o.size&&1===s.size?function(e){return e.reduce(((e,t)=>{const o=e.length;for(let s=0;s<o;s++)if(es(e[s],t))return e[s]=Ko(e[s],t),e;return e[o]=t,e}),[])}(t):[t[t.length-1]],a=r.map((e=>rs(e))).flat();return{sheetId:e,zones:t,clippedZones:r,columnsIndexes:[...new Set(a.map((e=>e.col)))].sort(((e,t)=>e-t)),rowsIndexes:[...new Set(a.map((e=>e.row)))].sort(((e,t)=>e-t))}}function Ea(e,t){if(!t.length||!t[0].length)return e;const o=t[0].length,s=t.length;return e.map((e=>function(e,t,o){const s=Math.max(e.right-t+1,e.left),i=Math.max(e.bottom-o+1,e.top),n=[];for(let r=e.left;r<=s;r+=t)for(let s=e.top;s<=i;s+=o)n.push({left:r,top:s,bottom:s+o-1,right:r+t-1});return n}(e,o,s))).flat()}function Ra(e){if(!e[si.Html])return{text:e[si.PlainText]};const t=(new DOMParser).parseFromString(e[si.Html],"text/html"),o=t.querySelector("div")?.getAttribute("data-osheet-clipboard"),s=o&&JSON.parse(o);return{text:e[si.PlainText],data:s}}class Ta{getters;dispatch;constructor(e,t){this.getters=e,this.dispatch=t}copy(e){}paste(e,t,o){}isPasteAllowed(e,t,o,s){return"Success"}isCutAllowed(e){return"Success"}getPasteTarget(e,t,o,s){return{zones:[],sheetId:e}}convertTextToClipboardData(e){}}class Aa extends Ta{copy(e){}pasteFromCopy(e,t,o,s){if(1===t.length)for(const i of Ea(t,o))this.pasteZone(e,i.left,i.top,o,s);else for(const i of _o(t))for(let t=i.left;t<=i.right;t++)for(let n=i.top;n<=i.bottom;n++)this.pasteZone(e,t,n,o,s)}pasteZone(e,t,o,s,i){}}class _a extends Aa{queuedBordersToAdd={};copy(e){const t=e.sheetId;if(0===e.zones.length)return;const{rowsIndexes:o,columnsIndexes:s}=e,i=[];for(const e of o){const o=[];for(const i of s){const s={col:i,row:e,sheetId:t};o.push(this.getters.getCellBorder(s))}i.push(o)}return{borders:i}}paste(e,t,o){const s=e.sheetId;if("asValue"===o.pasteOption)return;const i=e.zones;if(o.isCutOperation){const{left:e,top:o}=i[0];this.pasteZone(s,e,o,t.borders)}else this.pasteFromCopy(s,i,t.borders);this.executeQueuedChanges(s)}pasteZone(e,t,o,s){for(const[i,n]of s.entries())for(const[s,r]of n.entries()){const n={col:t+s,row:o+i,sheetId:e};this.pasteBorder(r,n)}}pasteBorder(e,t){const o={...this.getters.getCellBorder(t),...e},s=JSON.stringify(o);this.queuedBordersToAdd[s]||(this.queuedBordersToAdd[s]=[]),this.queuedBordersToAdd[s].push(hs(t))}executeQueuedChanges(e){for(const t in this.queuedBordersToAdd){const o=this.queuedBordersToAdd[t],s=JSON.parse(t),i=_o(o,[]);this.dispatch("SET_BORDERS_ON_TARGET",{sheetId:e,target:i,border:s})}this.queuedBordersToAdd={}}}const Da=["%"],Oa="+,-,*,/,:,=,<>,>=,>,<=,<,^,&".split(",").concat(Da);function Fa(e,t=fi){e=xt(e);const o=new Mt(e),s=[],i=Ct.test(e)?Ga:Wa;for(;!o.isOver();){let e=qa(o)||i(o)||ka(o,t)||Na(o)||Va(o)||Ua(o)||Ma(o)||Za(o)||Ha(o,t)||$a(o);e||(e={type:"UNKNOWN",value:o.shift()}),s.push(e)}return s}function Ma(e){return"?"===e.current?(e.shift(),{type:"DEBUGGER",value:"?"}):null}const Pa={"(":{type:"LEFT_PAREN",value:"("},")":{type:"RIGHT_PAREN",value:")"}};function Na(e){if("("===e.current||")"===e.current){const t=e.shift();return Pa[t]}return null}function ka(e,t){if(e.current===t.formulaArgSeparator){return{type:"ARG_SEPARATOR",value:e.shift()}}return null}function Va(e){for(let t of Oa)if(e.currentStartsWith(t))return e.advanceBy(t.length),{type:"OPERATOR",value:t};return null}const La=new Set("0123456789");function Ha(e,t){if(!La.has(e.current)&&e.current!==t.decimalSeparator)return null;const o=e.remaining().match(Xs(t.decimalSeparator));return o?(e.advanceBy(o[0].length),{type:"NUMBER",value:o[0]}):null}function Ua(e){if('"'===e.current){const t=e.shift();let o=t;for(;e.current&&(e.current!==t||"\\"===o[o.length-1]);)o+=e.shift();return'"'===e.current&&(o+=e.shift()),{type:"STRING",value:o}}return null}const Ba=/\p{L}|\p{N}|_|\.|!|\$/u,za=new Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.!$");function $a(e){let t="";if("'"===e.current){let o=e.shift();for(t+=o;e.current;)if(o=e.shift(),t+=o,"'"===o){if(!e.current||"'"!==e.current)break;o=e.shift(),t+=o}if("'"!==o)return{type:"UNKNOWN",value:t}}for(;e.current&&(za.has(e.current)||e.current.match(Ba));)t+=e.shift();if(t.length){const e=t;return Br.test(e)?{type:"REFERENCE",value:e}:{type:"SYMBOL",value:e}}return null}function Ga(e){let t="";for(;" "===e.current||e.current&&e.current.match(Ct);)t+=e.shift();return t?{type:"SPACE",value:t}:null}function Wa(e){let t="";for(;" "===e.current;)t+=e.shift();return t?{type:"SPACE",value:t}:null}function qa(e){let t=0;for(;e.current===Ne;)t++,e.shift();return t?{type:"SPACE",value:Ne.repeat(t)}:null}function Za(e){return e.currentStartsWith(wi.InvalidReference)?(e.advanceBy(wi.InvalidReference.length),{type:"INVALID_REFERENCE",value:wi.InvalidReference}):null}function ja(e){if(!e||"object"!=typeof e||e.thousandsSeparator&&"string"!=typeof e.thousandsSeparator)return!1;for(const t of["code","name","decimalSeparator","dateFormat","timeFormat","formulaArgSeparator"])if(!e[t]||"string"!=typeof e[t])return!1;if(e.formulaArgSeparator===e.decimalSeparator)return!1;if(e.thousandsSeparator===e.decimalSeparator)return!1;try{Kn(1,{locale:e,format:"#,##0.00"}),Kn(1,{locale:e,format:e.dateFormat}),Kn(1,{locale:e,format:e.timeFormat})}catch{return!1}return!0}function Ya(e,t){return e.startsWith("=")?Qa(e,t):ol(e,t)}function Xa(e,t){return e.startsWith("=")?Qa(e,t):function(e,t){if(Ns(e,t)){const o=ki(e,t);let s=fi.dateFormat;return Number.isInteger(o)||(s+=" "+fi.timeFormat),Kn(o,{locale:fi,format:s})}return ol(e,t)}(e,t)}function Ka(e,t){return e.startsWith("=")?el(e,t):function(e,t){if(Ns(e,fi)){const o=ki(e,fi);let s=t.dateFormat;return Number.isInteger(o)||(s+=" "+t.timeFormat),Kn(o,{locale:t,format:s})}return function(e,t){if("."===t.decimalSeparator||!Js(e,fi))return e;const o=ar(fi);return e.replace(o,(e=>e.replace(".",t.decimalSeparator)))}(e,t)}(e,t)}function Ja(e,t){return e.startsWith("=")?Qa(e,t):ol(e,t)}function Qa(e,t){return tl(e,t,fi)}function el(e,t){return tl(e,fi,t)}function tl(e,t,o){if(t.formulaArgSeparator===o.formulaArgSeparator&&t.decimalSeparator===o.decimalSeparator)return e;const s=Fa(e,t);let i="";for(const e of s)"NUMBER"===e.type?i+=e.value.replace(t.decimalSeparator,o.decimalSeparator):"ARG_SEPARATOR"===e.type?i+=o.formulaArgSeparator:i+=e.value;return i}function ol(e,t){return"."!==t.decimalSeparator&&Js(e,t)?(t.thousandsSeparator&&(e=e.replaceAll(t.thousandsSeparator,"")),e.replace(t.decimalSeparator,".")):e}function sl(e,t){return rl(e,(e=>Xa(e,t)))}function il(e,t){return rl(e,(e=>Ka(e,t)))}function nl(e,t){const o=ze(e);return o.criterion.values=o.criterion.values.map((e=>Ka(e,t))),o}function rl(e,t){switch((e=ze(e)).type){case"CellIsRule":switch(e.operator){case"Between":case"NotBetween":case"Equal":case"NotEqual":case"GreaterThan":case"GreaterThanOrEqual":case"LessThan":case"LessThanOrEqual":return e.values=e.values.map((e=>t(e))),e;case"BeginsWith":case"ContainsText":case"EndsWith":case"NotContains":case"IsEmpty":case"IsNotEmpty":return e}case"DataBarRule":return e;case"ColorScaleRule":return e.minimum=al(e.minimum,t),e.maximum=al(e.maximum,t),e.midpoint&&(e.midpoint=al(e.midpoint,t)),e;case"IconSetRule":return e.lowerInflectionPoint.value=t(e.lowerInflectionPoint.value),e.upperInflectionPoint.value=t(e.upperInflectionPoint.value),e}}function al(e,t){if(!e?.value)return e;const o=t("formula"===e.type?"="+e.value:e.value),s="formula"===e.type?o.slice(1):o;return{...e,value:s}}function ll(e){return e.dateFormat+" "+e.timeFormat}function cl(e){let t=!1,o=!0;return ln(e,(e=>(t=!0,o=o&&e,o))),{foundBoolean:t,result:o}}function hl(e){let t=!1,o=!1;return ln(e,(e=>(t=!0,o=o||e,!o))),{foundBoolean:t,result:o}}function dl(e,t){return tn(e,((e,t)=>e+t),0,t)}function ul(e){return en(e,((e,t)=>Sn(t)?e.add(t?.value):e),new Set).size}function gl(e){const t=Array(e);for(let o=0;o<e;o++)t[o]=Array(e).fill(0),t[o][o]=1;return t}function pl(e){if(e.length!==e[0].length)throw new Ii(Uo("Function [[FUNCTION_NAME]] invert matrix error, only square matrices are invertible"));let t=1;const o=e.length,s=gl(o),i=e.map((e=>e.slice()));for(let e=0;e<o;e++){let n=i[e][e];if(0===n){for(let n=e+1;n<o;n++)if(0!=i[e][n]){ml(i,e,n),ml(s,e,n),t*=-1;break}if(n=i[e][e],0===n)return{determinant:0}}for(let t=0;t<o;t++)i[t][e]=i[t][e]/n,s[t][e]=s[t][e]/n;t*=n;for(let t=0;t<o;t++){if(t===e)continue;const n=i[e][t];for(let r=0;r<o;r++)i[r][t]-=n*i[r][e],s[r][t]-=n*s[r][e]}}return{inverted:s,determinant:t}}function ml(e,t,o){for(let s=0;s<e.length;s++){const i=e[s][t];e[s][t]=e[s][o],e[s][o]=i}}function fl(e,t){if(e.length!==t[0].length)throw new Ii(Uo("Cannot multiply matrices : incompatible matrices size."));const o=e[0].length,s=t.length,i=e.length,n=Array(s);for(let r=0;r<s;r++){n[r]=Array(o);for(let s=0;s<o;s++){let o=0;for(let n=0;n<i;n++)o+=e[n][s]*t[r][n];n[r][s]=o}}return n}function vl(e){if(!bi(e))return e;if(!bl(e))throw new Ii(Uo("The value should be a scalar or a 1x1 matrix"));return e[0][0]}function bl(e){return 1===e.length&&1===e[0].length}function Sl(e){return bi(e)&&!bl(e)}function yl(...e){const t=e[0].length;e.forEach(((e,o)=>Fi((()=>e.length===t),Uo("[[FUNCTION_NAME]] has mismatched dimensions for argument %s (%s vs %s).",o.toString(),t.toString(),e.length.toString()))))}function Cl(e,t){let o=0;const s=tn(e,((e,t)=>(o+=1,e+t)),0,t);return $i(o),s/o}function wl(e,t){let o=0;for(let s of e)if(bi(s))for(let e of s)for(let t of e)"number"==typeof t.value&&(o+=1);else{const e=s?.value;Pi(e)||"string"==typeof e&&!Js(e,t)&&!Vs(e,t)||(o+=1)}return o}function xl(e){return en(e,((e,t)=>void 0!==t&&null!==t.value?e+1:e),0)}function Il(e,t){let o={value:-1/0};return Ji(e,(e=>{e.value>=o.value&&(o=e)}),t),o.value===-1/0?{value:0}:o}function El(e,t){let o={value:1/0};return Ji(e,(e=>{e.value<=o.value&&(o=e)}),t),o.value===1/0?{value:0}:o}function Rl(e,t,o){const s=e[0].length?e:[je(1,t.flat().length+1)],i=s.length;let n=o[0].length?o:s;return n=n.length===i?rn(n):n,{_X:s,_newX:n}}function Tl(e,t,o=!0,s=!1){const i=t.flat(),n=i.length;let{_X:r}=Rl(e,t,[[]]);r=r.length===n?rn(r):r.slice(),yl(r[0],i);const a=r.length,l=n-a-(o?1:0),c=[i],h=rn(r.reverse());let d=[];for(let e=0;e<a;e++)if(d.push(0),o){for(const t of r[e])d[e]+=t;d[e]/=n}let u=0;if(o){for(const e of i)u+=e;u/=n}const g=h.map((e=>e.map(((e,t)=>e-d[t]))));o&&h.forEach((e=>e.push(1)));const p=_l(h,c);if(o||p.push([0]),!s)return p;const m=fl(g,rn(g)),{inverted:f}=pl(m);if(void 0===f)throw new Ii(Uo("Matrix is not invertible"));let v=0,b=0;for(let e=0;e<n;e++){const t=i[e]-u;let o=0;for(let t=0;t<a;t++){o+=g[e][t]*p[t][0]}const s=t-o;v+=s*s,b+=o*o}const S=Math.sqrt(v/l),y=b/(b+v),C=b/a/(v/l),w=[];for(let e=0;e<a;e++)w.push(S*Math.sqrt(f[e][e]));if(o){const e=fl(f,[d]),t=fl(rn([d]),e);w.push(S*Math.sqrt(t[0][0]+1/i.length))}const x=[[p[0][0],w[0],y,C,b],[p[1][0],w[1],S,l,v]];for(let e=2;e<a;e++)x.push([p[e][0],w[e],"","",""]);return o?x.push([p[a][0],w[a],"","",""]):x.push([0,"","","",""]),x}function Al(e,t,o,s){yl(t,e),Fi((()=>o>=1),Uo("Function [[FUNCTION_NAME]] A regression of order less than 1 cannot be possible."));const i=[e],n=t.map((e=>je(0,o).map((t=>Math.pow(e,o-t)))));s&&n.forEach((e=>e.push(1)));const r=_l(n,i);return s||r.push([0]),r}function _l(e,t){const o=fl(e,rn(e)),{inverted:s}=pl(o);if(void 0===s)throw new Ii(Uo("Matrix is not invertible"));const i=fl(e,t);return rn(fl(s,i))}function Dl(e,t,o){return e.reduce(((e,s,i)=>e+s*Math.pow(t,o-i)),0)}function Ol(e){return e.map((e=>e.map((e=>Math.exp(e)))))}function Fl(e){return e.map((e=>e.map((e=>Math.log(e)))))}function Ml(e,t,o,s){const{_X:i,_newX:n}=Rl(t,e,o),r=Tl(i,e,s,!1),a=r.length-1,l=n.map((e=>{let t=0;for(let o=0;o<a;o++)t+=r[o][0]*e[a-o-1];return t+=r[a][0],[t]}));return l.length===o.length?l:rn(l)}const Pl="(previous)",Nl="(next)";function kl(e,t){const o=e.definition.rows.map((e=>e.nameWithGranularity)),s=t.filter((e=>o.includes(e.field))),i=e.definition.columns.map((e=>e.nameWithGranularity));return{colDomain:t.filter((e=>i.includes(e.field))),rowDomain:s}}function Vl(e,t,o){return"column"===t?kl(e,o).colDomain:kl(e,o).rowDomain}function Ll(e,t){return void 0!==Hl(e,t)}function Hl(e,t,o){let s=t;for(const t of e){const e=s.find((e=>e.value===t.value));if(!e)return;if(e.field===o)return s;s=e.children}return s}function Ul(e,t,o){const s=(e=ze(e)).find((e=>e.field===t));return s?(s.value=o,e):e}function Bl(e,t){return t.some((t=>t.field===e))}function zl(e,t){if(e.definition.rows.map((e=>e.nameWithGranularity)).includes(t))return"row";if(e.definition.columns.map((e=>e.nameWithGranularity)).includes(t))return"column";throw new Error(`Field ${t} not found in pivot`)}function $l(e){return e?e.map(Gl).join(", "):""}function Gl(e){return e?`${e.field}=${e.value}`:""}function Wl(e,t){const o=e.findIndex((e=>e.field===t));if(-1===o)return"";const s=e.slice(0,o),i=e.at(-1);return $l(i.field===t?s:[...s,i])}function ql(e,t){const o=e.findIndex((e=>e.field===t));return-1===o?"":$l([...e.slice(0,o),...e.slice(o+1)])}function Zl(e,t,o){const s=[...e],i=[...t];s.sort(((e,t)=>o([...i,e],[...i,t])));for(const t of e){const e=Zl(t.children,[...i,t],o);t.children=e}return s}const jl=new n;function Yl(e){return jl.get(e)}const Xl={normalizeFunctionValue:e=>ki(e,fi),toValueAndFormat:(e,t)=>({value:ki(e,fi),format:"dd mmm yyyy"}),toFunctionValue:e=>`"${Kn(ki(e,fi),{locale:fi,format:"mm/dd/yyyy"})}"`},Kl={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>31)throw new Ii(Uo("%s is not a valid day of month (it should be a number between 1 and 31)",t));return t},toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},Jl={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>7)throw new Ii(Uo("%s is not a valid day of week (it should be a number between 1 and 7)",t));return t},toValueAndFormat(e,t){const o=(e-1+(t||fi).weekStart)%7;return{value:Xn[o].toString(),format:"@"}},toFunctionValue:e=>`${e}`},Ql={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>53)throw new Ii(Uo("%s is not a valid week (it should be a number between 0 and 53)",t));return t},toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},ec={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>12)throw new Ii(Uo("%s is not a valid month (it should be a number between 1 and 12)",t));return t},toValueAndFormat:e=>({value:Yn[ki(e,fi)-1].toString(),format:"@"}),toFunctionValue:e=>`${e}`},tc={normalizeFunctionValue:e=>Kn(ki(e,fi),{locale:fi,format:"mm/yyyy"}),toValueAndFormat:e=>({value:ki(e,fi),format:"mmmm yyyy"}),toFunctionValue:e=>`"${e}"`},oc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<1||t>4)throw new Ii(Uo("%s is not a valid quarter (it should be a number between 1 and 4)",t));return t},toValueAndFormat:e=>({value:Uo("Q%(quarter_number)s",{quarter_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},sc={normalizeFunctionValue:e=>ki(e,fi),toValueAndFormat:e=>({value:ki(e,fi),format:"0"}),toFunctionValue:e=>`${e}`},ic={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>23)throw new Ii(Uo("%s is not a valid hour (it should be a number between 0 and 23)",t));return t},toValueAndFormat:e=>({value:Uo("%(hour_number)sh",{hour_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},nc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>59)throw new Ii(Uo("%s is not a valid minute (it should be a number between 0 and 59)",t));return t},toValueAndFormat:e=>({value:Uo("%(minute_number)s'",{minute_number:e}),format:"@"}),toFunctionValue:e=>`${e}`},rc={normalizeFunctionValue(e){const t=ki(e,fi);if(t<0||t>59)throw new Ii(Uo("%s is not a valid second (it should be a number between 0 and 59)",t));return t},toValueAndFormat:e=>({value:Uo("%(second_number)s''",{second_number:e}),format:"@"}),toFunctionValue:e=>`${e}`};function ac(e){return{normalizeFunctionValue:t=>null===t?null:e.normalizeFunctionValue(t),toValueAndFormat:(t,o)=>null===t?{value:Uo("(Undefined)")}:e.toValueAndFormat(t,o),toFunctionValue:t=>null===t?"false":e.toFunctionValue(t)}}jl.add("day",ac(Xl)).add("year",ac(sc)).add("day_of_month",ac(Kl)).add("iso_week_number",ac(Ql)).add("month_number",ac(ec)).add("month",ac(tc)).add("quarter_number",ac(oc)).add("day_of_week",ac(Jl)).add("hour_number",ac(ic)).add("minute_number",ac(nc)).add("second_number",ac(rc));const lc={count:Uo("Count"),count_distinct:Uo("Count Distinct"),bool_and:Uo("Boolean And"),bool_or:Uo("Boolean Or"),max:Uo("Maximum"),min:Uo("Minimum"),avg:Uo("Average"),sum:Uo("Sum")},cc=["max","min","avg","sum","count_distinct","count"],hc={integer:cc,char:cc,boolean:["count_distinct","count","bool_and","bool_or"],datetime:["max","min","count_distinct","count"]},dc={};for(const e in hc){dc[e]={};for(const t of hc[e])dc[e][t]=lc[t]}const uc={count:e=>({value:xl([e]),format:"0"}),count_distinct:e=>({value:ul([e]),format:"0"}),bool_and:e=>({value:cl([e]).result}),bool_or:e=>({value:hl([e]).result}),max:(e,t)=>Il([e],t),min:(e,t)=>El([e],t),avg:(e,t)=>({value:Cl([e],t),format:Mi(e)}),sum:(e,t)=>({value:dl([e],t),format:Mi(e)})};function gc(e){const t=Object.keys(e);if(!t.length)return 0;const o=t.map((e=>parseInt(e,10)));return Math.max(...o)}const pc={year:Uo("Year"),quarter:Uo("Quarter & Year"),month:Uo("Month & Year"),week:Uo("Week & Year"),day:Uo("Day"),quarter_number:Uo("Quarter"),month_number:Uo("Month"),iso_week_number:Uo("Week"),day_of_month:Uo("Day of Month"),day_of_week:Uo("Day of Week"),hour_number:Uo("Hour"),minute_number:Uo("Minute"),second_number:Uo("Second")},mc=["date","datetime"];function fc(e){const[t,o]=e.split(":");return o?{fieldName:t,granularity:o}:{fieldName:t}}function vc(e){return mc.includes(e.type)}function bc(e,t,o){const s=[e];o&&s.push(`"${o}"`);for(const{field:e,value:o,type:i}of t){if("measure"===e){s.push('"measure"',`"${o}"`);continue}const{granularity:t}=fc(e),n=xc(o,{type:i,granularity:t});s.push(`"${e}"`,n)}return s}function Sc(e,t){let o=0,s=0;const i=t.columns.map((e=>e.nameWithGranularity)),n=t.rows.map((e=>e.nameWithGranularity));for(;void 0!==e[o]&&e[o]===n[s];)o++,s++;for(s=0;void 0!==e[o]&&e[o]===i[s];)o++,s++;return e.length===o}function yc(e,t){switch(t.type){case"HEADER":return`=PIVOT.HEADER(${bc(e,t.domain).join(",")})`;case"VALUE":return`=PIVOT.VALUE(${bc(e,t.domain,t.measure).join(",")})`;case"MEASURE_HEADER":return`=PIVOT.HEADER(${bc(e,[...t.domain,{field:"measure",value:t.measure,type:"char"}]).join(",")})`}return""}function Cc(e,t){if(null===t||"null"===t)return null;const o="boolean"==typeof t?Gi(t).toLocaleLowerCase():Gi(t);if("null"===o)return null;if(!Ec.contains(e.type))throw new Ii(Uo("Field %(field)s is not supported because of its type (%(type)s)",{field:e.displayName,type:e.type}));if("false"===o.toLowerCase())return!1;return Ec.get(e.type)(o,e.granularity)}function wc(e,t){return Yl(t??"month").normalizeFunctionValue(e)}function xc(e,t){return null===e?'"null"':Rc.contains(t.type)?Rc.get(t.type)(e,t.granularity):`"${e}"`}function Ic(e,t){return Yl(t??"month").toFunctionValue(e)}const Ec=new n;Ec.add("date",wc).add("datetime",wc).add("integer",(e=>ki(e,fi))).add("boolean",(e=>Zi(e))).add("char",(e=>Gi(e)));const Rc=new n;function Tc(e){return e.displayName+(e.granularity?` (${pc[e.granularity]})`:"")}function Ac(e,t,o){const{rowDomain:s,colDomain:i}=kl(e,t);if(0===s.length&&0===i.length)return o;if(0===s.length&&i.length>0)return{...o,format:(o.format||"@")+"* "};const n=s.length-1,r=o.format||"@";return{...o,format:`${" ".repeat(n)}${r}* `}}function _c(e,t){try{if(!t.getMeasure(e.measure))return!1;const o=t.definition.columns;for(let s=0;s<e.domain.length;s++){if(o[s].nameWithGranularity!==e.domain[s].field)return!1;const i=t.getPossibleFieldValues(o[s]).map((e=>e.value));if(!(i.includes(e.domain[s].value)||null===e.domain[s].value&&i.includes("")))return!1}return!0}catch(e){return!1}}Rc.add("date",Ic).add("datetime",Ic).add("integer",(e=>`${ki(e,fi)}`)).add("boolean",(e=>Zi(e)?"TRUE":"FALSE")).add("char",(e=>`"${Gi(e).replace(/"/g,'\\"')}"`));class Dc extends Aa{isCutAllowed(e){return 1!==e.zones.length?"WrongCutSelection":"Success"}copy(e){const t=e.sheetId,{clippedZones:o,rowsIndexes:s,columnsIndexes:i}=e,n=[],r=1==s.length&&1==i.length;for(let o of s){let a=[];for(let n of i){const l={col:n,row:o,sheetId:t};let c=this.getters.getCell(l);const h=this.getters.getEvaluatedCell(l),d=this.getters.getPivotIdFromPosition(l),u=this.getters.getArrayFormulaSpreadingOn(l);if(d&&u){const t=this.getters.getSpreadZone(u);if((!ft(u,l)||!r)&&t&&!e.zones.some((e=>os(t,e)))){const e=this.getters.getPivotCellFromPosition(l),t=yc(this.getters.getPivotFormulaId(d),e);c={id:c?.id||"",style:c?.style,format:c?.format,content:t,isFormula:!1,parsedValue:h.value}}}else if(u&&!ft(u,l)){const e=s.includes(u.row)&&i.includes(u.col)?"":Kn(h.value,{locale:this.getters.getLocale()});c={id:c?.id||"",style:c?.style,format:h.format,content:e,isFormula:!1,parsedValue:h.value}}a.push({content:c?.content??"",style:c?.style,format:c?.format,tokens:c?.isFormula?c.compiledFormula.tokens.map((({value:e,type:t})=>({value:e,type:t}))):[],border:this.getters.getCellBorder(l)||void 0,evaluatedCell:h,position:l})}n.push(a)}return{cells:n,zones:o,sheetId:e.sheetId}}isPasteAllowed(e,t,o,s){if(!o.cells)return"Success";if(s?.isCutOperation&&void 0!==s?.pasteOption)return"WrongPasteOption";if(t.length>1&&(o.cells.length>1||o.cells[0].length>1))return"WrongPasteSelection";const i=o.cells.length,n=o.cells[0].length;for(const s of Ea(t,o.cells))if(this.getters.doesIntersectMerge(e,s)&&(t.length>1||!this.getters.isSingleCellOrMerge(e,t[0])||i*n!=1))return"WillRemoveExistingMerge";return"Success"}paste(e,t,o){const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t,o):this.pasteFromCopy(i,s,t.cells,o)}getPasteTarget(e,t,o,s){const i=o.cells[0].length,n=o.cells.length;return s?.isCutOperation?{sheetId:e,zones:[{left:t[0].left,top:t[0].top,right:t[0].left+i-1,bottom:t[0].top+n-1}]}:1===i&&1===n?{zones:[],sheetId:e}:{sheetId:e,zones:Ea(t,o.cells)}}pasteFromCut(e,t,o,s){this.clearClippedZones(o);const i=t[0];this.pasteZone(e,i.left,i.top,o.cells,s)}clearClippedZones(e){this.dispatch("CLEAR_CELLS",{sheetId:e.sheetId,target:e.zones}),this.dispatch("CLEAR_FORMATTING",{sheetId:e.sheetId,target:e.zones})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){if(!a)continue;const r={col:t+s,row:o+n,sheetId:e};this.pasteCell(a,r,i)}}pasteCell(e,t,o){const{sheetId:s,col:i,row:n}=t,r=this.getters.getEvaluatedCell(t),a=e?.format??e.evaluatedCell.format;if("asValue"===o?.pasteOption)return void this.dispatch("UPDATE_CELL",{...t,content:e.evaluatedCell.value?.toString()||"",format:a});if("onlyFormat"===o?.pasteOption)return void this.dispatch("UPDATE_CELL",{...t,style:e?.style??null,format:a??r.format});let l=e?.content;e?.tokens&&e.tokens.length>0&&!o?.isCutOperation?l=this.getters.getTranslatedCellFormula(s,i-e.position.col,n-e.position.row,e.tokens):e?.tokens&&e.tokens.length>0&&(l=this.getters.getFormulaMovedInSheet(e.position.sheetId,s,e.tokens)),""!==l||e?.format||e?.style?this.dispatch("UPDATE_CELL",{...t,content:l,style:e?.style||null,format:e?.format}):r&&this.dispatch("CLEAR_CELL",t)}convertTextToClipboardData(e){const t=this.getters.getLocale(),o={cells:[]},s=[];let i=0;for(const[t,o]of e.replace(/\r/g,"").split("\n").entries())s.push(o.split("\t")),s[t].length>i&&(i=s[t].length);for(const e of s){const s=[];for(let o=0;o<i;o++){const i=Ja(e[o]||"",t);s.push({content:i,evaluatedCell:{formattedValue:i}})}o.cells.push(s)}return o}}class Oc extends Ta{copy(e){}}class Fc extends Aa{uuidGenerator=new xa;queuedChanges={};copy(e){if(!e.zones.length)return;const{rowsIndexes:t,columnsIndexes:o}=e,s=e.sheetId,i=[];for(const e of t){const t=[];for(const i of o){const o=Array.from(this.getters.getRulesByCell(s,i,e));t.push({position:{col:i,row:e,sheetId:s},rules:o})}i.push(t)}return{cfRules:i}}paste(e,t,o){if(this.queuedChanges={},"asValue"===o.pasteOption)return;const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t):this.pasteFromCopy(i,s,t.cfRules,o),this.executeQueuedChanges()}pasteFromCut(e,t,o){const s=t[0];this.pasteZone(e,s.left,s.top,o.cfRules,{isCutOperation:!0})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){const r={col:t+s,row:o+n,sheetId:e};this.pasteCf(a,r,i?.isCutOperation)}}pasteCf(e,t,o){if(e?.rules&&e.rules.length>0){const s=hs(e.position),i=hs(t);for(const n of e.rules){const r=[];if(o&&r.push(s),e.position.sheetId===t.sheetId)this.adaptCFRules(e.position.sheetId,n,[i],r);else{this.adaptCFRules(e.position.sheetId,n,[],r);const o=this.getCFToCopyTo(t.sheetId,n);this.adaptCFRules(t.sheetId,o,[i],[])}}}}adaptCFRules(e,t,o,s){this.queuedChanges[e]||(this.queuedChanges[e]=[]);const i=this.queuedChanges[e].find((e=>e.cf.id===t.id));i?(i.toAdd.push(...o),i.toRemove.push(...s)):this.queuedChanges[e].push({toAdd:o,toRemove:s,cf:t})}executeQueuedChanges(){for(const e in this.queuedChanges)for(const{toAdd:t,toRemove:o,cf:s}of this.queuedChanges[e]){const i=this.getters.getAdaptedCfRanges(e,s,t,o);i&&(0!==i.length?this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:s.id,rule:s.rule,stopIfTrue:s.stopIfTrue},ranges:i,sheetId:e}):this.dispatch("REMOVE_CONDITIONAL_FORMAT",{id:s.id,sheetId:e}))}}getCFToCopyTo(e,t){let o=this.getters.getConditionalFormats(e).find((e=>e.stopIfTrue===t.stopIfTrue&&ft(e.rule,t.rule)));const s=this.queuedChanges[e];return!o&&s&&(o=s.find((e=>e.cf.stopIfTrue===t.stopIfTrue&&ft(e.cf.rule,t.rule)))?.cf),o||{...t,id:this.uuidGenerator.smallUuid(),ranges:[]}}}class Mc extends Aa{copy(e){const t=e.sheetId,{rowsIndexes:o,columnsIndexes:s,zones:i}=e,n=new Set,r=[];for(let e of o){let o=[];r.push(o);for(let r of s){const s={col:r,row:e,sheetId:t},a=this.getters.getTable(s);if(!a){o.push({});continue}const l=this.getters.getCoreTable(s),c=l?.range.zone;let h;!n.has(a.id)&&l&&c&&i.some((e=>os(c,e)))&&(n.add(a.id),h={range:l.range.rangeData,config:l.config,type:l.type}),o.push({table:h,style:this.getTableStyleToCopy(s),isWholeTableCopied:n.has(a.id)})}}return{tableCells:r,sheetId:e.sheetId}}getTableStyleToCopy(e){const t=this.getters.getCellTableStyle(e),o=this.getters.getCellStyle(e),s=this.getters.getCellTableBorder(e),i=this.getters.getCellBorder(e);return{style:{...t,...St(o)},border:{...s,...St(i)}}}paste(e,t,o){const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t,o):this.pasteFromCopy(i,s,t.tableCells,o)}pasteFromCut(e,t,o,s){for(const e of o.tableCells)for(const t of e)t.table&&this.dispatch("REMOVE_TABLE",{sheetId:o.sheetId,target:[this.getters.getRangeFromRangeData(t.table.range).zone]});const i=t[0];this.pasteZone(e,i.left,i.top,o.tableCells,s)}pasteZone(e,t,o,s,i){for(let n=0;n<s.length;n++){const r=s[n];for(let s=0;s<r.length;s++){const a=r[s];if(!a)continue;const l={col:t+s,row:o+n,sheetId:e};this.pasteTableCell(e,a,l,i)}}if(1===s.length)for(let i=0;i<s[0].length;i++)this.dispatch("AUTOFILL_TABLE_COLUMN",{col:t+i,row:o,sheetId:e})}pasteTableCell(e,t,o,s){if(t.table&&!s?.pasteOption){const{range:s}=t.table,i=ss(this.getters.getRangeFromRangeData(s).zone),n={left:o.col,top:o.row,right:o.col+i.numberOfCols-1,bottom:o.row+i.numberOfRows-1};this.dispatch("CREATE_TABLE",{sheetId:o.sheetId,ranges:[this.getters.getRangeDataFromZone(e,n)],config:t.table.config,tableType:t.table.type})}this.getters.getCoreTable(o)||"asValue"===s?.pasteOption||(s?.pasteOption||t.isWholeTableCopied)&&"onlyFormat"!==s?.pasteOption||(t.style?.style&&this.dispatch("UPDATE_CELL",{...o,style:t.style.style}),t.style?.border&&this.dispatch("SET_BORDER",{...o,border:t.style.border}))}}const Pc={figureHandlers:new n,cellHandlers:new n};function Nc(e,t){return"REMOVE_COLUMNS_ROWS"===t.type?Xo(e,"COL"===t.dimension?"left":"top",t.elements):"ADD_COLUMNS_ROWS"===t.type?Zo(e,"COL"===t.dimension?"left":"top",t.base,t.position,t.quantity):e}function kc(e,t){const o="DELETE_SHEET"===t.type&&t.sheetId;if("sheetId"in t&&e._sheetId!==t.sheetId)return e;{const s=Nc(e._zone,t);if(s&&o!==e._sheetId)return{...e,_zone:s}}}Pc.figureHandlers.add("chart",class extends Oc{copy(e){const t=e.sheetId,o=this.getters.getFigure(t,e.figureId);if(!o)throw new Error(`No figure for the given id: ${e.figureId}`);if("chart"!==o.tag)return;const s={...o},i=this.getters.getChart(e.figureId);if(!i)throw new Error(`No chart for the given id: ${e.figureId}`);const n=i.copyInSheetId(t);return{figureId:e.figureId,copiedFigure:s,copiedChart:n}}getPasteTarget(e,t,o,s){return{zones:[],figureId:(new xa).smallUuid(),sheetId:e}}paste(e,t,o){if(!e.figureId)return;const{zones:s,figureId:i}=e,n=e.sheetId,r=this.getters.getNumberCols(n),a=this.getters.getNumberRows(n),l=this.getters.getColDimensions(n,s[0].left).start,c=this.getters.getRowDimensions(n,s[0].top).start,h=this.getters.getColDimensions(n,r-1).end,d=this.getters.getRowDimensions(n,a-1).end,{width:u,height:g}=t.copiedFigure,p={x:h<u?0:Math.min(l,h-u),y:d<g?0:Math.min(c,d-g)},m=t.copiedChart.copyInSheetId(n);this.dispatch("CREATE_CHART",{id:i,sheetId:n,position:p,size:{height:g,width:u},definition:m.getDefinition()}),o.isCutOperation&&this.dispatch("DELETE_FIGURE",{sheetId:t.copiedChart.sheetId,id:t.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}isPasteAllowed(e,t,o,s){return 0===t.length?"EmptyTarget":void 0!==s?.pasteOption?"WrongFigurePasteOption":"Success"}}).add("image",class extends Oc{copy(e){const t=e.sheetId,o=this.getters.getFigure(t,e.figureId);if(!o)throw new Error(`No figure for the given id: ${e.figureId}`);const s={...o};if("image"!==o.tag)return;const i=ze(this.getters.getImage(e.figureId));return{figureId:e.figureId,copiedFigure:s,copiedImage:i,sheetId:t}}getPasteTarget(e,t,o,s){return{sheetId:e,zones:[],figureId:(new xa).smallUuid()}}paste(e,t,o){if(!e.figureId)return;const{zones:s,figureId:i}=e,n=this.getters.getActiveSheetId(),r=this.getters.getNumberCols(n),a=this.getters.getNumberRows(n),l=this.getters.getColDimensions(n,s[0].left).start,c=this.getters.getRowDimensions(n,s[0].top).start,h=this.getters.getColDimensions(n,r-1).end,d=this.getters.getRowDimensions(n,a-1).end,{width:u,height:g}=t.copiedFigure,p={x:h<u?0:Math.min(l,h-u),y:d<g?0:Math.min(c,d-g)},m=ze(t.copiedImage);this.dispatch("CREATE_IMAGE",{figureId:i,sheetId:n,position:p,size:{height:g,width:u},definition:m}),o.isCutOperation&&this.dispatch("DELETE_FIGURE",{sheetId:t.sheetId,id:t.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}isPasteAllowed(e,t,o,s){return 0===t.length?"EmptyTarget":void 0!==s?.pasteOption?"WrongFigurePasteOption":"Success"}}),Pc.cellHandlers.add("dataValidation",class extends Aa{uuidGenerator=new xa;queuedChanges={};copy(e){const{rowsIndexes:t,columnsIndexes:o}=e,s=e.sheetId,i=[];for(const e of t){const t=[];for(const i of o){const o={sheetId:s,col:i,row:e},n=this.getters.getValidationRuleForCell(o);t.push({position:o,rule:n})}i.push(t)}return{dvRules:i}}paste(e,t,o){if(this.queuedChanges={},o.pasteOption)return;const s=e.zones,i=e.sheetId;o.isCutOperation?this.pasteFromCut(i,s,t):this.pasteFromCopy(i,s,t.dvRules),this.executeQueuedChanges()}pasteFromCut(e,t,o){const s=t[0];this.pasteZone(e,s.left,s.top,o.dvRules,{isCutOperation:!0})}pasteZone(e,t,o,s,i){for(const[n,r]of s.entries())for(const[s,a]of r.entries()){const r={col:t+s,row:o+n,sheetId:e};this.pasteDataValidation(a,r,i?.isCutOperation)}}pasteDataValidation(e,t,o){if(e){const s=hs(t),i=hs(e.position),n=e.rule;if(!n){const e=this.getters.getValidationRuleForCell(t);return void(e&&this.adaptDataValidationRule(t.sheetId,e,[],[s]))}const r=[];if(o&&r.push(i),e.position.sheetId===t.sheetId){const o=this.getDataValidationRuleToCopyTo(t.sheetId,n,!1);this.adaptDataValidationRule(e.position.sheetId,o,[s],r)}else{const o=this.getters.getValidationRuleForCell(e.position);o&&this.adaptDataValidationRule(e.position.sheetId,o,[],r);const i=this.getDataValidationRuleToCopyTo(t.sheetId,n);this.adaptDataValidationRule(t.sheetId,i,[s],[])}}}getDataValidationRuleToCopyTo(e,t,o=!0){let s=this.getters.getDataValidationRules(e).find((e=>ft(t.criterion,e.criterion)&&t.isBlocking===e.isBlocking));const i=this.queuedChanges[e];return!s&&i&&(s=i.find((e=>ft(t.criterion,e.rule.criterion)&&t.isBlocking===e.rule.isBlocking))?.rule),s||{...t,id:o?this.uuidGenerator.smallUuid():t.id,ranges:[]}}adaptDataValidationRule(e,t,o,s){this.queuedChanges[e]||(this.queuedChanges[e]=[]);const i=this.queuedChanges[e].find((e=>e.rule.id===t.id));i?(i.toAdd.push(...o),i.toRemove.push(...s)):this.queuedChanges[e].push({toAdd:o,toRemove:s,rule:t})}executeQueuedChanges(){for(const e in this.queuedChanges)for(const{toAdd:t,toRemove:o,rule:s}of this.queuedChanges[e]){const i=s.ranges.map((e=>e.zone)),n=_o(i,o),r=_o([...n,...t],[]);0!==r.length?this.dispatch("ADD_DATA_VALIDATION_RULE",{rule:{id:s.id,criterion:s.criterion,isBlocking:s.isBlocking},ranges:r.map((t=>this.getters.getRangeDataFromZone(e,t))),sheetId:e}):this.dispatch("REMOVE_DATA_VALIDATION_RULE",{sheetId:e,id:s.id})}}}).add("cell",Dc).add("sheet",class extends Aa{isPasteAllowed(e,t,o,s){if(!("cells"in o))return"Success";const{xSplit:i,ySplit:n}=this.getters.getPaneDivisions(e);for(const e of Ea(t,o.cells))if(e.left<i&&e.right>=i||e.top<n&&e.bottom>=n)return"FrozenPaneOverlap";return"Success"}}).add("merge",class extends Aa{copy(e){const t=this.getters.getActiveSheetId(),{rowsIndexes:o,columnsIndexes:s}=e,i=[];for(const e of o){const o=[];for(const i of s){const s={col:i,row:e,sheetId:t};o.push(this.getters.getMerge(s))}i.push(o)}return{merges:i,sheetId:t}}paste(e,t,o){if(o.isCutOperation){const e=t.merges.flat().filter(lt);this.dispatch("REMOVE_MERGE",{sheetId:t.sheetId,target:e})}this.pasteFromCopy(e.sheetId,e.zones,t.merges,o)}pasteZone(e,t,o,s){for(const[i,n]of s.entries())for(const[s,r]of n.entries()){const n={col:t+s,row:o+i,sheetId:e};this.pasteMerge(r,n)}}pasteMerge(e,t){if(!e)return;if(this.getters.isInMerge(t))return;const{sheetId:o,col:s,row:i}=t;this.dispatch("ADD_MERGE",{sheetId:o,force:!0,target:[{left:s,top:i,right:s+e.right-e.left,bottom:i+e.bottom-e.top}]})}}).add("border",_a).add("table",Mc).add("conditionalFormat",Fc).add("references",class extends Aa{copy(e){return{zones:e.clippedZones,sheetId:e.sheetId}}paste(e,t,o){if(o.isCutOperation){const o=e.zones[0];this.dispatch("MOVE_RANGES",{target:t.zones,sheetId:t.sheetId,targetSheetId:e.sheetId,col:o.left,row:o.top})}}});class Vc{subscriptions={};on(e,t,o){if(!o)throw new Error("Missing callback");this.subscriptions[e]||(this.subscriptions[e]=[]),this.subscriptions[e].push({owner:t,callback:o})}trigger(e,t){const o=this.subscriptions[e]||[];for(let e=0,s=o.length;e<s;e++){const s=o[e];s.callback.call(s.owner,t)}}off(e,t){const o=this.subscriptions[e];o&&(this.subscriptions[e]=o.filter((e=>e.owner!==t)))}clear(){this.subscriptions={}}}class Lc extends Vc{dependencies=new Map;factory=new Hc(this.get.bind(this));inject(e,t){if(this.dependencies.has(e)&&this.dependencies.get(e)!==t)throw new Error(`Store ${e.name} already has an instance`);this.dependencies.set(e,t)}get(e){return this.dependencies.has(e)||this.dependencies.set(e,this.instantiate(e)),this.dependencies.get(e)}instantiate(e,...t){return this.factory.build(e,...t)}resetStores(){this.dependencies.clear()}}class Hc{get;pendingBuilds=new Set;constructor(e){this.get=e}build(e,...t){if(this.pendingBuilds.has(e))throw new Error(`Circular dependency detected: ${[...this.pendingBuilds,e].map((e=>e.name)).join(" -> ")}`);this.pendingBuilds.add(e);const o=new e(this.get,...t);return this.pendingBuilds.delete(e),o}}class Uc{get;disposeCallbacks=[];constructor(e){this.get=e}onDispose(e){this.disposeCallbacks.push(e)}dispose(){this.disposeCallbacks.forEach((e=>e()))}}function Bc(){const e=t.useEnv();if(e.__spreadsheet_stores__ instanceof Lc)return e.__spreadsheet_stores__;const o=new Lc;return t.useSubEnv({__spreadsheet_stores__:o,getStore:e=>Wc(o.get(e),(()=>o.trigger("store-updated")))}),o}function zc(e){const o=qc(t.useEnv()),s=o.get(e);return Gc(o,s)}function $c(e,...o){const s=qc(t.useEnv()),i=s.instantiate(e,...o);return t.onWillUnmount((()=>i.dispose())),Gc(s,i)}function Gc(e,o){const s=t.useComponent();return Wc(o,(()=>{"mounted"===t.status(s)&&e.trigger("store-updated")}))}function Wc(e,t){return new Proxy(e,{get(o,s,i){const n=o,r=Reflect.get(o,s,n);if(e.mutators?.includes(s)){const e=new Proxy(r,{apply(e,o,s){"noStateChange"!==Reflect.apply(e,n,s)&&t()}});return e}return r}})}function qc(e){const t=e.__spreadsheet_stores__;if(!(t instanceof Lc))throw new Error("No store provider found. Did you forget to call useStoreProvider()?");return t}const Zc=(jc="Model",class{constructor(e){throw new Error(`This is a abstract store for ${jc}, it cannot be instantiated.\nDid you forget to inject your store instance?\n\nconst stores = useStoreProvider();\nstores.inject(MyMetaStore, storeInstance);\n`)}});var jc;class Yc{mutators=["register","unRegister","drawLayer"];renderers={};register(e){if(e.renderingLayers.length)for(const t of e.renderingLayers)this.renderers[t]||(this.renderers[t]=[]),this.renderers[t].push(e)}unRegister(e){for(const t of Object.keys(this.renderers))this.renderers[t]=this.renderers[t].filter((t=>t!==e))}drawLayer(e,t){const o=this.renderers[t];if(o)for(const s of o)e.ctx.save(),s.drawLayer(e,t),e.ctx.restore();return"noStateChange"}}class Xc extends Uc{model=this.get(Zc);getters=this.model.getters;renderer=this.get(Yc);constructor(e){super(e),this.model.on("command-dispatched",this,this.handle),this.model.on("command-finalized",this,this.finalize),this.renderer.register(this),this.onDispose((()=>{this.model.off("command-dispatched",this),this.model.off("command-finalized",this),this.renderer.unRegister(this)}))}get renderingLayers(){return[]}handle(e){}finalize(){}drawLayer(e,t){}}const Kc={id:"void-composer",get editionMode(){return"inactive"},startEdition:()=>{throw new Error("No composer is registered")},stopEdition:()=>{throw new Error("No composer is registered")},setCurrentContent:()=>{throw new Error("No composer is registered")}};class Jc extends Xc{mutators=["focusComposer","focusActiveComposer"];activeComposer=Kc;_focusMode="inactive";get focusMode(){return"inactive"===this.activeComposer.editionMode?"inactive":this._focusMode}focusComposer(e,t){if(this.activeComposer=e,this.getters.isReadonly())return"noStateChange";this._focusMode=t.focusMode||"contentFocus","inactive"!==this._focusMode&&this.setComposerContent(t)}focusActiveComposer(e){if(this.getters.isReadonly())return"noStateChange";if(!this.activeComposer)throw new Error("No composer is registered");this._focusMode=e.focusMode||"contentFocus","inactive"!==this._focusMode&&this.setComposerContent(e)}setComposerContent({content:e,selection:t}){"inactive"===this.activeComposer.editionMode?this.activeComposer.startEdition(e,t):e&&this.activeComposer.setCurrentContent(e,t)}}const Qc={};let eh=0;function th(e,...t){const o="__sheet__"+eh++;return function(e,t){const o=document.createElement("style");o.textContent=function(e){const t=e.split(/(\{|\}|;)/).map((e=>e.trim())),o=[],s=[];let i=[];function n(e,t){const s=[];for(const i of o[e]){let r=t&&t+" "+i||i;r.includes("&")&&(r=i.replace(/&/g,t||"")),e<o.length-1&&(r=n(e+1,r)),s.push(r)}return s.join(", ")}function r(){i.length&&(s.push(n(0)+" {"),s.push(...i),s.push("}"),i=[])}for(;t.length;){let e=t.shift();"}"===e?(r(),o.pop()):("{"===t[0]&&(r(),o.push(e.split(/\s*,\s*/)),t.shift()),";"===t[0]&&i.push(" "+e+";"))}return s.join("\n")}(t),Qc[e]=o}(o,String.raw(e,...t)),function(e){const t=Qc[e];t.setAttribute("component",e),document.head.appendChild(t)}(o),o}function oh({strikethrough:e,underline:t}){return e||t?`${e?"line-through":""} ${t?"underline":""}`:"none"}function sh(e){const t=function(e){const t={};if(!e)return t;e.bold&&(t["font-weight"]="bold");e.italic&&(t["font-style"]="italic");if(e.strikethrough||e.underline){let o=e.strikethrough?"line-through":"";o=e.underline?o+" underline":o,t["text-decoration"]=o}e.textColor&&(t.color=e.textColor);return t}(e);return e?(e.fillColor&&(t.background=e.fillColor),t):t}function ih(e){let t="";for(const o in e)e[o]&&(t+=`${o}:${e[o]}; `);return t}const nh=new n;function rh(){if(window.Chart&&!window.Chart.registry.plugins.get("chartShowValuesPlugin"))for(const e of nh.getAll())e.register(window.Chart)}const ah="x1",lh="xMovingAverage";function ch(e,t,o,s){let i=!1;const n=[];for(let s in o){let r=o[s];if(r.labelCell){const e=uh(r.labelCell,t);r.labelCell!==e&&(i=!0,r={...r,labelCell:e})}const a=uh(r.dataRange,t);void 0===a||e.getRangeString(a,a.sheetId)===wi.InvalidReference?(i=!0,r=void 0):a!==r.dataRange&&(i=!0,r={...r,dataRange:a}),n[s]=r}let r=s;const a=uh(r,t);a!==r&&(i=!0,r=a);return{isStale:i,dataSets:n.filter(lt),labelRange:r}}function hh(e,t,o){return o.map((o=>({dataRange:Yr(e,t,o.dataRange),labelCell:o.labelCell?Yr(e,t,o.labelCell):void 0})))}function dh(e,t,o){return o?Yr(e,t,o):void 0}function uh(e,t){if(!e)return;const o=t(e);switch(o.changeType){case"NONE":return e;case"REMOVE":return;default:return o.range}}function gh(e,t,o,s){const i=[];for(const n of t){const t=e.getRangeFromSheetXC(o,n.dataRange),{unboundedZone:r,sheetId:a,invalidSheetName:l,invalidXc:c}=t;if(!l&&!c)if(r.left!==r.right&&r.top!==r.bottom){if(void 0===r.right)continue;for(let t=r.left;t<=r.right;t++){const o={...r,left:t,right:t};i.push({...ph(e,a,o,s?{top:o.top,bottom:o.top,left:o.left,right:o.left}:void 0),backgroundColor:n.backgroundColor,rightYAxis:"y1"===n.yAxisId,customLabel:n.label})}}else i.push({...ph(e,a,r,s?{top:r.top,bottom:r.top,left:r.left,right:r.left}:void 0),backgroundColor:n.backgroundColor,rightYAxis:"y1"===n.yAxisId,customLabel:n.label})}return i}function ph(e,t,o,s){if(o.left!==o.right&&o.top!==o.bottom)throw new Error(`Zone should be a single column or row: ${qo(o)}`);if(s){const i=qo(o),n=qo(s);return{labelCell:e.getRangeFromSheetXC(t,n),dataRange:e.getRangeFromSheetXC(t,i)}}return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,qo(o))}}function mh(e,t){const o=t.labelCell?.zone;let s=t.dataRange.zone;if(o){const{numberOfRows:e,numberOfCols:t}=ss(s);1===e?s={...s,left:s.left+1}:1===t&&(s={...s,top:s.top+1})}const i=t.dataRange.clone({zone:s});let n={};return t.customLabel?n={text:t.customLabel}:t.labelCell&&(n={reference:e.getRangeString(t.labelCell,"forceSheetReference",{useBoundedReference:!0})}),{label:n,range:e.getRangeString(i,"forceSheetReference",{useBoundedReference:!0}),backgroundColor:t.backgroundColor,rightYAxis:t.rightYAxis}}function fh(e,t,o){if(!t)return;let s={...t.zone};o&&t.zone.bottom>t.zone.top&&(s.top=s.top+1);const i=t.clone({zone:s});return e.getRangeString(i,"forceSheetReference",{useBoundedReference:!0})}function vh(e,t){let o;if(e.labelRange){const s=Nc(zo(e.labelRange),t);o=s?qo(s):void 0}const s=e.dataSets.map((e=>zo(e.dataRange))).map((e=>Nc(e,t))).filter(lt).map((e=>({dataRange:qo(e)})));return{...e,labelRange:o,dataSets:s}}function bh(e){return e&&qt(e)<.3?"#FFFFFF":"#000000"}function Sh(e){return e&&qt(e)<.3?"#C8C8C8":"#666666"}function yh(e){if(e.dataSets){const t=void 0!==e.dataSets.find((e=>!Br.test(e.dataRange)));if(t)return"InvalidDataSet";if(e.dataSets.map((e=>zo(e.dataRange))).some((e=>e.top!==e.bottom&&us(e))))return"InvalidDataSet"}return"Success"}function Ch(e){if(e.labelRange){if(!Br.test(e.labelRange||""))return"InvalidLabelRange"}return"Success"}function wh(e,t,o){if(!o)return!1;if(!e)return!1;if(!t)return!0;const s=gs(t.dataRange.zone);return!(gs(e.zone)<s)}function xh(e,t){const{x:o,y:s}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:n}=e.getActiveSheetScrollInfo(),{width:r,height:a}=e.getVisibleRect(e.getActiveMainViewport());return{x:o+i+Math.max(0,(r-t.width)/2),y:s+n+Math.max(0,(a-t.height)/2)}}function Ih(e){let t=!1,o=!1;if("horizontal"in e&&e.horizontal)return{useLeftAxis:!0,useRightAxis:!1};for(const s of e.dataSets||[])"y1"===s.yAxisId?o=!0:t=!0;return t||=!o,{useLeftAxis:t,useRightAxis:o}}function Eh(e,t){return(o,s)=>{const i=e?.[s];return Rh({format:i,locale:t})(o)}}function Rh(e){return t=>{if(t=Number(t),isNaN(t))return t;const{locale:o,format:s}=e;return _h(Kn(t,{locale:o,format:!s&&Math.abs(t)>=1e3?"#,##":s}))}}const Th=[{value:"left",label:Uo("Left")},{value:"right",label:Uo("Right")}];function Ah(e,t){const o=[],s=Ot(t.map((e=>e.data.length)));for(let t=0;t<=s;t++)o.push(e.next());return o}function _h(e){return e?e.length>we?e.substring(0,we)+"…":e:""}function Dh(e){return e===ah||e===lh}const Oh={id:"chartShowValuesPlugin",afterDatasetsDraw(e,t,o){if(!o.showValues)return;const s=e._metasets?.[0]?.data;if(!s)return;const i=e.ctx;switch(i.save(),i.textAlign="center",i.textBaseline="middle",i.miterLimit=1,e.config.type){case"pie":case"doughnut":!function(e,t,o){for(const s of e._metasets)for(let e=0;e<s._parsed.length;e++){const i=Number(s._parsed[e]);if(isNaN(i)||0===i)continue;const n=s.data[e],{startAngle:r,endAngle:a,innerRadius:l,outerRadius:c}=n,h=(r+a)/2,d=(l+c)/2,u=n.x+d*Math.cos(h),g=n.y+d*Math.sin(h),p=t.callback(i,s,e),m=12,f=ha(o,p,{fontSize:m},"px"),v=c-l;if(f>=v||v<m)continue;const b=a-r,S=2*d*Math.tan(b/2);b<Math.PI/2&&(f>=S||S<m)||(o.fillStyle=bh(t.background),o.strokeStyle=t.background||"#ffffff",Fh(p,u,g,o))}}(e,o,i);break;case"bar":case"line":case"radar":o.horizontal?function(e,t,o){const s=e.chartArea.right,i=e.chartArea.left,n={};for(const r of e._metasets){if(Dh(r.xAxisID))return;const a=e.scales[r.xAxisID].getPixelForValue(0);for(let e=0;e<r._parsed.length;e++){const l=Number(r._parsed[e].x);if(isNaN(l))continue;const c=t.callback(l,r,e),h=r.data[e],d=h.y,u=ha(o,c,{fontSize:12},"px"),g=3;let p;Math.abs(h.x-a)<u?p=l<0?a-u/2-g:a+u/2+g:(p=l<0?h.x+h.width/2:h.x-h.width/2,p=Math.min(p,s),p=Math.max(p,i)),n[d]||(n[d]=[]);for(const e of n[d])Math.abs(e-p)<u&&(p=l<0?e-u-g:e+u+g);n[d].push(p),o.fillStyle=h.options.backgroundColor,o.strokeStyle=t.background||"#ffffff",Fh(c,p,d,o)}}}(e,o,i):function(e,t,o){const s=e.chartArea.bottom,i=e.chartArea.top,n={};for(const r of e._metasets){if(Dh(r.xAxisID)||r.hidden)continue;const a=e.scales[r.yAxisID];for(let l=0;l<r._parsed.length;l++){const c=r._parsed[l],h=Number("radar"===e.config.type?c.r:c.y);if(isNaN(h))continue;const d=r.data[l],u=d.x;let g=0;if("line"===e.config.type||"radar"===e.config.type)g=h<0?d.y+10:d.y-10;else{const e=a.getPixelForValue(0),t=12;g=Math.abs(e-d.y)<t?h<0?e+t/2:e-t/2:h<0?d.y-d.height/2:d.y+d.height/2}g=Math.min(g,s),g=Math.max(g,i),n[u]||(n[u]=[]);for(const e of n[u]||[])Math.abs(e-g)<13&&(g=h<0?e+13:e-13);n[u].push(g),o.fillStyle=d.options.backgroundColor,o.strokeStyle=t.background||"#ffffff";Fh(t.callback(Number(h),r,l),u,g,o)}}}(e,o,i)}i.restore()}};function Fh(e,t,o,s){s.lineWidth=3,s.strokeText(e,t,o),s.lineWidth=1,s.fillText(e,t,o)}const Mh={id:"waterfallLinesPlugin",beforeDraw(e,t,o){if(!o.showConnectorLines)return;const s=e._metasets?.[0]?.data;if(!s)return;const i=e.ctx;i.save(),i.setLineDash([3,2]);for(let e=0;e<s.length;e++){const t=s[e];if(0===t.height)continue;const o=Nh(s,e);if(!o)break;const n=Ph(t),r=Ph(o),a=t.$context.raw,l=a[1]-a[0],c=Math.round(l<0?n.bottom-1:n.top),h=Math.round(n.right),d=Math.round(r.left);i.strokeStyle="#999",i.beginPath(),i.moveTo(h+1,c+.5),i.lineTo(d,c+.5),i.stroke()}i.restore()}};function Ph(e){const t=e.base<e.y;return{left:e.x-e.width/2,right:e.x+e.width/2,bottom:t?e.base+e.height:e.y+e.height,top:t?e.base:e.y}}function Nh(e,t){return e.find(((e,o)=>o>t&&0!==e.height))}th`
2
2
  .o-spreadsheet {
3
3
  .o-chart-custom-tooltip {
4
4
  font-size: 12px;
@@ -30,7 +30,7 @@
30
30
  }
31
31
  `;function Zy(e){return e=`<svg xmlns="http://www.w3.org/2000/svg" ${e.slice(4)}`,"data:image/svg+xml; charset=utf8, "+encodeURIComponent(e)}const jy={arrowGood:{template:"ARROW_UP",img:Zy('<svg class="o-icon arrow-up" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#6AA84F" d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path></svg>')},arrowNeutral:{template:"ARROW_RIGHT",img:Zy('<svg class="o-icon arrow-right" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#F0AD4E" d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path></svg>')},arrowBad:{template:"ARROW_DOWN",img:Zy('<svg class="o-icon arrow-down" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#E06666" d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path></svg>')},smileyGood:{template:"SMILE",img:Zy('<svg class="o-icon smile" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#6AA84F" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"></path></svg>')},smileyNeutral:{template:"MEH",img:Zy('<svg class="o-icon meh" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#F0AD4E" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"></path></svg>')},smileyBad:{template:"FROWN",img:Zy('<svg class="o-icon frown" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#E06666" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"></path></svg>')},dotGood:{template:"GREEN_DOT",img:Zy('<svg class="o-icon green-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#6AA84F" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotNeutral:{template:"YELLOW_DOT",img:Zy('<svg class="o-icon yellow-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#F0AD4E" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotBad:{template:"RED_DOT",img:Zy('<svg class="o-icon red-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#E06666" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')}},Yy={arrows:{good:"arrowGood",neutral:"arrowNeutral",bad:"arrowBad"},smiley:{good:"smileyGood",neutral:"smileyNeutral",bad:"smileyBad"},dots:{good:"dotGood",neutral:"dotNeutral",bad:"dotBad"}};var Xy;qy.add("conditional_formatting",((e,t)=>{const o=e.getConditionalIcon(t);if(o)return jy[o].img})),function(e){e.DiagonalBorderNotSupported="Diagonal Borders",e.BorderStyleNotSupported="Border style",e.FillStyleNotSupported="Fill Style",e.FontNotSupported="Font",e.HorizontalAlignmentNotSupported="Horizontal Alignment",e.VerticalAlignmentNotSupported="Vertical Alignments",e.MultipleRulesCfNotSupported="Multiple rules conditional formats",e.CfTypeNotSupported="Conditional format type",e.CfFormatBorderNotSupported="Borders in conditional formats",e.CfFormatAlignmentNotSupported="Alignment in conditional formats",e.CfFormatNumFmtNotSupported="Num formats in conditional formats",e.CfIconSetEmptyIconNotSupported="IconSets with empty icons",e.BadlyFormattedHyperlink="Badly formatted hyperlink",e.NumFmtIdNotSupported="Number format",e.TimeDataValidationNotSupported="Time data validation rules",e.TextLengthDataValidationNotSupported="Text length data validation rules",e.WholeNumberDataValidationNotSupported="Whole number data validation rules",e.NotEqualDateDataValidationNotSupported="Not equal date data validation rules"}(Xy||(Xy={}));class Ky{_parsingWarnings=new Set;_conversionWarnings=new Set;addParsingWarning(e){this._parsingWarnings.add(e)}addConversionWarning(e){this._conversionWarnings.add(e)}get warnings(){return[...this._parsingWarnings,...this._conversionWarnings]}generateNotSupportedWarning(e,t,o){let s=`${e} ${t?'"'+t+'" is':"are"} not yet supported. `;o&&(s+=`Only ${o.join(", ")} are currently supported.`),this._conversionWarnings.has(s)||this._conversionWarnings.add(s)}}const Jy=["thin","medium","thick","dashed","dotted"],Qy=["general","left","center","right"],eC=["top","center","bottom"],tC=["Arial"],oC=["solid"],sC=["expression","cellIs","colorScale","iconSet","containsText","notContainsText","beginsWith","endsWith","containsBlanks","notContainsBlanks"],iC={b:"boolean",d:"date",e:"error",inlineStr:"inlineStr",n:"number",s:"sharedString",str:"str"},nC={dashDot:"thin",dashDotDot:"thin",dashed:"dashed",dotted:"dotted",double:"thin",hair:"thin",medium:"medium",mediumDashDot:"thin",mediumDashDotDot:"thin",mediumDashed:"thin",none:void 0,slantDashDot:"thin",thick:"thick",thin:"thin"},rC={general:void 0,left:"left",center:"center",right:"right",fill:"left",justify:"left",centerContinuous:"center",distributed:"center"},aC={top:"top",center:"middle",bottom:"bottom",justify:"middle",distributed:"middle"},lC={top:"top",middle:"center",bottom:"bottom"};const cC={aboveAverage:void 0,expression:void 0,cellIs:void 0,colorScale:void 0,dataBar:void 0,iconSet:void 0,top10:void 0,uniqueValues:void 0,duplicateValues:void 0,containsText:"ContainsText",notContainsText:"NotContains",beginsWith:"BeginsWith",endsWith:"EndsWith",containsBlanks:"IsEmpty",notContainsBlanks:"IsNotEmpty",containsErrors:void 0,notContainsErrors:void 0,timePeriod:void 0},hC={num:"number",percent:"percentage",max:"value",min:"value",percentile:"percentile",formula:"formula"},dC={NoIcons:void 0,"3Arrows":"arrows","3ArrowsGray":"arrows","3Symbols":"smiley","3Symbols2":"smiley","3Signs":"dots","3Flags":"dots","3TrafficLights1":"dots","3TrafficLights2":"dots","4Arrows":"arrows","4ArrowsGray":"arrows","4RedToBlack":"dots","4Rating":"smiley","4TrafficLights":"dots","5Arrows":"arrows","5ArrowsGray":"arrows","5Rating":"smiley","5Quarters":"dots","3Stars":"smiley","3Triangles":"arrows","5Boxes":"dots"},uC={none:"none",b:"bottom",t:"top",l:"left",r:"right",tr:"right"},gC={areaChart:void 0,area3DChart:void 0,lineChart:"line",line3DChart:void 0,stockChart:void 0,radarChart:"radar",scatterChart:"scatter",pieChart:"pie",pie3DChart:void 0,doughnutChart:"pie",barChart:"bar",bar3DChart:void 0,ofPieChart:void 0,surfaceChart:void 0,surface3DChart:void 0,bubbleChart:void 0,comboChart:"combo"},pC={1:"AVERAGE",2:"COUNT",3:"COUNTA",4:"MAX",5:"MIN",6:"PRODUCT",7:"STDEV",8:"STDEVP",9:"SUM",10:"VAR",11:"VARP",101:"AVERAGE",102:"COUNT",103:"COUNTA",104:"MAX",105:"MIN",106:"PRODUCT",107:"STDEV",108:"STDEVP",109:"SUM",110:"VAR",111:"VARP"},mC={0:"",1:"0",2:"0.00",3:"#,#00",4:"#,##0.00",9:"0%",10:"0.00%",11:void 0,12:void 0,13:void 0,14:"m/d/yyyy",15:"m/d/yyyy",16:"m/d/yyyy",17:"m/d/yyyy",18:"hh:mm:ss a",19:"hh:mm:ss a",20:"hhhh:mm:ss",21:"hhhh:mm:ss",22:"m/d/yy h:mm",37:void 0,38:void 0,39:void 0,40:void 0,45:"hhhh:mm:ss",46:"hhhh:mm:ss",47:"hhhh:mm:ss",48:void 0,49:"@"},fC={0:1,"0.00":2,"#,#00":3,"#,##0.00":4,"0%":9,"0.00%":10,"0.00E+00":11,"# ?/?":12,"# ??/??":13,"mm-dd-yy":14,"d-mm-yy":15,"mm-yy":16,"mmm-yy":17,"h:mm AM/PM":18,"h:mm:ss AM/PM":19,"h:mm":20,"h:mm:ss":21,"m/d/yy h:mm":22,"#,##0 ;(#,##0)":37,"#,##0 ;[Red](#,##0)":38,"#,##0.00;(#,##0.00)":39,"#,##0.00;[Red](#,##0.00)":40,"mm:ss":45,"[h]:mm:ss":46,"mmss.0":47,"##0.0E+0":48,"@":49,"hh:mm:ss a":19},vC={0:"000000",1:"FFFFFF",2:"FF0000",3:"00FF00",4:"0000FF",5:"FFFF00",6:"FF00FF",7:"00FFFF",8:"000000",9:"FFFFFF",10:"FF0000",11:"00FF00",12:"0000FF",13:"FFFF00",14:"FF00FF",15:"00FFFF",16:"800000",17:"008000",18:"000080",19:"808000",20:"800080",21:"008080",22:"C0C0C0",23:"808080",24:"9999FF",25:"993366",26:"FFFFCC",27:"CCFFFF",28:"660066",29:"FF8080",30:"0066CC",31:"CCCCFF",32:"000080",33:"FF00FF",34:"FFFF00",35:"00FFFF",36:"800080",37:"800000",38:"008080",39:"0000FF",40:"00CCFF",41:"CCFFFF",42:"CCFFCC",43:"FFFF99",44:"99CCFF",45:"FF99CC",46:"CC99FF",47:"FFCC99",48:"3366FF",49:"33CCCC",50:"99CC00",51:"FFCC00",52:"FF9900",53:"FF6600",54:"666699",55:"969696",56:"003366",57:"339966",58:"003300",59:"333300",60:"993300",61:"993366",62:"333399",63:"333333",64:"000000",65:"FFFFFF"},bC={"image/avif":"avif","image/bmp":"bmp","image/gif":"gif","image/vnd.microsoft.icon":"ico","image/jpeg":"jpeg","image/png":"png","image/tiff":"tiff","image/webp":"webp"},SC={avif:"image/avif",bmp:"image/bmp",gif:"image/gif",ico:"image/vnd.microsoft.icon",jpeg:"image/jpeg",png:"image/png",tiff:"image/tiff",webp:"image/webp",jpg:"image/jpeg"},yC={between:"isBetween",notBetween:"isNotBetween",equal:"isEqual",notEqual:"isNotEqual",greaterThan:"isGreaterThan",greaterThanOrEqual:"isGreaterOrEqualTo",lessThan:"isLessThan",lessThanOrEqual:"isLessOrEqualTo"},CC={between:"dateIsBetween",notBetween:"dateIsNotBetween",equal:"dateIs",greaterThan:"dateIsAfter",greaterThanOrEqual:"dateIsOnOrAfter",lessThan:"dateIsBefore",lessThanOrEqual:"dateIsOnOrBefore"};function wC(e){if(!e)return;let t;if(e.rgb)t=e.rgb;else if(e.auto)t=Ty;else{if(!e.indexed)return;t=vC[e.indexed]}var o;return t=6===(o=t).length?"#"+o+"FF":"#"+o.slice(2)+o.slice(0,2),e.tint&&(t=function(e,t){const o=jt(e),s=Xt(o);t<0&&(s.l=s.l*(1+t));t>0&&(s.l=s.l*(1-t)+(100-100*(1-t)));return Zt(Yt(s))}(t,e.tint)),t=t.toUpperCase(),9===t.length&&t.endsWith("FF")&&(t=t.slice(0,7)),t}function xC(e){return 9===e.length&&(e=e.slice(0,7)),parseInt(e.replace("#",""),16)}function IC(e,t){const o=e.split("/"),s=t.split("/");let i="",n=0;for(let e=0;e<o.length-1;e++)o[e]===s[e]?n++:i+="../";return i+=s.slice(n).join("/"),i}function EC(e,t=0){const o={};for(let s=0;s<e.length;s++)e[s]&&(o[s+t]=e[s]);return o}function RC(e){return e.replace(/_x([0-9a-zA-Z]{4})_/g,((e,t)=>String.fromCharCode(parseInt(t,16))))}function TC(e,t,o){return"COL"===t?(e.cols[o]||(e.cols[o]={}),e.cols[o]):(e.rows[o]||(e.rows[o]={}),e.rows[o])}const AC=/^(yy|yyyy|m{1,5}|d{1,4}|h{1,2}|s{1,2}|am\/pm|a\/m|\s|-|\/|\.|:)+$/i;function _C(e,t,o){if(0===e)return;let s=mC[e]||t.find((t=>t.id===e))?.format;if(s)try{let e=s.replace(/\[(.*)-[A-Z0-9]{3}\]/g,"[$1]");if(e=e.replace(/\[\$\]/g,""),e=e.replace(/_.{1}/g,""),e=e.replace(/\*.{1}/g,""),function(e){return AC.test(e)}(e)&&(e=function(e){return e=e.toLowerCase(),e=e.replace(/mmmmm/g,"mmm"),e=e.replace(/am\/pm|a\/m/g,"a"),e=e.replace(/hhhh/g,"hh"),e=e.replace(/\bh\b/g,"hh"),e}(e)),function(e){try{return Kn(0,{format:e,locale:fi}),!0}catch(e){return!1}}(e))return e}catch(e){}o.generateNotSupportedWarning(Xy.NumFmtIdNotSupported,s||`nmFmtId ${e}`)}function DC(e,t){const o=e.borders.map((e=>{!function(e,t){e.diagonal&&t.generateNotSupportedWarning(Xy.DiagonalBorderNotSupported)}(e,t);const o={top:OC(e.top,t),bottom:OC(e.bottom,t),left:OC(e.left,t),right:OC(e.right,t)};return Object.keys(o).forEach((e=>void 0===o[e]&&delete o[e])),o}));return EC(o,1)}function OC(e,t){if(!e)return;!function(e,t){Jy.includes(e.style)||t.generateNotSupportedWarning(Xy.BorderStyleNotSupported,e.style,Jy)}(e,t);const o=nC[e.style];return o?{style:o,color:wC(e.color)}:void 0}function FC(e,t){return EC(e.styles.map((o=>MC({fontStyle:e.fonts[o.fontId],fillStyle:e.fills[o.fillId],alignment:o.alignment},t))),1)}function MC(e,t){return function(e,t,o){e&&e.name&&!tC.includes(e.name)&&o.generateNotSupportedWarning(Xy.FontNotSupported,e.name,tC);t&&t.patternType&&!oC.includes(t.patternType)&&o.generateNotSupportedWarning(Xy.FillStyleNotSupported,t.patternType,oC)}(e?.fontStyle,e?.fillStyle,t),function(e,t){e&&!Qy.includes(e)&&t.generateNotSupportedWarning(Xy.HorizontalAlignmentNotSupported,e,Qy)}(e?.alignment?.horizontal,t),function(e,t){e&&!eC.includes(e)&&t.generateNotSupportedWarning(Xy.VerticalAlignmentNotSupported,e,eC)}(e?.alignment?.vertical,t),{bold:e.fontStyle?.bold,italic:e.fontStyle?.italic,strikethrough:e.fontStyle?.strike,underline:e.fontStyle?.underline,verticalAlign:e.alignment?.vertical?aC[e.alignment.vertical]:void 0,align:e.alignment?.horizontal?rC[e.alignment.horizontal]:void 0,fillColor:"solid"===e.fillStyle?.patternType?wC(e.fillStyle?.fgColor):wC(e.fillStyle?.bgColor),textColor:wC(e.fontStyle?.color),fontSize:e.fontStyle?.size,wrapping:e.alignment?.wrapText?"wrap":"overflow"}}function PC(e,t){const o=[];for(let s of e.styles){const i=_C(s.numFmtId,e.numFmts,t);i&&(o[s.numFmtId]=i)}return EC(o,1)}function NC(e,t,o){const s=[];let i=1;for(let r of e){if(0===r.cfRules.length)continue;UC(r,t,o);const e=r.cfRules[0];let a;const l=[];if(void 0!==e.dxfId||"colorScale"===e.type||"iconSet"===e.type||"dataBar"===e.type){switch(e.type){case"aboveAverage":case"containsErrors":case"notContainsErrors":case"duplicateValues":case"expression":case"top10":case"uniqueValues":case"timePeriod":continue;case"dataBar":const t=kC(i++,r);t&&s.push(t);continue;case"colorScale":const c=VC(i++,r);c&&s.push(c);continue;case"iconSet":const h=LC(i++,r,o);h&&s.push(h);continue;case"containsText":case"notContainsText":case"beginsWith":case"endsWith":if(!e.text)continue;a=cC[e.type],l.push(e.text);break;case"containsBlanks":case"notContainsBlanks":a=cC[e.type];break;case"cellIs":if(!e.operator||!e.formula||0===e.formula.length)continue;a=(n=e.operator).slice(0,1).toUpperCase()+n.slice(1),l.push(e.formula[0]),2===e.formula.length&&l.push(e.formula[1])}a&&void 0!==e.dxfId&&s.push({id:(i++).toString(),ranges:r.sqref,stopIfTrue:e.stopIfTrue,rule:{type:"CellIsRule",operator:a,values:l,style:MC({fontStyle:t[e.dxfId].font,fillStyle:t[e.dxfId].fill},o)}})}}var n;return s}function kC(e,t){const o=t.cfRules[0].dataBar;if(!o)return;const s=xC(wC(o.color)||"#FFFFFF");return{id:e.toString(),stopIfTrue:t.cfRules[0].stopIfTrue,ranges:t.sqref,rule:{type:"DataBarRule",color:s}}}function VC(e,t){const o=t.cfRules[0].colorScale;if(!o||o.cfvos.length!==o.colors.length||o.cfvos.length<2||o.cfvos.length>3)return;const s=[];for(let e=0;e<o.cfvos.length;e++)s.push({color:xC(wC(o.colors[e])||"#FFFFFF"),type:hC[o.cfvos[e].type],value:o.cfvos[e].value});const i=s[0],n=2===s.length?s[1]:s[2],r=3===s.length?s[1]:void 0;return{id:e.toString(),stopIfTrue:t.cfRules[0].stopIfTrue,ranges:t.sqref,rule:{type:"ColorScaleRule",minimum:i,midpoint:r,maximum:n}}}function LC(e,t,o){const s=t.cfRules[0].iconSet;if(!s)return;let i=s.cfvos,n=s.cfIcons;if(i.length<3||n&&n.length<3)return;i.length>3&&(i=[i[0],i[Math.floor(i.length/2)],i[i.length-1]]),n&&n.length>3&&(n=[n[0],n[Math.floor(n.length/2)],n[n.length-1]]);const r=[];for(let e=1;e<=2;e++){const t=hC[i[e].type];if("value"===t)return;r.push({value:i[e].value||"",operator:i[e].gte?"ge":"gt",type:t})}let a={lower:n?HC(n[0].iconSet,n[0].iconId):HC(s.iconSet,0),middle:n?HC(n[1].iconSet,n[1].iconId):HC(s.iconSet,1),upper:n?HC(n[2].iconSet,n[2].iconId):HC(s.iconSet,2)};s.reverse&&(a={upper:a.lower,middle:a.middle,lower:a.upper});for(let e of Object.keys(a))if(!a[e])switch(o.generateNotSupportedWarning(Xy.CfIconSetEmptyIconNotSupported),e){case"upper":a[e]=Yy.dots.good;break;case"middle":a[e]=Yy.dots.neutral;break;case"lower":a[e]=Yy.dots.bad}return{id:e.toString(),stopIfTrue:t.cfRules[0].stopIfTrue,ranges:t.sqref,rule:{type:"IconSetRule",icons:a,upperInflectionPoint:r[1],lowerInflectionPoint:r[0]}}}function HC(e,t){const o=dC[e];return o?0===t?Yy[o].bad:1===t?Yy[o].neutral:Yy[o].good:""}function UC(e,t,o){if(e.cfRules.length>1&&o.generateNotSupportedWarning(Xy.MultipleRulesCfNotSupported),sC.includes(e.cfRules[0].type)||o.generateNotSupportedWarning(Xy.CfTypeNotSupported,e.cfRules[0].type),e.cfRules[0].dxfId){const s=t[e.cfRules[0].dxfId];s.border&&o.generateNotSupportedWarning(Xy.CfFormatBorderNotSupported),s.alignment&&o.generateNotSupportedWarning(Xy.CfFormatAlignmentNotSupported),s.numFmt&&o.generateNotSupportedWarning(Xy.CfFormatNumFmtNotSupported)}}function BC(e){switch(e){case"IsNotEmpty":case"NotContains":return"notContainsBlanks";case"IsEmpty":return"containsBlanks";default:return e.charAt(0).toLowerCase()+e.slice(1)}}function zC(e){return Math.round(ky*e*100)/100}function $C(e){return Math.round(Vy*e*100)/100}function GC(e,t,o,s,i){const n=o?e.styles[o]:{},r=s?e.formats[s]:void 0,a={font:{size:n?.fontSize||fe,color:{rgb:n?.textColor?n.textColor:"000000"},family:2,name:"Arial"},fill:n?.fillColor?{fgColor:{rgb:n.fillColor}}:{reservedAttribute:"none"},numFmt:r?{format:r,id:0}:void 0,border:i||0,alignment:{horizontal:n.align,vertical:n.verticalAlign?lC[n.verticalAlign]:void 0,wrapText:!("wrap"!==n.wrapping&&!t?.includes(Ne))||void 0}};return a.font.strike=!!n?.strikethrough||void 0,a.font.underline=!!n?.underline||void 0,a.font.bold=!!n?.bold||void 0,a.font.italic=!!n?.italic||void 0,a}function WC(e,t){const o=function(e,t){if(!e)return 0;let o=fC[e.format];o||(o=jC(e,t)+zy);return o}(t.numFmt,e.numFmts),s={fontId:jC(t.font,e.fonts),fillId:jC(t.fill,e.fills),borderId:t.border,numFmtId:o,alignment:{vertical:t.alignment.vertical,horizontal:t.alignment.horizontal,wrapText:t.alignment.wrapText}};return jC(s,e.styles)}function qC(e,t,o){let s,i=e.find((e=>e.path===t));return i?(s=`rId${(i.rels.length+1).toString()}`,i.rels.push({...o,id:s})):(s="rId1",e.push({path:t,rels:[{...o,id:s}]})),s}const ZC=new WeakMap;function jC(e,t){let o=ZC.get(t);if(!o){o=new Map;for(let e=0;e<t.length;e++){const s=Cs(t[e]);o.set(s,e)}ZC.set(t,o)}const s=Cs(e);if(o.has(s))return o.get(s);const i=t.length;return t.push(e),o.set(s,i),i}const YC=[];function XC(e){const t=YC.findIndex((t=>t===e));return-1===t?(YC.push(e),YC.length):t+1}const KC=[];function JC(e){const t=KC.findIndex((t=>t===e));return-1===t?(KC.push(e),KC.length):t+1}function QC(e){return Math.round(914400*e/96)}function ew(e,t,o){let s,i,n=e;if(({xc:n,sheetName:s}=qr(e)),s){const e=o.sheets.findIndex((e=>na(e.name,s)));if(e<0)throw new Error("Unable to find a sheet with the name "+s);i=e}else i=Number(t);const r=zo(n);return void 0===r.right&&(r.right=o.sheets[i].colNumber),void 0===r.bottom&&(r.bottom=o.sheets[i].rowNumber),(r.right-r.left+1)*(r.bottom-r.top+1)}function tw(e){return Math.round(96*e/914400)}function ow(e,t){let o=0;for(let s=0;s<e;s++){const e=t.cols.find((e=>s>=e.min&&s<=e.max));e?.width?o+=e.width:t.sheetFormat?.defaultColWidth?o+=t.sheetFormat.defaultColWidth:o+=Ly}return o/Vy}function sw(e,t){let o=0;for(let s=0;s<e;s++){const e=t.rows[s];e?.height?o+=e.height:t.sheetFormat?.defaultRowHeight?o+=t.sheetFormat.defaultRowHeight:o+=Hy}return o/ky}function iw(e){let t=1;return e.figures.map((o=>function(e,t,o){let s,i,n,r;if(1===e.anchors.length)({x:s,y:i}=aw(e.anchors[0],o)),r=tw(e.figureSize.cx),n=tw(e.figureSize.cy);else{({x:s,y:i}=aw(e.anchors[0],o));const{x:t,y:a}=aw(e.anchors[1],o);r=t-s,n=a-i}const a={id:t,x:s,y:i};if("dataSets"in(l=e.data)&&l.dataSets.length>0)return{...a,width:r,height:n,tag:"chart",data:nw(e.data)};if(function(e){return"imageSrc"in e}(e.data))return{...a,width:tw(e.data.size.cx),height:tw(e.data.size.cy),tag:"image",data:{path:e.data.imageSrc,mimetype:e.data.mimetype}};var l;return}(o,(t++).toString(),e))).filter(lt)}function nw(e){const t=e.dataSets.some((e=>"reference"in(e.label??{}))),o=e.labelRange?rw(e.labelRange,t):void 0,s=e.dataSets.map((e=>{let o;return e.label&&"text"in e.label&&(o=e.label.text),{dataRange:rw(e.range,t),label:o,backgroundColor:e.backgroundColor}}));return"pie"===e.type&&s.reverse(),{dataSets:s,dataSetsHaveTitle:t,labelRange:o,title:e.title??{text:""},type:e.type,background:wC({rgb:e.backgroundColor})||"#FFFFFF",legendPosition:e.legendPosition,stacked:e.stacked||!1,aggregated:!1,cumulative:e.cumulative||!1,labelsAsText:!1}}function rw(e,t){let{sheetName:o,xc:s}=qr(e),i=zo(s);if(t&&void 0!==i.bottom&&void 0!==i.right){const e=i.bottom-i.top+1,t=i.right-i.left+1;1===e?i={...i,left:i.left-1}:1===t&&(i={...i,top:i.top-1})}return Zr(o,qo(i))}function aw(e,t){return{x:ow(e.col,t)+tw(e.colOffset),y:sw(e.row,t)+tw(e.rowOffset)}}function lw(e,t){const o=[];let s=1;for(const i of e)if(i)switch(i.type){case"time":t.generateNotSupportedWarning(Xy.TimeDataValidationNotSupported);break;case"textLength":t.generateNotSupportedWarning(Xy.TextLengthDataValidationNotSupported);break;case"whole":t.generateNotSupportedWarning(Xy.WholeNumberDataValidationNotSupported);break;case"decimal":const e=cw(s++,i);o.push(e);break;case"list":const n=hw(s++,i);o.push(n);break;case"date":if("notEqual"===i.operator){t.generateNotSupportedWarning(Xy.NotEqualDateDataValidationNotSupported);break}const r=dw(s++,i);o.push(r);break;case"custom":const a=uw(s++,i);o.push(a)}return o}function cw(e,t){const o=[t.formula1.toString()];return t.formula2&&o.push(t.formula2.toString()),{id:e.toString(),ranges:t.sqref,isBlocking:"warning"!==t.errorStyle,criterion:{type:yC[t.operator],values:o}}}function hw(e,t){const o=t.formula1.toString(),s=Br.test(o);return{id:e.toString(),ranges:t.sqref,isBlocking:"warning"!==t.errorStyle,criterion:{type:s?"isValueInRange":"isValueInList",values:s?[o]:o.replaceAll('"',"").split(","),displayStyle:"arrow"}}}function dw(e,t){let o;const s=[t.formula1.toString()];return t.formula2?(s.push(t.formula2.toString()),o={type:CC[t.operator],values:Mr(s,fi)}):o={type:CC[t.operator],values:Mr(s,fi),dateValue:"exactDate"},{id:e.toString(),ranges:t.sqref,isBlocking:"warning"!==t.errorStyle,criterion:o}}function uw(e,t){return{id:e.toString(),ranges:t.sqref,isBlocking:"warning"!==t.errorStyle,criterion:{type:"customFormula",values:[`=${t.formula1.toString()}`]}}}const gw=new RegExp(/'?\[([0-9]*)\](.*)'?!(\$?[a-zA-Z]*\$?[0-9]*)/g),pw=new RegExp(/SUBTOTAL\(([0-9]*),/g),mw=new RegExp(Nr.source,"ig");function fw(e,t){const o=function(e){const t={};for(let o of e.rows)for(let e of o.cells)e.formula&&void 0!==e.formula.sharedIndex&&e.formula.content&&(t[e.formula.sharedIndex]={refCellXc:e.xc,formula:e.formula.content});return t}(e);for(let s of e.rows.map((e=>e.cells)).flat())s?.formula&&(s.formula.content=void 0===s.formula.sharedIndex||s.formula.content?"="+s.formula.content:"="+bw(s.xc,o[s.formula.sharedIndex]),s.formula.content=vw(s.formula.content,t))}function vw(e,t){return e=(e=(e=(e=e.replace("_xlfn.","")).replace(/#REF!/g,"#REF")).replace(pw,((e,t)=>{const o=pC[t];return o?o+"(":e}))).replace(gw,((e,o,s,i)=>{o=Number(o)-1,i=i.replace(/\$/g,"");const n=t.externalBooks[o].sheetNames.findIndex((e=>na(e,s)));if(-1===n)return e;const r=t.externalBooks[o].datasets.find((e=>e.sheetId===n))?.data;if(!r)return e;const a=r&&r[i];return(Number(a)?a:`"${a}"`)||e}))}function bw(e,t){const o=To(t.refCellXc);let s,i=t.formula.slice();do{if(s=mw.exec(i),s){const t=To(s[0].replace("$","")),n=To(e),r={colFixed:s[0].startsWith("$"),rowFixed:s[0].includes("$",1)},a={col:n.col-o.col,row:n.row-o.row},l={col:r.colFixed?t.col:t.col+a.col,row:r.rowFixed?t.row:t.row+a.row};i=i.slice(0,s.index)+Ao(l.col,l.row,r)+i.slice(s.index+s[0].length)}}while(s);return i}function Sw(e,t){return e.sheets.map((o=>{fw(o,e);const s=function(e){const t=[0,0];for(let o of e.rows)t[0]=Math.max(t[0],Ot(o.cells.map((e=>To(e.xc).col)))),t[1]=Math.max(t[1],o.index);return t[0]=Math.max(t[0],Uy),t[1]=Math.max(t[1],By),t}(o),i=o.sheetViews[0],n=Iw(o,"ROW",s[1]),r=Iw(o,"COL",s[0]);return{id:o.sheetName,areGridLinesVisible:!i||i.showGridLines,name:o.sheetName,colNumber:s[0],rowNumber:s[1],...ww(o,e,s,t),merges:o.merges,cols:yw(o,s[0],r),rows:Cw(o,s[1],n),conditionalFormats:NC(o.cfs,e.dxfs,t),dataValidationRules:lw(o.dataValidations,t),figures:iw(o),isVisible:o.isVisible,panes:i?{xSplit:i.pane.xSplit,ySplit:i.pane.ySplit}:{xSplit:0,ySplit:0},tables:[],headerGroups:{COL:r,ROW:n},color:wC(o.sheetProperties?.tabColor)}}))}function yw(e,t,o){const s={};for(let n=1;n<t+1;n++){const t=e.cols.find((e=>e.min<=n&&n<=e.max));let r;r=t&&t.width?t.width:e.sheetFormat?.defaultColWidth?e.sheetFormat.defaultColWidth:Ly;const a=n-1,l=o.some((e=>e.isFolded&&e.start<=a&&a<=e.end));s[a]={size:(i=r,i?Math.round(i/Vy*100)/100:i),isHidden:!l&&t?.hidden}}var i;return s}function Cw(e,t,o){const s={};for(let n=1;n<t+1;n++){const t=e.rows.find((e=>e.index===n));let r;r=t&&t.height?t.height:e.sheetFormat?.defaultRowHeight?e.sheetFormat.defaultRowHeight:Hy;const a=n-1,l=o.some((e=>e.isFolded&&e.start<=a&&a<=e.end));s[a]={size:(i=r,i?Math.round(i/ky*100)/100:i),isHidden:!l&&t?.hidden}}var i;return s}function ww(e,t,o,s){const i={},n={},r={},a={},l=t.sharedStrings.map(xt);const c=e.hyperlinks.reduce(((e,t)=>(e[t.xc]=t,e)),{});for(let o of e.rows)for(let e of o.cells)i[e.xc]=xw(e,c,l,s),e.styleIndex&&(n[e.xc]=e.styleIndex+1,r[e.xc]=t.styles[e.styleIndex].numFmtId+1,a[e.xc]=t.styles[e.styleIndex].borderId+1);for(let s of e.rows.filter((e=>e.styleIndex)))for(let e=1;e<=o[0];e++){const o=Ao(e-1,s.index-1);n[o]??=s.styleIndex+1,a[o]??=t.styles[s.styleIndex].borderId+1,r[o]??=t.styles[s.styleIndex].numFmtId+1}for(let s of e.cols.filter((e=>e.styleIndex)))for(let e=s.min;e<=Math.min(s.max,o[0]);e++)for(let i=1;i<=o[1];i++){const o=Ao(e-1,i-1);n[o]??=s.styleIndex+1,a[o]??=t.styles[s.styleIndex].borderId+1,r[o]??=t.styles[s.styleIndex].numFmtId+1}return{cells:i,styles:n,formats:r,borders:a}}function xw(e,t,o,s){let i;switch(e.type){case"sharedString":i=o[parseInt(e.value,10)];break;case"boolean":i=Number(e.value)?"TRUE":"FALSE";break;case"date":case"error":case"inlineStr":case"number":case"str":i=e.value}return i&&t[e.xc]&&(i=function(e,t,o){const s=e.display||t;e.relTarget||e.location||o.generateNotSupportedWarning(Xy.BadlyFormattedHyperlink);const i=e.relTarget?e.relTarget:rt(qr(e.location).sheetName);return ot(s,i)}(t[e.xc],i,s)),e.formula&&(i=e.formula.content),i}function Iw(e,t,o){const s=e?.sheetProperties?.outlinePr,i=[];let n=0;for(let r=0;r<o;r++){const o=Rw(e,t,r),a=o?.outlineLevel||0;if(a>n){const o=Ew(e,t,r,("ROW"===t?s?.summaryBelow:s?.summaryRight)??!0);o&&i.push(o)}n=a}return i}function Ew(e,t,o,s){const i=Rw(e,t,o),n=i?.outlineLevel;if(!n||!n)return;let r=n,a=o,l=i;for(;l&&r>=n;)a++,l=Rw(e,t,a),r=l?.outlineLevel||0;const c=o,h=a-1,d=Rw(e,t,s?h+1:c-1);return{start:c-1,end:h-1,isFolded:d?.collapsed||!1}}function Rw(e,t,o){return"COL"===t?e.cols.find((e=>e.min<=o&&o<=e.max)):e.rows.find((e=>e.index===o))}const Tw={light:Uo("Light"),medium:Uo("Medium"),dark:Uo("Dark"),custom:Uo("Custom")},Aw={hasFilters:!1,totalRow:!1,firstColumn:!1,lastColumn:!1,numberOfHeaders:1,bandedRows:!0,bandedColumns:!1,automaticAutofill:!0,styleId:"TableStyleMedium2"};function _w(e,t){return{coloredText:to(t,.3),light:eo(t,.8),medium:eo(t,.6),dark:to(t,.3),mediumBorder:eo(t,.45),highlight:t,name:e}}const Dw={black:{name:Uo("Black"),coloredText:"#000000",light:"#D9D9D9",medium:"#A6A6A6",dark:"#404040",mediumBorder:"#000000",highlight:"#000000"},lightBlue:_w(Uo("Light blue"),"#346B90"),red:_w(Uo("Red"),"#C53628"),lightGreen:_w(Uo("Light green"),"#748747"),purple:_w(Uo("Purple"),"#6C4E65"),gray:{name:Uo("Gray"),coloredText:"#666666",light:"#EEEEEE",medium:"#DDDDDD",dark:"#767676",mediumBorder:"#D0D0D0",highlight:"#A9A9A9"},orange:_w(Uo("Orange"),"#C37034")},Ow={black:Dw.black,orangeBlue:{...Dw.lightBlue,highlight:Dw.orange.highlight},purpleGreen:{...Dw.lightGreen,highlight:Dw.purple.highlight},redBlue:{...Dw.lightBlue,highlight:Dw.red.highlight}},Fw=e=>({category:"light",templateName:"lightColoredText",primaryColor:e.highlight,wholeTable:{style:{textColor:e.coloredText},border:{top:{color:e.highlight,style:"thin"},bottom:{color:e.highlight,style:"thin"}}},headerRow:{border:{bottom:{color:e.highlight,style:"thin"}}},totalRow:{border:{top:{color:e.highlight,style:"thin"}}},firstRowStripe:{style:{fillColor:e.light}}}),Mw=e=>({category:"light",templateName:"lightWithHeader",primaryColor:e.highlight,wholeTable:{border:{top:{color:e.highlight,style:"thin"},bottom:{color:e.highlight,style:"thin"},left:{color:e.highlight,style:"thin"},right:{color:e.highlight,style:"thin"}}},headerRow:{style:{fillColor:e.highlight,textColor:"#FFFFFF"},border:{bottom:{color:e.highlight,style:"thin"}}},totalRow:{border:{top:{color:e.highlight,style:"medium"}}},firstRowStripe:{border:{bottom:{color:e.highlight,style:"thin"}}},secondRowStripe:{border:{bottom:{color:e.highlight,style:"thin"}}}}),Pw=e=>({category:"light",templateName:"lightAllBorders",primaryColor:e.highlight,wholeTable:{border:{top:{color:e.highlight,style:"thin"},bottom:{color:e.highlight,style:"thin"},left:{color:e.highlight,style:"thin"},right:{color:e.highlight,style:"thin"},horizontal:{color:e.highlight,style:"thin"},vertical:{color:e.highlight,style:"thin"}}},headerRow:{border:{bottom:{color:e.highlight,style:"medium"}}},totalRow:{border:{top:{color:e.highlight,style:"medium"}}},firstRowStripe:{style:{fillColor:e.light}},firstColumnStripe:{style:{fillColor:e.light}}}),Nw=e=>({category:"medium",templateName:"mediumBandedBorders",primaryColor:e.highlight,wholeTable:{border:{top:{color:e.mediumBorder,style:"thin"},bottom:{color:e.mediumBorder,style:"thin"},left:{color:e.mediumBorder,style:"thin"},right:{color:e.mediumBorder,style:"thin"},horizontal:{color:e.mediumBorder,style:"thin"}}},headerRow:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},totalRow:{border:{top:{color:e.highlight,style:"medium"}}},firstRowStripe:{style:{fillColor:e.light}},firstColumnStripe:{style:{fillColor:e.light}}}),kw=e=>({category:"medium",templateName:"mediumWhiteBorders",primaryColor:e.highlight,wholeTable:{border:{horizontal:{color:"#FFFFFF",style:"thin"},vertical:{color:"#FFFFFF",style:"thin"}},style:{fillColor:e.light}},headerRow:{border:{bottom:{color:"#FFFFFF",style:"thick"}},style:{fillColor:e.highlight,textColor:"#FFFFFF"}},totalRow:{border:{top:{color:"#FFFFFF",style:"thick"}},style:{fillColor:e.highlight,textColor:"#FFFFFF"}},firstColumn:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},lastColumn:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},firstRowStripe:{style:{fillColor:e.medium}},firstColumnStripe:{style:{fillColor:e.medium}}}),Vw=e=>({category:"medium",templateName:"mediumMinimalBorders",primaryColor:e.highlight,wholeTable:{border:{top:{color:"#000000",style:"medium"},bottom:{color:"#000000",style:"medium"}}},totalRow:{border:{top:{color:"#000000",style:"medium"}}},headerRow:{style:{fillColor:e.highlight,textColor:"#FFFFFF"},border:{bottom:{color:"#000000",style:"medium"}}},firstColumn:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},lastColumn:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},firstRowStripe:{style:{fillColor:Dw.black.light}},firstColumnStripe:{style:{fillColor:Dw.black.light}}}),Lw=e=>({category:"medium",templateName:"mediumAllBorders",primaryColor:e.highlight,wholeTable:{border:{top:{color:e.mediumBorder,style:"thin"},bottom:{color:e.mediumBorder,style:"thin"},left:{color:e.mediumBorder,style:"thin"},right:{color:e.mediumBorder,style:"thin"},horizontal:{color:e.mediumBorder,style:"thin"},vertical:{color:e.mediumBorder,style:"thin"}},style:{fillColor:e.light}},totalRow:{border:{top:{color:e.highlight,style:"medium"}}},firstRowStripe:{style:{fillColor:e.medium}},firstColumnStripe:{style:{fillColor:e.medium}}}),Hw=e=>({category:"dark",templateName:"dark",primaryColor:e.highlight,wholeTable:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},totalRow:{style:{fillColor:e.dark,textColor:"#FFFFFF"},border:{top:{color:"#FFFFFF",style:"thick"}}},headerRow:{style:{fillColor:"#000000"},border:{bottom:{color:"#FFFFFF",style:"thick"}}},firstColumn:{style:{fillColor:e.dark},border:{right:{color:"#FFFFFF",style:"thick"}}},lastColumn:{style:{fillColor:e.dark},border:{left:{color:"#FFFFFF",style:"thick"}}},firstRowStripe:{style:{fillColor:e.dark}},firstColumnStripe:{style:{fillColor:e.dark}}}),Uw=e=>({category:"dark",templateName:"darkNoBorders",primaryColor:e.highlight,wholeTable:{style:{fillColor:e.light}},totalRow:{border:{top:{color:"#000000",style:"medium"}}},headerRow:{style:{fillColor:e.highlight,textColor:"#FFFFFF"}},firstRowStripe:{style:{fillColor:e.medium}},firstColumnStripe:{style:{fillColor:e.medium}}}),Bw=Hw(Dw.black);Bw.wholeTable.style.fillColor="#737373";const zw=Vw(Dw.black);function $w(e,t,o){return{...t(o),displayName:`${o.name}, ${e}`}}zw.wholeTable.border={...zw.wholeTable.border,left:{color:"#000000",style:"thin"},right:{color:"#000000",style:"thin"},horizontal:{color:"#000000",style:"thin"},vertical:{color:"#000000",style:"thin"}};const Gw={None:{category:"light",templateName:"none",primaryColor:"",displayName:"none"},TableStyleLight1:$w("TableStyleLight1",Fw,Dw.black),TableStyleLight2:$w("TableStyleLight2",Fw,Dw.lightBlue),TableStyleLight3:$w("TableStyleLight3",Fw,Dw.red),TableStyleLight4:$w("TableStyleLight4",Fw,Dw.lightGreen),TableStyleLight5:$w("TableStyleLight5",Fw,Dw.purple),TableStyleLight6:$w("TableStyleLight6",Fw,Dw.gray),TableStyleLight7:$w("TableStyleLight7",Fw,Dw.orange),TableStyleLight8:$w("TableStyleLight8",Mw,Dw.black),TableStyleLight9:$w("TableStyleLight9",Mw,Dw.lightBlue),TableStyleLight10:$w("TableStyleLight10",Mw,Dw.red),TableStyleLight11:$w("TableStyleLight11",Mw,Dw.lightGreen),TableStyleLight12:$w("TableStyleLight12",Mw,Dw.purple),TableStyleLight13:$w("TableStyleLight13",Mw,Dw.gray),TableStyleLight14:$w("TableStyleLight14",Mw,Dw.orange),TableStyleLight15:$w("TableStyleLight15",Pw,Dw.black),TableStyleLight16:$w("TableStyleLight16",Pw,Dw.lightBlue),TableStyleLight17:$w("TableStyleLight17",Pw,Dw.red),TableStyleLight18:$w("TableStyleLight18",Pw,Dw.lightGreen),TableStyleLight19:$w("TableStyleLight19",Pw,Dw.purple),TableStyleLight20:$w("TableStyleLight20",Pw,Dw.gray),TableStyleLight21:$w("TableStyleLight21",Pw,Dw.orange),TableStyleMedium1:$w("TableStyleMedium1",Nw,Dw.black),TableStyleMedium2:$w("TableStyleMedium2",Nw,Dw.lightBlue),TableStyleMedium3:$w("TableStyleMedium3",Nw,Dw.red),TableStyleMedium4:$w("TableStyleMedium4",Nw,Dw.lightGreen),TableStyleMedium5:$w("TableStyleMedium5",Nw,Dw.purple),TableStyleMedium6:$w("TableStyleMedium6",Nw,Dw.gray),TableStyleMedium7:$w("TableStyleMedium7",Nw,Dw.orange),TableStyleMedium8:$w("TableStyleMedium8",kw,Dw.black),TableStyleMedium9:$w("TableStyleMedium9",kw,Dw.lightBlue),TableStyleMedium10:$w("TableStyleMedium10",kw,Dw.red),TableStyleMedium11:$w("TableStyleMedium11",kw,Dw.lightGreen),TableStyleMedium12:$w("TableStyleMedium12",kw,Dw.purple),TableStyleMedium13:$w("TableStyleMedium13",kw,Dw.gray),TableStyleMedium14:$w("TableStyleMedium14",kw,Dw.orange),TableStyleMedium15:{...zw,displayName:"Black, TableStyleMedium15"},TableStyleMedium16:$w("TableStyleMedium16",Vw,Dw.lightBlue),TableStyleMedium17:$w("TableStyleMedium17",Vw,Dw.red),TableStyleMedium18:$w("TableStyleMedium18",Vw,Dw.lightGreen),TableStyleMedium19:$w("TableStyleMedium19",Vw,Dw.purple),TableStyleMedium20:$w("TableStyleMedium20",Vw,Dw.gray),TableStyleMedium21:$w("TableStyleMedium21",Vw,Dw.orange),TableStyleMedium22:$w("TableStyleMedium22",Lw,Dw.black),TableStyleMedium23:$w("TableStyleMedium23",Lw,Dw.lightBlue),TableStyleMedium24:$w("TableStyleMedium24",Lw,Dw.red),TableStyleMedium25:$w("TableStyleMedium25",Lw,Dw.lightGreen),TableStyleMedium26:$w("TableStyleMedium26",Lw,Dw.purple),TableStyleMedium27:$w("TableStyleMedium27",Lw,Dw.gray),TableStyleMedium28:$w("TableStyleMedium28",Lw,Dw.orange),TableStyleDark1:{...Bw,displayName:"Black, TableStyleDark1"},TableStyleDark2:$w("TableStyleDark2",Hw,Dw.lightBlue),TableStyleDark3:$w("TableStyleDark3",Hw,Dw.red),TableStyleDark4:$w("TableStyleDark4",Hw,Dw.lightGreen),TableStyleDark5:$w("TableStyleDark5",Hw,Dw.purple),TableStyleDark6:$w("TableStyleDark6",Hw,Dw.gray),TableStyleDark7:$w("TableStyleDark7",Hw,Dw.orange),TableStyleDark8:$w("TableStyleDark8",Uw,Ow.black),TableStyleDark9:$w("TableStyleDark9",Uw,Ow.redBlue),TableStyleDark10:$w("TableStyleDark10",Uw,Ow.purpleGreen),TableStyleDark11:$w("TableStyleDark11",Uw,Ow.orangeBlue)},Ww={none:()=>({category:"none",templateName:"none",primaryColor:"",name:"none"}),lightColoredText:Fw,lightAllBorders:Pw,mediumAllBorders:Lw,lightWithHeader:Mw,mediumBandedBorders:Nw,mediumMinimalBorders:Vw,darkNoBorders:Uw,mediumWhiteBorders:kw,dark:Hw};function qw(e,t,o){const s=_w("",o);return{...Ww[t](s),category:"custom",displayName:e}}function Zw(e,t){for(const o of t.sheets){const t=e.sheets.find((e=>e.name===o.sheetName));if(t){t.tables||(t.tables=[]);for(const e of o.tables)t.tables.push({range:e.ref,config:jw(e)});for(const e of o.pivotTables)t.tables.push({range:e.location.ref,config:Yw(e)})}}!function(e,t){for(let o of e){const s=t.find((e=>na(e.sheetName,o.name))).tables;for(let t of s){const s=t.name+"[";for(let i of e)for(let e in i.cells){const n=i.cells[e];let r=i.cells[e];if(n&&r&&r.startsWith("=")){let n;for(;-1!==(n=r.indexOf(s));){let a=n+s.length,l=1;for(;l>0&&a<r.length;)"["===r[a]?l++:"]"===r[a]&&l--,a++;let c=r.slice(n+s.length,a-1);const h=Xw(o.id===i.id?"":o.name+"!",c,t,e);r=r.slice(0,n)+h+r.slice(a)}}i.cells[e]=r}}}}(e.sheets,t.sheets)}function jw(e){const t=e.style?.name||"";return{hasFilters:void 0!==e.autoFilter,numberOfHeaders:e.headerRowCount,totalRow:e.totalsRowCount>0,firstColumn:e.style?.showFirstColumn||!1,lastColumn:e.style?.showLastColumn||!1,bandedRows:e.style?.showRowStripes||!1,bandedColumns:e.style?.showColumnStripes||!1,styleId:Gw[t]?t:Aw.styleId}}function Yw(e){return{hasFilters:!1,numberOfHeaders:e.location.firstDataRow,totalRow:e.rowGrandTotals,firstColumn:!0,lastColumn:e.style?.showLastColumn||!1,bandedRows:e.style?.showRowStripes||!1,bandedColumns:e.style?.showColStripes||!1,styleId:Aw.styleId}}function Xw(e,t,o,s){const i=t.split(",").map((e=>e.trim())),n=$o(o.ref),r=[],a=[],l=[];for(const e of i)if(Kw(e).startsWith("#")){const t=Kw(e);switch(l.push(t),t){case"#All":a.push(n.top,n.bottom);break;case"#Data":const e=o.headerRowCount?n.top+o.headerRowCount:n.top,t=o.totalsRowCount?n.bottom-o.totalsRowCount:n.bottom;a.push(e,t);break;case"#This Row":a.push(To(s).row);break;case"#Headers":if(!o.headerRowCount)return wi.InvalidReference;a.push(n.top);break;case"#Totals":if(!o.totalsRowCount)return wi.InvalidReference;a.push(n.bottom)}}else{const t=e.split(":").map((e=>e.trim())).map(Kw);if(r.length)return wi.InvalidReference;const s=o.cols.findIndex((e=>e.name===t[0]));if(-1===s)return wi.InvalidReference;if(r.push(s+n.left),t[1]){const e=o.cols.findIndex((e=>e.name===t[1]));if(-1===e)return wi.InvalidReference;r.push(e+n.left)}}if(!function(e){if(e.length<2)return!0;if(e.length>2)return!1;if(e.includes("#Data")&&e.includes("#Totals"))return!0;if(e.includes("#Headers")&&e.includes("#Data"))return!0;return!1}(l))return wi.InvalidReference;if(0===a.length){const e=o.headerRowCount?n.top+o.headerRowCount:n.top,t=o.totalsRowCount?n.bottom-o.totalsRowCount:n.bottom;a.push(e,t)}0===r.length&&r.push(n.left,n.right);return e+qo({top:Math.min(...a),left:Math.min(...r),bottom:Math.max(...a),right:Math.max(...r)})}function Kw(e){return e.startsWith("[")&&e.endsWith("]")?e.slice(1,e.length-1):e}function Jw(e,t,o){return{content:(new XMLSerializer).serializeToString(e),path:t,contentType:o}}function Qw(e){return String(e).replace(/\&/g,"&amp;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;").replace(/\"/g,"&quot;").replace(/\'/g,"&apos;").replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g,"")}function ex(e){return new Ey(e.map((([e,t])=>`${e}="${Qw(t)}"`)).join(" "))}function tx(e,t="text/xml"){const o=(new DOMParser).parseFromString(e.toString(),t),s=o.querySelector("parsererror");if(s){const t=s.innerHTML,o=parseInt(t.split(":")[0],10),i=e.toString().trim().split("\n"),n=i.slice(Math.max(o-3,0),Math.min(o+2,i.length)).join("\n");throw new Error(`XML string could not be parsed: ${t}\n${n}`)}return o}function ox(e){if(e)return{style:e.style,color:{rgb:e.color}}}function sx(e,t){return nx`
32
32
  <Override ContentType="${t}" PartName="${e}" />
33
- `}function ix(e){return new Ey(e.join("\n"))}function nx(e,...t){let o=[e[0]];for(let s=0;s<t.length;s++){const i=t[s]instanceof Ey?t[s]:Qw(t[s]);o.push(i+e[s+1])}return new Ey(ut(o))}function rx(e){return e.replace(/NAMESPACE.*NAMESPACE(.*)/,"$1")}function ax(e){return e.replaceAll(/([a-zA-Z0-9]+):([a-zA-Z0-9]+)/g,"NAMESPACE$1NAMESPACE$2")}class lx{value;constructor(e){this.value=e}asString(){return RC(String(this.value))}asBool(){return"true"===this.value||"false"!==this.value&&Boolean(Number(this.value))}asNum(){return Number(this.value)}}class cx{rootFile;xlsxFileStructure;warningManager;relationships;currentFile=void 0;constructor(e,t,o){this.rootFile=e,this.currentFile=e.file.fileName,this.xlsxFileStructure=t,this.warningManager=o,this.relationships={},e.rels&&this.extractRelationships(e.rels).map((e=>{this.relationships[e.id]=e}))}extractRelationships(e){return this.mapOnElements({parent:e.xml,query:"Relationship"},(e=>({id:this.extractAttr(e,"Id",{required:!0}).asString(),target:this.extractAttr(e,"Target",{required:!0}).asString(),type:this.extractAttr(e,"Type",{required:!0}).asString()})))}getListOfXMLFiles(){return Object.entries(this.xlsxFileStructure).filter((([e])=>"images"!==e)).map((([e,t])=>t)).flat().filter(lt)}mapOnElements(e,t){const o=[],s=this.currentFile;let i;if(e.children){const t=this.querySelector(e.parent,e.query)?.children;i=t||[]}else i=this.querySelectorAll(e.parent,e.query);if(i)for(let e of i)try{o.push(t(e))}catch(t){this.catchErrorOnElement(t,e)}return this.currentFile=s,o}catchErrorOnElement(e,t){const o=t?`Error when parsing an element <${t.tagName}> of file ${this.currentFile}, skip this element. \n${e.stack}`:`Error when parsing file ${this.currentFile}.`;this.warningManager.addParsingWarning([o,e.message].join("\n"))}extractAttr(e,t,o){const s=e.attributes[t];s||this.handleMissingValue(e,`attribute "${t}"`,o);const i=s?.value?s.value:o?.default;return void 0===i?void 0:new lx(i)}extractTextContent(e,t){if(void 0!==t?.default&&"string"!=typeof t.default)throw new Error("extractTextContent default value should be a string");const o="preserve"===e?.attributes["xml:space"]?.value;let s=e?.textContent;return e&&null!==s||this.handleMissingValue(e,"text content",t),s&&(s=o?s:s.trim()),s?RC(s):t?.default}extractChildAttr(e,t,o,s){let i;i="number"==typeof t?e.children[t]:this.querySelector(e,t),i||this.handleMissingValue(e,"number"==typeof t?`child at index ${t}`:`child <${t}>`,s);const n=i?this.extractAttr(i,o,s)?.asString():s?.default;return void 0!==n?new lx(n):void 0}extractChildTextContent(e,t,o){if(void 0!==o?.default&&"string"!=typeof o.default)throw new Error("extractTextContent default value should be a string");let s=this.querySelector(e,t);return s||this.handleMissingValue(e,`child <${t}>`,o),s?this.extractTextContent(s,o):o?.default}handleMissingValue(e,t,o){if(o?.required){if(void 0===o?.default)throw new Error(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, and no default value was set`);this.warningManager.addParsingWarning(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, replacing it by the default value ${o.default}`)}}extractColor(e,t,o){if(!e)return o?{rgb:o}:void 0;const s=this.extractAttr(e,"theme")?.asString();let i;if(void 0!==s){if(!t||!t.clrScheme)throw new Error("Color referencing a theme but no theme was provided");i=this.getThemeColor(s,t.clrScheme)}else i=this.extractAttr(e,"rgb")?.asString(),i="FF000000"===i?void 0:i;return{rgb:i||o,auto:this.extractAttr(e,"auto")?.asBool(),indexed:this.extractAttr(e,"indexed")?.asNum(),tint:this.extractAttr(e,"tint")?.asNum()}}getTargetXmlFile(e){if(!e)throw new Error("Undefined target file");const t=this.processRelationshipTargetName(e.target),o=this.getListOfXMLFiles().find((e=>e.file.fileName.endsWith(t)));if(!o||!o.file)throw new Error("Cannot find target file");return o}getTargetImageFile(e){if(!e)throw new Error("Undefined target file");const t=this.processRelationshipTargetName(e.target),o=this.xlsxFileStructure.images.find((e=>e.fileName.endsWith(t)));if(!o)throw new Error("Cannot find target file");return o}querySelector(e,t){const o=ax(t);return e.querySelector(o)}querySelectorAll(e,t){const o=ax(t);return e.querySelectorAll(o)}getThemeColor(e,t){switch(e){case"0":return"FFFFFF";case"1":return"000000";case"2":return t[3].value;case"3":return t[2].value;default:return t[e].value}}processRelationshipTargetName(e){return e.replace(/\.+\//,"")}}class hx extends cx{getTheme(){return{clrScheme:this.mapOnElements({query:"a:clrScheme",parent:this.rootFile.file.xml,children:!0},(e=>({name:e.tagName,value:this.extractChildAttr(e,0,"val",{required:!0,default:Ty}).asString(),lastClr:this.extractChildAttr(e,0,"lastClr",{default:Ty}).asString()})))}}getSharedStrings(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"si"},(e=>this.mapOnElements({parent:e,query:"t"},(e=>this.extractTextContent(e)||"")).join("")))}}class dx extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}extractConditionalFormattings(){const e=this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > conditionalFormatting"},(e=>({sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),pivot:this.extractAttr(e,"pivot")?.asBool(),cfRules:this.extractCFRules(e,this.theme)})));return e.push(...this.mapOnElements({parent:this.rootFile.file.xml,query:"extLst x14:conditionalFormatting"},(e=>({sqref:this.extractChildTextContent(e,"xm:sqref",{required:!0}).split(" "),pivot:this.extractAttr(e,"xm:pivot")?.asBool(),cfRules:this.extractCFRules(e,this.theme)})))),e}extractCFRules(e,t){return this.mapOnElements({parent:e,query:"cfRule, x14:cfRule"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),priority:this.extractAttr(e,"priority",{required:!0}).asNum(),colorScale:this.extractCfColorScale(e,t),formula:this.extractCfFormula(e),iconSet:this.extractCfIconSet(e),dxfId:this.extractAttr(e,"dxfId")?.asNum(),stopIfTrue:this.extractAttr(e,"stopIfTrue")?.asBool(),aboveAverage:this.extractAttr(e,"aboveAverage")?.asBool(),percent:this.extractAttr(e,"percent")?.asBool(),bottom:this.extractAttr(e,"bottom")?.asBool(),operator:this.extractAttr(e,"operator")?.asString(),text:this.extractAttr(e,"text")?.asString(),timePeriod:this.extractAttr(e,"timePeriod")?.asString(),rank:this.extractAttr(e,"rank")?.asNum(),stdDev:this.extractAttr(e,"stdDev")?.asNum(),equalAverage:this.extractAttr(e,"equalAverage")?.asBool(),dataBar:this.extractCfDataBar(e,t)})))}extractCfFormula(e){return this.mapOnElements({parent:e,query:"formula"},(e=>this.extractTextContent(e,{required:!0})))}extractCfColorScale(e,t){const o=this.querySelector(e,"colorScale");if(o)return{colors:this.mapOnElements({parent:o,query:"color"},(e=>this.extractColor(e,t,"ffffff"))),cfvos:this.extractCFVos(o)}}extractCfDataBar(e,t){const o=this.querySelector(e,"dataBar");if(o)return{color:this.extractColor(o.querySelector("color"),t,"EFF7FF"),cfvos:this.extractCFVos(o)}}extractCfIconSet(e){const t=this.querySelector(e,"iconSet, x14:iconSet");if(t)return{iconSet:this.extractAttr(t,"iconSet",{default:"3TrafficLights1"}).asString(),showValue:this.extractAttr(t,"showValue",{default:!0}).asBool(),percent:this.extractAttr(t,"percent",{default:!0}).asBool(),reverse:this.extractAttr(t,"reverse")?.asBool(),custom:this.extractAttr(t,"custom")?.asBool(),cfvos:this.extractCFVos(t),cfIcons:this.extractCfIcons(t)}}extractCfIcons(e){const t=this.mapOnElements({parent:e,query:"cfIcon, x14:cfIcon"},(e=>({iconSet:this.extractAttr(e,"iconSet",{required:!0}).asString(),iconId:this.extractAttr(e,"iconId",{required:!0}).asNum()})));return 0===t.length?void 0:t}extractCFVos(e){return this.mapOnElements({parent:e,query:"cfvo, x14:cfvo"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),gte:this.extractAttr(e,"gte",{default:!0})?.asBool(),value:e.attributes.val?this.extractAttr(e,"val")?.asString():this.extractChildTextContent(e,"f, xm:f")})))}}class ux extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}extractDataValidations(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > dataValidations > dataValidation"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),operator:this.extractAttr(e,"operator",{default:"between"})?.asString(),sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),errorStyle:this.extractAttr(e,"errorStyle")?.asString(),formula1:this.extractDataValidationFormula(e,1)[0],formula2:this.extractDataValidationFormula(e,2)[0],showErrorMessage:this.extractAttr(e,"showErrorMessage")?.asBool(),errorTitle:this.extractAttr(e,"errorTitle")?.asString(),error:this.extractAttr(e,"error")?.asString(),showInputMessage:this.extractAttr(e,"showInputMessage")?.asBool(),promptTitle:this.extractAttr(e,"promptTitle")?.asString(),prompt:this.extractAttr(e,"prompt")?.asString(),allowBlank:this.extractAttr(e,"allowBlank")?.asBool()})))}extractDataValidationFormula(e,t){return this.mapOnElements({parent:e,query:`formula${t}`},(e=>this.extractTextContent(e,{required:!0})))}}class gx extends cx{extractChart(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"c:chartSpace"},(e=>{const t=this.getChartType(e);if(!gC[t])throw new Error(`Unsupported chart type ${t}`);if("combo"===gC[t])return this.extractComboChart(e);const o=this.mapOnElements({parent:e,query:"c:chart > c:title a:t"},(e=>e.textContent||"")).join(""),s=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:{text:o},type:gC[t],dataSets:this.extractChartDatasets(this.querySelectorAll(e,`c:${t}`),t),labelRange:this.extractLabelRange(t,e),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),legendPosition:uC[this.extractChildAttr(e,"c:legendPos","val",{default:"none"}).asString()],stacked:"stacked"===s,fontColor:"000000"}}))[0]}extractLabelRange(e,t){return"scatterChart"===e?this.extractChildTextContent(t,"c:ser c:strRef c:f")||this.extractChildTextContent(t,"c:ser c:numRef c:f"):this.extractChildTextContent(t,"c:ser c:cat c:f")}extractComboChart(e){const t=this.mapOnElements({parent:e,query:"c:title a:t"},(e=>e.textContent||"")).join(""),o=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:{text:t},type:"combo",dataSets:[...this.extractChartDatasets(this.querySelectorAll(e,"c:barChart"),"comboChart"),...this.extractChartDatasets(this.querySelectorAll(e,"c:lineChart"),"comboChart")],labelRange:this.extractChildTextContent(e,"c:ser c:cat c:f"),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),legendPosition:uC[this.extractChildAttr(e,"c:legendPos","val",{default:"none"}).asString()],stacked:"stacked"===o,fontColor:"000000"}}extractChartDatasets(e,t){return Array.from(e).map((e=>"scatterChart"===t?this.extractScatterChartDatasets(e):this.mapOnElements({parent:e,query:"c:ser"},(e=>{let t={};const o=this.extractChildTextContent(e,"c:tx c:f");if(o)t={reference:o};else{const o=this.extractChildTextContent(e,"c:tx c:v");o&&(t={text:o})}const s=this.extractChildAttr(e,"c:spPr a:solidFill a:srgbClr","val");return{label:t,range:this.extractChildTextContent(e,"c:val c:f",{required:!0}),backgroundColor:s?`${zt(s.asString())}`:void 0}})))).flat()}extractScatterChartDatasets(e){return this.mapOnElements({parent:e,query:"c:ser"},(e=>{let t={};const o=this.extractChildTextContent(e,"c:tx c:f");if(o)t={reference:o};else{const o=this.extractChildTextContent(e,"c:tx c:v");o&&(t={text:o})}return{label:t,range:this.extractChildTextContent(e,"c:yVal c:f",{required:!0})}}))}getChartType(e){const t=this.querySelector(e,"c:plotArea");if(!t)throw new Error("Missing plot area in the chart definition.");let o;for(let e of t.children){const t=rx(e.tagName);Ry.some((e=>e===t))&&(o?o!==t&&(o="comboChart"):o=t)}if(o)return o;throw new Error("Unknown chart type")}}const px="oneCellAnchor",mx="twoCellAnchor";class fx extends cx{extractFigures(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"xdr:wsDr",children:!0},(e=>{const t=rx(e.tagName),o=this.extractFigureAnchorsByType(e,t),s=this.querySelector(e,"c:chart"),i=this.querySelector(e,"a:blip");if(!s&&!i)throw new Error("Only chart and image figures are currently supported.");return{anchors:o,data:s?this.extractChart(s):this.extractImage(e),figureSize:t===px?this.extractFigureSizeFromSizeTag(e,"xdr:ext"):void 0}}))}extractFigureAnchorsByType(e,t){switch(t){case px:return[this.extractFigureAnchor("xdr:from",e)];case mx:return[this.extractFigureAnchor("xdr:from",e),this.extractFigureAnchor("xdr:to",e)];default:throw new Error(`${t} is not supported for xlsx drawings. `)}}extractFigureSizeFromSizeTag(e,t){const o=this.querySelector(e,t);if(!o)throw new Error(`Missing size element '${t}'`);return{cx:this.extractAttr(o,"cx",{required:!0}).asNum(),cy:this.extractAttr(o,"cy",{required:!0}).asNum()}}extractFigureAnchor(e,t){const o=this.querySelector(t,e);if(!o)throw new Error(`Missing anchor element ${e}`);return{col:Number(this.extractChildTextContent(o,"xdr:col",{required:!0})),colOffset:Number(this.extractChildTextContent(o,"xdr:colOff",{required:!0})),row:Number(this.extractChildTextContent(o,"xdr:row",{required:!0})),rowOffset:Number(this.extractChildTextContent(o,"xdr:rowOff",{required:!0}))}}extractChart(e){const t=this.extractAttr(e,"r:id",{required:!0}).asString(),o=this.getTargetXmlFile(this.relationships[t]),s=new gx(o,this.xlsxFileStructure,this.warningManager).extractChart();if(!s)throw new Error("Unable to extract chart definition");return s}extractImage(e){const t=this.querySelector(e,"a:blip"),o=this.extractAttr(t,"r:embed",{required:!0}).asString(),s=this.getTargetImageFile(this.relationships[o]);if(!s)throw new Error("Unable to extract image");const i=s.fileName.split(".").at(-1),n=rx(e.tagName),r=n===mx?this.querySelector(e,"a:xfrm"):e,a=n===mx?"a:ext":"xdr:ext",l=this.extractFigureSizeFromSizeTag(r,a);return{imageSrc:s.imageSrc,mimetype:i?SC[i]:void 0,size:l}}}class vx extends cx{getPivotTable(){return this.mapOnElements({query:":root",parent:this.rootFile.file.xml},(e=>({name:this.extractAttr(e,"name",{required:!0}).asString(),rowGrandTotals:this.extractAttr(e,"rowGrandTotals",{default:!0}).asBool(),location:this.extractPivotLocation(e),style:this.extractPivotStyleInfo(e)})))[0]}extractPivotLocation(e){return this.mapOnElements({query:"location",parent:e},(e=>({ref:this.extractAttr(e,"ref",{required:!0}).asString(),firstHeaderRow:this.extractAttr(e,"firstHeaderRow",{required:!0}).asNum(),firstDataRow:this.extractAttr(e,"firstDataRow",{required:!0}).asNum(),firstDataCol:this.extractAttr(e,"firstDataCol",{required:!0}).asNum()})))[0]}extractPivotStyleInfo(e){return this.mapOnElements({query:"pivotTableStyleInfo",parent:e},(e=>({name:this.extractAttr(e,"name",{required:!0}).asString(),showRowHeaders:this.extractAttr(e,"showRowHeaders",{required:!0}).asBool(),showColHeaders:this.extractAttr(e,"showColHeaders",{required:!0}).asBool(),showRowStripes:this.extractAttr(e,"showRowStripes",{required:!0}).asBool(),showColStripes:this.extractAttr(e,"showColStripes",{required:!0}).asBool(),showLastColumn:this.extractAttr(e,"showLastColumn")?.asBool()})))[0]}}class bx extends cx{getTable(){return this.mapOnElements({query:"table",parent:this.rootFile.file.xml},(e=>({displayName:this.extractAttr(e,"displayName",{required:!0}).asString(),name:this.extractAttr(e,"name")?.asString(),id:this.extractAttr(e,"id",{required:!0}).asString(),ref:this.extractAttr(e,"ref",{required:!0}).asString(),headerRowCount:this.extractAttr(e,"headerRowCount",{default:1}).asNum(),totalsRowCount:this.extractAttr(e,"totalsRowCount",{default:0}).asNum(),cols:this.extractTableCols(e),style:this.extractTableStyleInfo(e),autoFilter:this.extractTableAutoFilter(e)})))[0]}extractTableCols(e){return this.mapOnElements({query:"tableColumn",parent:e},(e=>({id:this.extractAttr(e,"id",{required:!0}).asString(),name:this.extractAttr(e,"name",{required:!0}).asString(),colFormula:this.extractChildTextContent(e,"calculatedColumnFormula")})))}extractTableStyleInfo(e){return this.mapOnElements({query:"tableStyleInfo",parent:e},(e=>({name:this.extractAttr(e,"name")?.asString(),showFirstColumn:this.extractAttr(e,"showFirstColumn")?.asBool(),showLastColumn:this.extractAttr(e,"showLastColumn")?.asBool(),showRowStripes:this.extractAttr(e,"showRowStripes")?.asBool(),showColumnStripes:this.extractAttr(e,"showColumnStripes")?.asBool()})))[0]}extractTableAutoFilter(e){return this.mapOnElements({query:"autoFilter",parent:e},(e=>({columns:this.extractFilterColumns(e),zone:this.extractAttr(e,"ref",{required:!0}).asString()})))[0]}extractFilterColumns(e){return this.mapOnElements({query:"tableColumn",parent:e},(t=>({colId:this.extractAttr(e,"colId",{required:!0}).asNum(),hiddenButton:this.extractAttr(e,"hiddenButton",{default:!1}).asBool(),filters:this.extractSimpleFilter(t)})))}extractSimpleFilter(e){return this.mapOnElements({query:"filter",parent:e},(e=>({val:this.extractAttr(e,"val",{required:!0}).asString()})))}}class Sx extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}getSheet(){return this.mapOnElements({query:"worksheet",parent:this.rootFile.file.xml},(e=>{const t=this.getSheetWorkbookInfo();return{sheetName:this.extractSheetName(),sheetViews:this.extractSheetViews(e),sheetFormat:this.extractSheetFormat(e),sheetProperties:this.extractSheetProperties(e),cols:this.extractCols(e),rows:this.extractRows(e),sharedFormulas:this.extractSharedFormulas(e),merges:this.extractMerges(e),cfs:this.extractConditionalFormats(),dataValidations:this.extractDataValidations(),figures:this.extractFigures(e),hyperlinks:this.extractHyperLinks(e),tables:this.extractTables(e),pivotTables:this.extractPivotTables(),isVisible:"visible"===t.state}}))[0]}extractSheetViews(e){return this.mapOnElements({parent:e,query:"sheetView"},(e=>{const t=this.querySelector(e,"pane");return{tabSelected:this.extractAttr(e,"tabSelected",{default:!1}).asBool(),showFormulas:this.extractAttr(e,"showFormulas",{default:!1}).asBool(),showGridLines:this.extractAttr(e,"showGridLines",{default:!0}).asBool(),showRowColHeaders:this.extractAttr(e,"showRowColHeaders",{default:!0}).asBool(),pane:{xSplit:t?this.extractAttr(t,"xSplit",{default:0}).asNum():0,ySplit:t?this.extractAttr(t,"ySplit",{default:0}).asNum():0}}}))}extractSheetName(){const e=IC(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id;for(let e of this.querySelectorAll(this.xlsxFileStructure.workbook.file.xml,"sheet"))if(e.attributes["r:id"].value===t)return e.attributes.name.value;throw new Error("Missing sheet name")}getSheetWorkbookInfo(){const e=IC(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id,o=this.mapOnElements({parent:this.xlsxFileStructure.workbook.file.xml,query:"sheet"},(e=>({relationshipId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetId:this.extractAttr(e,"sheetId",{required:!0}).asString(),sheetName:this.extractAttr(e,"name",{required:!0}).asString(),state:this.extractAttr(e,"state",{default:"visible"}).asString()}))).find((e=>e.relationshipId===t));if(!o)throw new Error("Cannot find corresponding workbook sheet");return o}extractConditionalFormats(){return new dx(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractConditionalFormattings()}extractDataValidations(){return new ux(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractDataValidations()}extractFigures(e){return this.mapOnElements({parent:e,query:"drawing"},(e=>{const t=this.extractAttr(e,"r:id",{required:!0})?.asString(),o=this.getTargetXmlFile(this.relationships[t]);return new fx(o,this.xlsxFileStructure,this.warningManager).extractFigures()}))[0]||[]}extractTables(e){return this.mapOnElements({query:"tablePart",parent:e},(e=>{const t=this.extractAttr(e,"r:id",{required:!0})?.asString(),o=this.getTargetXmlFile(this.relationships[t]);return new bx(o,this.xlsxFileStructure,this.warningManager).getTable()}))}extractPivotTables(){try{return Object.values(this.relationships).filter((e=>e.type.endsWith("pivotTable"))).map((e=>{const t=this.getTargetXmlFile(e);return new vx(t,this.xlsxFileStructure,this.warningManager).getPivotTable()}))}catch(e){return this.catchErrorOnElement(e),[]}}extractMerges(e){return this.mapOnElements({parent:e,query:"mergeCell"},(e=>this.extractAttr(e,"ref",{required:!0}).asString()))}extractSheetFormat(e){const t=this.querySelector(e,"sheetFormatPr");if(t)return{defaultColWidth:this.extractAttr(t,"defaultColWidth",{default:Ly.toString()}).asNum(),defaultRowHeight:this.extractAttr(t,"defaultRowHeight",{default:Hy.toString()}).asNum()}}extractSheetProperties(e){const t=this.querySelector(e,"sheetPr");if(t)return{outlinePr:this.extractSheetOutlineProperties(t),tabColor:this.extractColor(this.querySelector(t,"tabColor"),this.theme)}}extractSheetOutlineProperties(e){const t=this.querySelector(e,"outlinePr");if(t)return{summaryBelow:this.extractAttr(t,"summaryBelow",{default:!0}).asBool(),summaryRight:this.extractAttr(t,"summaryRight",{default:!0}).asBool()}}extractCols(e){return this.mapOnElements({parent:e,query:"cols col"},(e=>({width:this.extractAttr(e,"width")?.asNum(),customWidth:this.extractAttr(e,"customWidth")?.asBool(),bestFit:this.extractAttr(e,"bestFit")?.asBool(),hidden:this.extractAttr(e,"hidden")?.asBool(),min:this.extractAttr(e,"min",{required:!0})?.asNum(),max:this.extractAttr(e,"max",{required:!0})?.asNum(),styleIndex:this.extractAttr(e,"style")?.asNum(),outlineLevel:this.extractAttr(e,"outlineLevel")?.asNum(),collapsed:this.extractAttr(e,"collapsed")?.asBool()})))}extractRows(e){return this.mapOnElements({parent:e,query:"sheetData row"},(e=>({index:this.extractAttr(e,"r",{required:!0})?.asNum(),cells:this.extractCells(e),height:this.extractAttr(e,"ht")?.asNum(),customHeight:this.extractAttr(e,"customHeight")?.asBool(),hidden:this.extractAttr(e,"hidden")?.asBool(),styleIndex:this.extractAttr(e,"s")?.asNum(),outlineLevel:this.extractAttr(e,"outlineLevel")?.asNum(),collapsed:this.extractAttr(e,"collapsed")?.asBool()})))}extractCells(e){return this.mapOnElements({parent:e,query:"c"},(e=>({xc:this.extractAttr(e,"r",{required:!0})?.asString(),styleIndex:this.extractAttr(e,"s")?.asNum(),type:iC[this.extractAttr(e,"t",{default:"n"})?.asString()],value:this.extractChildTextContent(e,"v"),formula:this.extractCellFormula(e)})))}extractCellFormula(e){const t=this.querySelector(e,"f");if(t)return{content:this.extractTextContent(t),sharedIndex:this.extractAttr(t,"si")?.asNum(),ref:this.extractAttr(t,"ref")?.asString()}}extractHyperLinks(e){return this.mapOnElements({parent:e,query:"hyperlink"},(e=>{const t=this.extractAttr(e,"r:id")?.asString();return{xc:this.extractAttr(e,"ref",{required:!0})?.asString(),location:this.extractAttr(e,"location")?.asString(),display:this.extractAttr(e,"display")?.asString(),relTarget:t?this.relationships[t].target:void 0}}))}extractSharedFormulas(e){const t=this.querySelectorAll(e,"f[si][ref]"),o={};for(let e of t){const t=this.extractAttr(e,"si",{required:!0}).asNum(),s=this.extractTextContent(e,{required:!0});o[t]=s}const s=[];for(let e=0;e<Object.keys(o).length;e++)o[e]?s.push(o[e]):(this.warningManager.addParsingWarning(`Missing shared formula ${e}, replacing it by empty formula`),s.push(""));return s}}class yx extends cx{theme;constructor(e,t,o){super(e.styles,e,t),this.theme=o}getNumFormats(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"numFmt"},(e=>this.extractNumFormats(e)))}extractNumFormats(e){return{id:this.extractAttr(e,"numFmtId",{required:!0}).asNum(),format:this.extractAttr(e,"formatCode",{required:!0,default:""}).asString()}}getFonts(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"font"},(e=>this.extractFont(e)))}extractFont(e){const t=this.extractChildAttr(e,"name","val",{default:"Arial"}).asString(),o=this.extractChildAttr(e,"sz","val",{default:fe.toString()}).asNum(),s=this.extractColor(this.querySelector(e,"color"),this.theme),i=this.querySelector(e,"i")||void 0,n=i&&"0"!==i.attributes.val?.value,r=this.querySelector(e,"b")||void 0,a=r&&"0"!==r.attributes.val?.value,l=this.querySelector(e,"strike")||void 0,c=l&&"0"!==l.attributes.val?.value,h=this.querySelector(e,"u")||void 0;return{name:t,size:o,color:s,italic:n,bold:a,underline:h&&"none"!==h.attributes.val?.value,strike:c}}getFills(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"fill"},(e=>this.extractFill(e)))}extractFill(e){const t=e.children[0];return"patternFill"===t.tagName?{patternType:t.attributes.patternType?.value,bgColor:this.extractColor(this.querySelector(t,"bgColor"),this.theme),fgColor:this.extractColor(this.querySelector(t,"fgColor"),this.theme)}:{patternType:"solid",fgColor:this.extractColor(this.querySelectorAll(t,"color")[1],this.theme)}}getBorders(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"border"},(e=>this.extractBorder(e)))}extractBorder(e){const t={left:this.extractSingleBorder(e,"left",this.theme),right:this.extractSingleBorder(e,"right",this.theme),top:this.extractSingleBorder(e,"top",this.theme),bottom:this.extractSingleBorder(e,"bottom",this.theme),diagonal:this.extractSingleBorder(e,"diagonal",this.theme)};return t.diagonal&&(t.diagonalUp=this.extractAttr(e,"diagonalUp")?.asBool(),t.diagonalDown=this.extractAttr(e,"diagonalDown")?.asBool()),t}extractSingleBorder(e,t,o){const s=this.querySelector(e,t);if(s&&s.attributes.style)return{style:this.extractAttr(s,"style",{required:!0,default:"thin"}).asString(),color:this.extractColor(s.children[0],o,"000000")}}extractAlignment(e){return{horizontal:this.extractAttr(e,"horizontal",{default:"general"}).asString(),vertical:this.extractAttr(e,"vertical",{default:"bottom"}).asString(),textRotation:this.extractAttr(e,"textRotation")?.asNum(),wrapText:this.extractAttr(e,"wrapText")?.asBool(),indent:this.extractAttr(e,"indent")?.asNum(),relativeIndent:this.extractAttr(e,"relativeIndent")?.asNum(),justifyLastLine:this.extractAttr(e,"justifyLastLine")?.asBool(),shrinkToFit:this.extractAttr(e,"shrinkToFit")?.asBool(),readingOrder:this.extractAttr(e,"readingOrder")?.asNum()}}getDxfs(){return this.mapOnElements({query:"dxf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"font"),o=this.querySelector(e,"fill"),s=this.querySelector(e,"border"),i=this.querySelector(e,"numFmt"),n=this.querySelector(e,"alignment");return{font:t?this.extractFont(t):void 0,fill:o?this.extractFill(o):void 0,numFmt:i?this.extractNumFormats(i):void 0,alignment:n?this.extractAlignment(n):void 0,border:s?this.extractBorder(s):void 0}}))}getStyles(){return this.mapOnElements({query:"cellXfs xf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"alignment");return{fontId:this.extractAttr(e,"fontId",{required:!0,default:0}).asNum(),fillId:this.extractAttr(e,"fillId",{required:!0,default:0}).asNum(),borderId:this.extractAttr(e,"borderId",{required:!0,default:0}).asNum(),numFmtId:this.extractAttr(e,"numFmtId",{required:!0,default:0}).asNum(),alignment:t?this.extractAlignment(t):void 0}}))}}class Cx extends cx{getExternalBook(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"externalBook"},(e=>({rId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetNames:this.mapOnElements({parent:e,query:"sheetName"},(e=>this.extractAttr(e,"val",{required:!0}).asString())),datasets:this.extractExternalSheetData(e)})))[0]}extractExternalSheetData(e){return this.mapOnElements({parent:e,query:"sheetData"},(e=>{const t=this.mapOnElements({parent:e,query:"cell"},(e=>({xc:this.extractAttr(e,"r",{required:!0}).asString(),value:this.extractChildTextContent(e,"v",{required:!0})}))),o={};for(let e of t)o[e.xc]=e.value;return{sheetId:this.extractAttr(e,"sheetId",{required:!0}).asNum(),data:o}}))}}function wx(e,t){const o=function(e,t){const o=t[Wy],s=o.querySelectorAll(`Override[ContentType="${e}"]`),i=[];for(let e of s){const t=e?.attributes.PartName.value;i.push(t.substring(1))}return i}(e,t);return function(e,t){const o=[];for(let s of e){const e=xx(s,t);o.push({file:{fileName:s,xml:t[s]},rels:e?{fileName:e,xml:t[e]}:void 0})}return o}(o,t)}function xx(e,t){if(e===Wy)return"_rels/.rels";let o="";const s=e.split("/");for(let e=0;e<s.length-1;e++)o+=s[e]+"/";return o+="_rels/",o+=s[s.length-1]+".rels",t[o]||(o=void 0),o}class Ix{warningManager;xmls;images;constructor(e){this.warningManager=new Ky,this.xmls={},this.images=[];for(let t of Object.keys(e))if(t.endsWith(".xml")||t.endsWith(".rels")){const o=e[t].replaceAll(/(<\/?)([a-zA-Z0-9]+):([a-zA-Z0-9]+)/g,"$1NAMESPACE$2NAMESPACE$3");this.xmls[t]=tx(new Ey(o))}else t.includes("media/image")&&this.images.push({fileName:t,imageSrc:e[t].imageSrc})}convertXlsx(){const e=this.getXlsxData();return this.convertImportedData(e)}getXlsxData(){const e=this.buildXlsxFileStructure(),t=e.theme?new hx(e.theme,e,this.warningManager).getTheme():void 0,o=e.sharedStrings?new hx(e.sharedStrings,e,this.warningManager).getSharedStrings():[],s=e.sheets.sort(((e,t)=>e.file.fileName.localeCompare(t.file.fileName,void 0,{numeric:!0}))).map((o=>new Sx(o,e,this.warningManager,t).getSheet())),i=e.externalLinks.map((t=>new Cx(t,e,this.warningManager).getExternalBook())),n=new yx(e,this.warningManager,t);return{fonts:n.getFonts(),fills:n.getFills(),borders:n.getBorders(),dxfs:n.getDxfs(),numFmts:n.getNumFormats(),styles:n.getStyles(),sheets:s,sharedStrings:o,externalBooks:i}}buildXlsxFileStructure(){const e={sheets:wx(Fy.sheet,this.xmls),workbook:wx(Fy.workbook,this.xmls)[0]||wx(Fy.macroEnabledWorkbook,this.xmls)[0]||wx(Fy.templateWorkbook,this.xmls)[0]||wx(Fy.macroEnabledTemplateWorkbook,this.xmls)[0]||wx(Fy.excelAddInWorkbook,this.xmls)[0],styles:wx(Fy.styles,this.xmls)[0],sharedStrings:wx(Fy.sharedStrings,this.xmls)[0],theme:wx(Fy.themes,this.xmls)[0],charts:wx(Fy.chart,this.xmls),figures:wx(Fy.drawing,this.xmls),tables:wx(Fy.table,this.xmls),pivots:wx(Fy.pivot,this.xmls),externalLinks:wx(Fy.externalLink,this.xmls),images:this.images};if(!e.workbook.rels)throw Error(Uo("Cannot find workbook relations file"));return e}convertImportedData(e){const t={version:24,sheets:Sw(e,this.warningManager),styles:FC(e,this.warningManager),formats:PC(e,this.warningManager),borders:DC(e,this.warningManager),revisionId:ye};return Zw(t,e),Object.keys(e.styles).map((t=>{e.styles[t]=St(e.styles[t])})),t}}function Ex(e){const t=Gf(e);let o=[];return{text:"".concat(...t.map((e=>{if("REFERENCE"===e.type&&Nr.test(e.value)){const t=e.value.trim();return o.includes(t)||o.push(t),`${Oe}${o.indexOf(t)}${Oe}`}return e.value}))),dependencies:o}}const Rx={am_ET:7,ar_001:6,ar_SY:6,az_AZ:1,eu_ES:1,be_BY:1,bn_IN:1,bs_BA:1,bg_BG:1,ca_ES:1,zh_CN:7,zh_HK:7,zh_TW:7,hr_HR:1,cs_CZ:1,da_DK:1,nl_BE:1,nl_NL:1,en_AU:7,en_CA:7,en_GB:1,en_IN:7,en_NZ:7,et_EE:1,fi_FI:1,fr_BE:1,fr_CA:7,fr_CH:1,fr_FR:1,gl_ES:1,ka_GE:1,de_DE:1,de_CH:1,el_GR:1,gu_IN:7,he_IL:7,hi_IN:7,hu_HU:1,id_ID:7,it_IT:1,ja_JP:7,kab_DZ:6,km_KH:7,ko_KP:1,ko_KR:7,lo_LA:7,lv_LV:1,lt_LT:1,lb_LU:1,mk_MK:1,ml_IN:1,mn_MN:7,ms_MY:1,nb_NO:1,fa_IR:6,pl_PL:1,pt_AO:1,pt_BR:7,pt_PT:1,ro_RO:1,ru_RU:1,sr_RS:7,"sr@latin":7,sk_SK:1,sl_SI:1,es_AR:7,es_BO:1,es_CL:1,es_CO:7,es_CR:1,es_DO:1,es_EC:1,es_GT:7,es_MX:7,es_PA:7,es_PE:7,es_PY:7,es_UY:1,es_VE:7,sw:1,sv_SE:1,th_TH:7,tl_PH:1,tr_TR:1,uk_UA:1,vi_VN:1,sq_AL:1,te_IN:7,en_US:7,my_MM:7,es_ES:1,es_419:1},Tx=new n;function Ax(e){for(let t of e.sheets||[]){let e=[];for(let o of t.filterTables||[]){const t=$o(o.range),s=e.findIndex((e=>es(e,t)));-1!==s?e[s]=t:e.push(t)}t.filterTables=e.map((e=>({range:qo(e)})))}return e}Tx.add("migration_1",{versionFrom:"1",migrate:e=>(e.sheets&&e.sheets[0]&&(e.activeSheet=e.sheets[0].name),e)}).add("migration_2",{versionFrom:"2",migrate(e){if(e.sheets&&e.sheets.length)for(let t of e.sheets)t.id=t.id||t.name;return e}}).add("migration_3",{versionFrom:"3",migrate(e){if(e.sheets&&e.activeSheet){const t=e.sheets.find((t=>t.name===e.activeSheet));e.activeSheet=t.id}return e}}).add("migration_4",{versionFrom:"4",migrate(e){for(let t of e.sheets||[])t.figures=t.figures||[];return e}}).add("migration_5",{versionFrom:"5",migrate(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];o.content&&o.content.startsWith("=")&&(o.formula=Ex(o.content))}return e}}).add("migration_6",{versionFrom:"6",migrate(e){for(let t of e.sheets||[])for(let e in t.figures||[]){const{dataSets:o,...s}=t.figures[e].data,i=[];for(let e of o)if(e.labelCell){const t=$o(e.dataRange),o=e.labelCell+":"+Ao(t.right,t.bottom);i.push(o)}else i.push(e.dataRange);s.dataSetsHaveTitle=Boolean(o[0].labelCell),s.dataSets=i,t.figures[e].data=s}return e}}).add("migration_7",{versionFrom:"7",migrate(e){const t=[];for(let o of e.sheets||[]){if(!o.name)continue;const e=o.name,s=kt(qe(e,"_"),t,{compute:(e,t)=>`${e}${t}`});o.name=s,t.push(s);const i=t=>{if(void 0===t)return t;let o=t.replace(e,s),i=t;for(;i!==o;)i=o,o=i.replace(e,s);return i};for(let e in o.cells){const t=o.cells[e];t.formula&&(t.formula.dependencies=t.formula.dependencies.map(i))}for(let e of o.figures||[])if("chart"===e.type){const t=e.data.dataSets.map(i),o=i(e.data.labelRange);e.data={...e.data,dataSets:t,labelRange:o}}for(let e of o.conditionalFormats||[]){e.ranges=e.ranges.map(i);for(const t of["minimum","maximum","midpoint","upperInflectionPoint","lowerInflectionPoint"])"formula"===e.rule[t]?.type&&(e.rule[t].value=i(e.rule[t].value))}}return e}}).add("migration_8",{versionFrom:"8",migrate(e){for(const t of e.sheets||[])for(const e of t.figures||[])e.data.background=m,e.data.verticalAxisPosition="left",e.data.legendPosition="top",e.data.stacked=!1;return e}}).add("migration_9",{versionFrom:"9",migrate(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];if(o.formula){let{text:e,dependencies:t}=o.formula;for(let[o,s]of Object.entries(t)){const t=`\\${Oe}${o}\\${Oe}`;e=e.replace(new RegExp(t,"g"),s)}o.content=e,delete o.formula}}return e}}).add("migration_10",{versionFrom:"10",migrate(e){const t={};for(let o of e.sheets||[])for(let e in o.cells||[]){const s=o.cells[e];s.format&&(s.format=bs(s.format,t))}return e.formats=t,e}}).add("migration_11",{versionFrom:"11",migrate(e){for(let t of e.sheets||[])t.isVisible=!0;return e}}).add("migration_12",{versionFrom:"12",migrate:e=>Ax(e)}).add("migration_12_5",{versionFrom:"12.5",migrate(e){for(const t in e.borders){const o=e.borders[t];for(const e in o)Array.isArray(o[e])&&(o[e]={style:o[e][0],color:o[e][1]})}return e}}).add("migration_13",{versionFrom:"13",migrate:e=>(e.settings||(e.settings={}),e.settings.locale||(e.settings.locale=fi),e)}).add("migration_14",{versionFrom:"14",migrate:e=>Ax(e)}).add("migration_14_5",{versionFrom:"14.5",migrate(e){for(const t of e.sheets||[])t.tables=t.tables||t.filterTables||[],delete t.filterTables;return e}}).add("migration_15",{versionFrom:"15",migrate:e=>(e.pivots||(e.pivots={}),e.pivotNextId||(e.pivotNextId=gc(e.pivots)+1),e)}).add("migration_16",{versionFrom:"16",migrate(e){for(const t of e.sheets||[])for(const e in t.figures||[]){const o=t.figures[e];"title"in o.data&&"string"==typeof o.data.title&&(o.data.title={text:o.data.title});const s=o.data.type;if(!["line","bar","pie","scatter","waterfall","combo"].includes(s))continue;const{dataSets:i,...n}=t.figures[e].data,r=i.map((e=>({dataRange:e})));n.dataSets=r,t.figures[e].data=n}return e}}).add("migration_17",{versionFrom:"17",migrate:e=>e}).add("migration_18",{versionFrom:"18",migrate(e){for(const t of Object.values(e.pivots||{}))t.measures=t.measures.map((e=>({id:e.name,fieldName:e.name,aggregator:e.aggregator}))),t.columns=t.columns.map((e=>({fieldName:e.name,order:e.order,granularity:e.granularity}))),t.rows=t.rows.map((e=>({fieldName:e.name,order:e.order,granularity:e.granularity})));return e}}).add("migration_19",{versionFrom:"19",migrate(e){const t=e.settings?.locale;if(t){const e=t.code;t.weekStart=Rx[e]||1}return e}}).add("migration_20",{versionFrom:"20",migrate(e){for(const t of e.sheets||[]){t.styles={},t.formats={},t.borders={};for(const e in t.cells)t.styles[e]=t.cells[e].style,t.formats[e]=t.cells[e].format,t.borders[e]=t.cells[e].border,delete t.cells[e].style,delete t.cells[e].format,delete t.cells[e].border}return e}}).add("migration_21",{versionFrom:"21",migrate(e){for(const t of e.sheets||[])for(const e of t.figures||[]){if("chart"!==e.tag||"gauge"!==e.data.type)continue;const t=e.data;t?.sectionRule?.lowerInflectionPoint&&(t.sectionRule.lowerInflectionPoint.operator="<="),t?.sectionRule?.upperInflectionPoint&&(t.sectionRule.upperInflectionPoint.operator="<=")}return e}}).add("migration_22",{versionFrom:"22",migrate(e){for(const t of e.sheets||[])for(const e of t.tables||[])e.config||(e.config={...Aw,hasFilters:!0});return e}}).add("migration_23",{versionFrom:"23",migrate(e){for(const t of e.sheets||[])for(const e in t.cells){const o=t.cells[e];o&&(t.cells[e]=o.content)}return e}}).add("migration_24",{versionFrom:"24",migrate:e=>e});const _x=25,Dx="Sheet1";function Ox(e,t){if(!e)return Nx();console.debug("### Loading data ###");const o=performance.now();if(e["[Content_Types].xml"]){const o=new Ix(e);if(e=o.convertXlsx(),t)for(let e of o.warningManager.warnings.sort())console.warn(e)}return"version"in e&&e.version<_x&&(console.debug("Migrating data from version",e.version),e=function(e){const t=performance.now(),o=Tx.getAll().sort(((e,t)=>function(e,t){const o=e.split(".").map(Number),s=t.split(".").map(Number);for(let e=0;e<Math.max(o.length,s.length);e++){const t=o[e]||0,i=s[e]||0;if(t>i)return 1;if(t<i)return-1}return 0}(e.versionFrom,t.versionFrom)));for(let t=o.findIndex((t=>t.versionFrom===e.version.toString()));t<o.length;t++)e=o[t].migrate(e);return console.debug("Data migrated in",performance.now()-t,"ms"),e}(e)),e=function(e){return e=function(e){if(e.uniqueFigureIds)return e;const t=new Set,o=new xa;for(const s of e.sheets||[])for(const e of s.figures||[])t.has(e.id)&&(e.id+=o.smallUuid()),t.add(e.id);return e.uniqueFigureIds=!0,e}(e),e=function(e){const t=Object.assign(Nx(),e,{version:_x});t.sheets=t.sheets?t.sheets.map(((e,t)=>Object.assign(Px(`Sheet${t+1}`,`Sheet${t+1}`),e))):[],0===t.sheets.length&&t.sheets.push(Px(Dx,"Sheet1"));ja(t.settings.locale)||(t.settings.locale=fi);return t}(e),e}(e),console.debug("Data loaded in",performance.now()-o,"ms"),console.debug("###"),e}function Fx(e,t){return t=function(e,t){if(0!==Object.keys(e).length)return t;const o=[],s=[],i=e=>{if("CREATE_SHEET"===e.type)o.push(e.sheetId);else if("sheetId"in e&&!o.includes(e.sheetId))return{...e,sheetId:Dx};return e};for(const e of t)"REMOTE_REVISION"===e.type?s.push({...e,commands:e.commands.map(i)}):s.push(e);return s}(e,t),t=Mx(t,"SORT_CELLS"),t=function(e,t){const o=[],s={};for(const t of e.sheets||[])t.figures?.forEach((e=>{"chart"===e.tag&&(s[e.id]=e.data)}));for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const o of e.commands){let e=o;switch(o.type){case"CREATE_CHART":s[o.id]=o.definition;break;case"UPDATE_CHART":if(!s[o.id]){console.log(`Fix chart definition: chart with id ${o.id} not found.`);continue}const t={...s[o.id],...o.definition};e={...o,definition:t},s[o.id]=t}t.push(e)}o.push({...e,commands:t})}else o.push(e);return o}(e,t=Mx(t,"SET_DECIMAL")),t=function(e,t){const o={};for(const t of e.sheets||[])o[t.id]=t.name;const s=[];for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const s of e.commands){switch(s.type){case"DUPLICATE_SHEET":s.sheetNameTo=s.sheetNameTo??ia(o[s.sheetId],Object.values(o));break;case"CREATE_SHEET":case"RENAME_SHEET":o[s.sheetId]=s.name||sa(Object.values(o))}t.push(s)}s.push({...e,commands:t})}else s.push(e);return t}(e,t),t}function Mx(e,t){const o=[];for(const s of e)"REMOTE_REVISION"===s.type?o.push({...s,commands:s.commands.filter((e=>e.type!==t))}):o.push(s);return o}function Px(e,t){return{id:e,name:t,colNumber:26,rowNumber:100,cells:{},styles:{},formats:{},borders:{},cols:{},rows:{},merges:[],conditionalFormats:[],dataValidationRules:[],figures:[],tables:[],isVisible:!0}}function Nx(e="Sheet1"){return{version:_x,sheets:[Px(Dx,e)],styles:{},formats:{},borders:{},revisionId:ye,uniqueFigureIds:!0,settings:{locale:fi},pivots:{},pivotNextId:1,customTableStyles:{}}}function kx(e,t){return{...Px(e,t),charts:[],images:[],cellValues:{}}}const Vx={wrongPasteSelection:Uo("This operation is not allowed with multiple selections."),willRemoveExistingMerge:Uo("This operation is not possible due to a merge. Please remove the merges first than try again."),wrongFigurePasteOption:Uo("Cannot do a special paste of a figure."),frozenPaneOverlap:Uo("This operation is not allowed due to an overlapping frozen pane.")};function Lx(e,t){t.isSuccessful||(t.reasons.includes("WrongPasteSelection")?e.raiseError(Vx.wrongPasteSelection):t.reasons.includes("WillRemoveExistingMerge")?e.raiseError(Vx.willRemoveExistingMerge):t.reasons.includes("WrongFigurePasteOption")?e.raiseError(Vx.wrongFigurePasteOption):t.reasons.includes("FrozenPaneOverlap")&&e.raiseError(Vx.frozenPaneOverlap))}function Hx(e,t,o){const s=e.model.dispatch("PASTE",{target:t,pasteOption:o});Lx(e,s)}function Ux(e,t,o,s){let i;try{i=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,clipboardContent:o,pasteOption:s})}catch(n){const r=o.data;r?.version!==_x&&e.raiseError(Uo("An unexpected error occurred while pasting content. This is probably due to a spreadsheet version mismatch.")),i=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,clipboardContent:{text:o.text},pasteOption:s})}Lx(e,i)}const Bx={Errors:{InvalidRange:Uo("The range is invalid"),FirstArgMissing:Uo("The argument is missing. Please provide a value"),SecondArgMissing:Uo("The second argument is missing. Please provide a value"),MinNaN:Uo("The minpoint must be a number"),MidNaN:Uo("The midpoint must be a number"),MaxNaN:Uo("The maxpoint must be a number"),ValueUpperInflectionNaN:Uo("The first value must be a number"),ValueLowerInflectionNaN:Uo("The second value must be a number"),MinBiggerThanMax:Uo("Minimum must be smaller then Maximum"),MinBiggerThanMid:Uo("Minimum must be smaller then Midpoint"),MidBiggerThanMax:Uo("Midpoint must be smaller then Maximum"),LowerBiggerThanUpper:Uo("Lower inflection point must be smaller than upper inflection point"),MinInvalidFormula:Uo("Invalid Minpoint formula"),MaxInvalidFormula:Uo("Invalid Maxpoint formula"),MidInvalidFormula:Uo("Invalid Midpoint formula"),ValueUpperInvalidFormula:Uo("Invalid upper inflection point formula"),ValueLowerInvalidFormula:Uo("Invalid lower inflection point formula"),EmptyRange:Uo("A range needs to be defined"),ValueCellIsInvalidFormula:Uo("At least one of the provided values is an invalid formula"),Unexpected:Uo("The rule is invalid for an unknown reason")},ColorScale:Uo("Color scale"),IconSet:Uo("Icon set"),DataBar:Uo("Data bar")},zx={IsEmpty:Uo("Is empty"),IsNotEmpty:Uo("Is not empty"),ContainsText:Uo("Contains"),NotContains:Uo("Does not contain"),BeginsWith:Uo("Starts with"),EndsWith:Uo("Ends with"),Equal:Uo("Is equal to"),NotEqual:Uo("Is not equal to"),GreaterThan:Uo("Is greater than"),GreaterThanOrEqual:Uo("Is greater than or equal to"),LessThan:Uo("Is less than"),LessThanOrEqual:Uo("Is less than or equal to"),Between:Uo("Is between"),NotBetween:Uo("Is not between")},$x={Series:Uo("Series"),BackgroundColor:Uo("Background color"),StackedBarChart:Uo("Stacked bar chart"),StackedLineChart:Uo("Stacked line chart"),StackedAreaChart:Uo("Stacked area chart"),StackedColumnChart:Uo("Stacked column chart"),CumulativeData:Uo("Cumulative data"),TreatLabelsAsText:Uo("Treat labels as text"),AggregatedChart:Uo("Aggregate"),Errors:{Unexpected:Uo("The chart definition is invalid for an unknown reason"),InvalidDataSet:Uo("The dataset is invalid"),InvalidLabelRange:Uo("Labels are invalid"),InvalidScorecardKeyValue:Uo("The key value is invalid"),InvalidScorecardBaseline:Uo("The baseline value is invalid"),InvalidGaugeDataRange:Uo("The data range is invalid"),EmptyGaugeRangeMin:Uo("A minimum range limit value is needed"),GaugeRangeMinNaN:Uo("The minimum range limit value must be a number"),EmptyGaugeRangeMax:Uo("A maximum range limit value is needed"),GaugeRangeMaxNaN:Uo("The maximum range limit value must be a number"),GaugeLowerInflectionPointNaN:Uo("The lower inflection point value must be a number"),GaugeUpperInflectionPointNaN:Uo("The upper inflection point value must be a number")},GeoChart:{ColorScales:{blues:Uo("Blues"),cividis:Uo("Cividis"),greens:Uo("Greens"),greys:Uo("Greys"),oranges:Uo("Oranges"),purples:Uo("Purples"),rainbow:Uo("Rainbow"),reds:Uo("Reds"),viridis:Uo("Viridis")}}},Gx={Custom:Uo("Custom")},Wx=Uo("Merged cells are preventing this operation. Unmerge those cells and try again."),qx={Errors:{Unexpected:Uo("Cannot split the selection for an unknown reason"),NoSplitSeparatorInSelection:Uo("There is no match for the selected separator in the selection"),MoreThanOneColumnSelected:Uo("Only a selection from a single column can be split"),SplitWillOverwriteContent:Uo("Splitting will overwrite existing content")}},Zx={Errors:{Unexpected:Uo("Cannot remove duplicates for an unknown reason"),MoreThanOneRangeSelected:Uo("Please select only one range of cells"),EmptyTarget:Uo("Please select a range of cells containing values."),NoColumnsProvided:Uo("Please select at latest one column to analyze."),WillRemoveExistingMerge:Vx.willRemoveExistingMerge}},jx={DateIs:{today:Uo("today"),yesterday:Uo("yesterday"),tomorrow:Uo("tomorrow"),lastWeek:Uo("in the past week"),lastMonth:Uo("in the past month"),lastYear:Uo("in the past year")},DateIsBefore:{today:Uo("today"),yesterday:Uo("yesterday"),tomorrow:Uo("tomorrow"),lastWeek:Uo("one week ago"),lastMonth:Uo("one month ago"),lastYear:Uo("one year ago")},CriterionError:{notEmptyValue:Uo("The value must not be empty"),numberValue:Uo("The value must be a number"),dateValue:Uo("The value must be a date"),validRange:Uo("The value must be a valid range"),validFormula:Uo("The formula must be valid")},Errors:{InvalidRange:Uo("The range is invalid."),InvalidDataValidationCriterionValue:Uo("One or more of the provided criteria values are invalid. Please review and correct them."),InvalidNumberOfCriterionValues:Uo("One or more of the provided criteria values are missing."),Unexpected:Uo("The rule is invalid for an unknown reason.")}},Yx={Errors:{Unexpected:Uo("The table zone is invalid for an unknown reason"),TableOverlap:Uo("You cannot create overlapping tables."),NonContinuousTargets:Uo("A table can only be created on a continuous selection."),InvalidRange:Uo("The range is invalid"),TargetOutOfSheet:Uo("The range is out of the sheet")},Checkboxes:{hasFilters:Uo("Filter button"),headerRow:Uo("Header row(s)"),bandedRows:Uo("Banded rows"),firstColumn:Uo("First column"),lastColumn:Uo("Last column"),bandedColumns:Uo("Banded columns"),automaticAutofill:Uo("Automatically autofill formulas"),totalRow:Uo("Total row"),isDynamic:Uo("Auto-adjust to formula result")},Tooltips:{filterWithoutHeader:Uo("Cannot have filters without a header row"),isDynamic:Uo("For tables based on array formulas only")}},Xx={labels:{no_calculations:Uo("No calculations"),"%_of_grand_total":Uo("% of grand total"),"%_of_col_total":Uo("% of column total"),"%_of_row_total":Uo("% of row total"),"%_of":Uo("% of"),"%_of_parent_row_total":Uo("% of parent row total"),"%_of_parent_col_total":Uo("% of parent column total"),"%_of_parent_total":Uo("% of parent total"),difference_from:Uo("Difference from"),"%_difference_from":Uo("% difference from"),running_total:Uo("Running total"),"%_running_total":Uo("% Running total"),rank_asc:Uo("Rank smallest to largest"),rank_desc:Uo("Rank largest to smallest"),index:Uo("Index")},descriptions:{"%_of_grand_total":()=>Uo("Displayed as % of grand total"),"%_of_col_total":()=>Uo("Displayed as % of column total"),"%_of_row_total":()=>Uo("Displayed as % of row total"),"%_of":e=>Uo('Displayed as % of "%s"',e),"%_of_parent_row_total":e=>Uo('Displayed as % of parent row total of "%s"',e),"%_of_parent_col_total":()=>Uo("Displayed as % of parent column total"),"%_of_parent_total":e=>Uo('Displayed as % of parent "%s" total',e),difference_from:e=>Uo('Displayed as difference from "%s"',e),"%_difference_from":e=>Uo('Displayed as % difference from "%s"',e),running_total:e=>Uo('Displayed as running total based on "%s"',e),"%_running_total":e=>Uo('Displayed as % running total based on "%s"',e),rank_asc:e=>Uo('Displayed as rank from smallest to largest based on "%s"',e),rank_desc:e=>Uo('Displayed as rank largest to smallest based on "%s"',e),index:()=>Uo("Displayed as index")},documentation:{no_calculations:Uo("Displays the value that is entered in the field."),"%_of_grand_total":Uo("Displays values as a percentage of the grand total of all the values or data points in the report."),"%_of_col_total":Uo("Displays all the values in each column or series as a percentage of the total for the column or series."),"%_of_row_total":Uo("Displays the value in each row or category as a percentage of the total for the row or category."),"%_of":Uo("Displays values as a percentage of the value of the Base item in the Base field."),"%_of_parent_row_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item on rows)"),"%_of_parent_col_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item on columns)"),"%_of_parent_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item of the selected Base field)"),difference_from:Uo("Displays values as the difference from the value of the Base item in the Base field."),"%_difference_from":Uo("Displays values as the percentage difference from the value of the Base item in the Base field."),running_total:Uo("Displays the value for successive items in the Base field as a running total."),"%_running_total":Uo("Calculates the value as a percentage for successive items in the Base field that are displayed as a running total."),rank_asc:Uo("Displays the rank of selected values in a specific field, listing the smallest item in the field as 1, and each larger value with a higher rank value."),rank_desc:Uo("Displays the rank of selected values in a specific field, listing the largest item in the field as 1, and each smaller value with a higher rank value."),index:Uo("Calculates values as follows:\n((value in cell) x (Grand Total of Grand Totals)) / ((Grand Row Total) x (Grand Column Total))")}},Kx={second:1e3,minute:6e4,hour:36e5,day:864e5,month:2592e6,year:31536e6},Jx={inSeconds:function(e){return Math.floor(e/Kx.second)},inMinutes:function(e){return Math.floor(e/Kx.minute)},inHours:function(e){return Math.floor(e/Kx.hour)},inDays:function(e){return Math.floor(e/Kx.day)},inMonths:function(e){return Math.floor(e/Kx.month)},inYears:function(e){return Math.floor(e/Kx.year)}},Qx=/^((d|dd|m|mm|yyyy|yy|hh|h|ss|a)(-|:|\s|\/))*(d|dd|m|mm|yyyy|yy|hh|h|ss|a)$/i;function eI(e,t,o){const s=function(e){const t=e.indexOf("h");e=t>=0?e.slice(0,t).replace(/m/g,"M")+e.slice(t):e.replace(/m/g,"M");e.includes("a")||(e=e.replace(/h/g,"H"));return e}(t),i=function(e,t,o){const s=e.map((e=>Vs(e,o)?.jsDate));if(s.some((e=>void 0===e))||e.length<2)return;const i=s.map((e=>e.getTime())),n=Ot(i)-Ft(i),r=function(e){if(e.includes("s"))return"second";if(e.includes("m"))return"minute";if(e.includes("h")||e.includes("H"))return"hour";if(e.includes("d"))return"day";if(e.includes("M"))return"month";return"year"}(t);if(Kx.second>=Kx[r]&&Jx.inSeconds(n)<180)return"second";if(Kx.minute>=Kx[r]&&Jx.inMinutes(n)<180)return"minute";if(Kx.hour>=Kx[r]&&Jx.inHours(n)<96)return"hour";if(Kx.day>=Kx[r]&&Jx.inDays(n)<90)return"day";if(Kx.month>=Kx[r]&&Jx.inMonths(n)<36)return"month";return"year"}(e,s,o),n={};return i&&(n[i]=s),{parser:s,displayFormats:n,unit:i??!1}}function tI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n));const r=SI(s,t,"left"),a=SI(s,t,"right"),l=e.horizontal?{x:r||a}:{y:r,y1:a},c=[];for(const t in n){const{data:o}=n[t],s=e.dataSets?.[t].trend;if(!s?.display||e.horizontal){c.push(void 0);continue}const i=aI(s,o);c.push(i)}return{dataSetsValues:n,trendDataSetsValues:c,axisFormats:l,labels:i,locale:s.getLocale()}}function oI(e,t,o,s){const i=tI(e,t,o,s),n=i.dataSetsValues.filter((e=>!e.hidden)),r=[];if(n[0]){const e=n[0].data.map((e=>e>0?e:0));r.push({...n[0],data:e})}if(n[1]){const e=n[1].data.map((e=>e>0?-e:0));r.push({...n[1],data:e})}return{...i,dataSetsValues:r}}function sI(e,t,o,s){const i=function(e,t,o,s){if(function(e,t,o,s){return!e.labelsAsText&&dI(e,t,o,s)}(e,t,o,s)&&function(){if(!window.Chart)return!1;const e="luxon"===new window.Chart._adapters._date({})._id;e||gI||(gI=!0,console.warn("'chartjs-adapter-luxon' time adapter is not installed. Time scale axes are disabled."));return e}())return"time";if(function(e,t,o,s){return!e.labelsAsText&&uI(e,t,o,s)}(e,t,o,s))return"linear";return"category"}(e,t,o,s),n=bI(s,t,o);let r="linear"===i?n.values:n.formattedValues,a=yI(s,t);const l=wh(o,t[0],e.dataSetsHaveTitle||!1);l&&r.shift(),({labels:r,dataSetsValues:a}=mI(r,a)),"time"===i&&({labels:r,dataSetsValues:a}=function(e,t){if(0===e.length||e.every((e=>!e)))return{labels:e,dataSetsValues:t};const o=[...e],s=ze(t);for(let e=0;e<o.length;e++)if(!o[e]){o[e]=pt(o,e);for(let t of s)t.data[e]=void 0}return{labels:o,dataSetsValues:s}}(r,a)),e.aggregated&&({labels:r,dataSetsValues:a}=fI(r,a));const c={y:SI(s,t,"left"),y1:SI(s,t,"right"),x:vI(s,o,l)},h=[];for(const t in a){let{data:o}=a[t];if(e.cumulative){let e=0;o=o.map((t=>isNaN(parseFloat(t))?t:(e+=parseFloat(t),e))),a[t]={...a[t],data:o}}const n=e.dataSets?.[t].trend;n?.display?h.push(lI(n,o,r,i,s.getLocale())):h.push(void 0)}return{dataSetsValues:a,axisFormats:c,labels:r,locale:s.getLocale(),trendDataSetsValues:h,axisType:i}}function iI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n)),({dataSetsValues:n,labels:i}=function(e,t){const o=Math.max(e.length,...t.map((e=>e.data?.length||0))),s=je(0,o).filter((e=>t.some((t=>"number"==typeof t.data[e]&&t.data[e]>0))));return{labels:s.map((t=>e[t]||"")),dataSetsValues:t.map((e=>({...e,data:s.map((t=>"number"==typeof e.data[t]&&e.data[t]>0?e.data[t]:null))})))}}(i,n));return{dataSetsValues:n,axisFormats:{y:SI(s,t,"left")},labels:i,locale:s.getLocale()}}function nI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n));return{dataSetsValues:n,axisFormats:{r:SI(s,t,"left")||SI(s,t,"right")},labels:i,locale:s.getLocale()}}function rI(e,t,o,s){let i=bI(s,t,o).formattedValues;wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift();let n=yI(s,t);({labels:i,dataSetsValues:n}=fI(i,n));return{dataSetsValues:n,axisFormats:{y:SI(s,t,"left")||SI(s,t,"right")},labels:i,locale:s.getLocale(),availableRegions:s.getGeoChartAvailableRegions(),geoFeatureNameToId:s.geoFeatureNameToId,getGeoJsonFeatures:s.getGeoJsonFeatures}}function aI(e,t){const o=[],s=[],i=[];for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(o.push(t[e]),s.push(e+1)),i.push(e+1);const n=cI(e,o,s,je(.5,i.length+.55,.2));return n.length?n:void 0}function lI(e,t,o,s,i){const n=[],r=[],a=[],l=t.length;if(l<2)return;switch(s){case"category":for(let e=0;e<l;e++)"number"==typeof t[e]&&(n.push(t[e]),r.push(e+1)),a.push(e+1);break;case"linear":for(let e=0;e<t.length;e++){const s=Number(o[e]);isNaN(s)||("number"==typeof t[e]&&(n.push(t[e]),r.push(s)),a.push(s))}break;case"time":for(let e=0;e<t.length;e++){const s=ki({value:o[e]},i);null!==t[e]&&(n.push(t[e]),r.push(s)),a.push(s)}}const c=Math.min(...a),h=Math.max(...a);if(h===c)return;const d=(h-c)/(5*a.length),u=cI(e,n,r,je(c,h+d/2,d));return u.length?u:void 0}function cI(e,t,o,s){if(t.length<2||o.length<2||0===s.length)return[];const{normalizedLabels:i,normalizedNewLabels:n}=function(e,t,o){let s=[],i=[];if("logarithmic"===o.type){const o=Math.max(...e.map(Math.abs));s=e.map((e=>e/o)),i=t.map((e=>e/o))}else{const o=Math.max(...e),n=Math.min(...e),r=o-n;s=e.map((e=>(e-o)/r)),i=t.map((e=>(e-o)/r))}return{normalizedLabels:s,normalizedNewLabels:i}}(o,s,e);try{switch(e.type){case"polynomial":{const o=e.order;if(!o)return s.map((e=>({x:e,y:NaN})));if(1===o)return Ml([t],[i],[n],!0)[0].map(((e,t)=>({x:s[t],y:e})));const r=Al(t,i,o,!0).flat();return n.map(((e,t)=>({x:s[t],y:Dl(r,e,o)})))}case"exponential":{const e=[],o=[];for(let s=0;s<t.length;s++)t[s]>0&&(e.push(Math.log(t[s])),o.push(i[s]));return o.length?Ol(Ml([e],[o],[n],!0))[0].map(((e,t)=>({x:s[t],y:e}))):s.map((e=>({x:e,y:NaN})))}case"logarithmic":return Ml([t],Fl([i]),Fl([n]),!0)[0].map(((e,t)=>({x:s[t],y:e})));case"trailingMovingAverage":return function(e,t,o=Ae){const s=[];for(let e=0;e<o-1;e++)s.push({x:t[e],y:NaN});for(let i=0;i<=e.length-o;i++){let n=0;for(let t=i;t<i+o;t++)n+=e[t];s.push({x:t[i+o-1],y:n/o})}return s}(t,o,e.window);default:return s.map((e=>({x:e,y:NaN})))}}catch(e){return s.map((e=>({x:e,y:NaN})))}}function hI(e,t,o,s){return dI(e,t,o,s)||uI(e,t,o,s)}function dI(e,t,o,s){if(!o||!uI(e,t,o,s))return!1;const i=vI(s,o,wh(o,t[0],e.dataSetsHaveTitle||!1));return Boolean(i&&Qx.test(i))}function uI(e,t,o,s){if(!o)return!1;const i=s.getRangeValues(o);return wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),!i.some((e=>isNaN(Number(e))&&e))&&!i.every((e=>!e))}let gI=!1;function pI(e,t){if(t.dataRange){const o=t.labelCell?[t.labelCell.zone]:[],s=_o([t.dataRange.zone],o)[0];if(void 0===s)return[];const i=e.getRangeFromZone(t.dataRange.sheetId,s);return e.getRangeValues(i).map((e=>""===e?void 0:e))}return[]}function mI(e,t){const o=je(0,Math.max(e.length,...t.map((e=>e.data?.length||0)))).filter((o=>{const s=e[o],i=t.map((e=>e.data?.[o]));return s||i.some((e=>"number"==typeof e))}));return{labels:o.map((t=>e[t]||"")),dataSetsValues:t.map((e=>({...e,data:o.map((t=>"number"==typeof e.data[t]?e.data[t]:null))})))}}function fI(e,t){const o=new Set(e),s={};o.forEach((e=>{s[e]=new Array(t.length).fill(0)}));for(const o of je(0,e.length)){const n=e[o];for(const e of je(0,t.length))s[n][e]+="number"==typeof(i=t[e].data[o])?i:0}var i;return{labels:Array.from(o),dataSetsValues:t.map(((e,t)=>({...e,data:Array.from(o).map((e=>s[e][t]))})))}}function vI(e,t,o){if(!t)return;const{sheetId:s,zone:i}=t,n=rs(i).map((t=>e.getEvaluatedCell({sheetId:s,...t}).format));return o&&n.shift(),n.find((e=>void 0!==e))}function bI(e,t,o){let s={values:[],formattedValues:[]};if(o){const{left:i}=o.zone;if(o.invalidXc||o.invalidSheetName||e.isColHidden(o.sheetId,i)){if(t[0]){s={formattedValues:je(0,pI(e,t[0]).length).map((e=>e.toString())),values:s.formattedValues}}}else s={formattedValues:e.getRangeFormattedValues(o),values:e.getRangeValues(o).map((e=>String(e??"")))}}else if(1===t.length){const o=pI(e,t[0]).length;for(let e=0;e<o;e++)s.formattedValues.push(""),s.values.push("")}else if(t[0]){s={formattedValues:je(0,pI(e,t[0]).length).map((e=>e.toString())),values:s.formattedValues}}return s}function SI(e,t,o){const s=t.filter((e=>"right"===o==!!e.rightYAxis));for(const t of s){const o=e.getRangeFormats(t.dataRange).find((e=>void 0!==e&&!nr(e)));if(o)return o}}function yI(e,t){const o=[];for(const[s,i]of Object.entries(t)){let t,n=e.isColHidden(i.dataRange.sheetId,i.dataRange.zone.left);if(i.labelCell){const o=i.labelCell,n=o?e.getEvaluatedCell({sheetId:o.sheetId,col:o.zone.left,row:o.zone.top}):void 0;t=n&&o?n.formattedValue:t=`${$x.Series} ${parseInt(s)+1}`}else t=`${$x.Series} ${parseInt(s)+1}`;let r=i.dataRange?pI(e,i):[];r.every((e=>"string"==typeof e&&!Pi(e)))&&r.some((e=>""!==e))?r.fill(1):r.every((e=>null==e||!Js(e.toString(),fi)))&&(n=!0),o.push({data:r,label:t,hidden:n})}return o}function CI(e,t){const{dataSetsValues:o}=t,s=[],i=OI(e,o.length),n=[];for(const r in o){let{label:a,data:l,hidden:c}=o[r];a=e.dataSets?.[r].label||a;const h=i.next(),d={label:a,data:l,hidden:c,borderColor:e.background||m,borderWidth:e.stacked?1:0,backgroundColor:h,yAxisID:e.horizontal?"y":e.dataSets?.[r].yAxisId||"y",xAxisID:"x"};s.push(d);const u=e.dataSets?.[r].trend,g=t.trendDataSetsValues?.[r];u?.display&&!e.horizontal&&g&&n.push(_I(d,u,g))}return s.push(...n),s}function wI(e,t){const{dataSetsValues:o,labels:s}=t,i=e.negativeValuesColor||T,n=e.positiveValuesColor||R,r=e.subTotalValuesColor||A,a=[],l=[],c={label:"",data:l,backgroundColor:a},h=[];let d=0;for(const t of o)if(!t.hidden){for(let c=0;c<t.data.length;c++){const u=t.data[c];if(h.push(s[c]),isNaN(Number(u))){l.push([d,d]),a.push("");continue}l.push([d,u+d]);let g=u>=0?n:i;0===c&&t===o[0]&&e.firstValueAsSubtotal&&(g=r),a.push(g),d+=u}e.showSubTotals&&(h.push(Uo("Subtotal")),l.push([0,d]),a.push(r))}return{datasets:[c],labels:h}}function xI(e,t){const{dataSetsValues:o,axisType:s,labels:i}=t,n=[],r=!!e.fillArea,a=!!e.stacked,l=[],c=OI(e,o.length);for(let h=0;h<o.length;h++){let{label:d,data:u,hidden:g}=o[h];d=e.dataSets?.[h].label||d;const p=c.next();s&&["linear","time"].includes(s)&&(u=u.map(((e,t)=>({x:i[t]||void 0,y:e}))));const m={label:d,data:u,hidden:g,tension:0,borderColor:p,backgroundColor:r?Qt(p,Te):p,pointBackgroundColor:p,fill:!!r&&DI(h,a),yAxisID:e.dataSets?.[h].yAxisId||"y"};n.push(m);const f=e.dataSets?.[h].trend,v=t.trendDataSetsValues?.[h];f?.display&&v&&l.push(_I(m,f,v))}return n.push(...l),n}function II(e,t){const o=xI(e,t);for(const e of o)Dh(e.xAxisID)||(e.showLine=!1);return o}function EI(e,t){const{dataSetsValues:o}=t,s=[],i=Math.max(0,...o.map((e=>e?.data?.length??0))),n=Ah(new uo(i),o);for(const{label:t,data:i,hidden:r}of o){if(r)continue;const o={label:t,data:i,borderColor:e.background||"#FFFFFF",backgroundColor:n,hoverOffset:30};s.push(o)}return s}function RI(e,t){const{dataSetsValues:o}=t,s=[],i=OI(e,o.length),n=[];for(let r=0;r<o.length;r++){let{label:a,data:l,hidden:c}=o[r];a=e.dataSets?.[r].label||a;const h=e.dataSets?.[r],d=i.next(),u=h?.type??"line",g={label:a,data:l,hidden:c,borderColor:d,backgroundColor:d,yAxisID:e.dataSets?.[r].yAxisId||"y",xAxisID:"x",type:u,order:"bar"===u?o.length+r:r};s.push(g);const p=e.dataSets?.[r].trend,m=t.trendDataSetsValues?.[r];p?.display&&m&&n.push(_I(g,p,m))}return s.push(...n),s}function TI(e,t){const{dataSetsValues:o}=t,s=[],i=e.fillArea??!1,n=OI(e,o.length);for(let t=0;t<o.length;t++){let{label:r,data:a,hidden:l}=o[t];e.dataSets?.[t]?.label&&(r=e.dataSets[t].label);const c=n.next(),h={label:r,data:a,hidden:l,borderColor:c,backgroundColor:c};i&&(h.backgroundColor=Qt(c,Te),h.fill="start"),s.push(h)}return s}function AI(e,t){const{availableRegions:o,dataSetsValues:s,labels:i}=t,n=e.region||o[0]?.id,r=n?t.getGeoJsonFeatures(n):void 0,a={outline:r,showOutline:!!r,data:[]};if(r&&n){const e={};if(s[0])for(let o=0;o<s[0].data.length;o++){if(!i[o]||void 0===s[0].data[o])continue;const r=t.geoFeatureNameToId(n,i[o]);r&&(e[r]={value:s[0].data[o],label:i[o]})}for(const t of r)t.id&&a.data.push({feature:{...t,properties:{name:e[t.id]?.label}},value:e[t.id]?.value})}return[a]}function _I(e,t,o){const s=jt(e.backgroundColor);s.a=1;const i=t.color||eo(Zt(s),.5);return{type:"line",xAxisID:"trailingMovingAverage"===t.type?lh:ah,yAxisID:e.yAxisID,label:e.label?Uo("Trend line for %s",e.label):"",data:o,order:-1,showLine:!0,pointRadius:0,backgroundColor:i,borderColor:i,borderDash:[5,5],borderWidth:void 0,fill:!1,pointBackgroundColor:i}}function DI(e,t){return t?0===e?"origin":"-1":"origin"}function OI(e,t){return new uo(t,e.dataSets?.map((e=>e.backgroundColor))||[])}function FI(e){return{padding:{left:Z,right:Z,top:Y,bottom:j}}}function MI(e,t){return{display:"none"!==e.legendPosition,position:"none"!==e.legendPosition?e.legendPosition:void 0}}function PI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:"rect",lineWidth:3})}}function NI(e,t){const o=e.fillArea,s=o?"rect":"line",i=o?2:3;return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:s,lineWidth:i})}}function kI(e,t){const{dataSetsValues:o}=t,s=Math.max(0,...o.map((e=>e?.data?.length??0))),i=Ah(new uo(s),o),n=bh(e.background);return{...MI(e),labels:{usePointStyle:!0,generateLabels:e=>e.data.labels?.map(((e,t)=>({text:_h(String(e)),strokeStyle:i[t],fillStyle:i[t],pointStyle:"rect",lineWidth:2,fontColor:n})))||[],filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden}}}function VI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:"circle",strokeStyle:e.background||"#ffffff",lineWidth:8})}}function LI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{lineWidth:3})}}function HI(e,t){const o=bh(e.background),s=e.negativeValuesColor||T,i=e.positiveValuesColor||R,n=e.subTotalValuesColor||A;return{...MI(e),labels:{usePointStyle:!0,generateLabels:()=>{const t=[{text:Uo("Positive values"),fontColor:o,fillStyle:i,strokeStyle:i,pointStyle:"rect"},{text:Uo("Negative values"),fontColor:o,fillStyle:s,strokeStyle:s,pointStyle:"rect"}];return(e.showSubTotals||e.firstValueAsSubtotal)&&t.push({text:Uo("Subtotals"),fontColor:o,fillStyle:n,strokeStyle:n,pointStyle:"rect"}),t},filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden},onClick:()=>{}}}function UI(e,t){const o=e.fillArea??!1,s=o?"rect":"line",i=o?2:3;return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:s,lineWidth:i})}}const BI={onHover:e=>{const t=e.native?.target;t&&(t.style.cursor="pointer")},onLeave:e=>{const t=e.native?.target;t&&(t.style.cursor="default")},onClick:(e,t,o)=>{if("click"!==e.type)return;const s=t.datasetIndex;o.legendItems&&void 0!==s&&(o.chart.isDatasetVisible(s)?o.chart.hide(s):o.chart.show(s),e.native.preventDefault(),e.native.stopPropagation())}};function zI(e,t){return{labels:{color:e,usePointStyle:!0,generateLabels:o=>o.data.datasets.map(((s,i)=>Dh(s.xAxisID)?{text:_h(s.label),fontColor:e,strokeStyle:s.borderColor,hidden:!o.isDatasetVisible(i),pointStyle:"line",datasetIndex:i,lineWidth:3}:{text:_h(s.label),fontColor:e,strokeStyle:s.borderColor,fillStyle:s.backgroundColor,hidden:!o.isDatasetVisible(i),pointStyle:"line"===s.type?"line":"rect",datasetIndex:i,...t})),filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden}}}function $I(e,t){let o={};const{trendDataSetsValues:s,locale:i,axisFormats:n}=t,r={stacked:e.stacked,locale:i};if(e.horizontal)o.x=JI(e,"bottom","values",{...r,format:n?.x}),o.y=JI(e,"left","labels",r);else{o.x=JI(e,"bottom","labels",r);const t={...r,format:n?.y};o.y=JI(e,"left","values",t);const s={...r,format:n?.y1};o.y1=JI(e,"right","values",s)}if(o=St(o),s&&s.length&&s.some(lt)){const e=Math.max(...s.map((e=>e?.length||0)));o[ah]={...o.x,labels:Array(e).fill(""),offset:!1,display:!1},o[lh]={...o.x,offset:!0,display:!1}}return o}function GI(e,t){const{locale:o,axisType:s,trendDataSetsValues:i,labels:n,axisFormats:r}=t,a=r?.x,l=e.stacked;let c={x:JI(e,"bottom","labels",{locale:o}),y:JI(e,"left","values",{locale:o,stacked:l,format:r?.y}),y1:JI(e,"right","values",{locale:o,stacked:l,format:r?.y1})};if(c=St(c),"time"===s&&n&&a){const e={type:"time",time:eI(n,a,o)};Object.assign(c.x,e),c.x.ticks.maxTicksLimit=15}else"linear"===s&&(c.x.type="linear",c.x.ticks.callback=e=>Kn(e,{format:a,locale:o}));if(i&&i.length&&i.some(lt)&&(c[ah]={...c.x,display:!1},c[lh]={...c.x,display:!1},"category"===s||"time"===s)){const e=Math.max(...i.map((e=>e?.length||0)));c[ah].type="category",c[ah].labels=je(0,e).map((e=>e.toString())),c[ah].offset=!1,c[lh].type="category",c[lh].offset=!1}return c}function WI(e,t){const o=GI(e,t);return{...o,x:{...o.x,grid:{display:!0}}}}function qI(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;e.dataSets;const n={x:{...JI(e,"bottom","labels",{locale:o}),grid:{display:!1}},y:{position:e.verticalAxisPosition,ticks:{color:bh(e.background),callback:Rh({locale:o,format:i})},grid:{lineWidth:e=>0===e.tick.value?2:1},title:KI(e.axesDesign?.y)}},r=n?.y||n?.y1;return r&&(r.grid={lineWidth:e=>0===e.tick.value?2:1}),n}function ZI(e,t){const{dataSetsValues:o}=t,s=$I(e,t),i=s.x.ticks.callback;s.x.ticks.callback=e=>i(Math.abs(e));const n=Math.max(...o.map((e=>Math.max(...e.data.map(Math.abs)))));return s.x.suggestedMin=-n,s.x.suggestedMax=n,s}function jI(e,t){const{locale:o,axisFormats:s,dataSetsValues:i}=t,n=Math.min(...i.map((e=>Math.min(...e.data.filter((e=>!isNaN(e)))))));return{r:{beginAtZero:!0,ticks:{callback:Rh({format:s?.r,locale:o}),backdropColor:e.background||"#FFFFFF"},pointLabels:{color:bh(e.background),callback:_h},suggestedMin:n<0?n-1:0}}}function YI(e,t){const{locale:o,axisFormats:s,availableRegions:i}=t,n=function(e){switch(e){case"top":return"top-left";case"right":return"top-right";case"bottom":return"bottom-right";case"left":case"none":return"bottom-left"}}(e.legendPosition),r=e.region?i.find((t=>t.id===e.region)):i[0],a=s?.y||s?.y1;return{projection:{projection:XI(r?.defaultProjection||"mercator"),axis:"x"},color:{axis:"x",display:"none"!==e.legendPosition,border:{color:D},grid:{color:D},ticks:{color:bh(e.background),callback:Rh({locale:o,format:a})},legend:{position:n,align:n.includes("right")?"left":"right",margin:eE(e)},interpolate:QI(e),missing:e.missingValueColor||"#ffffff"}}}function XI(e){return"conicConformal"===e?window.ChartGeo.geoConicConformal().rotate([100,0]):e}function KI(e){if(e?.title?.text){const{text:t,color:o,align:s,italic:i,bold:n}=e.title;return{display:!0,text:t,color:o,font:{style:i?"italic":"normal",weight:n?"bold":"normal",size:e.title.fontSize??K},align:"left"===s?"start":"right"===s?"end":"center"}}}function JI(e,t,o,s){const{useLeftAxis:i,useRightAxis:n}=Ih(e);if("left"===t&&!i||"right"===t&&!n)return;const r=bh(e.background);let a;if(a="bottom"===t?e.axesDesign?.x:"left"===t?e.axesDesign?.y:e.axesDesign?.y1,"values"===o){const e=!("right"===t&&i);return{position:t,title:KI(a),grid:{display:e},beginAtZero:!0,stacked:s?.stacked,ticks:{color:r,callback:Rh(s)}}}return{ticks:{padding:5,color:r,callback:function(e){return _h(this.getLabelForValue(e))}},grid:{display:!1},stacked:s?.stacked,title:KI(a)}}function QI(e){if(!e.colorScale||"string"==typeof e.colorScale)return e.colorScale||"oranges";const t=[{value:0,color:e.colorScale.minColor}];return e.colorScale.midColor&&t.push({value:.5,color:e.colorScale.midColor}),t.push({value:1,color:e.colorScale.maxColor}),po(t)}function eE(e){switch(e.legendPosition){case"top":case"right":return{top:!!e.title.text?Y+30:Y,left:Z,right:Z};case"bottom":case"left":case"none":return{left:Z,right:Z,bottom:j}}}function tE(e,t){const{axisFormats:o,locale:s}=t;return{horizontal:"horizontal"in e&&e.horizontal,showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(t,i)=>{const n=function(e,t){if(t.rAxisID)return t.rAxisID;const o="horizontal"in e&&e.horizontal?t.xAxisID:t.yAxisID;return o||"y"}(e,i);return Eh(o,s)(t,n)}}}function oE(e,t){const{axisFormats:o,locale:s}=t;return{horizontal:!0,showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(e,t)=>(e=Math.abs(Number(e)),Eh(o,s)(e,t.xAxisID||"x"))}}function sE(e,t){const{axisFormats:o,locale:s,dataSetsValues:i}=t,n=i.reduce(((e,t)=>(e.push((e.at(-1)||-1)+t.data.length+1),e)),[]);return{showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(t,i,r)=>{const a=i._dataset.data[r],l=a[1]-a[0];let c=l>=0?"+":"";return e.showSubTotals&&n.includes(r)&&"+"===c&&(c=""),`${c}${Eh(o,s)(l,i.yAxisID)}`}}}function iE(e){const t=e.title,o=Sh(e.background);return{display:!!t.text,text:Uo(t.text),color:t?.color??o,align:"center"===t.align?"center":"right"===t.align?"end":"start",font:{size:e.title.fontSize??X,weight:t.bold?"bold":"normal",style:t.italic?"italic":"normal"},padding:{bottom:"top"===e.legendPosition?0:Z}}}const nE='\n<templates>\n <t t-name="o-spreadsheet-CustomTooltip">\n <div\n class="o-chart-custom-tooltip border rounded px-2 py-1 pe-none mw-100 position-absolute text-nowrap shadow opacity-100">\n <table class="overflow-hidden m-0">\n <thead t-if="title">\n <tr>\n <th class="o-tooltip-title align-baseline border-0 text-truncate" t-esc="title" t-attf-style="max-width: {{ labelsMaxWidth }}"/>\n </tr>\n </thead>\n <tbody>\n <tr t-foreach="tooltipItems" t-as="tooltipItem" t-key="tooltipItem_index">\n <td>\n <span\n class="badge ps-2 py-2 rounded-0 align-middle"\n t-attf-style="background-color: {{ tooltipItem.boxColor }}"\n > </span>\n <small\n t-if="tooltipItem.label"\n class="o-tooltip-label d-inline-block text-truncate align-middle smaller ms-2"\n t-esc="tooltipItem.label"\n t-attf-style="max-width: {{ labelsMaxWidth }}"\n />\n </td>\n <td class="o-tooltip-value ps-2 fw-bolder text-end">\n <small class="smaller d-inline-block text-truncate align-middle" t-attf-style="max-width: {{ valuesMaxWidth }}">\n <t t-esc="tooltipItem.value"/>\n <t t-if="tooltipItem.percentage">\n (\n <t t-esc="tooltipItem.percentage"/>\n %)\n </t>\n </small>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </t>\n</templates>\n';let rE;function aE(e,o={}){return function(e,o={}){rE||(rE=new t.App(t.Component,{templates:nE,translateFn:Uo}));const s=rE.getTemplate(e),i=s(o,{}),n=document.createElement("div");return t.blockDom.mount(i,n),n}(e,o).innerHTML}function lE(e,t){return{enabled:!1,external:mE,callbacks:{title:function(e){return e.some((e=>!Dh(e.dataset.xAxisID)))?void 0:""},beforeLabel:e=>e.dataset?.label||e.label,label:function(o){const s=e.horizontal;let i=s?o.parsed.x:o.parsed.y;null==i&&(i=o.parsed);const n=s?o.dataset.xAxisID:o.dataset.yAxisID;return Eh(t.axisFormats,t.locale)(i,n)}}}}function cE(e,t){const{axisType:o,locale:s,axisFormats:i}=t,n=i?.x,r={enabled:!1,external:mE,callbacks:{}};return r.callbacks.label="linear"===o?e=>{const t=e.parsed.y;let o=Dh(e.dataset.xAxisID)?"":e.parsed.x;"string"==typeof o&&Js(o,s)&&(o=ki(o,s));const r=Kn(o,{locale:s,format:n}),a=e.dataset.yAxisID||"y",l=Kn(t,{locale:s,format:i?.[a]});return r?`(${r}, ${l})`:`${l}`}:function(e){const t=e.parsed.y,o=e.dataset.yAxisID;return Eh(i,s)(t,o)},r.callbacks.beforeLabel=e=>e.dataset?.label||e.label,r.callbacks.title=function(e){return"linear"!==o&&e.some((e=>!Dh(e.dataset.xAxisID)))?void 0:""},r}function hE(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;return{enabled:!1,external:mE,callbacks:{title:function(e){return e[0].dataset.label},beforeLabel:e=>e.label||e.dataset.label,label:function(e){const t=function(e,t){const o=e.filter((e=>"number"==typeof e)).reduce(((e,t)=>e+t),0);if(!o)return"";const s=e[t]/o*100;return s.toFixed(2)}(e.dataset.data,e.dataIndex),s=e.parsed.y??e.parsed;return`${Kn(s,{format:!i&&s>=1e3?"#,##":i,locale:o})} (${t}%)`}}}}function dE(e,t){const{dataSetsValues:o,locale:s,axisFormats:i,labels:n}=t,r=i?.y||i?.y1,a=o.map((e=>e.label));return{enabled:!1,external:mE,callbacks:{beforeLabel:function(e){const t=n.length?Math.floor(e.dataIndex/n.length):0;return a[t]},label:function(e){const[t,o]=e.raw,i=o-t;return Kn(i,{format:!r&&Math.abs(i)>1e3?"#,##":r,locale:s})}}}}function uE(e,t){const o=lE(e,t);return{...o,callbacks:{...o.callbacks,label:e=>{const t={...e,parsed:{y:e.parsed.y,x:Math.abs(e.parsed.x)}};return(o?.callbacks?.label)(t)}}}}function gE(e,t){const{locale:o,axisFormats:s}=t;return{enabled:!1,external:mE,callbacks:{beforeLabel:e=>e.dataset?.label||e.label,label:function(e){return Kn(e.parsed.r,{format:s?.r,locale:o})}}}}function pE(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;return{enabled:!1,external:mE,filter:function(e){return void 0!==e.raw.value},callbacks:{beforeLabel:e=>e.raw.feature.properties.name,label:function(e){const t=e.raw.value;return Kn(t,{format:!i&&Math.abs(t)>=1e3?"#,##":i,locale:o})}}}}function mE({chart:e,tooltip:t}){if(e.canvas.parentNode.querySelector("div.o-chart-custom-tooltip")?.remove(),0===t.opacity||0===t.dataPoints.length)return;const o=t.body.map(((e,o)=>{let s=e.before[0],i=e.lines[0];i||(i=s,s="");const n=t.labelColors[o].backgroundColor;return{label:s,value:i,boxColor:"string"==typeof n?Qt(n,1):n}})),s=aE("o-spreadsheet-CustomTooltip",{labelsMaxWidth:Math.floor(.5*e.canvas.clientWidth)+"px",valuesMaxWidth:Math.floor(.25*e.canvas.clientWidth)+"px",title:t.title[0],tooltipItems:o}),i=Object.assign(document.createElement("template"),{innerHTML:s}).content.firstChild;e.canvas.parentNode?.appendChild(i),Object.assign(i.style,{left:fE(e,t,i.clientWidth)+"px",top:Math.floor(t.caretY-i.clientHeight/2)+"px"})}function fE(e,t,o){const s=t.caretX;return s+o>e.chartArea.right?Math.max(0,s-o):s}var vE=Object.freeze({__proto__:null,INTERACTIVE_LEGEND_CONFIG:BI,canChartParseLabels:hI,getBarChartData:tI,getBarChartDatasets:CI,getBarChartLegend:PI,getBarChartScales:$I,getBarChartTooltip:lE,getChartColorsGenerator:OI,getChartLabelFormat:vI,getChartLayout:FI,getChartShowValues:tE,getChartTitle:iE,getComboChartDatasets:RI,getComboChartLegend:LI,getData:pI,getGeoChartData:rI,getGeoChartDatasets:AI,getGeoChartScales:YI,getGeoChartTooltip:pE,getLineChartData:sI,getLineChartDatasets:xI,getLineChartLegend:NI,getLineChartScales:GI,getLineChartTooltip:cE,getPieChartData:iI,getPieChartDatasets:EI,getPieChartLegend:kI,getPieChartTooltip:hE,getPyramidChartData:oI,getPyramidChartScales:ZI,getPyramidChartShowValues:oE,getPyramidChartTooltip:uE,getRadarChartData:nI,getRadarChartDatasets:TI,getRadarChartLegend:UI,getRadarChartScales:jI,getRadarChartTooltip:gE,getScatterChartDatasets:II,getScatterChartLegend:VI,getScatterChartScales:WI,getTrendDatasetForBarChart:aI,getTrendDatasetForLineChart:lI,getWaterfallChartLegend:HI,getWaterfallChartScales:qI,getWaterfallChartShowValues:sE,getWaterfallChartTooltip:dE,getWaterfallDatasetAndLabels:wI});class bE extends Vh{dataSets;labelRange;background;legendPosition;stacked;aggregated;type="bar";dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.horizontal=e.horizontal,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,stacked:e.stacked??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"bar",labelRange:e.auxiliaryRange||void 0,axesDesign:e.axesDesign,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new bE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new bE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"bar",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:this.horizontal,showValues:this.showValues}}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new bE(i,this.sheetId,this.getters)}}function SE(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:CI(o,s)},options:{...wy,indexAxis:e.horizontal?"y":"x",layout:FI(),scales:$I(o,s),plugins:{title:iE(o),legend:PI(o),tooltip:lE(o,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class yE extends Vh{dataSets;labelRange;background;legendPosition;aggregated;dataSetsHaveTitle;dataSetDesign;axesDesign;type="combo";showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId),type:this.dataSetDesign?.[t]?.type??(t?"line":"bar")});return{type:"combo",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues}}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new yE(i,this.sheetId,this.getters)}static getDefinitionFromContextCreation(e){const t=(e.range??[]).map(((e,t)=>({...e,type:t?"line":"bar"})));return{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated,legendPosition:e.legendPosition??"top",title:e.title||{text:""},labelRange:e.auxiliaryRange||void 0,type:"combo",axesDesign:e.axesDesign,showValues:e.showValues}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new yE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new yE(t,e,this.getters)}}function CE(e){return e.dataRange&&!Br.test(e.dataRange)?"InvalidGaugeDataRange":"Success"}function wE(e,t){return t((t=>t.sectionRule?e(t.sectionRule.rangeMin,"rangeMin"):"Success"),(t=>t.sectionRule?e(t.sectionRule.rangeMax,"rangeMax"):"Success"))}function xE(e,t){if(""===e)switch(t){case"rangeMin":return"EmptyGaugeRangeMin";case"rangeMax":return"EmptyGaugeRangeMax"}return"Success"}function IE(e,t){if(e.startsWith("="))return"Success";if(isNaN(e))switch(t){case"rangeMin":return"GaugeRangeMinNaN";case"rangeMax":return"GaugeRangeMaxNaN";case"lowerInflectionPointValue":return"GaugeLowerInflectionPointNaN";case"upperInflectionPointValue":return"GaugeUpperInflectionPointNaN"}return"Success"}class EE extends Vh{dataRange;sectionRule;background;type="gauge";constructor(e,t,o){super(e,t,o),this.dataRange=Xr(this.getters,this.sheetId,e.dataRange),this.sectionRule=e.sectionRule,this.background=e.background}static validateChartDefinition(e,t){return e.checkValidations(t,CE,e.chainValidations(wE(xE,e.batchValidations),wE(IE,e.batchValidations)),e.chainValidations((o=IE,(0,e.batchValidations)((e=>e.sectionRule?o(e.sectionRule.lowerInflectionPoint.value,"lowerInflectionPointValue"):"Success"),(e=>e.sectionRule?o(e.sectionRule.upperInflectionPoint.value,"upperInflectionPointValue"):"Success")))));var o}static transformDefinition(e,t){let o;return e.dataRange&&(o=Nc(zo(e.dataRange),t)),{...e,dataRange:o?qo(o):void 0}}static getDefinitionFromContextCreation(e){return{background:e.background,title:e.title||{text:""},type:"gauge",dataRange:e.range?e.range[0].dataRange:void 0,sectionRule:{colors:{lowerColor:"#EA6175",middleColor:"#FFD86D",upperColor:"#43C5B1"},rangeMin:"0",rangeMax:"100",lowerInflectionPoint:{type:"percentage",value:"15",operator:"<="},upperInflectionPoint:{type:"percentage",value:"40",operator:"<="}}}}duplicateInDuplicatedSheet(e){const t=dh(this.sheetId,e,this.dataRange),o=_E(this.sectionRule,(t=>this.getters.copyFormulaStringForSheet(this.sheetId,e,t,"moveReference"))),s=this.getDefinitionWithSpecificRanges(t,o,e);return new EE(s,e,this.getters)}copyInSheetId(e){const t=_E(this.sectionRule,(t=>this.getters.copyFormulaStringForSheet(this.sheetId,e,t,"keepSameReference"))),o=this.getDefinitionWithSpecificRanges(this.dataRange,t,e);return new EE(o,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificRanges(this.dataRange,this.sectionRule)}getDefinitionWithSpecificRanges(e,t,o){return{background:this.background,sectionRule:t,title:this.title,type:"gauge",dataRange:e?this.getters.getRangeString(e,o||this.sheetId):void 0}}getDefinitionForExcel(){}getContextCreation(){return{...this,range:this.dataRange?[{dataRange:this.getters.getRangeString(this.dataRange,this.sheetId)}]:void 0}}updateRanges(e){const t=uh(this.dataRange,e),o=_E(this.sectionRule,(t=>this.getters.adaptFormulaStringDependencies(this.sheetId,t,e))),s=this.getDefinitionWithSpecificRanges(t,o);return new EE(s,this.sheetId,this.getters)}}function RE(e,t){const o=t.getLocale(),s=e.sectionRule.colors;let i,n,r;const a=e.dataRange;if(void 0!==a){const e=t.getEvaluatedCell({sheetId:a.sheetId,col:a.zone.left,row:a.zone.top});e.type===oi.number&&(i=e.value,n=e.formattedValue,r=e.format)}let l=AE(e.sheetId,e.sectionRule.rangeMin,t),c=AE(e.sheetId,e.sectionRule.rangeMax,t);if(void 0===l||void 0===c)return function(e,t){return{background:t.getStyleOfSingleCellChart(e.background,e.dataRange).background,title:e.title??{text:""},minValue:{value:0,label:""},maxValue:{value:100,label:""},gaugeValue:{value:0,label:wi.GenericError},inflectionValues:[],colors:[]}}(e,t);c<l&&([l,c]=[c,l]);const h=e.sectionRule.lowerInflectionPoint,d=e.sectionRule.upperInflectionPoint,u=TE(e.sheetId,e.sectionRule.lowerInflectionPoint,l,c,t),g=TE(e.sheetId,e.sectionRule.upperInflectionPoint,l,c,t),p=[],m=[];return void 0!==u&&(p.push({value:u,label:Kn(u,{locale:o,format:r}),operator:h.operator}),m.push(s.lowerColor)),void 0!==g&&g!==u&&(p.push({value:g,label:Kn(g,{locale:o,format:r}),operator:d.operator}),m.push(s.middleColor)),void 0!==g&&void 0!==u&&u>g&&(p.reverse(),m.reverse()),m.push(s.upperColor),{background:t.getStyleOfSingleCellChart(e.background,a).background,title:{...e.title,text:Uo(e.title.text??"")},minValue:{value:l,label:Kn(l,{locale:o,format:r})},maxValue:{value:c,label:Kn(c,{locale:o,format:r})},gaugeValue:void 0!==i&&n?{value:i,label:n}:void 0,inflectionValues:p,colors:m}}function TE(e,t,o,s,i){const n=AE(e,t.value,i);if(void 0===n)return;return Ze("number"===t.type?n:o+(s-o)*n/100,o,s)}function AE(e,t,o){const s=o.evaluateFormula(e,t);return bi(s)?void 0:Vi(s,o.getLocale())}function _E(e,t){return{...e,rangeMin:t(e.rangeMin),rangeMax:t(e.rangeMax),lowerInflectionPoint:{...e.lowerInflectionPoint,value:t(e.lowerInflectionPoint.value)},upperInflectionPoint:{...e.upperInflectionPoint,value:t(e.upperInflectionPoint.value)}}}class DE extends Vh{dataSets;labelRange;background;legendPosition;type="geo";dataSetsHaveTitle;dataSetDesign;colorScale;missingValueColor;region;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.colorScale=e.colorScale,this.missingValueColor=e.missingValueColor,this.region=e.region}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"geo",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new DE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new DE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"geo",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,colorScale:this.colorScale,missingValueColor:this.missingValueColor,region:this.region}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new DE(i,this.sheetId,this.getters)}}class OE extends Vh{dataSets;labelRange;background;legendPosition;labelsAsText;stacked;aggregated;type="line";dataSetsHaveTitle;cumulative;dataSetDesign;axesDesign;fillArea;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(this.getters,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.labelsAsText=e.labelsAsText,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.cumulative=e.cumulative,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.fillArea=e.fillArea,this.showValues=e.showValues}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static transformDefinition(e,t){return vh(e,t)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,labelsAsText:e.labelsAsText??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"line",labelRange:e.auxiliaryRange||void 0,stacked:e.stacked??!1,aggregated:e.aggregated??!1,cumulative:e.cumulative??!1,axesDesign:e.axesDesign,fillArea:e.fillArea,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"line",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,stacked:this.stacked,aggregated:this.aggregated,cumulative:this.cumulative,axesDesign:this.axesDesign,fillArea:this.fillArea,showValues:this.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new OE(i,this.sheetId,this.getters)}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new OE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new OE(t,e,this.getters)}}function FE(e,t){const o=e.getDefinition(),s=sI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"line",data:{labels:s.labels,datasets:xI(o,s)},options:{...wy,layout:FI(),scales:GI(o,s),plugins:{title:iE(o),legend:NI(o),tooltip:cE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class ME extends Vh{dataSets;labelRange;background;legendPosition;type="pie";aggregated;dataSetsHaveTitle;isDoughnut;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.isDoughnut=e.isDoughnut,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"pie",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated??!1,isDoughnut:!1,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getContextCreation(){return{...this,range:this.dataSets.map((e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))),auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}getDefinitionWithSpecificDataSets(e,t,o){return{type:"pie",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:e.map((e=>({dataRange:this.getters.getRangeString(e.dataRange,o||this.sheetId)}))),legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,isDoughnut:this.isDoughnut,showValues:this.showValues}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new ME(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new ME(t,e,this.getters)}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new ME(i,this.sheetId,this.getters)}}function PE(e,t){const o=e.getDefinition(),s=iI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:e.isDoughnut?"doughnut":"pie",data:{labels:s.labels,datasets:EI(o,s)},options:{...wy,layout:FI(),plugins:{title:iE(o),legend:kI(o,s),tooltip:hE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class NE extends Vh{dataSets;labelRange;background;legendPosition;aggregated;type="pyramid";dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;stacked=!0;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle).slice(0,2),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"pyramid",labelRange:e.auxiliaryRange||void 0,axesDesign:e.axesDesign,horizontal:!0,stacked:!0,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new NE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new NE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"pyramid",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:!0,stacked:!0,showValues:this.showValues}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new NE(i,this.sheetId,this.getters)}}class kE extends Vh{dataSets;labelRange;background;legendPosition;stacked;aggregated;type="radar";dataSetsHaveTitle;dataSetDesign;fillArea;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.fillArea=e.fillArea,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,stacked:e.stacked??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"radar",labelRange:e.auxiliaryRange||void 0,fillArea:e.fillArea??!1,showValues:e.showValues??!1}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new kE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new kE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"radar",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,fillArea:this.fillArea,showValues:this.showValues}}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new kE(i,this.sheetId,this.getters)}}class VE extends Vh{dataSets;labelRange;background;legendPosition;labelsAsText;aggregated;type="scatter";dataSetsHaveTitle;dataSetDesign;axesDesign;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(this.getters,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.labelsAsText=e.labelsAsText,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static transformDefinition(e,t){return vh(e,t)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,labelsAsText:e.labelsAsText??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"scatter",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated??!1,axesDesign:e.axesDesign,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"scatter",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new VE(i,this.sheetId,this.getters)}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new VE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new VE(t,e,this.getters)}}class LE extends Vh{dataSets;labelRange;background;verticalAxisPosition;legendPosition;aggregated;type="waterfall";dataSetsHaveTitle;showSubTotals;firstValueAsSubtotal;showConnectorLines;positiveValuesColor;negativeValuesColor;subTotalValuesColor;dataSetDesign;axesDesign;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.verticalAxisPosition=e.verticalAxisPosition,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showSubTotals=e.showSubTotals,this.showConnectorLines=e.showConnectorLines,this.positiveValuesColor=e.positiveValuesColor,this.negativeValuesColor=e.negativeValuesColor,this.subTotalValuesColor=e.subTotalValuesColor,this.firstValueAsSubtotal=e.firstValueAsSubtotal,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range?e.range:[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"waterfall",verticalAxisPosition:"left",labelRange:e.auxiliaryRange||void 0,showSubTotals:e.showSubTotals??!1,showConnectorLines:e.showConnectorLines??!0,firstValueAsSubtotal:e.firstValueAsSubtotal??!1,axesDesign:e.axesDesign,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new LE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new LE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"waterfall",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,verticalAxisPosition:this.verticalAxisPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,showSubTotals:this.showSubTotals,showConnectorLines:this.showConnectorLines,positiveValuesColor:this.positiveValuesColor,negativeValuesColor:this.negativeValuesColor,subTotalValuesColor:this.subTotalValuesColor,firstValueAsSubtotal:this.firstValueAsSubtotal,axesDesign:this.axesDesign,showValues:this.showValues}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new LE(i,this.sheetId,this.getters)}}function HE(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t),{labels:i,datasets:n}=wI(o,s);return{chartJsConfig:{type:"bar",data:{labels:i,datasets:n},options:{...wy,layout:FI(),scales:qI(o,s),plugins:{title:iE(o),legend:HI(o),tooltip:dE(0,s),chartShowValuesPlugin:sE(o,s),waterfallLinesPlugin:{showConnectorLines:o.showConnectorLines}}}},background:e.background||m}}const UE=new n;UE.add("bar",{match:e=>"bar"===e,createChart:(e,t,o)=>new bE(e,t,o),getChartRuntime:SE,validateChartDefinition:bE.validateChartDefinition,transformDefinition:bE.transformDefinition,getChartDefinitionFromContextCreation:bE.getDefinitionFromContextCreation,sequence:10}),UE.add("combo",{match:e=>"combo"===e,createChart:(e,t,o)=>new yE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:RI(o,s)},options:{...wy,layout:FI(),scales:$I(o,s),plugins:{title:iE(o),legend:LI(o),tooltip:lE(o,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:yE.validateChartDefinition,transformDefinition:yE.transformDefinition,getChartDefinitionFromContextCreation:yE.getDefinitionFromContextCreation,sequence:15}),UE.add("line",{match:e=>"line"===e,createChart:(e,t,o)=>new OE(e,t,o),getChartRuntime:FE,validateChartDefinition:OE.validateChartDefinition,transformDefinition:OE.transformDefinition,getChartDefinitionFromContextCreation:OE.getDefinitionFromContextCreation,sequence:20}),UE.add("pie",{match:e=>"pie"===e,createChart:(e,t,o)=>new ME(e,t,o),getChartRuntime:PE,validateChartDefinition:ME.validateChartDefinition,transformDefinition:ME.transformDefinition,getChartDefinitionFromContextCreation:ME.getDefinitionFromContextCreation,sequence:30}),UE.add("scorecard",{match:e=>"scorecard"===e,createChart:(e,t,o)=>new Gh(e,t,o),getChartRuntime:qh,validateChartDefinition:Gh.validateChartDefinition,transformDefinition:Gh.transformDefinition,getChartDefinitionFromContextCreation:Gh.getDefinitionFromContextCreation,sequence:40}),UE.add("gauge",{match:e=>"gauge"===e,createChart:(e,t,o)=>new EE(e,t,o),getChartRuntime:RE,validateChartDefinition:EE.validateChartDefinition,transformDefinition:EE.transformDefinition,getChartDefinitionFromContextCreation:EE.getDefinitionFromContextCreation,sequence:50}),UE.add("scatter",{match:e=>"scatter"===e,createChart:(e,t,o)=>new VE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=sI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"line",data:{labels:s.labels,datasets:II(o,s)},options:{...wy,layout:FI(),scales:WI(o,s),plugins:{title:iE(o),legend:VI(o),tooltip:cE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:VE.validateChartDefinition,transformDefinition:VE.transformDefinition,getChartDefinitionFromContextCreation:VE.getDefinitionFromContextCreation,sequence:60}),UE.add("waterfall",{match:e=>"waterfall"===e,createChart:(e,t,o)=>new LE(e,t,o),getChartRuntime:HE,validateChartDefinition:LE.validateChartDefinition,transformDefinition:LE.transformDefinition,getChartDefinitionFromContextCreation:LE.getDefinitionFromContextCreation,sequence:70}),UE.add("pyramid",{match:e=>"pyramid"===e,createChart:(e,t,o)=>new NE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=oI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:CI(o,s)},options:{...wy,indexAxis:"y",layout:FI(),scales:ZI(o,s),plugins:{title:iE(o),legend:PI(o),tooltip:uE(o,s),chartShowValuesPlugin:oE(o,s)}}},background:e.background||m}},validateChartDefinition:NE.validateChartDefinition,transformDefinition:NE.transformDefinition,getChartDefinitionFromContextCreation:NE.getDefinitionFromContextCreation,sequence:80}),UE.add("radar",{match:e=>"radar"===e,createChart:(e,t,o)=>new kE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=nI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"radar",data:{labels:s.labels,datasets:TI(o,s)},options:{...wy,layout:FI(),scales:jI(o,s),plugins:{title:iE(o),legend:UI(o),tooltip:gE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:kE.validateChartDefinition,transformDefinition:kE.transformDefinition,getChartDefinitionFromContextCreation:kE.getDefinitionFromContextCreation,sequence:80}),UE.add("geo",{match:e=>"geo"===e,createChart:(e,t,o)=>new DE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=rI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"choropleth",data:{datasets:AI(o,s)},options:{...wy,layout:FI(),scales:YI(o,s),plugins:{title:iE(o),tooltip:pE(0,s),legend:{display:!1}}}},background:e.background||m}},validateChartDefinition:DE.validateChartDefinition,transformDefinition:DE.transformDefinition,getChartDefinitionFromContextCreation:DE.getDefinitionFromContextCreation,sequence:90});const BE=new n;BE.add("line",kh),BE.add("bar",kh),BE.add("combo",kh),BE.add("pie",kh),BE.add("gauge",yy),BE.add("scatter",kh),BE.add("scorecard",Kh),BE.add("waterfall",kh),BE.add("pyramid",kh),BE.add("radar",kh),BE.add("geo",kh);const zE={line:Uo("Line"),column:Uo("Column"),bar:Uo("Bar"),area:Uo("Area"),pie:Uo("Pie"),misc:Uo("Miscellaneous")},$E=new n;$E.add("line",{matcher:e=>"line"===e.type&&!e.stacked&&!e.fillArea,displayName:Uo("Line"),chartType:"line",chartSubtype:"line",subtypeDefinition:{stacked:!1,fillArea:!1},category:"line",preview:"o-spreadsheet-ChartPreview.LINE_CHART"}).add("stacked_line",{matcher:e=>"line"===e.type&&!e.fillArea&&!!e.stacked,displayName:Uo("Stacked Line"),chartType:"line",chartSubtype:"stacked_line",subtypeDefinition:{stacked:!0,fillArea:!1},category:"line",preview:"o-spreadsheet-ChartPreview.STACKED_LINE_CHART"}).add("area",{matcher:e=>"line"===e.type&&!e.stacked&&!!e.fillArea,displayName:Uo("Area"),chartType:"line",chartSubtype:"area",subtypeDefinition:{stacked:!1,fillArea:!0},category:"area",preview:"o-spreadsheet-ChartPreview.AREA_CHART"}).add("stacked_area",{matcher:e=>"line"===e.type&&e.stacked&&!!e.fillArea,displayName:Uo("Stacked Area"),chartType:"line",chartSubtype:"stacked_area",subtypeDefinition:{stacked:!0,fillArea:!0},category:"area",preview:"o-spreadsheet-ChartPreview.STACKED_AREA_CHART"}).add("scatter",{displayName:Uo("Scatter"),chartType:"scatter",chartSubtype:"scatter",category:"misc",preview:"o-spreadsheet-ChartPreview.SCATTER_CHART"}).add("column",{matcher:e=>"bar"===e.type&&!e.stacked&&!e.horizontal,displayName:Uo("Column"),chartType:"bar",chartSubtype:"column",subtypeDefinition:{stacked:!1,horizontal:!1},category:"column",preview:"o-spreadsheet-ChartPreview.COLUMN_CHART"}).add("stacked_column",{matcher:e=>"bar"===e.type&&e.stacked&&!e.horizontal,displayName:Uo("Stacked Column"),chartType:"bar",chartSubtype:"stacked_column",subtypeDefinition:{stacked:!0,horizontal:!1},category:"column",preview:"o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART"}).add("bar",{matcher:e=>"bar"===e.type&&!e.stacked&&!!e.horizontal,displayName:Uo("Bar"),chartType:"bar",chartSubtype:"bar",subtypeDefinition:{horizontal:!0,stacked:!1},category:"bar",preview:"o-spreadsheet-ChartPreview.BAR_CHART"}).add("stacked_bar",{matcher:e=>"bar"===e.type&&e.stacked&&!!e.horizontal,displayName:Uo("Stacked Bar"),chartType:"bar",chartSubtype:"stacked_bar",subtypeDefinition:{horizontal:!0,stacked:!0},category:"bar",preview:"o-spreadsheet-ChartPreview.STACKED_BAR_CHART"}).add("combo",{displayName:Uo("Combo"),chartSubtype:"combo",chartType:"combo",category:"line",preview:"o-spreadsheet-ChartPreview.COMBO_CHART"}).add("pie",{matcher:e=>"pie"===e.type&&!e.isDoughnut,displayName:Uo("Pie"),chartSubtype:"pie",chartType:"pie",subtypeDefinition:{isDoughnut:!1},category:"pie",preview:"o-spreadsheet-ChartPreview.PIE_CHART"}).add("doughnut",{matcher:e=>"pie"===e.type&&!!e.isDoughnut,displayName:Uo("Doughnut"),chartSubtype:"doughnut",chartType:"pie",subtypeDefinition:{isDoughnut:!0},category:"pie",preview:"o-spreadsheet-ChartPreview.DOUGHNUT_CHART"}).add("gauge",{displayName:Uo("Gauge"),chartSubtype:"gauge",chartType:"gauge",category:"misc",preview:"o-spreadsheet-ChartPreview.GAUGE_CHART"}).add("scorecard",{displayName:Uo("Scorecard"),chartSubtype:"scorecard",chartType:"scorecard",category:"misc",preview:"o-spreadsheet-ChartPreview.SCORECARD_CHART"}).add("waterfall",{displayName:Uo("Waterfall"),chartSubtype:"waterfall",chartType:"waterfall",category:"misc",preview:"o-spreadsheet-ChartPreview.WATERFALL_CHART"}).add("pyramid",{displayName:Uo("Population Pyramid"),chartSubtype:"pyramid",chartType:"pyramid",category:"misc",preview:"o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART"}).add("radar",{matcher:e=>"radar"===e.type&&!e.fillArea,displayName:Uo("Radar"),chartSubtype:"radar",chartType:"radar",subtypeDefinition:{fillArea:!1},category:"misc",preview:"o-spreadsheet-ChartPreview.RADAR_CHART"}).add("filled_radar",{matcher:e=>"radar"===e.type&&!!e.fillArea,displayName:Uo("Filled Radar"),chartType:"radar",chartSubtype:"filled_radar",subtypeDefinition:{fillArea:!0},category:"misc",preview:"o-spreadsheet-ChartPreview.FILLED_RADAR_CHART"}).add("geo",{displayName:Uo("Geo Chart"),chartSubtype:"geo",chartType:"geo",category:"misc",preview:"o-spreadsheet-ChartPreview.GEO_CHART"});const GE=new n;th`
33
+ `}function ix(e){return new Ey(e.join("\n"))}function nx(e,...t){let o=[e[0]];for(let s=0;s<t.length;s++){const i=t[s]instanceof Ey?t[s]:Qw(t[s]);o.push(i+e[s+1])}return new Ey(ut(o))}function rx(e){return e.replace(/NAMESPACE.*NAMESPACE(.*)/,"$1")}function ax(e){return e.replaceAll(/([a-zA-Z0-9]+):([a-zA-Z0-9]+)/g,"NAMESPACE$1NAMESPACE$2")}class lx{value;constructor(e){this.value=e}asString(){return RC(String(this.value))}asBool(){return"true"===this.value||"false"!==this.value&&Boolean(Number(this.value))}asNum(){return Number(this.value)}}class cx{rootFile;xlsxFileStructure;warningManager;relationships;currentFile=void 0;constructor(e,t,o){this.rootFile=e,this.currentFile=e.file.fileName,this.xlsxFileStructure=t,this.warningManager=o,this.relationships={},e.rels&&this.extractRelationships(e.rels).map((e=>{this.relationships[e.id]=e}))}extractRelationships(e){return this.mapOnElements({parent:e.xml,query:"Relationship"},(e=>({id:this.extractAttr(e,"Id",{required:!0}).asString(),target:this.extractAttr(e,"Target",{required:!0}).asString(),type:this.extractAttr(e,"Type",{required:!0}).asString()})))}getListOfXMLFiles(){return Object.entries(this.xlsxFileStructure).filter((([e])=>"images"!==e)).map((([e,t])=>t)).flat().filter(lt)}mapOnElements(e,t){const o=[],s=this.currentFile;let i;if(e.children){const t=this.querySelector(e.parent,e.query)?.children;i=t||[]}else i=this.querySelectorAll(e.parent,e.query);if(i)for(let e of i)try{o.push(t(e))}catch(t){this.catchErrorOnElement(t,e)}return this.currentFile=s,o}catchErrorOnElement(e,t){const o=t?`Error when parsing an element <${t.tagName}> of file ${this.currentFile}, skip this element. \n${e.stack}`:`Error when parsing file ${this.currentFile}.`;this.warningManager.addParsingWarning([o,e.message].join("\n"))}extractAttr(e,t,o){const s=e.attributes[t];s||this.handleMissingValue(e,`attribute "${t}"`,o);const i=s?.value?s.value:o?.default;return void 0===i?void 0:new lx(i)}extractTextContent(e,t){if(void 0!==t?.default&&"string"!=typeof t.default)throw new Error("extractTextContent default value should be a string");const o="preserve"===e?.attributes["xml:space"]?.value;let s=e?.textContent;return e&&null!==s||this.handleMissingValue(e,"text content",t),s&&(s=o?s:s.trim()),s?RC(s):t?.default}extractChildAttr(e,t,o,s){let i;i="number"==typeof t?e.children[t]:this.querySelector(e,t),i||this.handleMissingValue(e,"number"==typeof t?`child at index ${t}`:`child <${t}>`,s);const n=i?this.extractAttr(i,o,s)?.asString():s?.default;return void 0!==n?new lx(n):void 0}extractChildTextContent(e,t,o){if(void 0!==o?.default&&"string"!=typeof o.default)throw new Error("extractTextContent default value should be a string");let s=this.querySelector(e,t);return s||this.handleMissingValue(e,`child <${t}>`,o),s?this.extractTextContent(s,o):o?.default}handleMissingValue(e,t,o){if(o?.required){if(void 0===o?.default)throw new Error(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, and no default value was set`);this.warningManager.addParsingWarning(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, replacing it by the default value ${o.default}`)}}extractColor(e,t,o){if(!e)return o?{rgb:o}:void 0;const s=this.extractAttr(e,"theme")?.asString();let i;if(void 0!==s){if(!t||!t.clrScheme)throw new Error("Color referencing a theme but no theme was provided");i=this.getThemeColor(s,t.clrScheme)}else i=this.extractAttr(e,"rgb")?.asString(),i="FF000000"===i?void 0:i;return{rgb:i||o,auto:this.extractAttr(e,"auto")?.asBool(),indexed:this.extractAttr(e,"indexed")?.asNum(),tint:this.extractAttr(e,"tint")?.asNum()}}getTargetXmlFile(e){if(!e)throw new Error("Undefined target file");const t=this.processRelationshipTargetName(e.target),o=this.getListOfXMLFiles().find((e=>e.file.fileName.endsWith(t)));if(!o||!o.file)throw new Error("Cannot find target file");return o}getTargetImageFile(e){if(!e)throw new Error("Undefined target file");const t=this.processRelationshipTargetName(e.target),o=this.xlsxFileStructure.images.find((e=>e.fileName.endsWith(t)));if(!o)throw new Error("Cannot find target file");return o}querySelector(e,t){const o=ax(t);return e.querySelector(o)}querySelectorAll(e,t){const o=ax(t);return e.querySelectorAll(o)}getThemeColor(e,t){switch(e){case"0":return"FFFFFF";case"1":return"000000";case"2":return t[3].value;case"3":return t[2].value;default:return t[e].value}}processRelationshipTargetName(e){return e.replace(/\.+\//,"")}}class hx extends cx{getTheme(){return{clrScheme:this.mapOnElements({query:"a:clrScheme",parent:this.rootFile.file.xml,children:!0},(e=>({name:e.tagName,value:this.extractChildAttr(e,0,"val",{required:!0,default:Ty}).asString(),lastClr:this.extractChildAttr(e,0,"lastClr",{default:Ty}).asString()})))}}getSharedStrings(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"si"},(e=>this.mapOnElements({parent:e,query:"t"},(e=>this.extractTextContent(e)||"")).join("")))}}class dx extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}extractConditionalFormattings(){const e=this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > conditionalFormatting"},(e=>({sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),pivot:this.extractAttr(e,"pivot")?.asBool(),cfRules:this.extractCFRules(e,this.theme)})));return e.push(...this.mapOnElements({parent:this.rootFile.file.xml,query:"extLst x14:conditionalFormatting"},(e=>({sqref:this.extractChildTextContent(e,"xm:sqref",{required:!0}).split(" "),pivot:this.extractAttr(e,"xm:pivot")?.asBool(),cfRules:this.extractCFRules(e,this.theme)})))),e}extractCFRules(e,t){return this.mapOnElements({parent:e,query:"cfRule, x14:cfRule"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),priority:this.extractAttr(e,"priority",{required:!0}).asNum(),colorScale:this.extractCfColorScale(e,t),formula:this.extractCfFormula(e),iconSet:this.extractCfIconSet(e),dxfId:this.extractAttr(e,"dxfId")?.asNum(),stopIfTrue:this.extractAttr(e,"stopIfTrue")?.asBool(),aboveAverage:this.extractAttr(e,"aboveAverage")?.asBool(),percent:this.extractAttr(e,"percent")?.asBool(),bottom:this.extractAttr(e,"bottom")?.asBool(),operator:this.extractAttr(e,"operator")?.asString(),text:this.extractAttr(e,"text")?.asString(),timePeriod:this.extractAttr(e,"timePeriod")?.asString(),rank:this.extractAttr(e,"rank")?.asNum(),stdDev:this.extractAttr(e,"stdDev")?.asNum(),equalAverage:this.extractAttr(e,"equalAverage")?.asBool(),dataBar:this.extractCfDataBar(e,t)})))}extractCfFormula(e){return this.mapOnElements({parent:e,query:"formula"},(e=>this.extractTextContent(e,{required:!0})))}extractCfColorScale(e,t){const o=this.querySelector(e,"colorScale");if(o)return{colors:this.mapOnElements({parent:o,query:"color"},(e=>this.extractColor(e,t,"ffffff"))),cfvos:this.extractCFVos(o)}}extractCfDataBar(e,t){const o=this.querySelector(e,"dataBar");if(o)return{color:this.extractColor(o.querySelector("color"),t,"EFF7FF"),cfvos:this.extractCFVos(o)}}extractCfIconSet(e){const t=this.querySelector(e,"iconSet, x14:iconSet");if(t)return{iconSet:this.extractAttr(t,"iconSet",{default:"3TrafficLights1"}).asString(),showValue:this.extractAttr(t,"showValue",{default:!0}).asBool(),percent:this.extractAttr(t,"percent",{default:!0}).asBool(),reverse:this.extractAttr(t,"reverse")?.asBool(),custom:this.extractAttr(t,"custom")?.asBool(),cfvos:this.extractCFVos(t),cfIcons:this.extractCfIcons(t)}}extractCfIcons(e){const t=this.mapOnElements({parent:e,query:"cfIcon, x14:cfIcon"},(e=>({iconSet:this.extractAttr(e,"iconSet",{required:!0}).asString(),iconId:this.extractAttr(e,"iconId",{required:!0}).asNum()})));return 0===t.length?void 0:t}extractCFVos(e){return this.mapOnElements({parent:e,query:"cfvo, x14:cfvo"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),gte:this.extractAttr(e,"gte",{default:!0})?.asBool(),value:e.attributes.val?this.extractAttr(e,"val")?.asString():this.extractChildTextContent(e,"f, xm:f")})))}}class ux extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}extractDataValidations(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > dataValidations > dataValidation"},(e=>({type:this.extractAttr(e,"type",{required:!0}).asString(),operator:this.extractAttr(e,"operator",{default:"between"})?.asString(),sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),errorStyle:this.extractAttr(e,"errorStyle")?.asString(),formula1:this.extractDataValidationFormula(e,1)[0],formula2:this.extractDataValidationFormula(e,2)[0],showErrorMessage:this.extractAttr(e,"showErrorMessage")?.asBool(),errorTitle:this.extractAttr(e,"errorTitle")?.asString(),error:this.extractAttr(e,"error")?.asString(),showInputMessage:this.extractAttr(e,"showInputMessage")?.asBool(),promptTitle:this.extractAttr(e,"promptTitle")?.asString(),prompt:this.extractAttr(e,"prompt")?.asString(),allowBlank:this.extractAttr(e,"allowBlank")?.asBool()})))}extractDataValidationFormula(e,t){return this.mapOnElements({parent:e,query:`formula${t}`},(e=>this.extractTextContent(e,{required:!0})))}}class gx extends cx{extractChart(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"c:chartSpace"},(e=>{const t=this.getChartType(e);if(!gC[t])throw new Error(`Unsupported chart type ${t}`);if("combo"===gC[t])return this.extractComboChart(e);const o=this.mapOnElements({parent:e,query:"c:chart > c:title a:t"},(e=>e.textContent||"")).join(""),s=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:{text:o},type:gC[t],dataSets:this.extractChartDatasets(this.querySelectorAll(e,`c:${t}`),t),labelRange:this.extractLabelRange(t,e),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),legendPosition:uC[this.extractChildAttr(e,"c:legendPos","val",{default:"none"}).asString()],stacked:"stacked"===s,fontColor:"000000"}}))[0]}extractLabelRange(e,t){return"scatterChart"===e?this.extractChildTextContent(t,"c:ser c:strRef c:f")||this.extractChildTextContent(t,"c:ser c:numRef c:f"):this.extractChildTextContent(t,"c:ser c:cat c:f")}extractComboChart(e){const t=this.mapOnElements({parent:e,query:"c:title a:t"},(e=>e.textContent||"")).join(""),o=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:{text:t},type:"combo",dataSets:[...this.extractChartDatasets(this.querySelectorAll(e,"c:barChart"),"comboChart"),...this.extractChartDatasets(this.querySelectorAll(e,"c:lineChart"),"comboChart")],labelRange:this.extractChildTextContent(e,"c:ser c:cat c:f"),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),legendPosition:uC[this.extractChildAttr(e,"c:legendPos","val",{default:"none"}).asString()],stacked:"stacked"===o,fontColor:"000000"}}extractChartDatasets(e,t){return Array.from(e).map((e=>"scatterChart"===t?this.extractScatterChartDatasets(e):this.mapOnElements({parent:e,query:"c:ser"},(e=>{let t={};const o=this.extractChildTextContent(e,"c:tx c:f");if(o)t={reference:o};else{const o=this.extractChildTextContent(e,"c:tx c:v");o&&(t={text:o})}const s=this.extractChildAttr(e,"c:spPr a:solidFill a:srgbClr","val");return{label:t,range:this.extractChildTextContent(e,"c:val c:f",{required:!0}),backgroundColor:s?`${zt(s.asString())}`:void 0}})))).flat()}extractScatterChartDatasets(e){return this.mapOnElements({parent:e,query:"c:ser"},(e=>{let t={};const o=this.extractChildTextContent(e,"c:tx c:f");if(o)t={reference:o};else{const o=this.extractChildTextContent(e,"c:tx c:v");o&&(t={text:o})}return{label:t,range:this.extractChildTextContent(e,"c:yVal c:f",{required:!0})}}))}getChartType(e){const t=this.querySelector(e,"c:plotArea");if(!t)throw new Error("Missing plot area in the chart definition.");let o;for(let e of t.children){const t=rx(e.tagName);Ry.some((e=>e===t))&&(o?o!==t&&(o="comboChart"):o=t)}if(o)return o;throw new Error("Unknown chart type")}}const px="oneCellAnchor",mx="twoCellAnchor";class fx extends cx{extractFigures(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"xdr:wsDr",children:!0},(e=>{const t=rx(e.tagName),o=this.extractFigureAnchorsByType(e,t),s=this.querySelector(e,"c:chart"),i=this.querySelector(e,"a:blip");if(!s&&!i)throw new Error("Only chart and image figures are currently supported.");return{anchors:o,data:s?this.extractChart(s):this.extractImage(e),figureSize:t===px?this.extractFigureSizeFromSizeTag(e,"xdr:ext"):void 0}}))}extractFigureAnchorsByType(e,t){switch(t){case px:return[this.extractFigureAnchor("xdr:from",e)];case mx:return[this.extractFigureAnchor("xdr:from",e),this.extractFigureAnchor("xdr:to",e)];default:throw new Error(`${t} is not supported for xlsx drawings. `)}}extractFigureSizeFromSizeTag(e,t){const o=this.querySelector(e,t);if(!o)throw new Error(`Missing size element '${t}'`);return{cx:this.extractAttr(o,"cx",{required:!0}).asNum(),cy:this.extractAttr(o,"cy",{required:!0}).asNum()}}extractFigureAnchor(e,t){const o=this.querySelector(t,e);if(!o)throw new Error(`Missing anchor element ${e}`);return{col:Number(this.extractChildTextContent(o,"xdr:col",{required:!0})),colOffset:Number(this.extractChildTextContent(o,"xdr:colOff",{required:!0})),row:Number(this.extractChildTextContent(o,"xdr:row",{required:!0})),rowOffset:Number(this.extractChildTextContent(o,"xdr:rowOff",{required:!0}))}}extractChart(e){const t=this.extractAttr(e,"r:id",{required:!0}).asString(),o=this.getTargetXmlFile(this.relationships[t]),s=new gx(o,this.xlsxFileStructure,this.warningManager).extractChart();if(!s)throw new Error("Unable to extract chart definition");return s}extractImage(e){const t=this.querySelector(e,"a:blip"),o=this.extractAttr(t,"r:embed",{required:!0}).asString(),s=this.getTargetImageFile(this.relationships[o]);if(!s)throw new Error("Unable to extract image");const i=s.fileName.split(".").at(-1),n=rx(e.tagName),r=n===mx?this.querySelector(e,"a:xfrm"):e,a=n===mx?"a:ext":"xdr:ext",l=this.extractFigureSizeFromSizeTag(r,a);return{imageSrc:s.imageSrc,mimetype:i?SC[i]:void 0,size:l}}}class vx extends cx{getPivotTable(){return this.mapOnElements({query:":root",parent:this.rootFile.file.xml},(e=>({name:this.extractAttr(e,"name",{required:!0}).asString(),rowGrandTotals:this.extractAttr(e,"rowGrandTotals",{default:!0}).asBool(),location:this.extractPivotLocation(e),style:this.extractPivotStyleInfo(e)})))[0]}extractPivotLocation(e){return this.mapOnElements({query:"location",parent:e},(e=>({ref:this.extractAttr(e,"ref",{required:!0}).asString(),firstHeaderRow:this.extractAttr(e,"firstHeaderRow",{required:!0}).asNum(),firstDataRow:this.extractAttr(e,"firstDataRow",{required:!0}).asNum(),firstDataCol:this.extractAttr(e,"firstDataCol",{required:!0}).asNum()})))[0]}extractPivotStyleInfo(e){return this.mapOnElements({query:"pivotTableStyleInfo",parent:e},(e=>({name:this.extractAttr(e,"name",{required:!0}).asString(),showRowHeaders:this.extractAttr(e,"showRowHeaders",{required:!0}).asBool(),showColHeaders:this.extractAttr(e,"showColHeaders",{required:!0}).asBool(),showRowStripes:this.extractAttr(e,"showRowStripes",{required:!0}).asBool(),showColStripes:this.extractAttr(e,"showColStripes",{required:!0}).asBool(),showLastColumn:this.extractAttr(e,"showLastColumn")?.asBool()})))[0]}}class bx extends cx{getTable(){return this.mapOnElements({query:"table",parent:this.rootFile.file.xml},(e=>({displayName:this.extractAttr(e,"displayName",{required:!0}).asString(),name:this.extractAttr(e,"name")?.asString(),id:this.extractAttr(e,"id",{required:!0}).asString(),ref:this.extractAttr(e,"ref",{required:!0}).asString(),headerRowCount:this.extractAttr(e,"headerRowCount",{default:1}).asNum(),totalsRowCount:this.extractAttr(e,"totalsRowCount",{default:0}).asNum(),cols:this.extractTableCols(e),style:this.extractTableStyleInfo(e),autoFilter:this.extractTableAutoFilter(e)})))[0]}extractTableCols(e){return this.mapOnElements({query:"tableColumn",parent:e},(e=>({id:this.extractAttr(e,"id",{required:!0}).asString(),name:this.extractAttr(e,"name",{required:!0}).asString(),colFormula:this.extractChildTextContent(e,"calculatedColumnFormula")})))}extractTableStyleInfo(e){return this.mapOnElements({query:"tableStyleInfo",parent:e},(e=>({name:this.extractAttr(e,"name")?.asString(),showFirstColumn:this.extractAttr(e,"showFirstColumn")?.asBool(),showLastColumn:this.extractAttr(e,"showLastColumn")?.asBool(),showRowStripes:this.extractAttr(e,"showRowStripes")?.asBool(),showColumnStripes:this.extractAttr(e,"showColumnStripes")?.asBool()})))[0]}extractTableAutoFilter(e){return this.mapOnElements({query:"autoFilter",parent:e},(e=>({columns:this.extractFilterColumns(e),zone:this.extractAttr(e,"ref",{required:!0}).asString()})))[0]}extractFilterColumns(e){return this.mapOnElements({query:"tableColumn",parent:e},(t=>({colId:this.extractAttr(e,"colId",{required:!0}).asNum(),hiddenButton:this.extractAttr(e,"hiddenButton",{default:!1}).asBool(),filters:this.extractSimpleFilter(t)})))}extractSimpleFilter(e){return this.mapOnElements({query:"filter",parent:e},(e=>({val:this.extractAttr(e,"val",{required:!0}).asString()})))}}class Sx extends cx{theme;constructor(e,t,o,s){super(e,t,o),this.theme=s}getSheet(){return this.mapOnElements({query:"worksheet",parent:this.rootFile.file.xml},(e=>{const t=this.getSheetWorkbookInfo();return{sheetName:this.extractSheetName(),sheetViews:this.extractSheetViews(e),sheetFormat:this.extractSheetFormat(e),sheetProperties:this.extractSheetProperties(e),cols:this.extractCols(e),rows:this.extractRows(e),sharedFormulas:this.extractSharedFormulas(e),merges:this.extractMerges(e),cfs:this.extractConditionalFormats(),dataValidations:this.extractDataValidations(),figures:this.extractFigures(e),hyperlinks:this.extractHyperLinks(e),tables:this.extractTables(e),pivotTables:this.extractPivotTables(),isVisible:"visible"===t.state}}))[0]}extractSheetViews(e){return this.mapOnElements({parent:e,query:"sheetView"},(e=>{const t=this.querySelector(e,"pane");return{tabSelected:this.extractAttr(e,"tabSelected",{default:!1}).asBool(),showFormulas:this.extractAttr(e,"showFormulas",{default:!1}).asBool(),showGridLines:this.extractAttr(e,"showGridLines",{default:!0}).asBool(),showRowColHeaders:this.extractAttr(e,"showRowColHeaders",{default:!0}).asBool(),pane:{xSplit:t?this.extractAttr(t,"xSplit",{default:0}).asNum():0,ySplit:t?this.extractAttr(t,"ySplit",{default:0}).asNum():0}}}))}extractSheetName(){const e=IC(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id;for(let e of this.querySelectorAll(this.xlsxFileStructure.workbook.file.xml,"sheet"))if(e.attributes["r:id"].value===t)return e.attributes.name.value;throw new Error("Missing sheet name")}getSheetWorkbookInfo(){const e=IC(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id,o=this.mapOnElements({parent:this.xlsxFileStructure.workbook.file.xml,query:"sheet"},(e=>({relationshipId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetId:this.extractAttr(e,"sheetId",{required:!0}).asString(),sheetName:this.extractAttr(e,"name",{required:!0}).asString(),state:this.extractAttr(e,"state",{default:"visible"}).asString()}))).find((e=>e.relationshipId===t));if(!o)throw new Error("Cannot find corresponding workbook sheet");return o}extractConditionalFormats(){return new dx(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractConditionalFormattings()}extractDataValidations(){return new ux(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractDataValidations()}extractFigures(e){return this.mapOnElements({parent:e,query:"drawing"},(e=>{const t=this.extractAttr(e,"r:id",{required:!0})?.asString(),o=this.getTargetXmlFile(this.relationships[t]);return new fx(o,this.xlsxFileStructure,this.warningManager).extractFigures()}))[0]||[]}extractTables(e){return this.mapOnElements({query:"tablePart",parent:e},(e=>{const t=this.extractAttr(e,"r:id",{required:!0})?.asString(),o=this.getTargetXmlFile(this.relationships[t]);return new bx(o,this.xlsxFileStructure,this.warningManager).getTable()}))}extractPivotTables(){try{return Object.values(this.relationships).filter((e=>e.type.endsWith("pivotTable"))).map((e=>{const t=this.getTargetXmlFile(e);return new vx(t,this.xlsxFileStructure,this.warningManager).getPivotTable()}))}catch(e){return this.catchErrorOnElement(e),[]}}extractMerges(e){return this.mapOnElements({parent:e,query:"mergeCell"},(e=>this.extractAttr(e,"ref",{required:!0}).asString()))}extractSheetFormat(e){const t=this.querySelector(e,"sheetFormatPr");if(t)return{defaultColWidth:this.extractAttr(t,"defaultColWidth",{default:Ly.toString()}).asNum(),defaultRowHeight:this.extractAttr(t,"defaultRowHeight",{default:Hy.toString()}).asNum()}}extractSheetProperties(e){const t=this.querySelector(e,"sheetPr");if(t)return{outlinePr:this.extractSheetOutlineProperties(t),tabColor:this.extractColor(this.querySelector(t,"tabColor"),this.theme)}}extractSheetOutlineProperties(e){const t=this.querySelector(e,"outlinePr");if(t)return{summaryBelow:this.extractAttr(t,"summaryBelow",{default:!0}).asBool(),summaryRight:this.extractAttr(t,"summaryRight",{default:!0}).asBool()}}extractCols(e){return this.mapOnElements({parent:e,query:"cols col"},(e=>({width:this.extractAttr(e,"width")?.asNum(),customWidth:this.extractAttr(e,"customWidth")?.asBool(),bestFit:this.extractAttr(e,"bestFit")?.asBool(),hidden:this.extractAttr(e,"hidden")?.asBool(),min:this.extractAttr(e,"min",{required:!0})?.asNum(),max:this.extractAttr(e,"max",{required:!0})?.asNum(),styleIndex:this.extractAttr(e,"style")?.asNum(),outlineLevel:this.extractAttr(e,"outlineLevel")?.asNum(),collapsed:this.extractAttr(e,"collapsed")?.asBool()})))}extractRows(e){return this.mapOnElements({parent:e,query:"sheetData row"},(e=>({index:this.extractAttr(e,"r",{required:!0})?.asNum(),cells:this.extractCells(e),height:this.extractAttr(e,"ht")?.asNum(),customHeight:this.extractAttr(e,"customHeight")?.asBool(),hidden:this.extractAttr(e,"hidden")?.asBool(),styleIndex:this.extractAttr(e,"s")?.asNum(),outlineLevel:this.extractAttr(e,"outlineLevel")?.asNum(),collapsed:this.extractAttr(e,"collapsed")?.asBool()})))}extractCells(e){return this.mapOnElements({parent:e,query:"c"},(e=>({xc:this.extractAttr(e,"r",{required:!0})?.asString(),styleIndex:this.extractAttr(e,"s")?.asNum(),type:iC[this.extractAttr(e,"t",{default:"n"})?.asString()],value:this.extractChildTextContent(e,"v"),formula:this.extractCellFormula(e)})))}extractCellFormula(e){const t=this.querySelector(e,"f");if(t)return{content:this.extractTextContent(t),sharedIndex:this.extractAttr(t,"si")?.asNum(),ref:this.extractAttr(t,"ref")?.asString()}}extractHyperLinks(e){return this.mapOnElements({parent:e,query:"hyperlink"},(e=>{const t=this.extractAttr(e,"r:id")?.asString();return{xc:this.extractAttr(e,"ref",{required:!0})?.asString(),location:this.extractAttr(e,"location")?.asString(),display:this.extractAttr(e,"display")?.asString(),relTarget:t?this.relationships[t].target:void 0}}))}extractSharedFormulas(e){const t=this.querySelectorAll(e,"f[si][ref]"),o={};for(let e of t){const t=this.extractAttr(e,"si",{required:!0}).asNum(),s=this.extractTextContent(e,{required:!0});o[t]=s}const s=[];for(let e=0;e<Object.keys(o).length;e++)o[e]?s.push(o[e]):(this.warningManager.addParsingWarning(`Missing shared formula ${e}, replacing it by empty formula`),s.push(""));return s}}class yx extends cx{theme;constructor(e,t,o){super(e.styles,e,t),this.theme=o}getNumFormats(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"numFmt"},(e=>this.extractNumFormats(e)))}extractNumFormats(e){return{id:this.extractAttr(e,"numFmtId",{required:!0}).asNum(),format:this.extractAttr(e,"formatCode",{required:!0,default:""}).asString()}}getFonts(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"font"},(e=>this.extractFont(e)))}extractFont(e){const t=this.extractChildAttr(e,"name","val",{default:"Arial"}).asString(),o=this.extractChildAttr(e,"sz","val",{default:fe.toString()}).asNum(),s=this.extractColor(this.querySelector(e,"color"),this.theme),i=this.querySelector(e,"i")||void 0,n=i&&"0"!==i.attributes.val?.value,r=this.querySelector(e,"b")||void 0,a=r&&"0"!==r.attributes.val?.value,l=this.querySelector(e,"strike")||void 0,c=l&&"0"!==l.attributes.val?.value,h=this.querySelector(e,"u")||void 0;return{name:t,size:o,color:s,italic:n,bold:a,underline:h&&"none"!==h.attributes.val?.value,strike:c}}getFills(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"fill"},(e=>this.extractFill(e)))}extractFill(e){const t=e.children[0];return"patternFill"===t.tagName?{patternType:t.attributes.patternType?.value,bgColor:this.extractColor(this.querySelector(t,"bgColor"),this.theme),fgColor:this.extractColor(this.querySelector(t,"fgColor"),this.theme)}:{patternType:"solid",fgColor:this.extractColor(this.querySelectorAll(t,"color")[1],this.theme)}}getBorders(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"border"},(e=>this.extractBorder(e)))}extractBorder(e){const t={left:this.extractSingleBorder(e,"left",this.theme),right:this.extractSingleBorder(e,"right",this.theme),top:this.extractSingleBorder(e,"top",this.theme),bottom:this.extractSingleBorder(e,"bottom",this.theme),diagonal:this.extractSingleBorder(e,"diagonal",this.theme)};return t.diagonal&&(t.diagonalUp=this.extractAttr(e,"diagonalUp")?.asBool(),t.diagonalDown=this.extractAttr(e,"diagonalDown")?.asBool()),t}extractSingleBorder(e,t,o){const s=this.querySelector(e,t);if(s&&s.attributes.style)return{style:this.extractAttr(s,"style",{required:!0,default:"thin"}).asString(),color:this.extractColor(s.children[0],o,"000000")}}extractAlignment(e){return{horizontal:this.extractAttr(e,"horizontal",{default:"general"}).asString(),vertical:this.extractAttr(e,"vertical",{default:"bottom"}).asString(),textRotation:this.extractAttr(e,"textRotation")?.asNum(),wrapText:this.extractAttr(e,"wrapText")?.asBool(),indent:this.extractAttr(e,"indent")?.asNum(),relativeIndent:this.extractAttr(e,"relativeIndent")?.asNum(),justifyLastLine:this.extractAttr(e,"justifyLastLine")?.asBool(),shrinkToFit:this.extractAttr(e,"shrinkToFit")?.asBool(),readingOrder:this.extractAttr(e,"readingOrder")?.asNum()}}getDxfs(){return this.mapOnElements({query:"dxf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"font"),o=this.querySelector(e,"fill"),s=this.querySelector(e,"border"),i=this.querySelector(e,"numFmt"),n=this.querySelector(e,"alignment");return{font:t?this.extractFont(t):void 0,fill:o?this.extractFill(o):void 0,numFmt:i?this.extractNumFormats(i):void 0,alignment:n?this.extractAlignment(n):void 0,border:s?this.extractBorder(s):void 0}}))}getStyles(){return this.mapOnElements({query:"cellXfs xf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"alignment");return{fontId:this.extractAttr(e,"fontId",{required:!0,default:0}).asNum(),fillId:this.extractAttr(e,"fillId",{required:!0,default:0}).asNum(),borderId:this.extractAttr(e,"borderId",{required:!0,default:0}).asNum(),numFmtId:this.extractAttr(e,"numFmtId",{required:!0,default:0}).asNum(),alignment:t?this.extractAlignment(t):void 0}}))}}class Cx extends cx{getExternalBook(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"externalBook"},(e=>({rId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetNames:this.mapOnElements({parent:e,query:"sheetName"},(e=>this.extractAttr(e,"val",{required:!0}).asString())),datasets:this.extractExternalSheetData(e)})))[0]}extractExternalSheetData(e){return this.mapOnElements({parent:e,query:"sheetData"},(e=>{const t=this.mapOnElements({parent:e,query:"cell"},(e=>({xc:this.extractAttr(e,"r",{required:!0}).asString(),value:this.extractChildTextContent(e,"v",{required:!0})}))),o={};for(let e of t)o[e.xc]=e.value;return{sheetId:this.extractAttr(e,"sheetId",{required:!0}).asNum(),data:o}}))}}function wx(e,t){const o=function(e,t){const o=t[Wy],s=o.querySelectorAll(`Override[ContentType="${e}"]`),i=[];for(let e of s){const t=e?.attributes.PartName.value;i.push(t.substring(1))}return i}(e,t);return function(e,t){const o=[];for(let s of e){const e=xx(s,t);o.push({file:{fileName:s,xml:t[s]},rels:e?{fileName:e,xml:t[e]}:void 0})}return o}(o,t)}function xx(e,t){if(e===Wy)return"_rels/.rels";let o="";const s=e.split("/");for(let e=0;e<s.length-1;e++)o+=s[e]+"/";return o+="_rels/",o+=s[s.length-1]+".rels",t[o]||(o=void 0),o}class Ix{warningManager;xmls;images;constructor(e){this.warningManager=new Ky,this.xmls={},this.images=[];for(let t of Object.keys(e))if(t.endsWith(".xml")||t.endsWith(".rels")){const o=e[t].replaceAll(/(<\/?)([a-zA-Z0-9]+):([a-zA-Z0-9]+)/g,"$1NAMESPACE$2NAMESPACE$3");this.xmls[t]=tx(new Ey(o))}else t.includes("media/image")&&this.images.push({fileName:t,imageSrc:e[t].imageSrc})}convertXlsx(){const e=this.getXlsxData();return this.convertImportedData(e)}getXlsxData(){const e=this.buildXlsxFileStructure(),t=e.theme?new hx(e.theme,e,this.warningManager).getTheme():void 0,o=e.sharedStrings?new hx(e.sharedStrings,e,this.warningManager).getSharedStrings():[],s=e.sheets.sort(((e,t)=>e.file.fileName.localeCompare(t.file.fileName,void 0,{numeric:!0}))).map((o=>new Sx(o,e,this.warningManager,t).getSheet())),i=e.externalLinks.map((t=>new Cx(t,e,this.warningManager).getExternalBook())),n=new yx(e,this.warningManager,t);return{fonts:n.getFonts(),fills:n.getFills(),borders:n.getBorders(),dxfs:n.getDxfs(),numFmts:n.getNumFormats(),styles:n.getStyles(),sheets:s,sharedStrings:o,externalBooks:i}}buildXlsxFileStructure(){const e={sheets:wx(Fy.sheet,this.xmls),workbook:wx(Fy.workbook,this.xmls)[0]||wx(Fy.macroEnabledWorkbook,this.xmls)[0]||wx(Fy.templateWorkbook,this.xmls)[0]||wx(Fy.macroEnabledTemplateWorkbook,this.xmls)[0]||wx(Fy.excelAddInWorkbook,this.xmls)[0],styles:wx(Fy.styles,this.xmls)[0],sharedStrings:wx(Fy.sharedStrings,this.xmls)[0],theme:wx(Fy.themes,this.xmls)[0],charts:wx(Fy.chart,this.xmls),figures:wx(Fy.drawing,this.xmls),tables:wx(Fy.table,this.xmls),pivots:wx(Fy.pivot,this.xmls),externalLinks:wx(Fy.externalLink,this.xmls),images:this.images};if(!e.workbook.rels)throw Error(Uo("Cannot find workbook relations file"));return e}convertImportedData(e){const t={version:24,sheets:Sw(e,this.warningManager),styles:FC(e,this.warningManager),formats:PC(e,this.warningManager),borders:DC(e,this.warningManager),revisionId:ye};return Zw(t,e),Object.keys(e.styles).map((t=>{e.styles[t]=St(e.styles[t])})),t}}function Ex(e){const t=Gf(e);let o=[];return{text:"".concat(...t.map((e=>{if("REFERENCE"===e.type&&Nr.test(e.value)){const t=e.value.trim();return o.includes(t)||o.push(t),`${Oe}${o.indexOf(t)}${Oe}`}return e.value}))),dependencies:o}}const Rx={am_ET:7,ar_001:6,ar_SY:6,az_AZ:1,eu_ES:1,be_BY:1,bn_IN:1,bs_BA:1,bg_BG:1,ca_ES:1,zh_CN:7,zh_HK:7,zh_TW:7,hr_HR:1,cs_CZ:1,da_DK:1,nl_BE:1,nl_NL:1,en_AU:7,en_CA:7,en_GB:1,en_IN:7,en_NZ:7,et_EE:1,fi_FI:1,fr_BE:1,fr_CA:7,fr_CH:1,fr_FR:1,gl_ES:1,ka_GE:1,de_DE:1,de_CH:1,el_GR:1,gu_IN:7,he_IL:7,hi_IN:7,hu_HU:1,id_ID:7,it_IT:1,ja_JP:7,kab_DZ:6,km_KH:7,ko_KP:1,ko_KR:7,lo_LA:7,lv_LV:1,lt_LT:1,lb_LU:1,mk_MK:1,ml_IN:1,mn_MN:7,ms_MY:1,nb_NO:1,fa_IR:6,pl_PL:1,pt_AO:1,pt_BR:7,pt_PT:1,ro_RO:1,ru_RU:1,sr_RS:7,"sr@latin":7,sk_SK:1,sl_SI:1,es_AR:7,es_BO:1,es_CL:1,es_CO:7,es_CR:1,es_DO:1,es_EC:1,es_GT:7,es_MX:7,es_PA:7,es_PE:7,es_PY:7,es_UY:1,es_VE:7,sw:1,sv_SE:1,th_TH:7,tl_PH:1,tr_TR:1,uk_UA:1,vi_VN:1,sq_AL:1,te_IN:7,en_US:7,my_MM:7,es_ES:1,es_419:1},Tx=new n;function Ax(e){for(let t of e.sheets||[]){let e=[];for(let o of t.filterTables||[]){const t=$o(o.range),s=e.findIndex((e=>es(e,t)));-1!==s?e[s]=t:e.push(t)}t.filterTables=e.map((e=>({range:qo(e)})))}return e}Tx.add("migration_1",{versionFrom:"1",migrate:e=>(e.sheets&&e.sheets[0]&&(e.activeSheet=e.sheets[0].name),e)}).add("migration_2",{versionFrom:"2",migrate(e){if(e.sheets&&e.sheets.length)for(let t of e.sheets)t.id=t.id||t.name;return e}}).add("migration_3",{versionFrom:"3",migrate(e){if(e.sheets&&e.activeSheet){const t=e.sheets.find((t=>t.name===e.activeSheet));e.activeSheet=t.id}return e}}).add("migration_4",{versionFrom:"4",migrate(e){for(let t of e.sheets||[])t.figures=t.figures||[];return e}}).add("migration_5",{versionFrom:"5",migrate(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];o.content&&o.content.startsWith("=")&&(o.formula=Ex(o.content))}return e}}).add("migration_6",{versionFrom:"6",migrate(e){for(let t of e.sheets||[])for(let e in t.figures||[]){const{dataSets:o,...s}=t.figures[e].data,i=[];for(let e of o)if(e.labelCell){const t=$o(e.dataRange),o=e.labelCell+":"+Ao(t.right,t.bottom);i.push(o)}else i.push(e.dataRange);s.dataSetsHaveTitle=Boolean(o[0].labelCell),s.dataSets=i,t.figures[e].data=s}return e}}).add("migration_7",{versionFrom:"7",migrate(e){const t=[];for(let o of e.sheets||[]){if(!o.name)continue;const e=o.name,s=kt(qe(e,"_"),t,{compute:(e,t)=>`${e}${t}`});o.name=s,t.push(s);const i=t=>{if(void 0===t)return t;let o=t.replace(e,s),i=t;for(;i!==o;)i=o,o=i.replace(e,s);return i};for(let e in o.cells){const t=o.cells[e];t.formula&&(t.formula.dependencies=t.formula.dependencies.map(i))}for(let e of o.figures||[])if("chart"===e.type){const t=e.data.dataSets.map(i),o=i(e.data.labelRange);e.data={...e.data,dataSets:t,labelRange:o}}for(let e of o.conditionalFormats||[]){e.ranges=e.ranges.map(i);for(const t of["minimum","maximum","midpoint","upperInflectionPoint","lowerInflectionPoint"])"formula"===e.rule[t]?.type&&(e.rule[t].value=i(e.rule[t].value))}}return e}}).add("migration_8",{versionFrom:"8",migrate(e){for(const t of e.sheets||[])for(const e of t.figures||[])e.data.background=m,e.data.verticalAxisPosition="left",e.data.legendPosition="top",e.data.stacked=!1;return e}}).add("migration_9",{versionFrom:"9",migrate(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];if(o.formula){let{text:e,dependencies:t}=o.formula;for(let[o,s]of Object.entries(t)){const t=`\\${Oe}${o}\\${Oe}`;e=e.replace(new RegExp(t,"g"),s)}o.content=e,delete o.formula}}return e}}).add("migration_10",{versionFrom:"10",migrate(e){const t={};for(let o of e.sheets||[])for(let e in o.cells||[]){const s=o.cells[e];s.format&&(s.format=bs(s.format,t))}return e.formats=t,e}}).add("migration_11",{versionFrom:"11",migrate(e){for(let t of e.sheets||[])t.isVisible=!0;return e}}).add("migration_12",{versionFrom:"12",migrate:e=>Ax(e)}).add("migration_12_5",{versionFrom:"12.5",migrate(e){for(const t in e.borders){const o=e.borders[t];for(const e in o)Array.isArray(o[e])&&(o[e]={style:o[e][0],color:o[e][1]})}return e}}).add("migration_13",{versionFrom:"13",migrate:e=>(e.settings||(e.settings={}),e.settings.locale||(e.settings.locale=fi),e)}).add("migration_14",{versionFrom:"14",migrate:e=>Ax(e)}).add("migration_14_5",{versionFrom:"14.5",migrate(e){for(const t of e.sheets||[])t.tables=t.tables||t.filterTables||[],delete t.filterTables;return e}}).add("migration_15",{versionFrom:"15",migrate:e=>(e.pivots||(e.pivots={}),e.pivotNextId||(e.pivotNextId=gc(e.pivots)+1),e)}).add("migration_16",{versionFrom:"16",migrate(e){for(const t of e.sheets||[])for(const e in t.figures||[]){const o=t.figures[e];"title"in o.data&&"string"==typeof o.data.title&&(o.data.title={text:o.data.title});const s=o.data.type;if(!["line","bar","pie","scatter","waterfall","combo"].includes(s))continue;const{dataSets:i,...n}=t.figures[e].data,r=i.map((e=>({dataRange:e})));n.dataSets=r,t.figures[e].data=n}return e}}).add("migration_17",{versionFrom:"17",migrate:e=>e}).add("migration_18",{versionFrom:"18",migrate(e){for(const t of Object.values(e.pivots||{}))t.measures=t.measures.map((e=>({id:e.name,fieldName:e.name,aggregator:e.aggregator}))),t.columns=t.columns.map((e=>({fieldName:e.name,order:e.order,granularity:e.granularity}))),t.rows=t.rows.map((e=>({fieldName:e.name,order:e.order,granularity:e.granularity})));return e}}).add("migration_19",{versionFrom:"19",migrate(e){const t=e.settings?.locale;if(t){const e=t.code;t.weekStart=Rx[e]||1}return e}}).add("migration_20",{versionFrom:"20",migrate(e){for(const t of e.sheets||[]){t.styles={},t.formats={},t.borders={};for(const e in t.cells)t.styles[e]=t.cells[e].style,t.formats[e]=t.cells[e].format,t.borders[e]=t.cells[e].border,delete t.cells[e].style,delete t.cells[e].format,delete t.cells[e].border}return e}}).add("migration_21",{versionFrom:"21",migrate(e){for(const t of e.sheets||[])for(const e of t.figures||[]){if("chart"!==e.tag||"gauge"!==e.data.type)continue;const t=e.data;t?.sectionRule?.lowerInflectionPoint&&(t.sectionRule.lowerInflectionPoint.operator="<="),t?.sectionRule?.upperInflectionPoint&&(t.sectionRule.upperInflectionPoint.operator="<=")}return e}}).add("migration_22",{versionFrom:"22",migrate(e){for(const t of e.sheets||[])for(const e of t.tables||[])e.config||(e.config={...Aw,hasFilters:!0});return e}}).add("migration_23",{versionFrom:"23",migrate(e){for(const t of e.sheets||[])for(const e in t.cells){const o=t.cells[e];o&&(t.cells[e]=o.content)}return e}}).add("migration_24",{versionFrom:"24",migrate:e=>e});const _x=25,Dx="Sheet1";function Ox(e,t){if(!e)return Nx();console.debug("### Loading data ###");const o=performance.now();if(e["[Content_Types].xml"]){const o=new Ix(e);if(e=o.convertXlsx(),t)for(let e of o.warningManager.warnings.sort())console.warn(e)}return"version"in e&&e.version<_x&&(console.debug("Migrating data from version",e.version),e=function(e){const t=performance.now(),o=Tx.getAll().sort(((e,t)=>function(e,t){const o=e.split(".").map(Number),s=t.split(".").map(Number);for(let e=0;e<Math.max(o.length,s.length);e++){const t=o[e]||0,i=s[e]||0;if(t>i)return 1;if(t<i)return-1}return 0}(e.versionFrom,t.versionFrom)));for(let t=o.findIndex((t=>t.versionFrom===e.version.toString()));t<o.length;t++)e=o[t].migrate(e);return console.debug("Data migrated in",performance.now()-t,"ms"),e}(e)),e=function(e){return e=function(e){if(e.uniqueFigureIds)return e;const t=new Set,o=new xa;for(const s of e.sheets||[])for(const e of s.figures||[])t.has(e.id)&&(e.id+=o.smallUuid()),t.add(e.id);return e.uniqueFigureIds=!0,e}(e),e=function(e){const t=Object.assign(Nx(),e,{version:_x});t.sheets=t.sheets?t.sheets.map(((e,t)=>Object.assign(Px(`Sheet${t+1}`,`Sheet${t+1}`),e))):[],0===t.sheets.length&&t.sheets.push(Px(Dx,"Sheet1"));ja(t.settings.locale)||(t.settings.locale=fi);return t}(e),e}(e),console.debug("Data loaded in",performance.now()-o,"ms"),console.debug("###"),e}function Fx(e,t){return t=function(e,t){if(0!==Object.keys(e).length)return t;const o=[],s=[],i=e=>{if("CREATE_SHEET"===e.type)o.push(e.sheetId);else if("sheetId"in e&&!o.includes(e.sheetId))return{...e,sheetId:Dx};return e};for(const e of t)"REMOTE_REVISION"===e.type?s.push({...e,commands:e.commands.map(i)}):s.push(e);return s}(e,t),t=Mx(t,"SORT_CELLS"),t=function(e,t){const o=[],s={};for(const t of e.sheets||[])t.figures?.forEach((e=>{"chart"===e.tag&&(s[e.id]=e.data)}));for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const o of e.commands){let e=o;switch(o.type){case"CREATE_CHART":s[o.id]=o.definition;break;case"UPDATE_CHART":if(!s[o.id]){console.log(`Fix chart definition: chart with id ${o.id} not found.`);continue}const t={...s[o.id],...o.definition};e={...o,definition:t},s[o.id]=t}t.push(e)}o.push({...e,commands:t})}else o.push(e);return o}(e,t=Mx(t,"SET_DECIMAL")),t=function(e,t){const o={};for(const t of e.sheets||[])o[t.id]=t.name;const s=[];for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const s of e.commands){switch(s.type){case"DUPLICATE_SHEET":s.sheetNameTo=s.sheetNameTo??ia(o[s.sheetId],Object.values(o));break;case"CREATE_SHEET":case"RENAME_SHEET":o[s.sheetId]=s.name||sa(Object.values(o))}t.push(s)}s.push({...e,commands:t})}else s.push(e);return t}(e,t),t}function Mx(e,t){const o=[];for(const s of e)"REMOTE_REVISION"===s.type?o.push({...s,commands:s.commands.filter((e=>e.type!==t))}):o.push(s);return o}function Px(e,t){return{id:e,name:t,colNumber:26,rowNumber:100,cells:{},styles:{},formats:{},borders:{},cols:{},rows:{},merges:[],conditionalFormats:[],dataValidationRules:[],figures:[],tables:[],isVisible:!0}}function Nx(e="Sheet1"){return{version:_x,sheets:[Px(Dx,e)],styles:{},formats:{},borders:{},revisionId:ye,uniqueFigureIds:!0,settings:{locale:fi},pivots:{},pivotNextId:1,customTableStyles:{}}}function kx(e,t){return{...Px(e,t),charts:[],images:[],cellValues:{}}}const Vx={wrongPasteSelection:Uo("This operation is not allowed with multiple selections."),willRemoveExistingMerge:Uo("This operation is not possible due to a merge. Please remove the merges first than try again."),wrongFigurePasteOption:Uo("Cannot do a special paste of a figure."),frozenPaneOverlap:Uo("This operation is not allowed due to an overlapping frozen pane.")};function Lx(e,t){t.isSuccessful||(t.reasons.includes("WrongPasteSelection")?e.raiseError(Vx.wrongPasteSelection):t.reasons.includes("WillRemoveExistingMerge")?e.raiseError(Vx.willRemoveExistingMerge):t.reasons.includes("WrongFigurePasteOption")?e.raiseError(Vx.wrongFigurePasteOption):t.reasons.includes("FrozenPaneOverlap")&&e.raiseError(Vx.frozenPaneOverlap))}function Hx(e,t,o){const s=e.model.dispatch("PASTE",{target:t,pasteOption:o});Lx(e,s)}function Ux(e,t,o,s){let i;try{i=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,clipboardContent:o,pasteOption:s})}catch(n){const r=o.data;r?.version!==_x&&e.raiseError(Uo("An unexpected error occurred while pasting content. This is probably due to a spreadsheet version mismatch.")),i=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,clipboardContent:{text:o.text},pasteOption:s})}Lx(e,i)}const Bx={Errors:{InvalidRange:Uo("The range is invalid"),FirstArgMissing:Uo("The argument is missing. Please provide a value"),SecondArgMissing:Uo("The second argument is missing. Please provide a value"),MinNaN:Uo("The minpoint must be a number"),MidNaN:Uo("The midpoint must be a number"),MaxNaN:Uo("The maxpoint must be a number"),ValueUpperInflectionNaN:Uo("The first value must be a number"),ValueLowerInflectionNaN:Uo("The second value must be a number"),MinBiggerThanMax:Uo("Minimum must be smaller then Maximum"),MinBiggerThanMid:Uo("Minimum must be smaller then Midpoint"),MidBiggerThanMax:Uo("Midpoint must be smaller then Maximum"),LowerBiggerThanUpper:Uo("Lower inflection point must be smaller than upper inflection point"),MinInvalidFormula:Uo("Invalid Minpoint formula"),MaxInvalidFormula:Uo("Invalid Maxpoint formula"),MidInvalidFormula:Uo("Invalid Midpoint formula"),ValueUpperInvalidFormula:Uo("Invalid upper inflection point formula"),ValueLowerInvalidFormula:Uo("Invalid lower inflection point formula"),EmptyRange:Uo("A range needs to be defined"),ValueCellIsInvalidFormula:Uo("At least one of the provided values is an invalid formula"),Unexpected:Uo("The rule is invalid for an unknown reason")},ColorScale:Uo("Color scale"),IconSet:Uo("Icon set"),DataBar:Uo("Data bar")},zx={IsEmpty:Uo("Is empty"),IsNotEmpty:Uo("Is not empty"),ContainsText:Uo("Contains"),NotContains:Uo("Does not contain"),BeginsWith:Uo("Starts with"),EndsWith:Uo("Ends with"),Equal:Uo("Is equal to"),NotEqual:Uo("Is not equal to"),GreaterThan:Uo("Is greater than"),GreaterThanOrEqual:Uo("Is greater than or equal to"),LessThan:Uo("Is less than"),LessThanOrEqual:Uo("Is less than or equal to"),Between:Uo("Is between"),NotBetween:Uo("Is not between")},$x={Series:Uo("Series"),BackgroundColor:Uo("Background color"),StackedBarChart:Uo("Stacked bar chart"),StackedLineChart:Uo("Stacked line chart"),StackedAreaChart:Uo("Stacked area chart"),StackedColumnChart:Uo("Stacked column chart"),CumulativeData:Uo("Cumulative data"),TreatLabelsAsText:Uo("Treat labels as text"),AggregatedChart:Uo("Aggregate"),Errors:{Unexpected:Uo("The chart definition is invalid for an unknown reason"),InvalidDataSet:Uo("The dataset is invalid"),InvalidLabelRange:Uo("Labels are invalid"),InvalidScorecardKeyValue:Uo("The key value is invalid"),InvalidScorecardBaseline:Uo("The baseline value is invalid"),InvalidGaugeDataRange:Uo("The data range is invalid"),EmptyGaugeRangeMin:Uo("A minimum range limit value is needed"),GaugeRangeMinNaN:Uo("The minimum range limit value must be a number"),EmptyGaugeRangeMax:Uo("A maximum range limit value is needed"),GaugeRangeMaxNaN:Uo("The maximum range limit value must be a number"),GaugeLowerInflectionPointNaN:Uo("The lower inflection point value must be a number"),GaugeUpperInflectionPointNaN:Uo("The upper inflection point value must be a number")},GeoChart:{ColorScales:{blues:Uo("Blues"),cividis:Uo("Cividis"),greens:Uo("Greens"),greys:Uo("Greys"),oranges:Uo("Oranges"),purples:Uo("Purples"),rainbow:Uo("Rainbow"),reds:Uo("Reds"),viridis:Uo("Viridis")}}},Gx={Custom:Uo("Custom")},Wx=Uo("Merged cells are preventing this operation. Unmerge those cells and try again."),qx={Errors:{Unexpected:Uo("Cannot split the selection for an unknown reason"),NoSplitSeparatorInSelection:Uo("There is no match for the selected separator in the selection"),MoreThanOneColumnSelected:Uo("Only a selection from a single column can be split"),SplitWillOverwriteContent:Uo("Splitting will overwrite existing content")}},Zx={Errors:{Unexpected:Uo("Cannot remove duplicates for an unknown reason"),MoreThanOneRangeSelected:Uo("Please select only one range of cells"),EmptyTarget:Uo("Please select a range of cells containing values."),NoColumnsProvided:Uo("Please select at latest one column to analyze."),WillRemoveExistingMerge:Vx.willRemoveExistingMerge}},jx={DateIs:{today:Uo("today"),yesterday:Uo("yesterday"),tomorrow:Uo("tomorrow"),lastWeek:Uo("in the past week"),lastMonth:Uo("in the past month"),lastYear:Uo("in the past year")},DateIsBefore:{today:Uo("today"),yesterday:Uo("yesterday"),tomorrow:Uo("tomorrow"),lastWeek:Uo("one week ago"),lastMonth:Uo("one month ago"),lastYear:Uo("one year ago")},CriterionError:{notEmptyValue:Uo("The value must not be empty"),numberValue:Uo("The value must be a number"),dateValue:Uo("The value must be a date"),validRange:Uo("The value must be a valid range"),validFormula:Uo("The formula must be valid")},Errors:{InvalidRange:Uo("The range is invalid."),InvalidDataValidationCriterionValue:Uo("One or more of the provided criteria values are invalid. Please review and correct them."),InvalidNumberOfCriterionValues:Uo("One or more of the provided criteria values are missing."),Unexpected:Uo("The rule is invalid for an unknown reason.")}},Yx={Errors:{Unexpected:Uo("The table zone is invalid for an unknown reason"),TableOverlap:Uo("You cannot create overlapping tables."),NonContinuousTargets:Uo("A table can only be created on a continuous selection."),InvalidRange:Uo("The range is invalid"),TargetOutOfSheet:Uo("The range is out of the sheet")},Checkboxes:{hasFilters:Uo("Filter button"),headerRow:Uo("Header row(s)"),bandedRows:Uo("Banded rows"),firstColumn:Uo("First column"),lastColumn:Uo("Last column"),bandedColumns:Uo("Banded columns"),automaticAutofill:Uo("Automatically autofill formulas"),totalRow:Uo("Total row"),isDynamic:Uo("Auto-adjust to formula result")},Tooltips:{filterWithoutHeader:Uo("Cannot have filters without a header row"),isDynamic:Uo("For tables based on array formulas only")}},Xx={labels:{no_calculations:Uo("No calculations"),"%_of_grand_total":Uo("% of grand total"),"%_of_col_total":Uo("% of column total"),"%_of_row_total":Uo("% of row total"),"%_of":Uo("% of"),"%_of_parent_row_total":Uo("% of parent row total"),"%_of_parent_col_total":Uo("% of parent column total"),"%_of_parent_total":Uo("% of parent total"),difference_from:Uo("Difference from"),"%_difference_from":Uo("% difference from"),running_total:Uo("Running total"),"%_running_total":Uo("% Running total"),rank_asc:Uo("Rank smallest to largest"),rank_desc:Uo("Rank largest to smallest"),index:Uo("Index")},descriptions:{"%_of_grand_total":()=>Uo("Displayed as % of grand total"),"%_of_col_total":()=>Uo("Displayed as % of column total"),"%_of_row_total":()=>Uo("Displayed as % of row total"),"%_of":e=>Uo('Displayed as % of "%s"',e),"%_of_parent_row_total":e=>Uo('Displayed as % of parent row total of "%s"',e),"%_of_parent_col_total":()=>Uo("Displayed as % of parent column total"),"%_of_parent_total":e=>Uo('Displayed as % of parent "%s" total',e),difference_from:e=>Uo('Displayed as difference from "%s"',e),"%_difference_from":e=>Uo('Displayed as % difference from "%s"',e),running_total:e=>Uo('Displayed as running total based on "%s"',e),"%_running_total":e=>Uo('Displayed as % running total based on "%s"',e),rank_asc:e=>Uo('Displayed as rank from smallest to largest based on "%s"',e),rank_desc:e=>Uo('Displayed as rank largest to smallest based on "%s"',e),index:()=>Uo("Displayed as index")},documentation:{no_calculations:Uo("Displays the value that is entered in the field."),"%_of_grand_total":Uo("Displays values as a percentage of the grand total of all the values or data points in the report."),"%_of_col_total":Uo("Displays all the values in each column or series as a percentage of the total for the column or series."),"%_of_row_total":Uo("Displays the value in each row or category as a percentage of the total for the row or category."),"%_of":Uo("Displays values as a percentage of the value of the Base item in the Base field."),"%_of_parent_row_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item on rows)"),"%_of_parent_col_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item on columns)"),"%_of_parent_total":Uo("Calculates values as follows:\n(value for the item) / (value for the parent item of the selected Base field)"),difference_from:Uo("Displays values as the difference from the value of the Base item in the Base field."),"%_difference_from":Uo("Displays values as the percentage difference from the value of the Base item in the Base field."),running_total:Uo("Displays the value for successive items in the Base field as a running total."),"%_running_total":Uo("Calculates the value as a percentage for successive items in the Base field that are displayed as a running total."),rank_asc:Uo("Displays the rank of selected values in a specific field, listing the smallest item in the field as 1, and each larger value with a higher rank value."),rank_desc:Uo("Displays the rank of selected values in a specific field, listing the largest item in the field as 1, and each smaller value with a higher rank value."),index:Uo("Calculates values as follows:\n((value in cell) x (Grand Total of Grand Totals)) / ((Grand Row Total) x (Grand Column Total))")}},Kx={second:1e3,minute:6e4,hour:36e5,day:864e5,month:2592e6,year:31536e6},Jx={inSeconds:function(e){return Math.floor(e/Kx.second)},inMinutes:function(e){return Math.floor(e/Kx.minute)},inHours:function(e){return Math.floor(e/Kx.hour)},inDays:function(e){return Math.floor(e/Kx.day)},inMonths:function(e){return Math.floor(e/Kx.month)},inYears:function(e){return Math.floor(e/Kx.year)}},Qx=/^((d|dd|m|mm|yyyy|yy|hh|h|ss|a)(-|:|\s|\/))*(d|dd|m|mm|yyyy|yy|hh|h|ss|a)$/i;function eI(e,t,o){const s=function(e){const t=e.indexOf("h");e=t>=0?e.slice(0,t).replace(/m/g,"M")+e.slice(t):e.replace(/m/g,"M");e.includes("a")||(e=e.replace(/h/g,"H"));return e}(t),i=function(e,t,o){const s=e.map((e=>Vs(e,o)?.jsDate));if(s.some((e=>void 0===e))||e.length<2)return;const i=s.map((e=>e.getTime())),n=Ot(i)-Ft(i),r=function(e){if(e.includes("s"))return"second";if(e.includes("m"))return"minute";if(e.includes("h")||e.includes("H"))return"hour";if(e.includes("d"))return"day";if(e.includes("M"))return"month";return"year"}(t);if(Kx.second>=Kx[r]&&Jx.inSeconds(n)<180)return"second";if(Kx.minute>=Kx[r]&&Jx.inMinutes(n)<180)return"minute";if(Kx.hour>=Kx[r]&&Jx.inHours(n)<96)return"hour";if(Kx.day>=Kx[r]&&Jx.inDays(n)<90)return"day";if(Kx.month>=Kx[r]&&Jx.inMonths(n)<36)return"month";return"year"}(e,s,o),n={};return i&&(n[i]=s),{parser:s,displayFormats:n,unit:i??!1}}function tI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n));const r=SI(s,t,"left"),a=SI(s,t,"right"),l=e.horizontal?{x:r||a}:{y:r,y1:a},c=[];for(const t in n){const{data:o}=n[t],s=e.dataSets?.[t].trend;if(!s?.display||e.horizontal){c.push(void 0);continue}const i=aI(s,o);c.push(i)}return{dataSetsValues:n,trendDataSetsValues:c,axisFormats:l,labels:i,locale:s.getLocale()}}function oI(e,t,o,s){const i=tI(e,t,o,s),n=i.dataSetsValues.filter((e=>!e.hidden)),r=[];if(n[0]){const e=n[0].data.map((e=>e>0?e:0));r.push({...n[0],data:e})}if(n[1]){const e=n[1].data.map((e=>e>0?-e:0));r.push({...n[1],data:e})}return{...i,dataSetsValues:r}}function sI(e,t,o,s){const i=function(e,t,o,s){if(function(e,t,o,s){return!e.labelsAsText&&dI(e,t,o,s)}(e,t,o,s)&&function(){if(!window.Chart)return!1;const e="luxon"===new window.Chart._adapters._date({})._id;e||gI||(gI=!0,console.warn("'chartjs-adapter-luxon' time adapter is not installed. Time scale axes are disabled."));return e}())return"time";if(function(e,t,o,s){return!e.labelsAsText&&uI(e,t,o,s)}(e,t,o,s))return"linear";return"category"}(e,t,o,s),n=bI(s,t,o);let r="linear"===i?n.values:n.formattedValues,a=yI(s,t);const l=wh(o,t[0],e.dataSetsHaveTitle||!1);l&&r.shift(),({labels:r,dataSetsValues:a}=mI(r,a)),"time"===i&&({labels:r,dataSetsValues:a}=function(e,t){if(0===e.length||e.every((e=>!e)))return{labels:e,dataSetsValues:t};const o=[...e],s=ze(t);for(let e=0;e<o.length;e++)if(!o[e]){o[e]=pt(o,e);for(let t of s)t.data[e]=void 0}return{labels:o,dataSetsValues:s}}(r,a)),e.aggregated&&({labels:r,dataSetsValues:a}=fI(r,a));const c={y:SI(s,t,"left"),y1:SI(s,t,"right"),x:vI(s,o,l)},h=[];for(const t in a){let{data:o}=a[t];if(e.cumulative){let e=0;o=o.map((t=>isNaN(parseFloat(t))?t:(e+=parseFloat(t),e))),a[t]={...a[t],data:o}}const n=e.dataSets?.[t].trend;n?.display?h.push(lI(n,o,r,i,s.getLocale())):h.push(void 0)}return{dataSetsValues:a,axisFormats:c,labels:r,locale:s.getLocale(),trendDataSetsValues:h,axisType:i}}function iI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n)),({dataSetsValues:n,labels:i}=function(e,t){const o=Math.max(e.length,...t.map((e=>e.data?.length||0))),s=je(0,o).filter((e=>t.some((t=>"number"==typeof t.data[e]&&t.data[e]>0))));return{labels:s.map((t=>e[t]||"")),dataSetsValues:t.map((e=>({...e,data:s.map((t=>"number"==typeof e.data[t]&&e.data[t]>0?e.data[t]:null))})))}}(i,n));return{dataSetsValues:n,axisFormats:{y:SI(s,t,"left")},labels:i,locale:s.getLocale()}}function nI(e,t,o,s){let i=bI(s,t,o).formattedValues,n=yI(s,t);wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),({labels:i,dataSetsValues:n}=mI(i,n)),e.aggregated&&({labels:i,dataSetsValues:n}=fI(i,n));return{dataSetsValues:n,axisFormats:{r:SI(s,t,"left")||SI(s,t,"right")},labels:i,locale:s.getLocale()}}function rI(e,t,o,s){let i=bI(s,t,o).formattedValues;wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift();let n=yI(s,t);({labels:i,dataSetsValues:n}=fI(i,n));return{dataSetsValues:n,axisFormats:{y:SI(s,t,"left")||SI(s,t,"right")},labels:i,locale:s.getLocale(),availableRegions:s.getGeoChartAvailableRegions(),geoFeatureNameToId:s.geoFeatureNameToId,getGeoJsonFeatures:s.getGeoJsonFeatures}}function aI(e,t){const o=[],s=[],i=[];for(let e=0;e<t.length;e++)"number"==typeof t[e]&&(o.push(t[e]),s.push(e+1)),i.push(e+1);const n=cI(e,o,s,je(.5,i.length+.55,.2));return n.length?n:void 0}function lI(e,t,o,s,i){const n=[],r=[],a=[],l=t.length;if(l<2)return;switch(s){case"category":for(let e=0;e<l;e++)"number"==typeof t[e]&&(n.push(t[e]),r.push(e+1)),a.push(e+1);break;case"linear":for(let e=0;e<t.length;e++){const s=Number(o[e]);isNaN(s)||("number"==typeof t[e]&&(n.push(t[e]),r.push(s)),a.push(s))}break;case"time":for(let e=0;e<t.length;e++){const s=ki({value:o[e]},i);null!==t[e]&&(n.push(t[e]),r.push(s)),a.push(s)}}const c=Math.min(...a),h=Math.max(...a);if(h===c)return;const d=(h-c)/(5*a.length),u=cI(e,n,r,je(c,h+d/2,d));return u.length?u:void 0}function cI(e,t,o,s){if(t.length<2||o.length<2||0===s.length)return[];const{normalizedLabels:i,normalizedNewLabels:n}=function(e,t,o){let s=[],i=[];if("logarithmic"===o.type){const o=Math.max(...e.map(Math.abs));s=e.map((e=>e/o)),i=t.map((e=>e/o))}else{const o=Math.max(...e),n=Math.min(...e),r=o-n;s=e.map((e=>(e-o)/r)),i=t.map((e=>(e-o)/r))}return{normalizedLabels:s,normalizedNewLabels:i}}(o,s,e);try{switch(e.type){case"polynomial":{const o=e.order;if(!o)return s.map((e=>({x:e,y:NaN})));if(1===o)return Ml([t],[i],[n],!0)[0].map(((e,t)=>({x:s[t],y:e})));const r=Al(t,i,o,!0).flat();return n.map(((e,t)=>({x:s[t],y:Dl(r,e,o)})))}case"exponential":{const e=[],o=[];for(let s=0;s<t.length;s++)t[s]>0&&(e.push(Math.log(t[s])),o.push(i[s]));return o.length?Ol(Ml([e],[o],[n],!0))[0].map(((e,t)=>({x:s[t],y:e}))):s.map((e=>({x:e,y:NaN})))}case"logarithmic":return Ml([t],Fl([i]),Fl([n]),!0)[0].map(((e,t)=>({x:s[t],y:e})));case"trailingMovingAverage":return function(e,t,o=Ae){const s=[];for(let e=0;e<o-1;e++)s.push({x:t[e],y:NaN});for(let i=0;i<=e.length-o;i++){let n=0;for(let t=i;t<i+o;t++)n+=e[t];s.push({x:t[i+o-1],y:n/o})}return s}(t,o,e.window);default:return s.map((e=>({x:e,y:NaN})))}}catch(e){return s.map((e=>({x:e,y:NaN})))}}function hI(e,t,o,s){return dI(e,t,o,s)||uI(e,t,o,s)}function dI(e,t,o,s){if(!o||!uI(e,t,o,s))return!1;const i=vI(s,o,wh(o,t[0],e.dataSetsHaveTitle||!1));return Boolean(i&&Qx.test(i))}function uI(e,t,o,s){if(!o)return!1;const i=s.getRangeValues(o);return wh(o,t[0],e.dataSetsHaveTitle||!1)&&i.shift(),!i.some((e=>isNaN(Number(e))&&e))&&!i.every((e=>!e))}let gI=!1;function pI(e,t){if(t.dataRange){const o=t.labelCell?[t.labelCell.zone]:[],s=_o([t.dataRange.zone],o)[0];if(void 0===s)return[];const i=e.getRangeFromZone(t.dataRange.sheetId,s);return e.getRangeValues(i).map((e=>""===e?void 0:e))}return[]}function mI(e,t){const o=je(0,Math.max(e.length,...t.map((e=>e.data?.length||0)))).filter((o=>{const s=e[o],i=t.map((e=>e.data?.[o]));return s||i.some((e=>"number"==typeof e))}));return{labels:o.map((t=>e[t]||"")),dataSetsValues:t.map((e=>({...e,data:o.map((t=>"number"==typeof e.data[t]?e.data[t]:null))})))}}function fI(e,t){const o=new Set(e),s={};o.forEach((e=>{s[e]=new Array(t.length).fill(0)}));for(const o of je(0,e.length)){const n=e[o];for(const e of je(0,t.length))s[n][e]+="number"==typeof(i=t[e].data[o])?i:0}var i;return{labels:Array.from(o),dataSetsValues:t.map(((e,t)=>({...e,data:Array.from(o).map((e=>s[e][t]))})))}}function vI(e,t,o){if(!t)return;const{sheetId:s,zone:i}=t,n=rs(i).map((t=>e.getEvaluatedCell({sheetId:s,...t}).format));return o&&n.shift(),n.find((e=>void 0!==e))}function bI(e,t,o){let s={values:[],formattedValues:[]};if(o){const{left:i}=o.zone;if(o.invalidXc||o.invalidSheetName||e.isColHidden(o.sheetId,i)){if(t[0]){s={formattedValues:je(0,pI(e,t[0]).length).map((e=>e.toString())),values:s.formattedValues}}}else s={formattedValues:e.getRangeFormattedValues(o),values:e.getRangeValues(o).map((e=>String(e??"")))}}else if(1===t.length){const o=pI(e,t[0]).length;for(let e=0;e<o;e++)s.formattedValues.push(""),s.values.push("")}else if(t[0]){s={formattedValues:je(0,pI(e,t[0]).length).map((e=>e.toString())),values:s.formattedValues}}return s}function SI(e,t,o){const s=t.filter((e=>"right"===o==!!e.rightYAxis));for(const t of s){const o=e.getRangeFormats(t.dataRange).find((e=>void 0!==e&&!nr(e)));if(o)return o}}function yI(e,t){const o=[];for(const[s,i]of Object.entries(t)){let t,n=e.isColHidden(i.dataRange.sheetId,i.dataRange.zone.left);if(i.labelCell){const o=i.labelCell,n=o?e.getEvaluatedCell({sheetId:o.sheetId,col:o.zone.left,row:o.zone.top}):void 0;t=n&&o?n.formattedValue:t=`${$x.Series} ${parseInt(s)+1}`}else t=`${$x.Series} ${parseInt(s)+1}`;let r=i.dataRange?pI(e,i):[];r.every((e=>"string"==typeof e&&!Pi(e)))&&r.some((e=>""!==e))?r.fill(1):r.every((e=>null==e||!Js(e.toString(),fi)))&&(n=!0),o.push({data:r,label:t,hidden:n})}return o}function CI(e,t){const{dataSetsValues:o}=t,s=[],i=OI(e,o.length),n=[];for(const r in o){let{label:a,data:l,hidden:c}=o[r];a=e.dataSets?.[r].label||a;const h=i.next(),d={label:a,data:l,hidden:c,borderColor:e.background||m,borderWidth:e.stacked?1:0,backgroundColor:h,yAxisID:e.horizontal?"y":e.dataSets?.[r].yAxisId||"y",xAxisID:"x"};s.push(d);const u=e.dataSets?.[r].trend,g=t.trendDataSetsValues?.[r];u?.display&&!e.horizontal&&g&&n.push(_I(d,u,g))}return s.push(...n),s}function wI(e,t){const{dataSetsValues:o,labels:s}=t,i=e.negativeValuesColor||T,n=e.positiveValuesColor||R,r=e.subTotalValuesColor||A,a=[],l=[],c={label:"",data:l,backgroundColor:a},h=[];let d=0;for(const t of o)if(!t.hidden){for(let c=0;c<t.data.length;c++){const u=t.data[c];if(h.push(s[c]),isNaN(Number(u))){l.push([d,d]),a.push("");continue}l.push([d,u+d]);let g=u>=0?n:i;0===c&&t===o[0]&&e.firstValueAsSubtotal&&(g=r),a.push(g),d+=u}e.showSubTotals&&(h.push(Uo("Subtotal")),l.push([0,d]),a.push(r))}return{datasets:[c],labels:h}}function xI(e,t){const{dataSetsValues:o,axisType:s,labels:i}=t,n=[],r=!!e.fillArea,a=!!e.stacked,l=[],c=OI(e,o.length);for(let h=0;h<o.length;h++){let{label:d,data:u,hidden:g}=o[h];d=e.dataSets?.[h].label||d;const p=c.next();s&&["linear","time"].includes(s)&&(u=u.map(((e,t)=>({x:i[t]||void 0,y:e}))));const m={label:d,data:u,hidden:g,tension:0,borderColor:p,backgroundColor:r?Qt(p,Te):p,pointBackgroundColor:p,fill:!!r&&DI(h,a),yAxisID:e.dataSets?.[h].yAxisId||"y"};n.push(m);const f=e.dataSets?.[h].trend,v=t.trendDataSetsValues?.[h];f?.display&&v&&l.push(_I(m,f,v))}return n.push(...l),n}function II(e,t){const o=xI(e,t);for(const e of o)Dh(e.xAxisID)||(e.showLine=!1);return o}function EI(e,t){const{dataSetsValues:o}=t,s=[],i=Math.max(0,...o.map((e=>e?.data?.length??0))),n=Ah(new uo(i),o);for(const{label:t,data:i,hidden:r}of o){if(r)continue;const o={label:t,data:i,borderColor:e.background||"#FFFFFF",backgroundColor:n,hoverOffset:30};s.push(o)}return s}function RI(e,t){const{dataSetsValues:o}=t,s=[],i=OI(e,o.length),n=[];for(let r=0;r<o.length;r++){let{label:a,data:l,hidden:c}=o[r];a=e.dataSets?.[r].label||a;const h=e.dataSets?.[r],d=i.next(),u=h?.type??"line",g={label:a,data:l,hidden:c,borderColor:d,backgroundColor:d,yAxisID:e.dataSets?.[r].yAxisId||"y",xAxisID:"x",type:u,order:"bar"===u?o.length+r:r};s.push(g);const p=e.dataSets?.[r].trend,m=t.trendDataSetsValues?.[r];p?.display&&m&&n.push(_I(g,p,m))}return s.push(...n),s}function TI(e,t){const{dataSetsValues:o}=t,s=[],i=e.fillArea??!1,n=OI(e,o.length);for(let t=0;t<o.length;t++){let{label:r,data:a,hidden:l}=o[t];e.dataSets?.[t]?.label&&(r=e.dataSets[t].label);const c=n.next(),h={label:r,data:a,hidden:l,borderColor:c,backgroundColor:c};i&&(h.backgroundColor=Qt(c,Te),h.fill="start"),s.push(h)}return s}function AI(e,t){const{availableRegions:o,dataSetsValues:s,labels:i}=t,n=e.region||o[0]?.id,r=n?t.getGeoJsonFeatures(n):void 0,a={outline:r,showOutline:!!r,data:[]};if(r&&n){const e={};if(s[0])for(let o=0;o<s[0].data.length;o++){if(!i[o]||void 0===s[0].data[o])continue;const r=t.geoFeatureNameToId(n,i[o]);r&&(e[r]={value:s[0].data[o],label:i[o]})}for(const t of r)t.id&&a.data.push({feature:{...t,properties:{name:e[t.id]?.label}},value:e[t.id]?.value})}return[a]}function _I(e,t,o){const s=jt(e.backgroundColor);s.a=1;const i=t.color||eo(Zt(s),.5);return{type:"line",xAxisID:"trailingMovingAverage"===t.type?lh:ah,yAxisID:e.yAxisID,label:e.label?Uo("Trend line for %s",e.label):"",data:o,order:-1,showLine:!0,pointRadius:0,backgroundColor:i,borderColor:i,borderDash:[5,5],borderWidth:void 0,fill:!1,pointBackgroundColor:i}}function DI(e,t){return t?0===e?"origin":"-1":"origin"}function OI(e,t){return new uo(t,e.dataSets?.map((e=>e.backgroundColor))||[])}function FI(e){return{padding:{left:Z,right:Z,top:Y,bottom:j}}}function MI(e,t){return{display:"none"!==e.legendPosition,position:"none"!==e.legendPosition?e.legendPosition:void 0}}function PI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:"rect",lineWidth:3})}}function NI(e,t){const o=e.fillArea,s=o?"rect":"line",i=o?2:3;return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:s,lineWidth:i})}}function kI(e,t){const{dataSetsValues:o}=t,s=Math.max(0,...o.map((e=>e?.data?.length??0))),i=Ah(new uo(s),o),n=bh(e.background);return{...MI(e),labels:{usePointStyle:!0,generateLabels:e=>e.data.labels?.map(((e,t)=>({text:_h(String(e)),strokeStyle:i[t],fillStyle:i[t],pointStyle:"rect",lineWidth:2,fontColor:n})))||[],filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden}}}function VI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:"circle",strokeStyle:e.background||"#ffffff",lineWidth:8})}}function LI(e,t){return{...BI,...MI(e),...zI(bh(e.background),{lineWidth:3})}}function HI(e,t){const o=bh(e.background),s=e.negativeValuesColor||T,i=e.positiveValuesColor||R,n=e.subTotalValuesColor||A;return{...MI(e),labels:{usePointStyle:!0,generateLabels:()=>{const t=[{text:Uo("Positive values"),fontColor:o,fillStyle:i,strokeStyle:i,pointStyle:"rect"},{text:Uo("Negative values"),fontColor:o,fillStyle:s,strokeStyle:s,pointStyle:"rect"}];return(e.showSubTotals||e.firstValueAsSubtotal)&&t.push({text:Uo("Subtotals"),fontColor:o,fillStyle:n,strokeStyle:n,pointStyle:"rect"}),t},filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden},onClick:()=>{}}}function UI(e,t){const o=e.fillArea??!1,s=o?"rect":"line",i=o?2:3;return{...BI,...MI(e),...zI(bh(e.background),{pointStyle:s,lineWidth:i})}}const BI={onHover:e=>{const t=e.native?.target;t&&(t.style.cursor="pointer")},onLeave:e=>{const t=e.native?.target;t&&(t.style.cursor="default")},onClick:(e,t,o)=>{if("click"!==e.type)return;const s=t.datasetIndex;o.legendItems&&void 0!==s&&(o.chart.isDatasetVisible(s)?o.chart.hide(s):o.chart.show(s),e.native.preventDefault(),e.native.stopPropagation())}};function zI(e,t){return{labels:{color:e,usePointStyle:!0,generateLabels:o=>o.data.datasets.map(((s,i)=>Dh(s.xAxisID)?{text:_h(s.label),fontColor:e,strokeStyle:s.borderColor,hidden:!o.isDatasetVisible(i),pointStyle:"line",datasetIndex:i,lineWidth:3}:{text:_h(s.label),fontColor:e,strokeStyle:s.borderColor,fillStyle:s.backgroundColor,hidden:!o.isDatasetVisible(i),pointStyle:"line"===s.type?"line":"rect",datasetIndex:i,...t})),filter:(e,t)=>!("datasetIndex"in e)||!t.datasets[e.datasetIndex].hidden}}}function $I(e,t){let o={};const{trendDataSetsValues:s,locale:i,axisFormats:n}=t,r={stacked:e.stacked,locale:i};if(e.horizontal)o.x=JI(e,"bottom","values",{...r,format:n?.x}),o.y=JI(e,"left","labels",r);else{o.x=JI(e,"bottom","labels",r);const t={...r,format:n?.y};o.y=JI(e,"left","values",t);const s={...r,format:n?.y1};o.y1=JI(e,"right","values",s)}if(o=St(o),s&&s.length&&s.some(lt)){const e=Math.max(...s.map((e=>e?.length||0)));o[ah]={...o.x,labels:Array(e).fill(""),offset:!1,display:!1},o[lh]={...o.x,offset:!0,display:!1}}return o}function GI(e,t){const{locale:o,axisType:s,trendDataSetsValues:i,labels:n,axisFormats:r}=t,a=r?.x,l=e.stacked;let c={x:JI(e,"bottom","labels",{locale:o}),y:JI(e,"left","values",{locale:o,stacked:l,format:r?.y}),y1:JI(e,"right","values",{locale:o,stacked:l,format:r?.y1})};if(c=St(c),"time"===s&&n&&a){const e={type:"time",time:eI(n,a,o)};Object.assign(c.x,e),c.x.ticks.maxTicksLimit=15}else"linear"===s&&(c.x.type="linear",c.x.ticks.callback=e=>Kn(e,{format:a,locale:o}));if(i&&i.length&&i.some(lt)&&(c[ah]={...c.x,display:!1},c[lh]={...c.x,display:!1},"category"===s||"time"===s)){const e=Math.max(...i.map((e=>e?.length||0)));c[ah].type="category",c[ah].labels=je(0,e).map((e=>e.toString())),c[ah].offset=!1,c[lh].type="category",c[lh].offset=!1}return c}function WI(e,t){const o=GI(e,t);return{...o,x:{...o.x,grid:{display:!0}}}}function qI(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;e.dataSets;const n={x:{...JI(e,"bottom","labels",{locale:o}),grid:{display:!1}},y:{position:e.verticalAxisPosition,ticks:{color:bh(e.background),callback:Rh({locale:o,format:i})},grid:{lineWidth:e=>0===e.tick.value?2:1},title:KI(e.axesDesign?.y)}},r=n?.y||n?.y1;return r&&(r.grid={lineWidth:e=>0===e.tick.value?2:1}),n}function ZI(e,t){const{dataSetsValues:o}=t,s=$I(e,t),i=s.x.ticks.callback;s.x.ticks.callback=e=>i(Math.abs(e));const n=Math.max(...o.map((e=>Math.max(...e.data.map(Math.abs)))));return s.x.suggestedMin=-n,s.x.suggestedMax=n,s}function jI(e,t){const{locale:o,axisFormats:s,dataSetsValues:i}=t,n=Math.min(...i.map((e=>Math.min(...e.data.filter((e=>!isNaN(e)))))));return{r:{beginAtZero:!0,ticks:{callback:Rh({format:s?.r,locale:o}),backdropColor:e.background||"#FFFFFF"},pointLabels:{color:bh(e.background),callback:_h},suggestedMin:n<0?n-1:0}}}function YI(e,t){const{locale:o,axisFormats:s,availableRegions:i}=t,n=function(e){switch(e){case"top":return"top-left";case"right":return"top-right";case"bottom":return"bottom-right";case"left":case"none":return"bottom-left"}}(e.legendPosition),r=e.region?i.find((t=>t.id===e.region)):i[0],a=s?.y||s?.y1;return{projection:{projection:XI(r?.defaultProjection||"mercator"),axis:"x"},color:{axis:"x",display:"none"!==e.legendPosition,border:{color:D},grid:{color:D},ticks:{color:bh(e.background),callback:Rh({locale:o,format:a})},legend:{position:n,align:n.includes("right")?"left":"right",margin:eE(e)},interpolate:QI(e),missing:e.missingValueColor||"#ffffff"}}}function XI(e){return"conicConformal"===e?window.ChartGeo.geoConicConformal().rotate([100,0]):e}function KI(e){if(e?.title?.text){const{text:t,color:o,align:s,italic:i,bold:n}=e.title;return{display:!0,text:t,color:o,font:{style:i?"italic":"normal",weight:n?"bold":"normal",size:e.title.fontSize??K},align:"left"===s?"start":"right"===s?"end":"center"}}}function JI(e,t,o,s){const{useLeftAxis:i,useRightAxis:n}=Ih(e);if("left"===t&&!i||"right"===t&&!n)return;const r=bh(e.background);let a;if(a="bottom"===t?e.axesDesign?.x:"left"===t?e.axesDesign?.y:e.axesDesign?.y1,"values"===o){const e=!("right"===t&&i);return{position:t,title:KI(a),grid:{display:e},beginAtZero:!0,stacked:s?.stacked,ticks:{color:r,callback:Rh(s)}}}return{ticks:{padding:5,color:r,callback:function(e){return _h(this.getLabelForValue(e))}},grid:{display:!1},stacked:s?.stacked,title:KI(a)}}function QI(e){if(!e.colorScale||"string"==typeof e.colorScale)return e.colorScale||"oranges";const t=[{value:0,color:e.colorScale.minColor}];return e.colorScale.midColor&&t.push({value:.5,color:e.colorScale.midColor}),t.push({value:1,color:e.colorScale.maxColor}),po(t)}function eE(e){switch(e.legendPosition){case"top":case"right":return{top:!!e.title.text?Y+30:Y,left:Z,right:Z};case"bottom":case"left":case"none":return{left:Z,right:Z,bottom:j}}}function tE(e,t){const{axisFormats:o,locale:s}=t;return{horizontal:"horizontal"in e&&e.horizontal,showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(t,i)=>{const n=function(e,t){if(t.rAxisID)return t.rAxisID;const o="horizontal"in e&&e.horizontal?t.xAxisID:t.yAxisID;return o||"y"}(e,i);return Eh(o,s)(t,n)}}}function oE(e,t){const{axisFormats:o,locale:s}=t;return{horizontal:!0,showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(e,t)=>0===(e=Math.abs(Number(e)))?"":Eh(o,s)(e,t.xAxisID||"x")}}function sE(e,t){const{axisFormats:o,locale:s,dataSetsValues:i}=t,n=i.reduce(((e,t)=>(e.push((e.at(-1)||-1)+t.data.length+1),e)),[]);return{showValues:"showValues"in e&&!!e.showValues,background:e.background,callback:(t,i,r)=>{const a=i._dataset.data[r],l=a[1]-a[0];let c=l>=0?"+":"";return e.showSubTotals&&n.includes(r)&&"+"===c&&(c=""),`${c}${Eh(o,s)(l,i.yAxisID)}`}}}function iE(e){const t=e.title,o=Sh(e.background);return{display:!!t.text,text:Uo(t.text),color:t?.color??o,align:"center"===t.align?"center":"right"===t.align?"end":"start",font:{size:e.title.fontSize??X,weight:t.bold?"bold":"normal",style:t.italic?"italic":"normal"},padding:{bottom:"top"===e.legendPosition?0:Z}}}const nE='\n<templates>\n <t t-name="o-spreadsheet-CustomTooltip">\n <div\n class="o-chart-custom-tooltip border rounded px-2 py-1 pe-none mw-100 position-absolute text-nowrap shadow opacity-100">\n <table class="overflow-hidden m-0">\n <thead t-if="title">\n <tr>\n <th class="o-tooltip-title align-baseline border-0 text-truncate" t-esc="title" t-attf-style="max-width: {{ labelsMaxWidth }}"/>\n </tr>\n </thead>\n <tbody>\n <tr t-foreach="tooltipItems" t-as="tooltipItem" t-key="tooltipItem_index">\n <td>\n <span\n class="badge ps-2 py-2 rounded-0 align-middle"\n t-attf-style="background-color: {{ tooltipItem.boxColor }}"\n > </span>\n <small\n t-if="tooltipItem.label"\n class="o-tooltip-label d-inline-block text-truncate align-middle smaller ms-2"\n t-esc="tooltipItem.label"\n t-attf-style="max-width: {{ labelsMaxWidth }}"\n />\n </td>\n <td class="o-tooltip-value ps-2 fw-bolder text-end">\n <small class="smaller d-inline-block text-truncate align-middle" t-attf-style="max-width: {{ valuesMaxWidth }}">\n <t t-esc="tooltipItem.value"/>\n <t t-if="tooltipItem.percentage">\n (\n <t t-esc="tooltipItem.percentage"/>\n %)\n </t>\n </small>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n </t>\n</templates>\n';let rE;function aE(e,o={}){return function(e,o={}){rE||(rE=new t.App(t.Component,{templates:nE,translateFn:Uo}));const s=rE.getTemplate(e),i=s(o,{}),n=document.createElement("div");return t.blockDom.mount(i,n),n}(e,o).innerHTML}function lE(e,t){return{enabled:!1,external:mE,callbacks:{title:function(e){return e.some((e=>!Dh(e.dataset.xAxisID)))?void 0:""},beforeLabel:e=>e.dataset?.label||e.label,label:function(o){const s=e.horizontal;let i=s?o.parsed.x:o.parsed.y;null==i&&(i=o.parsed);const n=s?o.dataset.xAxisID:o.dataset.yAxisID;return Eh(t.axisFormats,t.locale)(i,n)}}}}function cE(e,t){const{axisType:o,locale:s,axisFormats:i}=t,n=i?.x,r={enabled:!1,external:mE,callbacks:{}};return r.callbacks.label="linear"===o?e=>{const t=e.parsed.y;let o=Dh(e.dataset.xAxisID)?"":e.parsed.x;"string"==typeof o&&Js(o,s)&&(o=ki(o,s));const r=Kn(o,{locale:s,format:n}),a=e.dataset.yAxisID||"y",l=Kn(t,{locale:s,format:i?.[a]});return r?`(${r}, ${l})`:`${l}`}:function(e){const t=e.parsed.y,o=e.dataset.yAxisID;return Eh(i,s)(t,o)},r.callbacks.beforeLabel=e=>e.dataset?.label||e.label,r.callbacks.title=function(e){return"linear"!==o&&e.some((e=>!Dh(e.dataset.xAxisID)))?void 0:""},r}function hE(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;return{enabled:!1,external:mE,callbacks:{title:function(e){return e[0].dataset.label},beforeLabel:e=>e.label||e.dataset.label,label:function(e){const t=function(e,t){const o=e.filter((e=>"number"==typeof e)).reduce(((e,t)=>e+t),0);if(!o)return"";const s=e[t]/o*100;return s.toFixed(2)}(e.dataset.data,e.dataIndex),s=e.parsed.y??e.parsed;return`${Kn(s,{format:!i&&s>=1e3?"#,##":i,locale:o})} (${t}%)`}}}}function dE(e,t){const{dataSetsValues:o,locale:s,axisFormats:i,labels:n}=t,r=i?.y||i?.y1,a=o.map((e=>e.label));return{enabled:!1,external:mE,callbacks:{beforeLabel:function(e){const t=n.length?Math.floor(e.dataIndex/n.length):0;return a[t]},label:function(e){const[t,o]=e.raw,i=o-t;return Kn(i,{format:!r&&Math.abs(i)>1e3?"#,##":r,locale:s})}}}}function uE(e,t){const o=lE(e,t);return{...o,callbacks:{...o.callbacks,label:e=>{const t={...e,parsed:{y:e.parsed.y,x:Math.abs(e.parsed.x)}};return(o?.callbacks?.label)(t)}}}}function gE(e,t){const{locale:o,axisFormats:s}=t;return{enabled:!1,external:mE,callbacks:{beforeLabel:e=>e.dataset?.label||e.label,label:function(e){return Kn(e.parsed.r,{format:s?.r,locale:o})}}}}function pE(e,t){const{locale:o,axisFormats:s}=t,i=s?.y||s?.y1;return{enabled:!1,external:mE,filter:function(e){return void 0!==e.raw.value},callbacks:{beforeLabel:e=>e.raw.feature.properties.name,label:function(e){const t=e.raw.value;return Kn(t,{format:!i&&Math.abs(t)>=1e3?"#,##":i,locale:o})}}}}function mE({chart:e,tooltip:t}){if(e.canvas.parentNode.querySelector("div.o-chart-custom-tooltip")?.remove(),0===t.opacity||0===t.dataPoints.length)return;const o=t.body.map(((e,o)=>{let s=e.before[0],i=e.lines[0];i||(i=s,s="");const n=t.labelColors[o].backgroundColor;return{label:s,value:i,boxColor:"string"==typeof n?Qt(n,1):n}})),s=aE("o-spreadsheet-CustomTooltip",{labelsMaxWidth:Math.floor(.5*e.canvas.clientWidth)+"px",valuesMaxWidth:Math.floor(.25*e.canvas.clientWidth)+"px",title:t.title[0],tooltipItems:o}),i=Object.assign(document.createElement("template"),{innerHTML:s}).content.firstChild;e.canvas.parentNode?.appendChild(i),Object.assign(i.style,{left:fE(e,t,i.clientWidth)+"px",top:Math.floor(t.caretY-i.clientHeight/2)+"px"})}function fE(e,t,o){const s=t.caretX;return s+o>e.chartArea.right?Math.max(0,s-o):s}var vE=Object.freeze({__proto__:null,INTERACTIVE_LEGEND_CONFIG:BI,canChartParseLabels:hI,getBarChartData:tI,getBarChartDatasets:CI,getBarChartLegend:PI,getBarChartScales:$I,getBarChartTooltip:lE,getChartColorsGenerator:OI,getChartLabelFormat:vI,getChartLayout:FI,getChartShowValues:tE,getChartTitle:iE,getComboChartDatasets:RI,getComboChartLegend:LI,getData:pI,getGeoChartData:rI,getGeoChartDatasets:AI,getGeoChartScales:YI,getGeoChartTooltip:pE,getLineChartData:sI,getLineChartDatasets:xI,getLineChartLegend:NI,getLineChartScales:GI,getLineChartTooltip:cE,getPieChartData:iI,getPieChartDatasets:EI,getPieChartLegend:kI,getPieChartTooltip:hE,getPyramidChartData:oI,getPyramidChartScales:ZI,getPyramidChartShowValues:oE,getPyramidChartTooltip:uE,getRadarChartData:nI,getRadarChartDatasets:TI,getRadarChartLegend:UI,getRadarChartScales:jI,getRadarChartTooltip:gE,getScatterChartDatasets:II,getScatterChartLegend:VI,getScatterChartScales:WI,getTrendDatasetForBarChart:aI,getTrendDatasetForLineChart:lI,getWaterfallChartLegend:HI,getWaterfallChartScales:qI,getWaterfallChartShowValues:sE,getWaterfallChartTooltip:dE,getWaterfallDatasetAndLabels:wI});class bE extends Vh{dataSets;labelRange;background;legendPosition;stacked;aggregated;type="bar";dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.horizontal=e.horizontal,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,stacked:e.stacked??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"bar",labelRange:e.auxiliaryRange||void 0,axesDesign:e.axesDesign,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new bE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new bE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"bar",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:this.horizontal,showValues:this.showValues}}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new bE(i,this.sheetId,this.getters)}}function SE(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:CI(o,s)},options:{...wy,indexAxis:e.horizontal?"y":"x",layout:FI(),scales:$I(o,s),plugins:{title:iE(o),legend:PI(o),tooltip:lE(o,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class yE extends Vh{dataSets;labelRange;background;legendPosition;aggregated;dataSetsHaveTitle;dataSetDesign;axesDesign;type="combo";showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId),type:this.dataSetDesign?.[t]?.type??(t?"line":"bar")});return{type:"combo",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues}}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new yE(i,this.sheetId,this.getters)}static getDefinitionFromContextCreation(e){const t=(e.range??[]).map(((e,t)=>({...e,type:t?"line":"bar"})));return{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated,legendPosition:e.legendPosition??"top",title:e.title||{text:""},labelRange:e.auxiliaryRange||void 0,type:"combo",axesDesign:e.axesDesign,showValues:e.showValues}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new yE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new yE(t,e,this.getters)}}function CE(e){return e.dataRange&&!Br.test(e.dataRange)?"InvalidGaugeDataRange":"Success"}function wE(e,t){return t((t=>t.sectionRule?e(t.sectionRule.rangeMin,"rangeMin"):"Success"),(t=>t.sectionRule?e(t.sectionRule.rangeMax,"rangeMax"):"Success"))}function xE(e,t){if(""===e)switch(t){case"rangeMin":return"EmptyGaugeRangeMin";case"rangeMax":return"EmptyGaugeRangeMax"}return"Success"}function IE(e,t){if(e.startsWith("="))return"Success";if(isNaN(e))switch(t){case"rangeMin":return"GaugeRangeMinNaN";case"rangeMax":return"GaugeRangeMaxNaN";case"lowerInflectionPointValue":return"GaugeLowerInflectionPointNaN";case"upperInflectionPointValue":return"GaugeUpperInflectionPointNaN"}return"Success"}class EE extends Vh{dataRange;sectionRule;background;type="gauge";constructor(e,t,o){super(e,t,o),this.dataRange=Xr(this.getters,this.sheetId,e.dataRange),this.sectionRule=e.sectionRule,this.background=e.background}static validateChartDefinition(e,t){return e.checkValidations(t,CE,e.chainValidations(wE(xE,e.batchValidations),wE(IE,e.batchValidations)),e.chainValidations((o=IE,(0,e.batchValidations)((e=>e.sectionRule?o(e.sectionRule.lowerInflectionPoint.value,"lowerInflectionPointValue"):"Success"),(e=>e.sectionRule?o(e.sectionRule.upperInflectionPoint.value,"upperInflectionPointValue"):"Success")))));var o}static transformDefinition(e,t){let o;return e.dataRange&&(o=Nc(zo(e.dataRange),t)),{...e,dataRange:o?qo(o):void 0}}static getDefinitionFromContextCreation(e){return{background:e.background,title:e.title||{text:""},type:"gauge",dataRange:e.range?e.range[0].dataRange:void 0,sectionRule:{colors:{lowerColor:"#EA6175",middleColor:"#FFD86D",upperColor:"#43C5B1"},rangeMin:"0",rangeMax:"100",lowerInflectionPoint:{type:"percentage",value:"15",operator:"<="},upperInflectionPoint:{type:"percentage",value:"40",operator:"<="}}}}duplicateInDuplicatedSheet(e){const t=dh(this.sheetId,e,this.dataRange),o=_E(this.sectionRule,(t=>this.getters.copyFormulaStringForSheet(this.sheetId,e,t,"moveReference"))),s=this.getDefinitionWithSpecificRanges(t,o,e);return new EE(s,e,this.getters)}copyInSheetId(e){const t=_E(this.sectionRule,(t=>this.getters.copyFormulaStringForSheet(this.sheetId,e,t,"keepSameReference"))),o=this.getDefinitionWithSpecificRanges(this.dataRange,t,e);return new EE(o,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificRanges(this.dataRange,this.sectionRule)}getDefinitionWithSpecificRanges(e,t,o){return{background:this.background,sectionRule:t,title:this.title,type:"gauge",dataRange:e?this.getters.getRangeString(e,o||this.sheetId):void 0}}getDefinitionForExcel(){}getContextCreation(){return{...this,range:this.dataRange?[{dataRange:this.getters.getRangeString(this.dataRange,this.sheetId)}]:void 0}}updateRanges(e){const t=uh(this.dataRange,e),o=_E(this.sectionRule,(t=>this.getters.adaptFormulaStringDependencies(this.sheetId,t,e))),s=this.getDefinitionWithSpecificRanges(t,o);return new EE(s,this.sheetId,this.getters)}}function RE(e,t){const o=t.getLocale(),s=e.sectionRule.colors;let i,n,r;const a=e.dataRange;if(void 0!==a){const e=t.getEvaluatedCell({sheetId:a.sheetId,col:a.zone.left,row:a.zone.top});e.type===oi.number&&(i=e.value,n=e.formattedValue,r=e.format)}let l=AE(e.sheetId,e.sectionRule.rangeMin,t),c=AE(e.sheetId,e.sectionRule.rangeMax,t);if(void 0===l||void 0===c)return function(e,t){return{background:t.getStyleOfSingleCellChart(e.background,e.dataRange).background,title:e.title??{text:""},minValue:{value:0,label:""},maxValue:{value:100,label:""},gaugeValue:{value:0,label:wi.GenericError},inflectionValues:[],colors:[]}}(e,t);c<l&&([l,c]=[c,l]);const h=e.sectionRule.lowerInflectionPoint,d=e.sectionRule.upperInflectionPoint,u=TE(e.sheetId,e.sectionRule.lowerInflectionPoint,l,c,t),g=TE(e.sheetId,e.sectionRule.upperInflectionPoint,l,c,t),p=[],m=[];return void 0!==u&&(p.push({value:u,label:Kn(u,{locale:o,format:r}),operator:h.operator}),m.push(s.lowerColor)),void 0!==g&&g!==u&&(p.push({value:g,label:Kn(g,{locale:o,format:r}),operator:d.operator}),m.push(s.middleColor)),void 0!==g&&void 0!==u&&u>g&&(p.reverse(),m.reverse()),m.push(s.upperColor),{background:t.getStyleOfSingleCellChart(e.background,a).background,title:{...e.title,text:Uo(e.title.text??"")},minValue:{value:l,label:Kn(l,{locale:o,format:r})},maxValue:{value:c,label:Kn(c,{locale:o,format:r})},gaugeValue:void 0!==i&&n?{value:i,label:n}:void 0,inflectionValues:p,colors:m}}function TE(e,t,o,s,i){const n=AE(e,t.value,i);if(void 0===n)return;return Ze("number"===t.type?n:o+(s-o)*n/100,o,s)}function AE(e,t,o){const s=o.evaluateFormula(e,t);return bi(s)?void 0:Vi(s,o.getLocale())}function _E(e,t){return{...e,rangeMin:t(e.rangeMin),rangeMax:t(e.rangeMax),lowerInflectionPoint:{...e.lowerInflectionPoint,value:t(e.lowerInflectionPoint.value)},upperInflectionPoint:{...e.upperInflectionPoint,value:t(e.upperInflectionPoint.value)}}}class DE extends Vh{dataSets;labelRange;background;legendPosition;type="geo";dataSetsHaveTitle;dataSetDesign;colorScale;missingValueColor;region;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.colorScale=e.colorScale,this.missingValueColor=e.missingValueColor,this.region=e.region}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"geo",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new DE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new DE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"geo",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,colorScale:this.colorScale,missingValueColor:this.missingValueColor,region:this.region}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new DE(i,this.sheetId,this.getters)}}class OE extends Vh{dataSets;labelRange;background;legendPosition;labelsAsText;stacked;aggregated;type="line";dataSetsHaveTitle;cumulative;dataSetDesign;axesDesign;fillArea;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(this.getters,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.labelsAsText=e.labelsAsText,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.cumulative=e.cumulative,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.fillArea=e.fillArea,this.showValues=e.showValues}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static transformDefinition(e,t){return vh(e,t)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,labelsAsText:e.labelsAsText??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"line",labelRange:e.auxiliaryRange||void 0,stacked:e.stacked??!1,aggregated:e.aggregated??!1,cumulative:e.cumulative??!1,axesDesign:e.axesDesign,fillArea:e.fillArea,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"line",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,stacked:this.stacked,aggregated:this.aggregated,cumulative:this.cumulative,axesDesign:this.axesDesign,fillArea:this.fillArea,showValues:this.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new OE(i,this.sheetId,this.getters)}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new OE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new OE(t,e,this.getters)}}function FE(e,t){const o=e.getDefinition(),s=sI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"line",data:{labels:s.labels,datasets:xI(o,s)},options:{...wy,layout:FI(),scales:GI(o,s),plugins:{title:iE(o),legend:NI(o),tooltip:cE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class ME extends Vh{dataSets;labelRange;background;legendPosition;type="pie";aggregated;dataSetsHaveTitle;isDoughnut;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.isDoughnut=e.isDoughnut,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"pie",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated??!1,isDoughnut:!1,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getContextCreation(){return{...this,range:this.dataSets.map((e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))),auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}getDefinitionWithSpecificDataSets(e,t,o){return{type:"pie",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:e.map((e=>({dataRange:this.getters.getRangeString(e.dataRange,o||this.sheetId)}))),legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,isDoughnut:this.isDoughnut,showValues:this.showValues}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new ME(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new ME(t,e,this.getters)}getDefinitionForExcel(){const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new ME(i,this.sheetId,this.getters)}}function PE(e,t){const o=e.getDefinition(),s=iI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:e.isDoughnut?"doughnut":"pie",data:{labels:s.labels,datasets:EI(o,s)},options:{...wy,layout:FI(),plugins:{title:iE(o),legend:kI(o,s),tooltip:hE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}}class NE extends Vh{dataSets;labelRange;background;legendPosition;aggregated;type="pyramid";dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;stacked=!0;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle).slice(0,2),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"pyramid",labelRange:e.auxiliaryRange||void 0,axesDesign:e.axesDesign,horizontal:!0,stacked:!0,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new NE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new NE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"pyramid",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:!0,stacked:!0,showValues:this.showValues}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new NE(i,this.sheetId,this.getters)}}class kE extends Vh{dataSets;labelRange;background;legendPosition;stacked;aggregated;type="radar";dataSetsHaveTitle;dataSetDesign;fillArea;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.stacked=e.stacked,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.fillArea=e.fillArea,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,stacked:e.stacked??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"radar",labelRange:e.auxiliaryRange||void 0,fillArea:e.fillArea??!1,showValues:e.showValues??!1}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new kE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new kE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"radar",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,fillArea:this.fillArea,showValues:this.showValues}}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range&&e.range!==wi.InvalidReference)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new kE(i,this.sheetId,this.getters)}}class VE extends Vh{dataSets;labelRange;background;legendPosition;labelsAsText;aggregated;type="scatter";dataSetsHaveTitle;dataSetDesign;axesDesign;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(this.getters,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.labelsAsText=e.labelsAsText,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static transformDefinition(e,t){return vh(e,t)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,labelsAsText:e.labelsAsText??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"scatter",labelRange:e.auxiliaryRange||void 0,aggregated:e.aggregated??!1,axesDesign:e.axesDesign,showValues:e.showValues}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"scatter",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new VE(i,this.sheetId,this.getters)}getDefinitionForExcel(){if(this.aggregated)return;const e=this.dataSets.map((e=>mh(this.getters,e))).filter((e=>""!==e.range)),t=fh(this.getters,this.labelRange,wh(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),o=this.getDefinition();return{...o,backgroundColor:Cy(this.background||m),fontColor:Cy(bh(this.background)),dataSets:e,labelRange:t,verticalAxis:Ih(o)}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new VE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new VE(t,e,this.getters)}}class LE extends Vh{dataSets;labelRange;background;verticalAxisPosition;legendPosition;aggregated;type="waterfall";dataSetsHaveTitle;showSubTotals;firstValueAsSubtotal;showConnectorLines;positiveValuesColor;negativeValuesColor;subTotalValuesColor;dataSetDesign;axesDesign;showValues;constructor(e,t,o){super(e,t,o),this.dataSets=gh(o,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=Xr(o,t,e.labelRange),this.background=e.background,this.verticalAxisPosition=e.verticalAxisPosition,this.legendPosition=e.legendPosition,this.aggregated=e.aggregated,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showSubTotals=e.showSubTotals,this.showConnectorLines=e.showConnectorLines,this.positiveValuesColor=e.positiveValuesColor,this.negativeValuesColor=e.negativeValuesColor,this.subTotalValuesColor=e.subTotalValuesColor,this.firstValueAsSubtotal=e.firstValueAsSubtotal,this.dataSetDesign=e.dataSets,this.axesDesign=e.axesDesign,this.showValues=e.showValues}static transformDefinition(e,t){return vh(e,t)}static validateChartDefinition(e,t){return e.checkValidations(t,yh,Ch)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range?e.range:[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:e.legendPosition??"top",title:e.title||{text:""},type:"waterfall",verticalAxisPosition:"left",labelRange:e.auxiliaryRange||void 0,showSubTotals:e.showSubTotals??!1,showConnectorLines:e.showConnectorLines??!0,firstValueAsSubtotal:e.firstValueAsSubtotal??!1,axesDesign:e.axesDesign,showValues:e.showValues}}getContextCreation(){const e=[];for(const[t,o]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(o.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(e){const t=hh(this.sheetId,e,this.dataSets),o=dh(this.sheetId,e,this.labelRange),s=this.getDefinitionWithSpecificDataSets(t,o,e);return new LE(s,e,this.getters)}copyInSheetId(e){const t=this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,e);return new LE(t,e,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,o){const s=[];for(const[t,i]of e.entries())s.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,o||this.sheetId)});return{type:"waterfall",dataSetsHaveTitle:!!e.length&&Boolean(e[0].labelCell),background:this.background,dataSets:s,legendPosition:this.legendPosition,verticalAxisPosition:this.verticalAxisPosition,labelRange:t?this.getters.getRangeString(t,o||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,showSubTotals:this.showSubTotals,showConnectorLines:this.showConnectorLines,positiveValuesColor:this.positiveValuesColor,negativeValuesColor:this.negativeValuesColor,subTotalValuesColor:this.subTotalValuesColor,firstValueAsSubtotal:this.firstValueAsSubtotal,axesDesign:this.axesDesign,showValues:this.showValues}}getDefinitionForExcel(){}updateRanges(e){const{dataSets:t,labelRange:o,isStale:s}=ch(this.getters,e,this.dataSets,this.labelRange);if(!s)return this;const i=this.getDefinitionWithSpecificDataSets(t,o);return new LE(i,this.sheetId,this.getters)}}function HE(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t),{labels:i,datasets:n}=wI(o,s);return{chartJsConfig:{type:"bar",data:{labels:i,datasets:n},options:{...wy,layout:FI(),scales:qI(o,s),plugins:{title:iE(o),legend:HI(o),tooltip:dE(0,s),chartShowValuesPlugin:sE(o,s),waterfallLinesPlugin:{showConnectorLines:o.showConnectorLines}}}},background:e.background||m}}const UE=new n;UE.add("bar",{match:e=>"bar"===e,createChart:(e,t,o)=>new bE(e,t,o),getChartRuntime:SE,validateChartDefinition:bE.validateChartDefinition,transformDefinition:bE.transformDefinition,getChartDefinitionFromContextCreation:bE.getDefinitionFromContextCreation,sequence:10}),UE.add("combo",{match:e=>"combo"===e,createChart:(e,t,o)=>new yE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=tI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:RI(o,s)},options:{...wy,layout:FI(),scales:$I(o,s),plugins:{title:iE(o),legend:LI(o),tooltip:lE(o,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:yE.validateChartDefinition,transformDefinition:yE.transformDefinition,getChartDefinitionFromContextCreation:yE.getDefinitionFromContextCreation,sequence:15}),UE.add("line",{match:e=>"line"===e,createChart:(e,t,o)=>new OE(e,t,o),getChartRuntime:FE,validateChartDefinition:OE.validateChartDefinition,transformDefinition:OE.transformDefinition,getChartDefinitionFromContextCreation:OE.getDefinitionFromContextCreation,sequence:20}),UE.add("pie",{match:e=>"pie"===e,createChart:(e,t,o)=>new ME(e,t,o),getChartRuntime:PE,validateChartDefinition:ME.validateChartDefinition,transformDefinition:ME.transformDefinition,getChartDefinitionFromContextCreation:ME.getDefinitionFromContextCreation,sequence:30}),UE.add("scorecard",{match:e=>"scorecard"===e,createChart:(e,t,o)=>new Gh(e,t,o),getChartRuntime:qh,validateChartDefinition:Gh.validateChartDefinition,transformDefinition:Gh.transformDefinition,getChartDefinitionFromContextCreation:Gh.getDefinitionFromContextCreation,sequence:40}),UE.add("gauge",{match:e=>"gauge"===e,createChart:(e,t,o)=>new EE(e,t,o),getChartRuntime:RE,validateChartDefinition:EE.validateChartDefinition,transformDefinition:EE.transformDefinition,getChartDefinitionFromContextCreation:EE.getDefinitionFromContextCreation,sequence:50}),UE.add("scatter",{match:e=>"scatter"===e,createChart:(e,t,o)=>new VE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=sI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"line",data:{labels:s.labels,datasets:II(o,s)},options:{...wy,layout:FI(),scales:WI(o,s),plugins:{title:iE(o),legend:VI(o),tooltip:cE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:VE.validateChartDefinition,transformDefinition:VE.transformDefinition,getChartDefinitionFromContextCreation:VE.getDefinitionFromContextCreation,sequence:60}),UE.add("waterfall",{match:e=>"waterfall"===e,createChart:(e,t,o)=>new LE(e,t,o),getChartRuntime:HE,validateChartDefinition:LE.validateChartDefinition,transformDefinition:LE.transformDefinition,getChartDefinitionFromContextCreation:LE.getDefinitionFromContextCreation,sequence:70}),UE.add("pyramid",{match:e=>"pyramid"===e,createChart:(e,t,o)=>new NE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=oI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"bar",data:{labels:s.labels,datasets:CI(o,s)},options:{...wy,indexAxis:"y",layout:FI(),scales:ZI(o,s),plugins:{title:iE(o),legend:PI(o),tooltip:uE(o,s),chartShowValuesPlugin:oE(o,s)}}},background:e.background||m}},validateChartDefinition:NE.validateChartDefinition,transformDefinition:NE.transformDefinition,getChartDefinitionFromContextCreation:NE.getDefinitionFromContextCreation,sequence:80}),UE.add("radar",{match:e=>"radar"===e,createChart:(e,t,o)=>new kE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=nI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"radar",data:{labels:s.labels,datasets:TI(o,s)},options:{...wy,layout:FI(),scales:jI(o,s),plugins:{title:iE(o),legend:UI(o),tooltip:gE(0,s),chartShowValuesPlugin:tE(o,s)}}},background:e.background||m}},validateChartDefinition:kE.validateChartDefinition,transformDefinition:kE.transformDefinition,getChartDefinitionFromContextCreation:kE.getDefinitionFromContextCreation,sequence:80}),UE.add("geo",{match:e=>"geo"===e,createChart:(e,t,o)=>new DE(e,t,o),getChartRuntime:function(e,t){const o=e.getDefinition(),s=rI(o,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:"choropleth",data:{datasets:AI(o,s)},options:{...wy,layout:FI(),scales:YI(o,s),plugins:{title:iE(o),tooltip:pE(0,s),legend:{display:!1}}}},background:e.background||m}},validateChartDefinition:DE.validateChartDefinition,transformDefinition:DE.transformDefinition,getChartDefinitionFromContextCreation:DE.getDefinitionFromContextCreation,sequence:90});const BE=new n;BE.add("line",kh),BE.add("bar",kh),BE.add("combo",kh),BE.add("pie",kh),BE.add("gauge",yy),BE.add("scatter",kh),BE.add("scorecard",Kh),BE.add("waterfall",kh),BE.add("pyramid",kh),BE.add("radar",kh),BE.add("geo",kh);const zE={line:Uo("Line"),column:Uo("Column"),bar:Uo("Bar"),area:Uo("Area"),pie:Uo("Pie"),misc:Uo("Miscellaneous")},$E=new n;$E.add("line",{matcher:e=>"line"===e.type&&!e.stacked&&!e.fillArea,displayName:Uo("Line"),chartType:"line",chartSubtype:"line",subtypeDefinition:{stacked:!1,fillArea:!1},category:"line",preview:"o-spreadsheet-ChartPreview.LINE_CHART"}).add("stacked_line",{matcher:e=>"line"===e.type&&!e.fillArea&&!!e.stacked,displayName:Uo("Stacked Line"),chartType:"line",chartSubtype:"stacked_line",subtypeDefinition:{stacked:!0,fillArea:!1},category:"line",preview:"o-spreadsheet-ChartPreview.STACKED_LINE_CHART"}).add("area",{matcher:e=>"line"===e.type&&!e.stacked&&!!e.fillArea,displayName:Uo("Area"),chartType:"line",chartSubtype:"area",subtypeDefinition:{stacked:!1,fillArea:!0},category:"area",preview:"o-spreadsheet-ChartPreview.AREA_CHART"}).add("stacked_area",{matcher:e=>"line"===e.type&&e.stacked&&!!e.fillArea,displayName:Uo("Stacked Area"),chartType:"line",chartSubtype:"stacked_area",subtypeDefinition:{stacked:!0,fillArea:!0},category:"area",preview:"o-spreadsheet-ChartPreview.STACKED_AREA_CHART"}).add("scatter",{displayName:Uo("Scatter"),chartType:"scatter",chartSubtype:"scatter",category:"misc",preview:"o-spreadsheet-ChartPreview.SCATTER_CHART"}).add("column",{matcher:e=>"bar"===e.type&&!e.stacked&&!e.horizontal,displayName:Uo("Column"),chartType:"bar",chartSubtype:"column",subtypeDefinition:{stacked:!1,horizontal:!1},category:"column",preview:"o-spreadsheet-ChartPreview.COLUMN_CHART"}).add("stacked_column",{matcher:e=>"bar"===e.type&&e.stacked&&!e.horizontal,displayName:Uo("Stacked Column"),chartType:"bar",chartSubtype:"stacked_column",subtypeDefinition:{stacked:!0,horizontal:!1},category:"column",preview:"o-spreadsheet-ChartPreview.STACKED_COLUMN_CHART"}).add("bar",{matcher:e=>"bar"===e.type&&!e.stacked&&!!e.horizontal,displayName:Uo("Bar"),chartType:"bar",chartSubtype:"bar",subtypeDefinition:{horizontal:!0,stacked:!1},category:"bar",preview:"o-spreadsheet-ChartPreview.BAR_CHART"}).add("stacked_bar",{matcher:e=>"bar"===e.type&&e.stacked&&!!e.horizontal,displayName:Uo("Stacked Bar"),chartType:"bar",chartSubtype:"stacked_bar",subtypeDefinition:{horizontal:!0,stacked:!0},category:"bar",preview:"o-spreadsheet-ChartPreview.STACKED_BAR_CHART"}).add("combo",{displayName:Uo("Combo"),chartSubtype:"combo",chartType:"combo",category:"line",preview:"o-spreadsheet-ChartPreview.COMBO_CHART"}).add("pie",{matcher:e=>"pie"===e.type&&!e.isDoughnut,displayName:Uo("Pie"),chartSubtype:"pie",chartType:"pie",subtypeDefinition:{isDoughnut:!1},category:"pie",preview:"o-spreadsheet-ChartPreview.PIE_CHART"}).add("doughnut",{matcher:e=>"pie"===e.type&&!!e.isDoughnut,displayName:Uo("Doughnut"),chartSubtype:"doughnut",chartType:"pie",subtypeDefinition:{isDoughnut:!0},category:"pie",preview:"o-spreadsheet-ChartPreview.DOUGHNUT_CHART"}).add("gauge",{displayName:Uo("Gauge"),chartSubtype:"gauge",chartType:"gauge",category:"misc",preview:"o-spreadsheet-ChartPreview.GAUGE_CHART"}).add("scorecard",{displayName:Uo("Scorecard"),chartSubtype:"scorecard",chartType:"scorecard",category:"misc",preview:"o-spreadsheet-ChartPreview.SCORECARD_CHART"}).add("waterfall",{displayName:Uo("Waterfall"),chartSubtype:"waterfall",chartType:"waterfall",category:"misc",preview:"o-spreadsheet-ChartPreview.WATERFALL_CHART"}).add("pyramid",{displayName:Uo("Population Pyramid"),chartSubtype:"pyramid",chartType:"pyramid",category:"misc",preview:"o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART"}).add("radar",{matcher:e=>"radar"===e.type&&!e.fillArea,displayName:Uo("Radar"),chartSubtype:"radar",chartType:"radar",subtypeDefinition:{fillArea:!1},category:"misc",preview:"o-spreadsheet-ChartPreview.RADAR_CHART"}).add("filled_radar",{matcher:e=>"radar"===e.type&&!!e.fillArea,displayName:Uo("Filled Radar"),chartType:"radar",chartSubtype:"filled_radar",subtypeDefinition:{fillArea:!0},category:"misc",preview:"o-spreadsheet-ChartPreview.FILLED_RADAR_CHART"}).add("geo",{displayName:Uo("Geo Chart"),chartSubtype:"geo",chartType:"geo",category:"misc",preview:"o-spreadsheet-ChartPreview.GEO_CHART"});const GE=new n;th`
34
34
  .o-chart-container {
35
35
  width: 100%;
36
36
  height: 100%;
@@ -278,7 +278,7 @@
278
278
  }
279
279
  }
280
280
  }
281
- `;class qR extends t.Component{static template="o-spreadsheet-LinkEditor";static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};static components={Menu:WR};menuItems=OR.getMenuItems();link=t.useState(this.defaultState);menu=t.useState({isOpen:!1});linkEditorRef=t.useRef("linkEditor");position=cR(this.linkEditorRef);urlInput=t.useRef("urlInput");setup(){t.onMounted((()=>this.urlInput.el?.focus()))}get defaultState(){const{col:e,row:t}=this.props.cellPosition,o=this.env.model.getters.getActiveSheetId(),s=this.env.model.getters.getEvaluatedCell({sheetId:o,col:e,row:t});return s.link?{url:s.link.url,label:s.formattedValue,isUrlEditable:s.link.isUrlEditable}:{label:s.formattedValue,url:"",isUrlEditable:!0}}get menuPosition(){return{x:this.position.x+320-12-2,y:this.position.y+100}}onSpecialLink(e){const{detail:t}=e,o=Tn(t);o&&(this.link.url=o.url,this.link.label=o.label,this.link.isUrlEditable=o.isUrlEditable)}getUrlRepresentation(e){return En(e,this.env.model.getters)}openMenu(){this.menu.isOpen=!0}removeLink(){this.link.url="",this.link.isUrlEditable=!0}save(){const{col:e,row:t}=this.props.cellPosition,o=this.env.model.getters.getLocale(),s=this.link.label?Ya(this.link.label,o):this.link.url;this.env.model.dispatch("UPDATE_CELL",{col:e,row:t,sheetId:this.env.model.getters.getActiveSheetId(),content:ot(s,this.link.url)}),this.props.onClosed?.()}cancel(){this.props.onClosed?.()}onKeyDown(e){switch(e.key){case"Enter":this.link.url&&this.save(),e.stopPropagation(),e.preventDefault();break;case"Escape":this.cancel(),e.stopPropagation()}}}const ZR={onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:qR,cellCorner:"BottomLeft"})};function jR(e){const t=UE.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o,s,i){const n=t.find((e=>e.match(s.type)));if(!n)throw new Error(`No builder for this chart: ${s.type}`);return n.createChart(s,i,e)}}function YR(e){const t=UE.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o){const s=t.find((e=>e.match(o.type)));if(!s)throw new Error("No runtime builder for this chart.");return s.getChartRuntime(o,e)}}function XR(e,t){const o=UE.getAll().find((e=>e.match(t.type)));if(!o)throw new Error("Unknown chart type.");return o.validateChartDefinition(e,t)}function KR(e,t){const o=UE.getAll().find((t=>t.match(e.type)));if(!o)throw new Error("Unknown chart type.");return o.transformDefinition(e,t)}function JR(e,t){const o=t.getActiveSheetId();let s=e;const i=1===ss(e).numberOfCols;i||(s={...e,left:e.left+1});const n=qo(t.getUnboundedZone(o,s)),r=[{dataRange:n,yAxisId:"y"}],a=t.getCell({sheetId:o,col:e.left,row:e.top});if(1===gs(e)&&a?.content)return{type:"scorecard",title:{},background:a.style?.fillColor||void 0,keyValue:qo(e),baselineMode:Ie,baselineColorUp:Ee,baselineColorDown:Re};const l=!!t.getEvaluatedCellsInZone(o,{...s,bottom:s.top}).find((e=>e.type!==oi.empty&&e.type!==oi.number));let c;i||(c=qo(t.getUnboundedZone(o,{...e,right:e.left})));const h=s.right===s.left?"none":"top",d={title:{},dataSets:r,labelsAsText:!1,stacked:!1,aggregated:!1,cumulative:!1,labelRange:c,type:"line",dataSetsHaveTitle:l,legendPosition:h},u=new OE(d,o,t);if(hI(d,u.dataSets,u.labelRange,t))return d;const g=gh(t,r,o,l);return i&&pI(t,g[0]).every((e=>"string"==typeof e&&!Pi(e)))?{title:{},dataSets:[{dataRange:n}],aggregated:!0,labelRange:n,type:"pie",legendPosition:"top",dataSetsHaveTitle:!1}:{title:{},dataSets:r,labelRange:c,type:"bar",stacked:!1,aggregated:!1,dataSetsHaveTitle:l,legendPosition:h}}ny.add("ErrorToolTip",mR).add("LinkCell",wR).add("LinkEditor",ZR).add("FilterMenu",yR);var QR=Object.freeze({__proto__:null,AbstractChart:Vh,BarChart:bE,CHART_AXIS_CHOICES:Th,CHART_COMMON_OPTIONS:wy,GaugeChart:EE,LineChart:OE,MOVING_AVERAGE_TREND_LINE_XAXIS_ID:lh,PieChart:ME,ScorecardChart:Gh,TREND_LINE_XAXIS_ID:ah,WaterfallChart:LE,adaptChartRange:uh,chartFactory:jR,chartFontColor:bh,chartMutedFontColor:Sh,chartRuntimeFactory:YR,chartToImage:xy,checkDataset:yh,checkLabelRange:Ch,createBarChartRuntime:SE,createDataSets:gh,createGaugeChartRuntime:RE,createLineChartRuntime:FE,createPieChartRuntime:PE,createScorecardChartRuntime:qh,createWaterfallChartRuntime:HE,drawScoreChart:Wh,duplicateDataSetsInDuplicatedSheet:hh,duplicateLabelRangeInDuplicatedSheet:dh,formatChartDatasetValue:Eh,formatTickValue:Rh,getChartPositionAtCenterOfViewport:xh,getDefinedAxis:Ih,getPieColors:Ah,getSmartChartDefinition:JR,isTrendLineAxis:Dh,shouldRemoveFirstLabel:wh,toExcelDataset:mh,toExcelLabelRange:fh,transformChartDefinitionWithDataSetsWithZone:vh,transformDefinition:KR,truncateLabel:_h,updateChartRangesWithDataSets:ch,validateChartDefinition:XR});function eT(e,t,o=Aw){let s=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,s);1!==s.length||i||1!==gs(s[0])||(e.model.selection.selectTableAroundSelection(),s=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,s));const n=s.map((o=>e.model.getters.getRangeDataFromZone(t,o))),r=e.model.dispatch("CREATE_TABLE",{ranges:n,sheetId:t,config:o,tableType:i?"dynamic":"static"});return r.isCancelledBecause("TableOverlap")?e.raiseError(Yx.Errors.TableOverlap):r.isCancelledBecause("NonContinuousTargets")&&e.raiseError(Yx.Errors.NonContinuousTargets),r}function tT(e,t){e.model.dispatch("SET_FORMATTING_WITH_PIVOT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function oT(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}const sT=async e=>iT(e,"asValue");async function iT(e,t){const o=await e.clipboard.read();switch(o.status){case"ok":const s=Ra(o.content),i=s.data?.clipboardId,n=e.model.getters.getSelectedZones();e.model.getters.getClipboardId()!==i?Ux(e,n,s,t):Hx(e,n,t),e.model.getters.isCutOperation()&&"asValue"!==t&&await e.clipboard.write({[si.PlainText]:""});break;case"notImplemented":e.raiseError(Uo("Pasting from the context menu is not supported in this browser. Use keyboard shortcuts ctrl+c / ctrl+v instead."));break;case"permissionDenied":e.raiseError(Uo("Access to the clipboard denied by the browser. Please enable clipboard permission for this page in your browser settings."))}}const nT=(e,t)=>{const o=t.model.getters.getActiveSheetId(),s=t.model.getters.getElementsFromSelection(e),i=t.model.getters.checkElementsIncludeAllVisibleHeaders(o,e,s),n=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(o,e,s);return!i&&!n},rT=e=>{const t=e.model.getters.getActiveRows();let o,s;if(t.size)o=Ft([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.top,s=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",base:o,quantity:s,dimension:"ROW"})},aT=e=>{const t=e.model.getters.getActiveCols();let o,s;if(t.size)o=Ft([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.left,s=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",dimension:"COL",base:o,quantity:s})},lT=e=>{const t=e.model.getters.getActiveCols();let o,s;if(t.size)o=Ot([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.right,s=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",dimension:"COL",base:o,quantity:s})};const cT=async e=>{if(e.imageProvider){const t=e.model.getters.getActiveSheetId(),o=e.model.uuidGenerator.smallUuid(),s=await async function(e){try{return await e.imageProvider.requestImage()}catch{return void e.raiseError(Uo("An unexpected error occurred during the image transfer"))}}(e);if(!s)throw new Error("No image provider was given to the environment");const i=ZE(e.model.getters,s.size),n=function(e,t){const{x:o,y:s}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:n}=e.getActiveSheetScrollInfo(),r=e.getSheetViewDimension(),a=e.getVisibleRect(e.getActiveMainViewport()),l=Math.min(a.width,r.width-o),c=Math.min(a.height,r.height-s);return{x:o+i+Math.max(0,(l-t.width)/2),y:s+n+Math.max(0,(c-t.height)/2)}}(e.model.getters,i);e.model.dispatch("CREATE_IMAGE",{sheetId:t,figureId:o,position:n,size:i,definition:s})}},hT=e=>{let{col:t,row:o}=e.model.getters.getActivePosition();e.getStore(iR).open({col:t,row:o},"LinkEditor")},dT=e=>{const t=e.model.getters.getFirstTableInSelection();return t?.config.hasFilters||!1},uT=e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZones();return 1===e.model.getters.getTablesOverlappingZones(t,o).length},gT=e=>ps(e.model.getters.getSelectedZones()),pT=e=>1===e.model.getters.getSelectedZones().length,mT=(e,t)=>{if(!pT(e))return!1;const o="COL"===t?e.model.getters.getActiveCols():e.model.getters.getActiveRows(),s="COL"===t?e.model.getters.getActiveRows():e.model.getters.getActiveCols(),i=e.model.getters.getActiveSheetId(),n=Qo(e.model.getters.getSelectedZone(),e.model.getters.getSheetZone(i));return It(o)&&(0===s.size||n)},fT={name:e=>dT(e)?Uo("Remove selected filters"):Uo("Add filters"),isEnabled:e=>gT(e),execute:e=>dT(e)?(e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getFirstTableInSelection();o&&e.model.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{hasFilters:!1}})})(e):(e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getFirstTableInSelection();o?e.model.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{hasFilters:!0}}):eT(e,t,{...Aw,hasFilters:!0,bandedRows:!1,styleId:"TableStyleLight11"})})(e),icon:"o-spreadsheet-Icon.FILTER_ICON_ACTIVE"},vT={name:Uo("Undo"),description:"Ctrl+Z",execute:e=>e.model.dispatch("REQUEST_UNDO"),isEnabled:e=>e.model.getters.canUndo(),icon:"o-spreadsheet-Icon.UNDO"},bT={name:Uo("Redo"),description:"Ctrl+Y",execute:e=>e.model.dispatch("REQUEST_REDO"),isEnabled:e=>e.model.getters.canRedo(),icon:"o-spreadsheet-Icon.REDO"},ST={name:Uo("Copy"),description:"Ctrl+C",isReadonlyAllowed:!0,execute:async e=>{e.model.dispatch("COPY"),await e.clipboard.write(e.model.getters.getClipboardContent())},icon:"o-spreadsheet-Icon.CLIPBOARD"},yT={name:Uo("Cut"),description:"Ctrl+X",execute:async e=>{tR(e),await e.clipboard.write(e.model.getters.getClipboardContent())},icon:"o-spreadsheet-Icon.CUT"},CT={name:Uo("Paste"),description:"Ctrl+V",execute:async e=>iT(e),icon:"o-spreadsheet-Icon.PASTE"},wT={name:Uo("Paste special"),isVisible:e=>!e.model.getters.isCutOperation(),icon:"o-spreadsheet-Icon.PASTE"},xT={name:Uo("Paste as value"),description:"Ctrl+Shift+V",execute:sT},IT={name:Uo("Paste format only"),execute:e=>iT(e,"onlyFormat")},ET={name:Uo("Find and replace"),description:"Ctrl+H",isReadonlyAllowed:!0,execute:e=>{e.openSidePanel("FindAndReplace",{})},icon:"o-spreadsheet-Icon.SEARCH"},RT={name:Uo("Delete values"),execute:e=>e.model.dispatch("DELETE_CONTENT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},TT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Delete rows");let t,o;const s=e.model.getters.getActiveRows();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.top,o=s.bottom}return t===o?Uo("Delete row %s",(t+1).toString()):Uo("Delete rows %s - %s",(t+1).toString(),(o+1).toString())},execute:e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){const o=e.model.getters.getSelectedZones()[0];for(let e=o.top;e<=o.bottom;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>nT("ROW",e)},AT={...TT,isVisible:pT},_T={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Clear rows");let t,o;const s=e.model.getters.getActiveRows();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.top,o=s.bottom}return t===o?Uo("Clear row %s",(t+1).toString()):Uo("Clear rows %s - %s",(t+1).toString(),(o+1).toString())},execute:e=>{const t=e.model.getters.getActiveSheetId(),o=[...e.model.getters.getActiveRows()].map((o=>e.model.getters.getRowsZone(t,o,o)));e.model.dispatch("DELETE_CONTENT",{target:o,sheetId:e.model.getters.getActiveSheetId()})}},DT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Delete columns");let t,o;const s=e.model.getters.getActiveCols();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.left,o=s.right}return t===o?Uo("Delete column %s",vo(t)):Uo("Delete columns %s - %s",vo(t),vo(o))},execute:e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){const o=e.model.getters.getSelectedZones()[0];for(let e=o.left;e<=o.right;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>nT("COL",e)},OT={...DT,isVisible:pT},FT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Clear columns");let t,o;const s=e.model.getters.getActiveCols();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.left,o=s.right}return t===o?Uo("Clear column %s",vo(t)):Uo("Clear columns %s - %s",vo(t),vo(o))},execute:e=>{const t=e.model.getters.getActiveSheetId(),o=[...e.model.getters.getActiveCols()].map((o=>e.model.getters.getColsZone(t,o,o)));e.model.dispatch("DELETE_CONTENT",{target:o,sheetId:e.model.getters.getActiveSheetId()})}},MT={name:Uo("Delete cells"),isVisible:pT},PT={name:Uo("Delete cell and shift up"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"ROW"});Lx(e,o)}},NT={name:Uo("Delete cell and shift left"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"COL"});Lx(e,o)}},kT={name:Uo("Merge cells"),isEnabled:e=>!HT(e),isActive:e=>UT(e),execute:e=>function(e){if(HT(e))return;const t=e.model.getters.getSelectedZones(),o=[t[t.length-1]],s=e.model.getters.getActiveSheetId();UT(e)?e.model.dispatch("REMOVE_MERGE",{sheetId:s,target:o}):function(e,t,o){const s=e.model.dispatch("ADD_MERGE",{sheetId:t,target:o});s.isCancelledBecause("MergeInTable")?e.raiseError(oR.MergeInFilter):s.isCancelledBecause("MergeIsDestructive")&&e.askConfirmation(oR.MergeIsDestructive,(()=>{e.model.dispatch("ADD_MERGE",{sheetId:t,target:o,force:!0})}))}(e,s,o)}(e),icon:"o-spreadsheet-Icon.MERGE_CELL"},VT={name:()=>Uo("Edit table"),execute:e=>e.openSidePanel("TableSidePanel",{}),icon:"o-spreadsheet-Icon.EDIT_TABLE"},LT={name:()=>Uo("Delete table"),execute:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getTable(t);o&&e.model.dispatch("REMOVE_TABLE",{sheetId:t.sheetId,target:[o.range.zone]})},icon:"o-spreadsheet-Icon.DELETE_TABLE"};function HT(e){const t=e.model.getters.getSelectedZones(),{top:o,left:s,right:i,bottom:n}=e.model.getters.getSelectedZone(),{sheetId:r}=e.model.getters.getActivePosition(),{xSplit:a,ySplit:l}=e.model.getters.getPaneDivisions(r);return t.length>1||o===n&&s===i||s<a&&a<=i||o<l&&l<=n}function UT(e){if(!HT(e)){const t=e.model.getters.getSelectedZones(),{col:o,row:s,sheetId:i}=e.model.getters.getActivePosition(),n=e.model.getters.expandZone(i,hs({col:o,row:s}));return Qo(t[0],n)}return!1}var BT=Object.freeze({__proto__:null,clearCols:FT,clearRows:_T,copy:ST,cut:yT,deleteCellShiftLeft:NT,deleteCellShiftUp:PT,deleteCells:MT,deleteCol:OT,deleteCols:DT,deleteRow:AT,deleteRows:TT,deleteTable:LT,deleteValues:RT,editTable:VT,findAndReplace:ET,mergeCells:kT,paste:CT,pasteSpecial:wT,pasteSpecialFormat:IT,pasteSpecialValue:xT,redo:bT,undo:vT});const zT={name:e=>{const t=SA(e);return 1===t?Uo("Insert row"):Uo("Insert %s rows",t.toString())},isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW"},$T={name:e=>{const t=SA(e);return 1===t?Uo("Insert row above"):Uo("Insert %s rows above",t.toString())},execute:rT,isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW_BEFORE"},GT={...$T,name:e=>{const t=SA(e);return 1===t?Uo("Row above"):Uo("%s Rows above",t.toString())}},WT={...$T,name:e=>{const t=SA(e);return 1===t?Uo("Insert row"):Uo("Insert %s rows",t.toString())},isVisible:pT,icon:"o-spreadsheet-Icon.INSERT_ROW_BEFORE"},qT={execute:e=>{const t=e.model.getters.getActiveRows();let o,s;if(t.size)o=Ot([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.bottom,s=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",base:o,quantity:s,dimension:"ROW"})},name:e=>{const t=SA(e);return 1===t?Uo("Insert row below"):Uo("Insert %s rows below",t.toString())},isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW_AFTER"},ZT={...qT,name:e=>{const t=SA(e);return 1===t?Uo("Row below"):Uo("%s Rows below",t.toString())}},jT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column"):Uo("Insert %s columns",t.toString())},isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL"},YT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column left"):Uo("Insert %s columns left",t.toString())},execute:aT,isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL_BEFORE"},XT={...YT,name:e=>{const t=yA(e);return 1===t?Uo("Column left"):Uo("%s Columns left",t.toString())}},KT={...YT,name:e=>{const t=yA(e);return 1===t?Uo("Insert column"):Uo("Insert %s columns",t.toString())},isVisible:pT,icon:"o-spreadsheet-Icon.INSERT_COL_BEFORE"},JT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column right"):Uo("Insert %s columns right",t.toString())},execute:lT,isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL_AFTER"},QT={...JT,name:e=>{const t=yA(e);return 1===t?Uo("Column right"):Uo("%s Columns right",t.toString())},execute:lT},eA={name:Uo("Insert cells"),isVisible:e=>pT(e)&&0===e.model.getters.getActiveCols().size&&0===e.model.getters.getActiveRows().size,icon:"o-spreadsheet-Icon.INSERT_CELL"},tA={name:Uo("Insert cells and shift down"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"ROW"});Lx(e,o)},isVisible:e=>0===e.model.getters.getActiveRows().size&&0===e.model.getters.getActiveCols().size,icon:"o-spreadsheet-Icon.INSERT_CELL_SHIFT_DOWN"},oA={name:Uo("Insert cells and shift right"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"COL"});Lx(e,o)},isVisible:e=>0===e.model.getters.getActiveRows().size&&0===e.model.getters.getActiveCols().size,icon:"o-spreadsheet-Icon.INSERT_CELL_SHIFT_RIGHT"},sA={name:Uo("Chart"),execute:e=>{const t=e.model.getters,o=e.model.uuidGenerator.smallUuid(),s=t.getActiveSheetId();1===gs(e.model.getters.getSelectedZone())&&e.model.selection.selectTableAroundSelection();const i={width:536,height:335},n=xh(t,i);e.model.dispatch("CREATE_CHART",{sheetId:s,id:o,position:n,size:i,definition:JR(e.model.getters.getSelectedZone(),e.model.getters)}).isSuccessful&&(e.model.dispatch("SELECT_FIGURE",{id:o}),e.openSidePanel("ChartPanel"))},icon:"o-spreadsheet-Icon.INSERT_CHART"},iA={name:Uo("Pivot table"),execute:e=>{const t=e.model.uuidGenerator.smallUuid(),o=e.model.uuidGenerator.smallUuid();e.model.dispatch("INSERT_NEW_PIVOT",{pivotId:t,newSheetId:o}).isSuccessful&&e.openSidePanel("PivotSidePanel",{pivotId:t})},icon:"o-spreadsheet-Icon.PIVOT"},nA={name:Uo("Image"),description:"Ctrl+O",execute:cT,isVisible:e=>void 0!==e.imageProvider,icon:"o-spreadsheet-Icon.INSERT_IMAGE"},rA={name:()=>Uo("Table"),execute:e=>{const t=e.model.getters.getActiveSheetId();eT(e,t).isSuccessful&&e.openSidePanel("TableSidePanel",{})},isVisible:e=>gT(e)&&!e.model.getters.getFirstTableInSelection(),icon:"o-spreadsheet-Icon.PAINT_TABLE"},aA={name:Uo("Function"),icon:"o-spreadsheet-Icon.FORMULA"},lA={name:Uo("SUM"),execute:e=>e.startCellEdition("=SUM(")},cA={name:Uo("AVERAGE"),execute:e=>e.startCellEdition("=AVERAGE(")},hA={name:Uo("COUNT"),execute:e=>e.startCellEdition("=COUNT(")},dA={name:Uo("MAX"),execute:e=>e.startCellEdition("=MAX(")},uA={name:Uo("MIN"),execute:e=>e.startCellEdition("=MIN(")},gA={name:Uo("All"),children:[function(){return bA(vS.getKeys().filter((e=>!vS.get(e).hidden)))}]};const pA={name:Uo("Link"),execute:hT,icon:"o-spreadsheet-Icon.INSERT_LINK"},mA={name:Uo("Checkbox"),execute:e=>{const t=e.model.getters.getSelectedZones(),o=e.model.getters.getActiveSheetId(),s=t.map((t=>e.model.getters.getRangeDataFromZone(o,t)));e.model.dispatch("ADD_DATA_VALIDATION_RULE",{ranges:s,sheetId:o,rule:{id:e.model.uuidGenerator.smallUuid(),criterion:{type:"isBoolean",values:[]}}})},icon:"o-spreadsheet-Icon.INSERT_CHECKBOX"},fA={name:Uo("Dropdown list"),execute:e=>{const t=e.model.getters.getSelectedZones(),o=e.model.getters.getActiveSheetId(),s=t.map((t=>e.model.getters.getRangeDataFromZone(o,t))),i=e.model.uuidGenerator.smallUuid();e.model.dispatch("ADD_DATA_VALIDATION_RULE",{ranges:s,sheetId:o,rule:{id:i,criterion:{type:"isValueInList",values:[],displayStyle:"arrow"}}});const n=e.model.getters.getDataValidationRule(o,i);n&&e.openSidePanel("DataValidationEditor",{rule:nl(n,e.model.getters.getLocale()),onExit:()=>{e.openSidePanel("DataValidation")}})},icon:"o-spreadsheet-Icon.INSERT_DROPDOWN"},vA={name:Uo("Insert sheet"),execute:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSheetIds().indexOf(t)+1,s=e.model.uuidGenerator.smallUuid();e.model.dispatch("CREATE_SHEET",{sheetId:s,position:o}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:s})},icon:"o-spreadsheet-Icon.INSERT_SHEET"};function bA(e){return e.sort().map(((e,t)=>({name:e,sequence:10*t,execute:t=>t.startCellEdition(`=${e}(`)})))}function SA(e){const t=e.model.getters.getActiveRows();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function yA(e){const t=e.model.getters.getActiveCols();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}const CA={name:Uo("See pivot properties"),execute(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);e.openSidePanel("PivotSidePanel",{pivotId:o})},isVisible:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);return o&&e.model.getters.isExistingPivot(o)||!1},isReadonlyAllowed:!0,icon:"o-spreadsheet-Icon.PIVOT"},wA={name:Uo("Ascending"),execute:e=>RA(e,"asc"),isActive:e=>TA(e,"asc")},xA={name:Uo("Descending"),execute:e=>RA(e,"desc"),isActive:e=>TA(e,"desc")},IA={name:Uo("No sorting"),execute:e=>RA(e,"none"),isActive:e=>TA(e,"none")},EA={name:Uo("Convert to individual formulas"),execute(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getCorrespondingFormulaCell(t),s=e.model.getters.getPivotIdFromPosition(t);if(!o||!s)return;const{sheetId:i,col:n,row:r}=e.model.getters.getCellPosition(o.id),a=e.model.getters.getPivot(s);a.init(),a.isValid()&&e.model.dispatch("SPLIT_PIVOT_FORMULA",{sheetId:i,col:n,row:r,pivotId:s})},isVisible:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);if(!o)return!1;const s=e.model.getters.getPivot(o),i=e.model.getters.getEvaluatedCell(t);return s.isValid()&&e.model.getters.isSpillPivotFormula(t)&&i.type!==oi.error},icon:"o-spreadsheet-Icon.PIVOT"};function RA(e,t){const o=e.model.getters.getActivePosition(),s=e.model.getters.getPivotIdFromPosition(o),i=e.model.getters.getPivotCellFromPosition(o);if("EMPTY"===i.type||"HEADER"===i.type||!s)return;if("none"===t)return void e.model.dispatch("UPDATE_PIVOT",{pivotId:s,pivot:{...e.model.getters.getPivotCoreDefinition(s),sortedColumn:void 0}});const n=kl(e.model.getters.getPivot(s),i.domain).colDomain;e.model.dispatch("UPDATE_PIVOT",{pivotId:s,pivot:{...e.model.getters.getPivotCoreDefinition(s),sortedColumn:{domain:n,order:t,measure:i.measure}}})}function TA(e,t){const o=e.model.getters.getActivePosition(),s=e.model.getters.getPivotIdFromPosition(o),i=e.model.getters.getPivotCellFromPosition(o);if("EMPTY"===i.type||"HEADER"===i.type||!s)return!1;const n=e.model.getters.getPivot(s),r=kl(n,i.domain).colDomain,a=n.definition.sortedColumn;return"none"===t?!a:!(!a||a.order!==t)&&(a.measure===i.measure&&ft(a.domain,r))}const AA=new eR;AA.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("add_row_before",{...WT,sequence:70}).add("add_column_before",{...KT,sequence:90}).add("insert_cell",{...eA,sequence:100,separator:!0}).addChild("insert_cell_down",["insert_cell"],{...tA,name:Uo("Shift down"),sequence:10}).addChild("insert_cell_right",["insert_cell"],{...oA,name:Uo("Shift right"),sequence:20}).add("delete_row",{...AT,sequence:110,icon:"o-spreadsheet-Icon.TRASH"}).add("delete_column",{...OT,sequence:120,icon:"o-spreadsheet-Icon.TRASH"}).add("delete_cell",{...MT,sequence:130,separator:!0,icon:"o-spreadsheet-Icon.TRASH"}).addChild("delete_cell_up",["delete_cell"],{...PT,name:Uo("Shift up"),sequence:10,icon:"o-spreadsheet-Icon.DELETE_CELL_SHIFT_UP"}).addChild("delete_cell_left",["delete_cell"],{...NT,name:Uo("Shift left"),sequence:20,icon:"o-spreadsheet-Icon.DELETE_CELL_SHIFT_LEFT"}).add("edit_table",{...VT,isVisible:uT,sequence:140}).add("delete_table",{...LT,isVisible:uT,sequence:145,separator:!0}).add("insert_link",{...pA,name:e=>{const t=e.model.getters.getActiveSheetId(),{col:o,row:s}=e.model.getters.getActivePosition(),i=e.model.getters.getEvaluatedCell({sheetId:t,col:o,row:s});return i&&i.link?Uo("Edit link"):Uo("Insert link")},sequence:150,separator:!0}).add("pivot_sorting",{name:Uo("Sort pivot"),sequence:155,icon:"o-spreadsheet-Icon.SORT_RANGE",isVisible:function(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);if(!o||!e.model.getters.isExistingPivot(o)||!e.model.getters.isSpillPivotFormula(t))return!1;if(!e.model.getters.getPivot(o).isValid())return!1;const s=e.model.getters.getPivotCellFromPosition(t);return"VALUE"===s.type||"MEASURE_HEADER"===s.type}}).add("pivot_fix_formulas",{...EA,sequence:160}).add("pivot_properties",{...CA,sequence:170,separator:!0}).addChild("pivot_sorting_asc",["pivot_sorting"],{...wA,sequence:10}).addChild("pivot_sorting_desc",["pivot_sorting"],{...xA,sequence:20}).addChild("pivot_sorting_none",["pivot_sorting"],{...IA,sequence:30});const _A={name:Uo("Sort range"),isVisible:pT,icon:"o-spreadsheet-Icon.SORT_RANGE"},DA={name:Uo("Ascending (A ⟶ Z)"),execute:e=>{const{anchor:t,zones:o}=e.model.getters.getSelection(),s=e.model.getters.getActiveSheetId();tm(e,s,t.cell,o[0],"asc")},icon:"o-spreadsheet-Icon.SORT_ASCENDING"},OA={name:Uo("Data cleanup"),icon:"o-spreadsheet-Icon.DATA_CLEANUP"},FA={name:Uo("Remove duplicates"),execute:e=>{1===gs(e.model.getters.getSelectedZone())&&e.model.selection.selectTableAroundSelection(),e.openSidePanel("RemoveDuplicates",{})}},MA={name:Uo("Trim whitespace"),execute:e=>{e.model.dispatch("TRIM_WHITESPACE")}},PA={name:Uo("Descending (Z ⟶ A)"),execute:e=>{const{anchor:t,zones:o}=e.model.getters.getSelection(),s=e.model.getters.getActiveSheetId();tm(e,s,t.cell,o[0],"desc")},icon:"o-spreadsheet-Icon.SORT_DESCENDING"},NA={...fT},kA={...fT,isActive:e=>dT(e)},VA={name:Uo("Split text to columns"),sequence:1,execute:e=>e.openSidePanel("SplitToColumns",{}),isEnabled:e=>e.model.getters.isSingleColSelected(),icon:"o-spreadsheet-Icon.SPLIT_TEXT"},LA={id:"reinsert_dynamic_pivot",name:Uo("Re-insert dynamic pivot"),sequence:1020,icon:"o-spreadsheet-Icon.INSERT_PIVOT",children:[e=>e.model.getters.getPivotIds().map(((t,o)=>({id:`reinsert_dynamic_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:o,execute:e=>{const o=e.model.getters.getSelectedZone(),s=e.model.getters.getPivot(t).getTableStructure().export();e.model.dispatch("INSERT_PIVOT_WITH_TABLE",{pivotId:t,table:s,col:o.left,row:o.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:"dynamic"}),e.model.dispatch("REFRESH_PIVOT",{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})))],isVisible:e=>e.model.getters.getPivotIds().some((t=>e.model.getters.getPivot(t).isValid()))},HA={id:"reinsert_static_pivot",name:Uo("Re-insert static pivot"),sequence:1020,icon:"o-spreadsheet-Icon.INSERT_PIVOT",children:[e=>e.model.getters.getPivotIds().map(((t,o)=>({id:`reinsert_static_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:o,execute:e=>{const o=e.model.getters.getSelectedZone(),s=e.model.getters.getPivot(t).getTableStructure().export();e.model.dispatch("INSERT_PIVOT_WITH_TABLE",{pivotId:t,table:s,col:o.left,row:o.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:"static"}),e.model.dispatch("REFRESH_PIVOT",{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})))],isVisible:e=>e.model.getters.getPivotIds().some((t=>e.model.getters.getPivot(t).isValid()))};var UA=Object.freeze({__proto__:null,createRemoveFilter:NA,createRemoveFilterTool:kA,dataCleanup:OA,reinsertDynamicPivotMenu:LA,reinsertStaticPivotMenu:HA,removeDuplicates:FA,sortAscending:DA,sortDescending:PA,sortRange:_A,splitToColumns:VA,trimWhitespace:MA});function BA({name:e,format:t,descriptionValue:o}){const s="function"==typeof t?t:()=>t;return{name:e,description:e=>Kn(o,{format:s(e),locale:e.model.getters.getLocale()}),execute:e=>tT(e,s(e)),isActive:e=>V_(e,s(e)),format:t}}const zA={name:Uo("Automatic"),execute:e=>tT(e,""),isActive:e=>function(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotCellFromPosition(t);if("VALUE"===o.type)return!e.model.getters.getEvaluatedCell(t).format;return!e.model.getters.getCell(t)?.format}(e)},$A={name:Uo("Plain text"),execute:e=>tT(e,"@"),isActive:e=>V_(e,"@")},GA=BA({name:Uo("Number"),descriptionValue:1000.12,format:"#,##0.00"}),WA={name:Uo("Format as percent"),execute:e=>tT(e,"0.00%"),icon:"o-spreadsheet-Icon.PERCENT"},qA=BA({name:Uo("Percent"),descriptionValue:.1012,format:"0.00%"}),ZA=BA({name:Uo("Currency"),descriptionValue:1000.12,format:e=>dr(e.model.config.defaultCurrency||Le)}),jA={...BA({name:Uo("Currency rounded"),descriptionValue:1e3,format:e=>pr(dr(e.model.config.defaultCurrency||Le))}),isVisible:e=>{const t=dr(e.model.config.defaultCurrency||Le);return t!==pr(t)}},YA=BA({name:Uo("Accounting"),descriptionValue:-1000.12,format:e=>ur(e.model.config.defaultCurrency||Le)}),XA=Er("2023/09/26 10:43:00 PM",fi),KA={name:Uo("Custom currency"),isVisible:e=>void 0!==e.loadCurrencies,execute:e=>e.openSidePanel("CustomCurrency",{})},JA=BA({name:Uo("Date"),descriptionValue:XA,format:e=>e.model.getters.getLocale().dateFormat}),QA=BA({name:Uo("Time"),descriptionValue:XA,format:e=>e.model.getters.getLocale().timeFormat}),e_=BA({name:Uo("Date time"),descriptionValue:XA,format:e=>ll(e.model.getters.getLocale())}),t_=BA({name:Uo("Duration"),descriptionValue:"27:51:38",format:"hhhh:mm:ss"}),o_=BA({name:Uo("Quarter"),descriptionValue:XA,format:"qq yyyy"}),s_=BA({name:Uo("Full quarter"),descriptionValue:XA,format:"qqqq yyyy"}),i_={name:Uo("More date formats"),execute:e=>e.openSidePanel("MoreFormats",{})},n_=BA({name:Uo("Full date time"),format:"dddd d mmmm yyyy hh:mm:ss a",descriptionValue:XA}),r_=BA({name:Uo("Full week day and month"),format:"dddd d mmmm yyyy",descriptionValue:XA}),a_=BA({name:Uo("Day and full month"),format:"d mmmm yyyy",descriptionValue:XA}),l_=BA({name:Uo("Short week day"),format:"ddd d mmm yyyy",descriptionValue:XA}),c_=BA({name:Uo("Day and short month"),format:"d mmm yyyy",descriptionValue:XA}),h_=BA({name:Uo("Full month"),format:"mmmm yyyy",descriptionValue:XA}),d_=BA({name:Uo("Short month"),format:"mmm yyyy",descriptionValue:XA}),u_={name:Uo("Increase decimal places"),icon:"o-spreadsheet-Icon.INCREASE_DECIMAL",execute:e=>e.model.dispatch("SET_DECIMAL",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),step:1})},g_={name:Uo("Decrease decimal places"),icon:"o-spreadsheet-Icon.DECRASE_DECIMAL",execute:e=>e.model.dispatch("SET_DECIMAL",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),step:-1})},p_={name:Uo("Bold"),description:"Ctrl+B",execute:e=>oT(e,{bold:!e.model.getters.getCurrentStyle().bold}),icon:"o-spreadsheet-Icon.BOLD",isActive:e=>!!e.model.getters.getCurrentStyle().bold},m_={name:Uo("Italic"),description:"Ctrl+I",execute:e=>oT(e,{italic:!e.model.getters.getCurrentStyle().italic}),icon:"o-spreadsheet-Icon.ITALIC",isActive:e=>!!e.model.getters.getCurrentStyle().italic},f_={name:Uo("Underline"),description:"Ctrl+U",execute:e=>oT(e,{underline:!e.model.getters.getCurrentStyle().underline}),icon:"o-spreadsheet-Icon.UNDERLINE",isActive:e=>!!e.model.getters.getCurrentStyle().underline},v_={name:Uo("Strikethrough"),execute:e=>oT(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),icon:"o-spreadsheet-Icon.STRIKE",isActive:e=>!!e.model.getters.getCurrentStyle().strikethrough},b_={name:Uo("Font size"),children:ke.map((e=>({name:e.toString(),sequence:e,id:`font_size_${e}`,execute:t=>oT(t,{fontSize:e}),isActive:t=>function(e,t){const o=e.model.getters.getCurrentStyle().fontSize||fe;return o===t}(t,e)}))),icon:"o-spreadsheet-Icon.FONT_SIZE"},S_={name:Uo("Alignment"),icon:"o-spreadsheet-Icon.ALIGN_LEFT"},y_={name:Uo("Horizontal align"),icon:e=>function(e){switch(L_(e)){case"right":return"o-spreadsheet-Icon.ALIGN_RIGHT";case"center":return"o-spreadsheet-Icon.ALIGN_CENTER";default:return"o-spreadsheet-Icon.ALIGN_LEFT"}}(e)},C_={name:Uo("Left"),description:"Ctrl+Shift+L",execute:e=>oT(e,{align:"left"}),isActive:e=>"left"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_LEFT"},w_={name:Uo("Center"),description:"Ctrl+Shift+E",execute:e=>oT(e,{align:"center"}),isActive:e=>"center"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_CENTER"},x_={name:Uo("Right"),description:"Ctrl+Shift+R",execute:e=>oT(e,{align:"right"}),isActive:e=>"right"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_RIGHT"},I_={name:Uo("Vertical align"),icon:e=>function(e){switch(H_(e)){case"top":return"o-spreadsheet-Icon.ALIGN_TOP";case"middle":return"o-spreadsheet-Icon.ALIGN_MIDDLE";default:return"o-spreadsheet-Icon.ALIGN_BOTTOM"}}(e)},E_={name:Uo("Top"),execute:e=>oT(e,{verticalAlign:"top"}),isActive:e=>"top"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_TOP"},R_={name:Uo("Middle"),execute:e=>oT(e,{verticalAlign:"middle"}),isActive:e=>"middle"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_MIDDLE"},T_={name:Uo("Bottom"),execute:e=>oT(e,{verticalAlign:"bottom"}),isActive:e=>"bottom"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_BOTTOM"},A_={name:Uo("Wrapping"),icon:"o-spreadsheet-Icon.WRAPPING_OVERFLOW"},__={name:Uo("Wrapping"),icon:e=>function(e){switch(U_(e)){case"wrap":return"o-spreadsheet-Icon.WRAPPING_WRAP";case"clip":return"o-spreadsheet-Icon.WRAPPING_CLIP";default:return"o-spreadsheet-Icon.WRAPPING_OVERFLOW"}}(e)},D_={name:Uo("Overflow"),execute:e=>oT(e,{wrapping:"overflow"}),isActive:e=>"overflow"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_OVERFLOW"},O_={name:Uo("Wrap"),execute:e=>oT(e,{wrapping:"wrap"}),isActive:e=>"wrap"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_WRAP"},F_={name:Uo("Clip"),execute:e=>oT(e,{wrapping:"clip"}),isActive:e=>"clip"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_CLIP"},M_={name:Uo("Text Color"),icon:"o-spreadsheet-Icon.TEXT_COLOR"},P_={name:Uo("Fill Color"),icon:"o-spreadsheet-Icon.FILL_COLOR"},N_={name:Uo("Conditional formatting"),execute:e=>{e.openSidePanel("ConditionalFormatting",{selection:e.model.getters.getSelectedZones()})},icon:"o-spreadsheet-Icon.CONDITIONAL_FORMAT"},k_={name:Uo("Clear formatting"),description:"Ctrl+<",execute:e=>e.model.dispatch("CLEAR_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()}),icon:"o-spreadsheet-Icon.CLEAR_FORMAT"};function V_(e,t){const o=e.model.getters.getActivePosition();return"VALUE"===e.model.getters.getPivotCellFromPosition(o).type?e.model.getters.getEvaluatedCell(o).format===t:e.model.getters.getCell(o)?.format===t}function L_(e){const t=e.model.getters.getCurrentStyle();if(t.align)return t.align;return e.model.getters.getActiveCell().defaultAlign}function H_(e){const t=e.model.getters.getCurrentStyle();return t.verticalAlign?t.verticalAlign:ge}function U_(e){const t=e.model.getters.getCurrentStyle();return t.wrapping?t.wrapping:pe}var B_=Object.freeze({__proto__:null,EXAMPLE_DATE:XA,clearFormat:k_,createFormatActionSpec:BA,decraseDecimalPlaces:g_,fillColor:P_,formatAlignment:S_,formatAlignmentBottom:T_,formatAlignmentCenter:w_,formatAlignmentHorizontal:y_,formatAlignmentLeft:C_,formatAlignmentMiddle:R_,formatAlignmentRight:x_,formatAlignmentTop:E_,formatAlignmentVertical:I_,formatBold:p_,formatCF:N_,formatCustomCurrency:KA,formatFontSize:b_,formatItalic:m_,formatNumberAccounting:YA,formatNumberAutomatic:zA,formatNumberCurrency:ZA,formatNumberCurrencyRounded:jA,formatNumberDate:JA,formatNumberDateTime:e_,formatNumberDayAndFullMonth:a_,formatNumberDayAndShortMonth:c_,formatNumberDuration:t_,formatNumberFullDateTime:n_,formatNumberFullMonth:h_,formatNumberFullQuarter:s_,formatNumberFullWeekDayAndMonth:r_,formatNumberNumber:GA,formatNumberPercent:qA,formatNumberPlainText:$A,formatNumberQuarter:o_,formatNumberShortMonth:d_,formatNumberShortWeekDay:l_,formatNumberTime:QA,formatPercent:WA,formatStrikethrough:v_,formatUnderline:f_,formatWrapping:__,formatWrappingClip:F_,formatWrappingIcon:A_,formatWrappingOverflow:D_,formatWrappingWrap:O_,incraseDecimalPlaces:u_,moreFormats:i_,textColor:M_});function z_(e,t,o){const s=e.model.getters.getActiveSheetId(),i="COL"===t?"FREEZE_COLUMNS":"FREEZE_ROWS";e.model.dispatch(i,{sheetId:s,quantity:o}).isCancelledBecause("MergeOverlap")&&e.raiseError(Wx)}class $_{map={};constructor(e=[]){for(const[t,o]of e)this.set(t,o)}set({sheetId:e,col:t,row:o},s){const i=this.map;i[e]||(i[e]={}),i[e][t]||(i[e][t]={}),i[e][t][o]=s}get({sheetId:e,col:t,row:o}){return this.map[e]?.[t]?.[o]}getSheet(e){return this.map[e]}has({sheetId:e,col:t,row:o}){return void 0!==this.map[e]?.[t]?.[o]}delete({sheetId:e,col:t,row:o}){delete this.map[e]?.[t]?.[o]}keys(){const e=this.map,t=[];for(const o in e)for(const s in e[o])for(const i in e[o][s])t.push({sheetId:o,col:parseInt(s),row:parseInt(i)});return t}keysForSheet(e){const t=this.map[e];if(!t)return[];const o=[];for(const s in t)for(const i in t[s])o.push({sheetId:e,col:parseInt(s),row:parseInt(i)});return o}*entries(){const e=this.map;for(const t of this.keys()){const{sheetId:o,col:s,row:i}=t;yield[t,e[o][s][i]]}}}class G_ extends Xc{mutators=["enable","disable"];isInvalidated=!1;fingerprintColors={[W_]:"#D9D9D9"};isEnabled=!1;colors=new $_;handle(e){switch(di(e)&&this.isEnabled&&(this.isInvalidated=!0),e.type){case"UNDO":case"REDO":case"ACTIVATE_SHEET":this.isEnabled&&(this.isInvalidated=!0)}}finalize(){this.isInvalidated&&(this.isInvalidated=!1,this.computeFingerprints())}enable(){this.isEnabled=!0,this.computeFingerprints()}disable(){this.isEnabled=!1,this.colors=new $_}computeFingerprints(){this.colors=new $_;const e=new $_,t=new Set,o=this.getters.getActiveSheetId(),s=this.getters.getCells(o);for(const o in s){const i=this.computeFingerprint(s[o]);if(!i)continue;t.add(i);const n=this.getters.getCellPosition(o);e.set(n,i)}this.assignColors(t);for(const[t,o]of e.entries()){const e=this.fingerprintColors[o];this.colors.set(t,e),this.colorSpreadZone(t,e)}}colorSpreadZone(e,t){const o=this.getters.getSpreadZone(e);if(!o)return;const s=e.sheetId;for(let e=o.top;e<=o.bottom;e++)for(let i=o.left;i<=o.right;i++){const o={sheetId:s,col:i,row:e};this.colors.set(o,t)}}assignColors(e){const t=new go(e.size);Object.keys(this.fingerprintColors).forEach((()=>t.next()));for(const o of e)this.fingerprintColors[o]||(this.fingerprintColors[o]=Qt(t.next(),.8))}computeFingerprint(e){const t=this.getters.getCellPosition(e.id);return e.isFormula?this.computeFormulaFingerprint(t,e):this.getLiteralFingerprint(t)}computeFormulaFingerprint(e,t){const o=t.compiledFormula.dependencies,s=e.col,i=e.row,n=this.getters.getSheetIds().indexOf(e.sheetId),r={dx:0,dy:0,dSheet:0};for(const e of o){const t=e.zone,[o,a]=e.parts,l=this.getters.getSheetIds().indexOf(e.sheetId);r.dSheet=l-n;const c=e.isFullRow&&!e.unboundedZone.hasHeader,h=e.isFullCol&&!e.unboundedZone.hasHeader,d=c||o?.colFixed?0:s,u=h||o?.rowFixed?0:i,g=!a&&o?.colFixed||a?.colFixed,p=!a&&o.rowFixed||a?.rowFixed,m=void 0===e.unboundedZone.right||g?0:s,f=void 0===e.unboundedZone.bottom||p?0:i,v=as({top:t.top-u,left:t.left-d,right:t.right-m,bottom:t.bottom-f});for(let e=v.top;e<=v.bottom;e++)for(let t=v.left;t<=v.right;t++)r.dx+=t,r.dy+=e}const a=t.compiledFormula.normalizedFormula;return l=r,Object.entries(l).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>t)).join(",")+a;var l}getLiteralFingerprint(e){switch(this.getters.getEvaluatedCell(e).type){case oi.number:case oi.boolean:return W_;case oi.text:case oi.empty:case oi.error:return}}}const W_="DATA_FINGERPRINT",q_={name:e=>{const t=e.model.getters.getElementsFromSelection("COL");let o=t[0],s=t[t.length-1];return 1===t.length?Uo("Hide column %s",vo(o).toString()):s-o+1===t.length?Uo("Hide columns %s - %s",vo(o).toString(),vo(s).toString()):Uo("Hide columns")},execute:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getElementsFromSelection("COL");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"COL",o)},icon:"o-spreadsheet-Icon.HIDE_COL"},Z_={name:Uo("Unhide columns"),execute:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("COL").some((e=>t.includes(e)))},icon:"o-spreadsheet-Icon.UNHIDE_COL"},j_={name:Uo("Unhide all columns"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"COL",elements:Array.from(Array(e.model.getters.getNumberCols(t)).keys())})},isVisible:e=>e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).length>0,icon:"o-spreadsheet-Icon.UNHIDE_COL"},Y_={name:e=>{const t=e.model.getters.getElementsFromSelection("ROW");let o=t[0],s=t[t.length-1];return 1===t.length?Uo("Hide row %s",(o+1).toString()):s-o+1===t.length?Uo("Hide rows %s - %s",(o+1).toString(),(s+1).toString()):Uo("Hide rows")},execute:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getElementsFromSelection("ROW");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"ROW",o)},icon:"o-spreadsheet-Icon.HIDE_ROW"},X_={name:Uo("Unhide rows"),execute:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("ROW").some((e=>t.includes(e)))},icon:"o-spreadsheet-Icon.UNHIDE_ROW"},K_={name:Uo("Unhide all rows"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"ROW",elements:Array.from(Array(e.model.getters.getNumberRows(t)).keys())})},isVisible:e=>e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).length>0,icon:"o-spreadsheet-Icon.UNHIDE_ROW"},J_={name:Uo("Unfreeze"),isVisible:e=>{const{xSplit:t,ySplit:o}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+o>0},execute:e=>e.model.dispatch("UNFREEZE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),icon:"o-spreadsheet-Icon.UNFREEZE"},Q_={name:Uo("Freeze"),icon:"o-spreadsheet-Icon.FREEZE"},eD={name:Uo("No rows"),execute:e=>e.model.dispatch("UNFREEZE_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit},tD={name:Uo("1 row"),execute:e=>z_(e,"ROW",1),isReadonlyAllowed:!0},oD={name:Uo("2 rows"),execute:e=>z_(e,"ROW",2),isReadonlyAllowed:!0},sD={name:Uo("Up to current row"),execute:e=>{const{bottom:t}=e.model.getters.getSelectedZone();z_(e,"ROW",t+1)},isReadonlyAllowed:!0},iD={name:Uo("No columns"),execute:e=>e.model.dispatch("UNFREEZE_COLUMNS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit},nD={name:Uo("1 column"),execute:e=>z_(e,"COL",1),isReadonlyAllowed:!0},rD={name:Uo("2 columns"),execute:e=>z_(e,"COL",2),isReadonlyAllowed:!0},aD={name:Uo("Up to current column"),execute:e=>{const{right:t}=e.model.getters.getSelectedZone();z_(e,"COL",t+1)},isReadonlyAllowed:!0},lD={name:Uo("Gridlines"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("SET_GRID_LINES_VISIBILITY",{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},isActive:e=>{const t=e.model.getters.getActiveSheetId();return e.model.getters.getGridLinesVisibility(t)}},cD={name:Uo("Irregularity map"),execute:e=>{const t=e.getStore(G_);t.isEnabled?t.disable():t.enable()},isReadonlyAllowed:!0,icon:"o-spreadsheet-Icon.IRREGULARITY_MAP"},hD={name:Uo("Formulas"),isActive:e=>e.model.getters.shouldShowFormulas(),execute:e=>e.model.dispatch("SET_FORMULA_VISIBILITY",{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0},dD={name:e=>{const t=e.model.getters.getSelectedZone();return t.left===t.right?Uo("Group column %s",vo(t.left)):Uo("Group columns %s - %s",vo(t.left),vo(t.right))},execute:e=>mD(e,"COL"),isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZone(),s=e.model.getters.getHeaderGroupsInZone(t,"COL",o);return pT(e)&&!s.some((e=>e.start===o.left&&e.end===o.right))},icon:"o-spreadsheet-Icon.GROUP_COLUMNS"},uD={name:e=>{const t=e.model.getters.getSelectedZone();return t.top===t.bottom?Uo("Group row %s",String(t.top+1)):Uo("Group rows %s - %s",String(t.top+1),String(t.bottom+1))},execute:e=>mD(e,"ROW"),isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZone(),s=e.model.getters.getHeaderGroupsInZone(t,"ROW",o);return pT(e)&&!s.some((e=>e.start===o.top&&e.end===o.bottom))},icon:"o-spreadsheet-Icon.GROUP_ROWS"},gD={name:e=>{const t=e.model.getters.getSelectedZone();return t.left===t.right?Uo("Ungroup column %s",vo(t.left)):Uo("Ungroup columns %s - %s",vo(t.left),vo(t.right))},execute:e=>fD(e,"COL"),icon:"o-spreadsheet-Icon.UNGROUP_COLUMNS"},pD={name:e=>{const t=e.model.getters.getSelectedZone();return t.top===t.bottom?Uo("Ungroup row %s",String(t.top+1)):Uo("Ungroup rows %s - %s",String(t.top+1),String(t.bottom+1))},execute:e=>fD(e,"ROW"),icon:"o-spreadsheet-Icon.UNGROUP_ROWS"};function mD(e,t){const o=e.model.getters.getSelectedZone(),s=e.model.getters.getActiveSheetId();e.model.dispatch("GROUP_HEADERS",{sheetId:s,dimension:t,start:"COL"===t?o.left:o.top,end:"COL"===t?o.right:o.bottom})}function fD(e,t){const o=e.model.getters.getSelectedZone(),s=e.model.getters.getActiveSheetId();e.model.dispatch("UNGROUP_HEADERS",{sheetId:s,dimension:t,start:"COL"===t?o.left:o.top,end:"COL"===t?o.right:o.bottom})}function vD(e,t){const o=e.model.getters.getActiveSheetId(),s=e.model.getters.getSelectedZones();return 1===s.length&&e.model.getters.getHeaderGroupsInZone(o,t,s[0]).length>0}const bD=new eR;bD.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("sort_columns",{..._A,name:e=>e.model.getters.getActiveCols().size>1?Uo("Sort columns"):Uo("Sort column"),sequence:50,separator:!0}).addChild("sort_ascending",["sort_columns"],{...DA,sequence:10}).addChild("sort_descending",["sort_columns"],{...PA,sequence:20}).add("add_column_before",{...YT,sequence:70}).add("add_column_after",{...JT,sequence:80}).add("delete_column",{...DT,sequence:90,icon:"o-spreadsheet-Icon.TRASH"}).add("clear_column",{...FT,sequence:100,icon:"o-spreadsheet-Icon.CLEAR"}).add("hide_columns",{...q_,sequence:105,separator:!0}).add("unhide_columns",{...Z_,sequence:106,separator:!0}).add("conditional_formatting",{...N_,sequence:110,separator:!0}).add("edit_table",{...VT,isVisible:uT,sequence:120}).add("delete_table",{...LT,isVisible:uT,sequence:125,separator:!0}).add("group_columns",{sequence:150,...dD}).add("ungroup_columns",{sequence:155,...gD,isVisible:e=>vD(e,"COL")});const SD=new n;SD.add("format_number_automatic",{...zA,id:"format_number_automatic",sequence:10}).add("format_number_plain_text",{...$A,id:"format_number_plain_text",sequence:15,separator:!0}).add("format_number_number",{...GA,id:"format_number_number",sequence:20}).add("format_number_percent",{...qA,id:"format_number_percent",sequence:30,separator:!0}).add("format_number_currency",{...ZA,id:"format_number_currency",sequence:40}).add("format_number_accounting",{...YA,id:"format_number_accounting",sequence:45}).add("format_number_currency_rounded",{...jA,id:"format_number_currency_rounded",sequence:50}).add("format_custom_currency",{...KA,id:"format_custom_currency",sequence:60,separator:!0}).add("format_number_date",{...JA,id:"format_number_date",sequence:70}).add("format_number_time",{...QA,id:"format_number_time",sequence:80}).add("format_number_date_time",{...e_,id:"format_number_date_time",sequence:90}).add("format_number_duration",{...t_,id:"format_number_duration",sequence:100,separator:!0}).add("more_formats",{...i_,id:"more_formats",sequence:120});const yD=Et((e=>nr(e)?"date":e.includes("[$")?"currency":"number")),CD={name:Uo("More formats"),icon:"o-spreadsheet-Icon.NUMBER_FORMATS",children:[e=>{const t=function(e){const t=new Set(SD.getAll().map((t=>"function"==typeof t.format?t.format(e):t.format))),o=new Map;for(const s of e.model.getters.getSheetIds()){const i=e.model.getters.getEvaluatedCells(s);for(const e in i){const s=i[e];if(s.format&&!o.has(s.format)&&!t.has(s.format)){const e=yD(s.format);"date"!==e&&"currency"!==e||o.set(s.format,BA({descriptionValue:"currency"===e?1e3:XA,format:s.format,name:s.format}))}}}return[...o.values()]}(e).map((e=>({...e,sequence:110})));return t.length>0&&(t[t.length-1].separator=!0),o([...SD.getAll(),...t])}]},wD=new eR;function xD(e,t){const o=e.getActiveSheetId(),s=function(e,t){const o=[],s=e.getActiveSheetId();for(const i of e.getSheetViewVisibleCols())for(const n of e.getSheetViewVisibleRows()){const r={sheetId:s,col:i,row:n};t===e.getPivotIdFromPosition(r)&&o.push(r)}return o}(e,t);return ms(s.map(hs)).map((e=>({sheetId:o,zone:e,noFill:!0,color:a})))}wD.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("add_row_before",{...$T,sequence:50}).add("add_row_after",{...qT,sequence:60}).add("delete_row",{...TT,sequence:70,icon:"o-spreadsheet-Icon.TRASH"}).add("clear_row",{..._T,sequence:80,icon:"o-spreadsheet-Icon.CLEAR"}).add("hide_rows",{...Y_,sequence:85,separator:!0}).add("unhide_rows",{...X_,sequence:86,separator:!0}).add("conditional_formatting",{...N_,sequence:90,separator:!0}).add("group_rows",{sequence:100,...uD}).add("ungroup_rows",{sequence:110,...pD,isVisible:e=>vD(e,"ROW")});const ID=new eR;ID.add("file",{name:Uo("File"),sequence:10}).addChild("settings",["file"],{name:Uo("Settings"),sequence:100,execute:e=>e.openSidePanel("Settings"),icon:"o-spreadsheet-Icon.COG"}).add("edit",{name:Uo("Edit"),sequence:20}).addChild("undo",["edit"],{...vT,sequence:10}).addChild("redo",["edit"],{...bT,sequence:20,separator:!0}).addChild("copy",["edit"],{...ST,sequence:30}).addChild("cut",["edit"],{...yT,sequence:40}).addChild("paste",["edit"],{...CT,sequence:50}).addChild("paste_special",["edit"],{...wT,sequence:60,separator:!0}).addChild("paste_special_value",["edit","paste_special"],{...xT,sequence:10}).addChild("paste_special_format",["edit","paste_special"],{...IT,sequence:20}).addChild("edit_table",["edit"],{...VT,isVisible:uT,sequence:60}).addChild("find_and_replace",["edit"],{...ET,sequence:65,separator:!0}).addChild("delete",["edit"],{name:Uo("Delete"),icon:"o-spreadsheet-Icon.TRASH",sequence:70}).addChild("edit_delete_cell_values",["edit","delete"],{...RT,sequence:10}).addChild("edit_delete_row",["edit","delete"],{...TT,sequence:20}).addChild("edit_delete_column",["edit","delete"],{...DT,sequence:30}).addChild("edit_delete_cell_shift_up",["edit","delete"],{...PT,sequence:40}).addChild("edit_delete_cell_shift_left",["edit","delete"],{...NT,sequence:50}).addChild("edit_unhide_columns",["edit"],{...j_,sequence:80}).addChild("edit_unhide_rows",["edit"],{...K_,sequence:80}).add("view",{name:Uo("View"),sequence:30}).addChild("unfreeze_panes",["view"],{...J_,sequence:4}).addChild("freeze_panes",["view"],{...Q_,sequence:5}).addChild("unfreeze_rows",["view","freeze_panes"],{...eD,sequence:5}).addChild("freeze_first_row",["view","freeze_panes"],{...tD,sequence:10}).addChild("freeze_second_row",["view","freeze_panes"],{...oD,sequence:15}).addChild("freeze_current_row",["view","freeze_panes"],{...sD,sequence:20,separator:!0}).addChild("unfreeze_columns",["view","freeze_panes"],{...iD,sequence:25}).addChild("freeze_first_col",["view","freeze_panes"],{...nD,sequence:30}).addChild("freeze_second_col",["view","freeze_panes"],{...rD,sequence:35}).addChild("freeze_current_col",["view","freeze_panes"],{...aD,sequence:40}).addChild("group_headers",["view"],{name:Uo("Group"),sequence:15,separator:!0,icon:"o-spreadsheet-Icon.PLUS_IN_BOX",isVisible:pT}).addChild("group_columns",["view","group_headers"],{...dD,sequence:5}).addChild("ungroup_columns",["view","group_headers"],{...gD,isVisible:e=>vD(e,"COL"),sequence:10}).addChild("group_rows",["view","group_headers"],{...uD,sequence:15}).addChild("ungroup_rows",["view","group_headers"],{...pD,isVisible:e=>vD(e,"ROW"),sequence:20}).addChild("show",["view"],{name:Uo("Show"),sequence:1,icon:"o-spreadsheet-Icon.SHOW"}).addChild("view_gridlines",["view","show"],{...lD,sequence:5}).addChild("view_formulas",["view","show"],{...hD,sequence:10}).addChild("view_irregularity_map",["view"],{...cD,sequence:40,separator:!0}).add("insert",{name:Uo("Insert"),sequence:40}).addChild("insert_row",["insert"],{...zT,sequence:10}).addChild("insert_row_before",["insert","insert_row"],{...GT,sequence:10}).addChild("insert_row_after",["insert","insert_row"],{...ZT,sequence:20}).addChild("insert_column",["insert"],{...jT,sequence:20}).addChild("insert_column_before",["insert","insert_column"],{...XT,sequence:10}).addChild("insert_column_after",["insert","insert_column"],{...QT,sequence:20}).addChild("insert_cell",["insert"],{...eA,sequence:30}).addChild("insert_cell_down",["insert","insert_cell"],{...tA,name:Uo("Shift down"),sequence:10}).addChild("insert_cell_right",["insert","insert_cell"],{...oA,name:Uo("Shift right"),sequence:20}).addChild("insert_sheet",["insert"],{...vA,sequence:40,separator:!0}).addChild("insert_chart",["insert"],{...sA,sequence:50}).addChild("insert_pivot",["insert"],{...iA,sequence:52}).addChild("insert_image",["insert"],{...nA,sequence:55}).addChild("insert_table",["insert"],{...rA,sequence:57}).addChild("insert_function",["insert"],{...aA,sequence:60}).addChild("insert_function_sum",["insert","insert_function"],{...lA,sequence:0}).addChild("insert_function_average",["insert","insert_function"],{...cA,sequence:10}).addChild("insert_function_count",["insert","insert_function"],{...hA,sequence:20}).addChild("insert_function_max",["insert","insert_function"],{...dA,sequence:30}).addChild("insert_function_min",["insert","insert_function"],{...uA,sequence:40,separator:!0}).addChild("categorie_function_all",["insert","insert_function"],{...gA,sequence:50}).addChild("categories_function_list",["insert","insert_function"],(()=>{const e=vS.content;return[...new Set(vS.getAll().filter((e=>!e.hidden)).map((e=>e.category)))].filter(lt).sort().map(((t,o)=>{const s=Object.keys(e).filter((o=>e[o].category===t&&!e[o].hidden));return{name:t,children:bA(s)}}))})).addChild("insert_link",["insert"],{...pA,separator:!0,sequence:70}).addChild("insert_checkbox",["insert"],{...mA,sequence:80}).addChild("insert_dropdown",["insert"],{...fA,separator:!0,sequence:90}).add("format",{name:Uo("Format"),sequence:50}).addChild("format_number",["format"],{...CD,name:Uo("Number"),sequence:10,separator:!0}).addChild("format_bold",["format"],{...p_,sequence:20}).addChild("format_italic",["format"],{...m_,sequence:30}).addChild("format_underline",["format"],{...f_,sequence:40}).addChild("format_strikethrough",["format"],{...v_,sequence:50,separator:!0}).addChild("format_font_size",["format"],{...b_,sequence:60,separator:!0}).addChild("format_alignment",["format"],{...S_,sequence:70}).addChild("format_alignment_left",["format","format_alignment"],{...C_,sequence:10}).addChild("format_alignment_center",["format","format_alignment"],{...w_,sequence:20}).addChild("format_alignment_right",["format","format_alignment"],{...x_,sequence:30,separator:!0}).addChild("format_alignment_top",["format","format_alignment"],{...E_,sequence:40}).addChild("format_alignment_middle",["format","format_alignment"],{...R_,sequence:50}).addChild("format_alignment_bottom",["format","format_alignment"],{...T_,sequence:60,separator:!0}).addChild("format_wrapping",["format"],{...A_,sequence:80,separator:!0}).addChild("format_wrapping_overflow",["format","format_wrapping"],{...D_,sequence:10}).addChild("format_wrapping_wrap",["format","format_wrapping"],{...O_,sequence:20}).addChild("format_wrapping_clip",["format","format_wrapping"],{...F_,sequence:30}).addChild("format_cf",["format"],{...N_,sequence:90,separator:!0}).addChild("format_clearFormat",["format"],{...k_,sequence:100,separator:!0}).add("data",{name:Uo("Data"),sequence:60}).addChild("sort_range",["data"],{..._A,sequence:10,separator:!0}).addChild("sort_ascending",["data","sort_range"],{...DA,sequence:10}).addChild("sort_descending",["data","sort_range"],{...PA,sequence:20}).addChild("data_cleanup",["data"],{...OA,sequence:15}).addChild("remove_duplicates",["data","data_cleanup"],{...FA,sequence:10}).addChild("trim_whitespace",["data","data_cleanup"],{...MA,sequence:20}).addChild("split_to_columns",["data"],{...VA,sequence:20}).addChild("data_validation",["data"],{name:Uo("Data Validation"),execute:e=>{e.openSidePanel("DataValidation")},icon:"o-spreadsheet-Icon.DATA_VALIDATION",sequence:30,separator:!0}).addChild("add_remove_data_filter",["data"],{...NA,sequence:40,separator:!0}).addChild("data_sources_data",["data"],(e=>e.model.getters.getPivotIds().map(((t,o)=>{const s={get highlights(){return xD(e.model.getters,t)}};return{id:`item_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:50+o,isReadonlyAllowed:!0,execute:e=>e.openSidePanel("PivotSidePanel",{pivotId:t}),onStartHover:e=>e.getStore(xS).register(s),onStopHover:e=>e.getStore(xS).unRegister(s),icon:"o-spreadsheet-Icon.PIVOT",separator:o===e.model.getters.getPivotIds().length-1,secondaryIcon:e=>e.model.getters.isPivotUnused(t)?"o-spreadsheet-Icon.UNUSED_PIVOT_WARNING":void 0}})))).addChild("reinsert_dynamic_pivot",["data"],LA).addChild("reinsert_static_pivot",["data"],HA);const ED=new class extends n{addTransformation(e,t,o){for(let s of t)this.content[s]||(this.content[s]=new Map),this.content[s].set(e,o);return this}getTransformation(e,t){return this.content[e]&&this.content[e].get(t)}};class RD extends t.Component{static template="o_spreadsheet.Section";static props={class:{type:String,optional:!0},title:{type:String,optional:!0},slots:Object}}function TD(e,t,o=(()=>{})){const s=()=>{window.removeEventListener("pointerdown",o),window.removeEventListener("pointerup",i),window.removeEventListener("dragstart",n),window.removeEventListener("pointermove",e),window.removeEventListener("wheel",e)},i=e=>{t(e),s()};function n(e){e.preventDefault()}return window.addEventListener("pointerdown",o),window.addEventListener("pointerup",i),window.addEventListener("dragstart",n),window.addEventListener("pointermove",e),window.addEventListener("wheel",e,{passive:!1}),s}function AD(e,t,o,s=!1){let i,n,r,a,l,c=null;const h=e.model.getters,d=h.getActiveSheetId(),u=NR();let g,p;const m=o=>{if(i=o,c)return;const{x:r,y:f}=h.getMainViewportCoordinates();let{top:v,left:b,bottom:S,right:y}=h.getActiveMainViewport(),{scrollX:C,scrollY:w}=h.getActiveSheetScrollInfo();const{xSplit:x,ySplit:I}=h.getPaneDivisions(d);let E=!1,R=140;const T=i.clientX-u.left;if(g=h.getColIndex(T),"vertical"!==s){const t=n.clientX-u.left,o=h.getEdgeScrollCol(T,t,a);if(o.canEdgeScroll){let t;switch(E=!0,R=Math.min(R,o.delay),o.direction){case"reset":g=x,t=x;break;case 1:g=y,t=b+1;break;case-1:for(g=b-1;e.model.getters.isColHidden(d,g);)g--;t=g}C=h.getColDimensions(d,t).start-r}}const A=i.clientY-u.top;if(p=h.getRowIndex(A),"horizontal"!==s){const t=n.clientY-u.top,o=h.getEdgeScrollRow(A,t,l);if(o.canEdgeScroll){let t;switch(E=!0,R=Math.min(R,o.delay),o.direction){case"reset":p=I,t=I;break;case 1:p=S,t=v+o.direction;break;case-1:for(p=v-1;e.model.getters.isRowHidden(d,p);)p--;t=p}w=e.model.getters.getRowDimensions(d,t).start-f}}E||(-1===p&&(p=A<0?0:h.getNumberRows(d)-1),-1===g&&T<0&&(g=T<0?0:h.getNumberCols(d)-1)),t(g,p,i),E&&(e.model.dispatch("SET_VIEWPORT_OFFSET",{offsetX:C,offsetY:w}),c=setTimeout((()=>{c=null,m(i)}),Math.round(R))),n=i};TD(m,(()=>{clearTimeout(c),o()}),(e=>{n=e,r=e,a=r.clientX-u.left,l=r.clientY-u.top}))}function _D(){let e;const o=document.body.style.cursor;let s=[];const i=()=>{e=void 0,document.body.style.cursor=o,s.forEach((e=>e())),s=[]};t.onWillUnmount((()=>{i()}));const n=t.useState({itemsStyle:{},draggedItemId:void 0,start:(t,r)=>{n.cancel=()=>{n.draggedItemId=void 0,n.itemsStyle={},document.body.style.cursor=o,r.onCancel?.(),i()};document.body.style.cursor="move",n.draggedItemId=r.draggedItemId;const a="horizontal"===t?new MD(r.scrollableContainerEl):new FD(r.scrollableContainerEl);e=new DD({...r,container:a,onChange:()=>{document.body.style.cursor="move",e&&(Object.assign(n.itemsStyle,e.getItemStyles()),r.onChange?.())},onDragEnd:(e,t)=>{n.draggedItemId=void 0,n.itemsStyle={},document.body.style.cursor=o,r.onDragEnd?.(e,t),i()},onCancel:n.cancel});const l=TD(e.onMouseMove.bind(e),e.onMouseUp.bind(e));s.push(l);const c=e.onScroll.bind(e);r.scrollableContainerEl.addEventListener("scroll",c),s.push((()=>r.scrollableContainerEl.removeEventListener("scroll",c))),s.push(e.destroy.bind(e))},cancel:()=>{}});return n}class DD{draggedItemId;items;container;initialMousePosition;currentMousePosition;initialScroll;minPosition;maxPosition;edgeScrollIntervalId;onChange;onCancel;onDragEnd;deadZone;constructor(e){this.items=e.items.map((e=>({...e,positionAtStart:e.position}))),this.draggedItemId=e.draggedItemId,this.container=e.container,this.onChange=e.onChange,this.onCancel=e.onCancel,this.onDragEnd=e.onDragEnd,this.initialMousePosition=e.initialMousePosition,this.currentMousePosition=e.initialMousePosition,this.initialScroll=this.container.scroll,this.minPosition=this.items[0].position,this.maxPosition=this.items[this.items.length-1].position+this.items[this.items.length-1].size}getItemStyles(){const e={};for(let t of this.items)e[t.id]=this.getItemStyle(t.id);return e}getItemStyle(e){const t=this.container.cssPositionProperty,o={position:"relative"};return o[t]=(this.getItemsPositions()[e]||0)+"px",o.transition=`${t} 0.5s`,o["pointer-events"]="none",this.draggedItemId===e&&(o.transition=`${t} 0s`,o["z-index"]="1000"),ih(o)}onScroll(){this.moveDraggedItemToPosition(this.currentMousePosition+this.scrollOffset)}onMouseMove(e){if(e.button>1)return void this.onCancel();const t=this.container.getMousePosition(e);this.currentMousePosition=t,t<this.container.start||t>this.container.end?this.startEdgeScroll(t<this.container.start?-1:1):(this.stopEdgeScroll(),this.moveDraggedItemToPosition(t+this.scrollOffset))}moveDraggedItemToPosition(e){const t=this.getHoveredItemIndex(e,this.items),o=this.items.findIndex((e=>e.id===this.draggedItemId)),s=this.items[o];if(this.deadZone&&this.isInZone(e,this.deadZone))return void this.onChange(this.getItemsPositions());if(this.isInZone(e,{start:s.position,end:s.position+s.size})&&(this.deadZone=void 0),o===t)return void this.onChange(this.getItemsPositions());const i=Math.min(o,t),n=Math.max(o,t),r=Math.sign(t-o);let a=0;for(let e=i;e<=n;e++)e!==o&&(this.items[e].position-=r*s.size,a+=this.items[e].size);s.position+=r*a,this.items.sort(((e,t)=>e.position-t.position)),this.deadZone=r>0?{start:e,end:s.position}:{start:s.position+s.size,end:e},this.onChange(this.getItemsPositions())}onMouseUp(e){0!==e.button&&this.onCancel(),e.stopPropagation(),e.preventDefault();const t=this.items.findIndex((e=>e.id===this.draggedItemId));return this.onDragEnd(this.draggedItemId,t),this.stopEdgeScroll(),!1}startEdgeScroll(e){this.edgeScrollIntervalId||(this.edgeScrollIntervalId=window.setInterval((()=>{const t=3*e;this.container.scroll+=t}),5))}stopEdgeScroll(){window.clearInterval(this.edgeScrollIntervalId),this.edgeScrollIntervalId=void 0}getHoveredItemIndex(e,t){return e<=this.minPosition?0:e>=this.maxPosition?t.length-1:t.findIndex((t=>t.position+t.size>=e))}getItemsPositions(){const e={};for(let t of this.items){if(t.id!==this.draggedItemId){e[t.id]=t.position-t.positionAtStart;continue}let o=this.currentMousePosition-this.initialMousePosition+this.scrollOffset;o=Math.max(this.minPosition-t.positionAtStart,o),o=Math.min(this.maxPosition-t.positionAtStart-t.size,o),e[t.id]=o}return e}isInZone(e,t){return e>=t.start&&e<=t.end}get scrollOffset(){return this.container.scroll-this.initialScroll}destroy(){this.stopEdgeScroll()}}class OD{el;constructor(e){this.el=e}get containerRect(){return this.el.getBoundingClientRect()}}class FD extends OD{get start(){return this.containerRect.top}get end(){return this.containerRect.bottom}get cssPositionProperty(){return"top"}get scroll(){return this.el.scrollTop}set scroll(e){this.el.scrollTop=e}getMousePosition(e){return e.clientY}}class MD extends OD{get start(){return this.containerRect.left}get end(){return this.containerRect.right}get cssPositionProperty(){return"left"}get scroll(){return this.el.scrollLeft}set scroll(e){this.el.scrollLeft=e}getMousePosition(e){return e.clientX}}const PD={ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up"};function ND(e,t){const o=PD[e.key];e.shiftKey?t.resizeAnchorZone(o,$R(e)?"end":1):t.moveAnchorCell(o,$R(e)?"end":1)}class kD{mutators=["focus","unfocus"];focusedElement=null;focus(e){this.focusedElement=e}unfocus(e){this.focusedElement&&this.focusedElement===e&&(this.focusedElement=null)}}class VD extends Xc{initialRanges;inputHasSingleRange;colors;mutators=["resetWithRanges","focusById","unfocus","addEmptyRange","removeRange","changeRange","reset","confirm","updateColors"];ranges=[];focusedRangeIndex=null;inputSheetId;focusStore=this.get(kD);highlightStore=this.get(xS);constructor(e,t=[],o=!1,s=[]){if(super(e),this.initialRanges=t,this.inputHasSingleRange=o,this.colors=s,o&&t.length>1)throw new Error("Input with a single range cannot be instantiated with several range references.");this.inputSheetId=this.getters.getActiveSheetId(),this.resetWithRanges(t),this.highlightStore.register(this),this.onDispose((()=>{this.unfocus(),this.highlightStore.unRegister(this)}))}handleEvent(e){if(null===this.focusedRangeIndex)return;const t=this.inputSheetId,o=this.getters.getActiveSheetId(),s=e.options.unbounded?this.getters.getUnboundedZone(o,e.anchor.zone):e.anchor.zone,i=this.getters.getRangeFromZone(o,s);if("newAnchor"===e.mode&&!this.inputHasSingleRange&&""!==this.ranges[this.focusedRangeIndex].xc.trim()){const e=this.getters.getSelectionRangeString(i,t);this.insertNewRange(this.ranges.length,[e]),this.focusLast()}else{let e=i.parts;const o=this.ranges[this.focusedRangeIndex].xc.trim();o&&(e=this.getters.getRangeFromSheetXC(t,o).parts);const s=i.clone({parts:e}),n=this.getters.getSelectionRangeString(s,t);this.setRange(this.focusedRangeIndex,[n])}}handle(e){switch(e.type){case"ACTIVATE_SHEET":if(e.sheetIdFrom!==e.sheetIdTo){const{col:t,row:o}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:0,row:0}),s=this.getters.expandZone(e.sheetIdTo,hs({col:t,row:o}));this.model.selection.resetAnchor(this,{cell:{col:t,row:o},zone:s})}break;case"START_CHANGE_HIGHLIGHT":const t=this.getters.getActiveSheetId(),o=this.getters.expandZone(t,e.zone),s=this.ranges.findIndex((e=>{const{xc:s,sheetName:i}=qr(e.xc),n=i||this.getters.getSheetName(this.inputSheetId);if(this.getters.getSheetName(t)!==n)return!1;const r=this.getters.getRangeFromSheetXC(t,s);return Qo(this.getters.expandZone(t,r.zone),o)}));if(-1!==s){this.focus(s);const{left:e,top:t}=o;this.model.selection.resetAnchor(this,{cell:{col:e,row:t},zone:o})}}}changeRange(e,t){if(this.inputHasSingleRange&&t.split(",").length>1)return;const o=this.getIndex(e);if(null!==o&&this.focusedRangeIndex!==o&&this.focus(o),null!==o){const e=t.replace(/^,+/,"").split(",").map((e=>e.trim()));this.setRange(o,e),this.captureSelection()}}addEmptyRange(){this.inputHasSingleRange&&1===this.ranges.length||(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}removeRange(e){if(1===this.ranges.length)return;const t=this.getIndex(e);null!==t&&this.removeRangeByIndex(t)}updateColors(e){this.colors=e;const t=new uo(this.ranges.length,this.colors);this.ranges=this.ranges.map((e=>({...e,color:t.next()})))}confirm(){for(const e of this.selectionInputs)""===e.xc&&this.removeRange(e.id);const e=this.getters.getActiveSheetId();this.inputSheetId!==e&&this.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e,sheetIdTo:this.inputSheetId}),this.selectionInputValues.join()!==this.initialRanges.join()&&this.resetWithRanges(this.selectionInputValues),this.initialRanges=this.selectionInputValues,this.unfocus()}reset(){this.resetWithRanges(this.initialRanges),this.confirm()}get selectionInputValues(){return this.cleanInputs(this.ranges.map((e=>e.xc?e.xc:"")))}get selectionInputs(){return this.ranges.map(((e,t)=>Object.assign({},e,{color:this.hasMainFocus&&null!==this.focusedRangeIndex&&this.getters.isRangeValid(e.xc)?e.color:null,isFocused:this.hasMainFocus&&this.focusedRangeIndex===t,isValidRange:""===e.xc||this.getters.isRangeValid(e.xc)})))}get isResettable(){return this.initialRanges.join()!==this.ranges.map((e=>e.xc)).join()}get isConfirmable(){return this.selectionInputs.every((e=>e.isValidRange))}get hasFocus(){return this.selectionInputs.some((e=>e.isFocused))}get hasMainFocus(){const e=this.focusStore.focusedElement;return!!e&&e===this}get highlights(){return this.hasMainFocus?this.ranges.map((e=>this.inputToHighlights(e))).flat():[]}focusById(e){this.focus(this.getIndex(e))}focus(e){this.focusStore.focus(this),this.focusedRangeIndex=e,this.captureSelection()}focusLast(){this.focus(this.ranges.length-1)}unfocus(){this.focusedRangeIndex=null,this.focusStore.unfocus(this),this.model.selection.release(this)}captureSelection(){if(null===this.focusedRangeIndex)return;const e=this.ranges[this.focusedRangeIndex],t=this.getters.getActiveSheetId(),o=this.getters.getRangeFromSheetXC(t,e?.xc||"A1").zone;this.model.selection.capture(this,{cell:{col:o.left,row:o.top},zone:o},{handleEvent:this.handleEvent.bind(this),release:this.unfocus.bind(this)})}resetWithRanges(e){this.ranges=[],this.insertNewRange(0,e),0===this.ranges.length&&(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}setContent(e,t){this.ranges[e]={...this.ranges[e],xc:t}}insertNewRange(e,t){const o=Math.max(0,...this.ranges.map((e=>Number(e.id)))),s=new uo(this.ranges.length,this.colors);for(let t=0;t<e;t++)s.next();this.ranges.splice(e,0,...t.map(((e,t)=>({xc:e,id:o+t+1,color:s.next()}))))}setRange(e,t){const[,...o]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,o),o.length&&this.focus(e+o.length)}removeRangeByIndex(e){this.ranges.splice(e,1),null!==this.focusedRangeIndex&&this.focusLast()}inputToHighlights({xc:e,color:t}){const o=this.cleanInputs([e]).filter((e=>this.getters.isRangeValid(e))).filter((e=>this.shouldBeHighlighted(this.inputSheetId,e)));return o.map((e=>{const{sheetName:o}=qr(e);return{zone:this.getters.getRangeFromSheetXC(this.inputSheetId,e).zone,sheetId:o&&this.getters.getSheetIdByName(o)||this.inputSheetId,color:t,interactive:!0}}))}cleanInputs(e){return e.map((e=>e.split(","))).flat().map((e=>e.trim())).filter((e=>""!==e))}shouldBeHighlighted(e,t){const{sheetName:o}=qr(t),s=this.getters.getSheetIdByName(o),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(s===i||void 0===s&&i===e)}getIndex(e){const t=this.ranges.findIndex((t=>t.id===e));return t>=0?t:null}}th`
281
+ `;class qR extends t.Component{static template="o-spreadsheet-LinkEditor";static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};static components={Menu:WR};menuItems=OR.getMenuItems();link=t.useState(this.defaultState);menu=t.useState({isOpen:!1});linkEditorRef=t.useRef("linkEditor");position=cR(this.linkEditorRef);urlInput=t.useRef("urlInput");setup(){t.onMounted((()=>this.urlInput.el?.focus()))}get defaultState(){const{col:e,row:t}=this.props.cellPosition,o=this.env.model.getters.getActiveSheetId(),s=this.env.model.getters.getEvaluatedCell({sheetId:o,col:e,row:t});return s.link?{url:s.link.url,label:s.formattedValue,isUrlEditable:s.link.isUrlEditable}:{label:s.formattedValue,url:"",isUrlEditable:!0}}get menuPosition(){return{x:this.position.x+320-12-2,y:this.position.y+100}}onSpecialLink(e){const{detail:t}=e,o=Tn(t);o&&(this.link.url=o.url,this.link.label=o.label,this.link.isUrlEditable=o.isUrlEditable)}getUrlRepresentation(e){return En(e,this.env.model.getters)}openMenu(){this.menu.isOpen=!0}removeLink(){this.link.url="",this.link.isUrlEditable=!0}save(){const{col:e,row:t}=this.props.cellPosition,o=this.env.model.getters.getLocale(),s=this.link.label?Ya(this.link.label,o):this.link.url;this.env.model.dispatch("UPDATE_CELL",{col:e,row:t,sheetId:this.env.model.getters.getActiveSheetId(),content:ot(s,this.link.url)}),this.props.onClosed?.()}cancel(){this.props.onClosed?.()}onKeyDown(e){switch(e.key){case"Enter":this.link.url&&this.save(),e.stopPropagation(),e.preventDefault();break;case"Escape":this.cancel(),e.stopPropagation()}}}const ZR={onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:qR,cellCorner:"BottomLeft"})};function jR(e){const t=UE.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o,s,i){const n=t.find((e=>e.match(s.type)));if(!n)throw new Error(`No builder for this chart: ${s.type}`);return n.createChart(s,i,e)}}function YR(e){const t=UE.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o){const s=t.find((e=>e.match(o.type)));if(!s)throw new Error("No runtime builder for this chart.");return s.getChartRuntime(o,e)}}function XR(e,t){const o=UE.getAll().find((e=>e.match(t.type)));if(!o)throw new Error("Unknown chart type.");return o.validateChartDefinition(e,t)}function KR(e,t){const o=UE.getAll().find((t=>t.match(e.type)));if(!o)throw new Error("Unknown chart type.");return o.transformDefinition(e,t)}function JR(e,t){const o=t.getActiveSheetId();let s=e;const i=1===ss(e).numberOfCols;i||(s={...e,left:e.left+1});const n=qo(t.getUnboundedZone(o,s)),r=[{dataRange:n,yAxisId:"y"}],a=t.getCell({sheetId:o,col:e.left,row:e.top});if(1===gs(e)&&a?.content)return{type:"scorecard",title:{},background:a.style?.fillColor||void 0,keyValue:qo(e),baselineMode:Ie,baselineColorUp:Ee,baselineColorDown:Re};const l=!!t.getEvaluatedCellsInZone(o,{...s,bottom:s.top}).find((e=>e.type!==oi.empty&&e.type!==oi.number));let c;i||(c=qo(t.getUnboundedZone(o,{...e,right:e.left})));const h=s.right===s.left?"none":"top",d={title:{},dataSets:r,labelsAsText:!1,stacked:!1,aggregated:!1,cumulative:!1,labelRange:c,type:"line",dataSetsHaveTitle:l,legendPosition:h},u=new OE(d,o,t);if(hI(d,u.dataSets,u.labelRange,t))return d;const g=gh(t,r,o,l);return i&&pI(t,g[0]).every((e=>"string"==typeof e&&!Pi(e)))?{title:{},dataSets:[{dataRange:n}],aggregated:!0,labelRange:n,type:"pie",legendPosition:"top",dataSetsHaveTitle:!1}:{title:{},dataSets:r,labelRange:c,type:"bar",stacked:!1,aggregated:!1,dataSetsHaveTitle:l,legendPosition:h}}ny.add("ErrorToolTip",mR).add("LinkCell",wR).add("LinkEditor",ZR).add("FilterMenu",yR);var QR=Object.freeze({__proto__:null,AbstractChart:Vh,BarChart:bE,CHART_AXIS_CHOICES:Th,CHART_COMMON_OPTIONS:wy,GaugeChart:EE,LineChart:OE,MOVING_AVERAGE_TREND_LINE_XAXIS_ID:lh,PieChart:ME,ScorecardChart:Gh,TREND_LINE_XAXIS_ID:ah,WaterfallChart:LE,adaptChartRange:uh,chartFactory:jR,chartFontColor:bh,chartMutedFontColor:Sh,chartRuntimeFactory:YR,chartToImage:xy,checkDataset:yh,checkLabelRange:Ch,createBarChartRuntime:SE,createDataSets:gh,createGaugeChartRuntime:RE,createLineChartRuntime:FE,createPieChartRuntime:PE,createScorecardChartRuntime:qh,createWaterfallChartRuntime:HE,drawScoreChart:Wh,duplicateDataSetsInDuplicatedSheet:hh,duplicateLabelRangeInDuplicatedSheet:dh,formatChartDatasetValue:Eh,formatTickValue:Rh,getChartPositionAtCenterOfViewport:xh,getDefinedAxis:Ih,getPieColors:Ah,getSmartChartDefinition:JR,isTrendLineAxis:Dh,shouldRemoveFirstLabel:wh,toExcelDataset:mh,toExcelLabelRange:fh,transformChartDefinitionWithDataSetsWithZone:vh,transformDefinition:KR,truncateLabel:_h,updateChartRangesWithDataSets:ch,validateChartDefinition:XR});function eT(e,t,o=Aw){let s=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,s);1!==s.length||i||1!==gs(s[0])||(e.model.selection.selectTableAroundSelection(),s=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,s));const n=s.map((o=>e.model.getters.getRangeDataFromZone(t,o))),r=e.model.dispatch("CREATE_TABLE",{ranges:n,sheetId:t,config:o,tableType:i?"dynamic":"static"});return r.isCancelledBecause("TableOverlap")?e.raiseError(Yx.Errors.TableOverlap):r.isCancelledBecause("NonContinuousTargets")&&e.raiseError(Yx.Errors.NonContinuousTargets),r}function tT(e,t){e.model.dispatch("SET_FORMATTING_WITH_PIVOT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function oT(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}const sT=async e=>iT(e,"asValue");async function iT(e,t){const o=await e.clipboard.read();switch(o.status){case"ok":const s=Ra(o.content),i=s.data?.clipboardId,n=e.model.getters.getSelectedZones();e.model.getters.getClipboardId()!==i?Ux(e,n,s,t):Hx(e,n,t),e.model.getters.isCutOperation()&&"asValue"!==t&&await e.clipboard.write({[si.PlainText]:""});break;case"notImplemented":e.raiseError(Uo("Pasting from the context menu is not supported in this browser. Use keyboard shortcuts ctrl+c / ctrl+v instead."));break;case"permissionDenied":e.raiseError(Uo("Access to the clipboard denied by the browser. Please enable clipboard permission for this page in your browser settings."))}}const nT=(e,t)=>{if("COL"===e&&t.model.getters.getActiveRows().size>0||"ROW"===e&&t.model.getters.getActiveCols().size>0)return!1;const o=t.model.getters.getActiveSheetId(),s=t.model.getters.getElementsFromSelection(e),i=t.model.getters.checkElementsIncludeAllVisibleHeaders(o,e,s),n=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(o,e,s);return!i&&!n},rT=e=>{const t=e.model.getters.getActiveRows();let o,s;if(t.size)o=Ft([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.top,s=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",base:o,quantity:s,dimension:"ROW"})},aT=e=>{const t=e.model.getters.getActiveCols();let o,s;if(t.size)o=Ft([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.left,s=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",dimension:"COL",base:o,quantity:s})},lT=e=>{const t=e.model.getters.getActiveCols();let o,s;if(t.size)o=Ot([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.right,s=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",dimension:"COL",base:o,quantity:s})};const cT=async e=>{if(e.imageProvider){const t=e.model.getters.getActiveSheetId(),o=e.model.uuidGenerator.smallUuid(),s=await async function(e){try{return await e.imageProvider.requestImage()}catch{return void e.raiseError(Uo("An unexpected error occurred during the image transfer"))}}(e);if(!s)throw new Error("No image provider was given to the environment");const i=ZE(e.model.getters,s.size),n=function(e,t){const{x:o,y:s}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:n}=e.getActiveSheetScrollInfo(),r=e.getSheetViewDimension(),a=e.getVisibleRect(e.getActiveMainViewport()),l=Math.min(a.width,r.width-o),c=Math.min(a.height,r.height-s);return{x:o+i+Math.max(0,(l-t.width)/2),y:s+n+Math.max(0,(c-t.height)/2)}}(e.model.getters,i);e.model.dispatch("CREATE_IMAGE",{sheetId:t,figureId:o,position:n,size:i,definition:s})}},hT=e=>{let{col:t,row:o}=e.model.getters.getActivePosition();e.getStore(iR).open({col:t,row:o},"LinkEditor")},dT=e=>{const t=e.model.getters.getFirstTableInSelection();return t?.config.hasFilters||!1},uT=e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZones();return 1===e.model.getters.getTablesOverlappingZones(t,o).length},gT=e=>ps(e.model.getters.getSelectedZones()),pT=e=>1===e.model.getters.getSelectedZones().length,mT=(e,t)=>{if(!pT(e))return!1;const o="COL"===t?e.model.getters.getActiveCols():e.model.getters.getActiveRows(),s="COL"===t?e.model.getters.getActiveRows():e.model.getters.getActiveCols(),i=e.model.getters.getActiveSheetId(),n=Qo(e.model.getters.getSelectedZone(),e.model.getters.getSheetZone(i));return It(o)&&(0===s.size||n)},fT={name:e=>dT(e)?Uo("Remove selected filters"):Uo("Add filters"),isEnabled:e=>gT(e),execute:e=>dT(e)?(e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getFirstTableInSelection();o&&e.model.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{hasFilters:!1}})})(e):(e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getFirstTableInSelection();o?e.model.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{hasFilters:!0}}):eT(e,t,{...Aw,hasFilters:!0,bandedRows:!1,styleId:"TableStyleLight11"})})(e),icon:"o-spreadsheet-Icon.FILTER_ICON_ACTIVE"},vT={name:Uo("Undo"),description:"Ctrl+Z",execute:e=>e.model.dispatch("REQUEST_UNDO"),isEnabled:e=>e.model.getters.canUndo(),icon:"o-spreadsheet-Icon.UNDO"},bT={name:Uo("Redo"),description:"Ctrl+Y",execute:e=>e.model.dispatch("REQUEST_REDO"),isEnabled:e=>e.model.getters.canRedo(),icon:"o-spreadsheet-Icon.REDO"},ST={name:Uo("Copy"),description:"Ctrl+C",isReadonlyAllowed:!0,execute:async e=>{e.model.dispatch("COPY"),await e.clipboard.write(e.model.getters.getClipboardContent())},icon:"o-spreadsheet-Icon.CLIPBOARD"},yT={name:Uo("Cut"),description:"Ctrl+X",execute:async e=>{tR(e),await e.clipboard.write(e.model.getters.getClipboardContent())},icon:"o-spreadsheet-Icon.CUT"},CT={name:Uo("Paste"),description:"Ctrl+V",execute:async e=>iT(e),icon:"o-spreadsheet-Icon.PASTE"},wT={name:Uo("Paste special"),isVisible:e=>!e.model.getters.isCutOperation(),icon:"o-spreadsheet-Icon.PASTE"},xT={name:Uo("Paste as value"),description:"Ctrl+Shift+V",execute:sT},IT={name:Uo("Paste format only"),execute:e=>iT(e,"onlyFormat")},ET={name:Uo("Find and replace"),description:"Ctrl+H",isReadonlyAllowed:!0,execute:e=>{e.openSidePanel("FindAndReplace",{})},icon:"o-spreadsheet-Icon.SEARCH"},RT={name:Uo("Delete values"),execute:e=>e.model.dispatch("DELETE_CONTENT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},TT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Delete rows");let t,o;const s=e.model.getters.getActiveRows();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.top,o=s.bottom}return t===o?Uo("Delete row %s",(t+1).toString()):Uo("Delete rows %s - %s",(t+1).toString(),(o+1).toString())},execute:e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){const o=e.model.getters.getSelectedZones()[0];for(let e=o.top;e<=o.bottom;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>nT("ROW",e)},AT={...TT,isVisible:pT},_T={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Clear rows");let t,o;const s=e.model.getters.getActiveRows();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.top,o=s.bottom}return t===o?Uo("Clear row %s",(t+1).toString()):Uo("Clear rows %s - %s",(t+1).toString(),(o+1).toString())},execute:e=>{const t=e.model.getters.getActiveSheetId(),o=[...e.model.getters.getActiveRows()].map((o=>e.model.getters.getRowsZone(t,o,o)));e.model.dispatch("DELETE_CONTENT",{target:o,sheetId:e.model.getters.getActiveSheetId()})}},DT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Delete columns");let t,o;const s=e.model.getters.getActiveCols();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.left,o=s.right}return t===o?Uo("Delete column %s",vo(t)):Uo("Delete columns %s - %s",vo(t),vo(o))},execute:e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){const o=e.model.getters.getSelectedZones()[0];for(let e=o.left;e<=o.right;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>nT("COL",e)},OT={...DT,isVisible:pT},FT={name:e=>{if(e.model.getters.getSelectedZones().length>1)return Uo("Clear columns");let t,o;const s=e.model.getters.getActiveCols();if(0!==s.size)t=Ft([...s]),o=Ot([...s]);else{const s=e.model.getters.getSelectedZones()[0];t=s.left,o=s.right}return t===o?Uo("Clear column %s",vo(t)):Uo("Clear columns %s - %s",vo(t),vo(o))},execute:e=>{const t=e.model.getters.getActiveSheetId(),o=[...e.model.getters.getActiveCols()].map((o=>e.model.getters.getColsZone(t,o,o)));e.model.dispatch("DELETE_CONTENT",{target:o,sheetId:e.model.getters.getActiveSheetId()})}},MT={name:Uo("Delete cells"),isVisible:pT},PT={name:Uo("Delete cell and shift up"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"ROW"});Lx(e,o)}},NT={name:Uo("Delete cell and shift left"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"COL"});Lx(e,o)}},kT={name:Uo("Merge cells"),isEnabled:e=>!HT(e),isActive:e=>UT(e),execute:e=>function(e){if(HT(e))return;const t=e.model.getters.getSelectedZones(),o=[t[t.length-1]],s=e.model.getters.getActiveSheetId();UT(e)?e.model.dispatch("REMOVE_MERGE",{sheetId:s,target:o}):function(e,t,o){const s=e.model.dispatch("ADD_MERGE",{sheetId:t,target:o});s.isCancelledBecause("MergeInTable")?e.raiseError(oR.MergeInFilter):s.isCancelledBecause("MergeIsDestructive")&&e.askConfirmation(oR.MergeIsDestructive,(()=>{e.model.dispatch("ADD_MERGE",{sheetId:t,target:o,force:!0})}))}(e,s,o)}(e),icon:"o-spreadsheet-Icon.MERGE_CELL"},VT={name:()=>Uo("Edit table"),execute:e=>e.openSidePanel("TableSidePanel",{}),icon:"o-spreadsheet-Icon.EDIT_TABLE"},LT={name:()=>Uo("Delete table"),execute:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getTable(t);o&&e.model.dispatch("REMOVE_TABLE",{sheetId:t.sheetId,target:[o.range.zone]})},icon:"o-spreadsheet-Icon.DELETE_TABLE"};function HT(e){const t=e.model.getters.getSelectedZones(),{top:o,left:s,right:i,bottom:n}=e.model.getters.getSelectedZone(),{sheetId:r}=e.model.getters.getActivePosition(),{xSplit:a,ySplit:l}=e.model.getters.getPaneDivisions(r);return t.length>1||o===n&&s===i||s<a&&a<=i||o<l&&l<=n}function UT(e){if(!HT(e)){const t=e.model.getters.getSelectedZones(),{col:o,row:s,sheetId:i}=e.model.getters.getActivePosition(),n=e.model.getters.expandZone(i,hs({col:o,row:s}));return Qo(t[0],n)}return!1}var BT=Object.freeze({__proto__:null,clearCols:FT,clearRows:_T,copy:ST,cut:yT,deleteCellShiftLeft:NT,deleteCellShiftUp:PT,deleteCells:MT,deleteCol:OT,deleteCols:DT,deleteRow:AT,deleteRows:TT,deleteTable:LT,deleteValues:RT,editTable:VT,findAndReplace:ET,mergeCells:kT,paste:CT,pasteSpecial:wT,pasteSpecialFormat:IT,pasteSpecialValue:xT,redo:bT,undo:vT});const zT={name:e=>{const t=SA(e);return 1===t?Uo("Insert row"):Uo("Insert %s rows",t.toString())},isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW"},$T={name:e=>{const t=SA(e);return 1===t?Uo("Insert row above"):Uo("Insert %s rows above",t.toString())},execute:rT,isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW_BEFORE"},GT={...$T,name:e=>{const t=SA(e);return 1===t?Uo("Row above"):Uo("%s Rows above",t.toString())}},WT={...$T,name:e=>{const t=SA(e);return 1===t?Uo("Insert row"):Uo("Insert %s rows",t.toString())},isVisible:pT,icon:"o-spreadsheet-Icon.INSERT_ROW_BEFORE"},qT={execute:e=>{const t=e.model.getters.getActiveRows();let o,s;if(t.size)o=Ot([...t]),s=t.size;else{const t=e.model.getters.getSelectedZones()[0];o=t.bottom,s=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",base:o,quantity:s,dimension:"ROW"})},name:e=>{const t=SA(e);return 1===t?Uo("Insert row below"):Uo("Insert %s rows below",t.toString())},isVisible:e=>mT(e,"ROW"),icon:"o-spreadsheet-Icon.INSERT_ROW_AFTER"},ZT={...qT,name:e=>{const t=SA(e);return 1===t?Uo("Row below"):Uo("%s Rows below",t.toString())}},jT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column"):Uo("Insert %s columns",t.toString())},isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL"},YT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column left"):Uo("Insert %s columns left",t.toString())},execute:aT,isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL_BEFORE"},XT={...YT,name:e=>{const t=yA(e);return 1===t?Uo("Column left"):Uo("%s Columns left",t.toString())}},KT={...YT,name:e=>{const t=yA(e);return 1===t?Uo("Insert column"):Uo("Insert %s columns",t.toString())},isVisible:pT,icon:"o-spreadsheet-Icon.INSERT_COL_BEFORE"},JT={name:e=>{const t=yA(e);return 1===t?Uo("Insert column right"):Uo("Insert %s columns right",t.toString())},execute:lT,isVisible:e=>mT(e,"COL"),icon:"o-spreadsheet-Icon.INSERT_COL_AFTER"},QT={...JT,name:e=>{const t=yA(e);return 1===t?Uo("Column right"):Uo("%s Columns right",t.toString())},execute:lT},eA={name:Uo("Insert cells"),isVisible:e=>pT(e)&&0===e.model.getters.getActiveCols().size&&0===e.model.getters.getActiveRows().size,icon:"o-spreadsheet-Icon.INSERT_CELL"},tA={name:Uo("Insert cells and shift down"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"ROW"});Lx(e,o)},isVisible:e=>0===e.model.getters.getActiveRows().size&&0===e.model.getters.getActiveCols().size,icon:"o-spreadsheet-Icon.INSERT_CELL_SHIFT_DOWN"},oA={name:Uo("Insert cells and shift right"),execute:e=>{const t=e.model.getters.getSelectedZone(),o=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"COL"});Lx(e,o)},isVisible:e=>0===e.model.getters.getActiveRows().size&&0===e.model.getters.getActiveCols().size,icon:"o-spreadsheet-Icon.INSERT_CELL_SHIFT_RIGHT"},sA={name:Uo("Chart"),execute:e=>{const t=e.model.getters,o=e.model.uuidGenerator.smallUuid(),s=t.getActiveSheetId();1===gs(e.model.getters.getSelectedZone())&&e.model.selection.selectTableAroundSelection();const i={width:536,height:335},n=xh(t,i);e.model.dispatch("CREATE_CHART",{sheetId:s,id:o,position:n,size:i,definition:JR(e.model.getters.getSelectedZone(),e.model.getters)}).isSuccessful&&(e.model.dispatch("SELECT_FIGURE",{id:o}),e.openSidePanel("ChartPanel"))},icon:"o-spreadsheet-Icon.INSERT_CHART"},iA={name:Uo("Pivot table"),execute:e=>{const t=e.model.uuidGenerator.smallUuid(),o=e.model.uuidGenerator.smallUuid();e.model.dispatch("INSERT_NEW_PIVOT",{pivotId:t,newSheetId:o}).isSuccessful&&e.openSidePanel("PivotSidePanel",{pivotId:t})},icon:"o-spreadsheet-Icon.PIVOT"},nA={name:Uo("Image"),description:"Ctrl+O",execute:cT,isVisible:e=>void 0!==e.imageProvider,icon:"o-spreadsheet-Icon.INSERT_IMAGE"},rA={name:()=>Uo("Table"),execute:e=>{const t=e.model.getters.getActiveSheetId();eT(e,t).isSuccessful&&e.openSidePanel("TableSidePanel",{})},isVisible:e=>gT(e)&&!e.model.getters.getFirstTableInSelection(),icon:"o-spreadsheet-Icon.PAINT_TABLE"},aA={name:Uo("Function"),icon:"o-spreadsheet-Icon.FORMULA"},lA={name:Uo("SUM"),execute:e=>e.startCellEdition("=SUM(")},cA={name:Uo("AVERAGE"),execute:e=>e.startCellEdition("=AVERAGE(")},hA={name:Uo("COUNT"),execute:e=>e.startCellEdition("=COUNT(")},dA={name:Uo("MAX"),execute:e=>e.startCellEdition("=MAX(")},uA={name:Uo("MIN"),execute:e=>e.startCellEdition("=MIN(")},gA={name:Uo("All"),children:[function(){return bA(vS.getKeys().filter((e=>!vS.get(e).hidden)))}]};const pA={name:Uo("Link"),execute:hT,icon:"o-spreadsheet-Icon.INSERT_LINK"},mA={name:Uo("Checkbox"),execute:e=>{const t=e.model.getters.getSelectedZones(),o=e.model.getters.getActiveSheetId(),s=t.map((t=>e.model.getters.getRangeDataFromZone(o,t)));e.model.dispatch("ADD_DATA_VALIDATION_RULE",{ranges:s,sheetId:o,rule:{id:e.model.uuidGenerator.smallUuid(),criterion:{type:"isBoolean",values:[]}}})},icon:"o-spreadsheet-Icon.INSERT_CHECKBOX"},fA={name:Uo("Dropdown list"),execute:e=>{const t=e.model.getters.getSelectedZones(),o=e.model.getters.getActiveSheetId(),s=t.map((t=>e.model.getters.getRangeDataFromZone(o,t))),i=e.model.uuidGenerator.smallUuid();e.model.dispatch("ADD_DATA_VALIDATION_RULE",{ranges:s,sheetId:o,rule:{id:i,criterion:{type:"isValueInList",values:[],displayStyle:"arrow"}}});const n=e.model.getters.getDataValidationRule(o,i);n&&e.openSidePanel("DataValidationEditor",{rule:nl(n,e.model.getters.getLocale()),onExit:()=>{e.openSidePanel("DataValidation")}})},icon:"o-spreadsheet-Icon.INSERT_DROPDOWN"},vA={name:Uo("Insert sheet"),execute:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSheetIds().indexOf(t)+1,s=e.model.uuidGenerator.smallUuid();e.model.dispatch("CREATE_SHEET",{sheetId:s,position:o}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:s})},icon:"o-spreadsheet-Icon.INSERT_SHEET"};function bA(e){return e.sort().map(((e,t)=>({name:e,sequence:10*t,execute:t=>t.startCellEdition(`=${e}(`)})))}function SA(e){const t=e.model.getters.getActiveRows();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function yA(e){const t=e.model.getters.getActiveCols();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}const CA={name:Uo("See pivot properties"),execute(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);e.openSidePanel("PivotSidePanel",{pivotId:o})},isVisible:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);return o&&e.model.getters.isExistingPivot(o)||!1},isReadonlyAllowed:!0,icon:"o-spreadsheet-Icon.PIVOT"},wA={name:Uo("Ascending"),execute:e=>RA(e,"asc"),isActive:e=>TA(e,"asc")},xA={name:Uo("Descending"),execute:e=>RA(e,"desc"),isActive:e=>TA(e,"desc")},IA={name:Uo("No sorting"),execute:e=>RA(e,"none"),isActive:e=>TA(e,"none")},EA={name:Uo("Convert to individual formulas"),execute(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getCorrespondingFormulaCell(t),s=e.model.getters.getPivotIdFromPosition(t);if(!o||!s)return;const{sheetId:i,col:n,row:r}=e.model.getters.getCellPosition(o.id),a=e.model.getters.getPivot(s);a.init(),a.isValid()&&e.model.dispatch("SPLIT_PIVOT_FORMULA",{sheetId:i,col:n,row:r,pivotId:s})},isVisible:e=>{const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);if(!o)return!1;const s=e.model.getters.getPivot(o),i=e.model.getters.getEvaluatedCell(t);return s.isValid()&&e.model.getters.isSpillPivotFormula(t)&&i.type!==oi.error},icon:"o-spreadsheet-Icon.PIVOT"};function RA(e,t){const o=e.model.getters.getActivePosition(),s=e.model.getters.getPivotIdFromPosition(o),i=e.model.getters.getPivotCellFromPosition(o);if("EMPTY"===i.type||"HEADER"===i.type||!s)return;if("none"===t)return void e.model.dispatch("UPDATE_PIVOT",{pivotId:s,pivot:{...e.model.getters.getPivotCoreDefinition(s),sortedColumn:void 0}});const n=kl(e.model.getters.getPivot(s),i.domain).colDomain;e.model.dispatch("UPDATE_PIVOT",{pivotId:s,pivot:{...e.model.getters.getPivotCoreDefinition(s),sortedColumn:{domain:n,order:t,measure:i.measure}}})}function TA(e,t){const o=e.model.getters.getActivePosition(),s=e.model.getters.getPivotIdFromPosition(o),i=e.model.getters.getPivotCellFromPosition(o);if("EMPTY"===i.type||"HEADER"===i.type||!s)return!1;const n=e.model.getters.getPivot(s),r=kl(n,i.domain).colDomain,a=n.definition.sortedColumn;return"none"===t?!a:!(!a||a.order!==t)&&(a.measure===i.measure&&ft(a.domain,r))}const AA=new eR;AA.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("add_row_before",{...WT,sequence:70}).add("add_column_before",{...KT,sequence:90}).add("insert_cell",{...eA,sequence:100,separator:!0}).addChild("insert_cell_down",["insert_cell"],{...tA,name:Uo("Shift down"),sequence:10}).addChild("insert_cell_right",["insert_cell"],{...oA,name:Uo("Shift right"),sequence:20}).add("delete_row",{...AT,sequence:110,icon:"o-spreadsheet-Icon.TRASH"}).add("delete_column",{...OT,sequence:120,icon:"o-spreadsheet-Icon.TRASH"}).add("delete_cell",{...MT,sequence:130,separator:!0,icon:"o-spreadsheet-Icon.TRASH"}).addChild("delete_cell_up",["delete_cell"],{...PT,name:Uo("Shift up"),sequence:10,icon:"o-spreadsheet-Icon.DELETE_CELL_SHIFT_UP"}).addChild("delete_cell_left",["delete_cell"],{...NT,name:Uo("Shift left"),sequence:20,icon:"o-spreadsheet-Icon.DELETE_CELL_SHIFT_LEFT"}).add("edit_table",{...VT,isVisible:uT,sequence:140}).add("delete_table",{...LT,isVisible:uT,sequence:145,separator:!0}).add("insert_link",{...pA,name:e=>{const t=e.model.getters.getActiveSheetId(),{col:o,row:s}=e.model.getters.getActivePosition(),i=e.model.getters.getEvaluatedCell({sheetId:t,col:o,row:s});return i&&i.link?Uo("Edit link"):Uo("Insert link")},sequence:150,separator:!0}).add("pivot_sorting",{name:Uo("Sort pivot"),sequence:155,icon:"o-spreadsheet-Icon.SORT_RANGE",isVisible:function(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotIdFromPosition(t);if(!o||!e.model.getters.isExistingPivot(o)||!e.model.getters.isSpillPivotFormula(t))return!1;if(!e.model.getters.getPivot(o).isValid())return!1;const s=e.model.getters.getPivotCellFromPosition(t);return"VALUE"===s.type||"MEASURE_HEADER"===s.type}}).add("pivot_fix_formulas",{...EA,sequence:160}).add("pivot_properties",{...CA,sequence:170,separator:!0}).addChild("pivot_sorting_asc",["pivot_sorting"],{...wA,sequence:10}).addChild("pivot_sorting_desc",["pivot_sorting"],{...xA,sequence:20}).addChild("pivot_sorting_none",["pivot_sorting"],{...IA,sequence:30});const _A={name:Uo("Sort range"),isVisible:pT,icon:"o-spreadsheet-Icon.SORT_RANGE"},DA={name:Uo("Ascending (A ⟶ Z)"),execute:e=>{const{anchor:t,zones:o}=e.model.getters.getSelection(),s=e.model.getters.getActiveSheetId();tm(e,s,t.cell,o[0],"asc")},icon:"o-spreadsheet-Icon.SORT_ASCENDING"},OA={name:Uo("Data cleanup"),icon:"o-spreadsheet-Icon.DATA_CLEANUP"},FA={name:Uo("Remove duplicates"),execute:e=>{1===gs(e.model.getters.getSelectedZone())&&e.model.selection.selectTableAroundSelection(),e.openSidePanel("RemoveDuplicates",{})}},MA={name:Uo("Trim whitespace"),execute:e=>{e.model.dispatch("TRIM_WHITESPACE")}},PA={name:Uo("Descending (Z ⟶ A)"),execute:e=>{const{anchor:t,zones:o}=e.model.getters.getSelection(),s=e.model.getters.getActiveSheetId();tm(e,s,t.cell,o[0],"desc")},icon:"o-spreadsheet-Icon.SORT_DESCENDING"},NA={...fT},kA={...fT,isActive:e=>dT(e)},VA={name:Uo("Split text to columns"),sequence:1,execute:e=>e.openSidePanel("SplitToColumns",{}),isEnabled:e=>e.model.getters.isSingleColSelected(),icon:"o-spreadsheet-Icon.SPLIT_TEXT"},LA={id:"reinsert_dynamic_pivot",name:Uo("Re-insert dynamic pivot"),sequence:1020,icon:"o-spreadsheet-Icon.INSERT_PIVOT",children:[e=>e.model.getters.getPivotIds().map(((t,o)=>({id:`reinsert_dynamic_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:o,execute:e=>{const o=e.model.getters.getSelectedZone(),s=e.model.getters.getPivot(t).getTableStructure().export();e.model.dispatch("INSERT_PIVOT_WITH_TABLE",{pivotId:t,table:s,col:o.left,row:o.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:"dynamic"}),e.model.dispatch("REFRESH_PIVOT",{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})))],isVisible:e=>e.model.getters.getPivotIds().some((t=>e.model.getters.getPivot(t).isValid()))},HA={id:"reinsert_static_pivot",name:Uo("Re-insert static pivot"),sequence:1020,icon:"o-spreadsheet-Icon.INSERT_PIVOT",children:[e=>e.model.getters.getPivotIds().map(((t,o)=>({id:`reinsert_static_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:o,execute:e=>{const o=e.model.getters.getSelectedZone(),s=e.model.getters.getPivot(t).getTableStructure().export();e.model.dispatch("INSERT_PIVOT_WITH_TABLE",{pivotId:t,table:s,col:o.left,row:o.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:"static"}),e.model.dispatch("REFRESH_PIVOT",{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})))],isVisible:e=>e.model.getters.getPivotIds().some((t=>e.model.getters.getPivot(t).isValid()))};var UA=Object.freeze({__proto__:null,createRemoveFilter:NA,createRemoveFilterTool:kA,dataCleanup:OA,reinsertDynamicPivotMenu:LA,reinsertStaticPivotMenu:HA,removeDuplicates:FA,sortAscending:DA,sortDescending:PA,sortRange:_A,splitToColumns:VA,trimWhitespace:MA});function BA({name:e,format:t,descriptionValue:o}){const s="function"==typeof t?t:()=>t;return{name:e,description:e=>Kn(o,{format:s(e),locale:e.model.getters.getLocale()}),execute:e=>tT(e,s(e)),isActive:e=>V_(e,s(e)),format:t}}const zA={name:Uo("Automatic"),execute:e=>tT(e,""),isActive:e=>function(e){const t=e.model.getters.getActivePosition(),o=e.model.getters.getPivotCellFromPosition(t);if("VALUE"===o.type)return!e.model.getters.getEvaluatedCell(t).format;return!e.model.getters.getCell(t)?.format}(e)},$A={name:Uo("Plain text"),execute:e=>tT(e,"@"),isActive:e=>V_(e,"@")},GA=BA({name:Uo("Number"),descriptionValue:1000.12,format:"#,##0.00"}),WA={name:Uo("Format as percent"),execute:e=>tT(e,"0.00%"),icon:"o-spreadsheet-Icon.PERCENT"},qA=BA({name:Uo("Percent"),descriptionValue:.1012,format:"0.00%"}),ZA=BA({name:Uo("Currency"),descriptionValue:1000.12,format:e=>dr(e.model.config.defaultCurrency||Le)}),jA={...BA({name:Uo("Currency rounded"),descriptionValue:1e3,format:e=>pr(dr(e.model.config.defaultCurrency||Le))}),isVisible:e=>{const t=dr(e.model.config.defaultCurrency||Le);return t!==pr(t)}},YA=BA({name:Uo("Accounting"),descriptionValue:-1000.12,format:e=>ur(e.model.config.defaultCurrency||Le)}),XA=Er("2023/09/26 10:43:00 PM",fi),KA={name:Uo("Custom currency"),isVisible:e=>void 0!==e.loadCurrencies,execute:e=>e.openSidePanel("CustomCurrency",{})},JA=BA({name:Uo("Date"),descriptionValue:XA,format:e=>e.model.getters.getLocale().dateFormat}),QA=BA({name:Uo("Time"),descriptionValue:XA,format:e=>e.model.getters.getLocale().timeFormat}),e_=BA({name:Uo("Date time"),descriptionValue:XA,format:e=>ll(e.model.getters.getLocale())}),t_=BA({name:Uo("Duration"),descriptionValue:"27:51:38",format:"hhhh:mm:ss"}),o_=BA({name:Uo("Quarter"),descriptionValue:XA,format:"qq yyyy"}),s_=BA({name:Uo("Full quarter"),descriptionValue:XA,format:"qqqq yyyy"}),i_={name:Uo("More date formats"),execute:e=>e.openSidePanel("MoreFormats",{})},n_=BA({name:Uo("Full date time"),format:"dddd d mmmm yyyy hh:mm:ss a",descriptionValue:XA}),r_=BA({name:Uo("Full week day and month"),format:"dddd d mmmm yyyy",descriptionValue:XA}),a_=BA({name:Uo("Day and full month"),format:"d mmmm yyyy",descriptionValue:XA}),l_=BA({name:Uo("Short week day"),format:"ddd d mmm yyyy",descriptionValue:XA}),c_=BA({name:Uo("Day and short month"),format:"d mmm yyyy",descriptionValue:XA}),h_=BA({name:Uo("Full month"),format:"mmmm yyyy",descriptionValue:XA}),d_=BA({name:Uo("Short month"),format:"mmm yyyy",descriptionValue:XA}),u_={name:Uo("Increase decimal places"),icon:"o-spreadsheet-Icon.INCREASE_DECIMAL",execute:e=>e.model.dispatch("SET_DECIMAL",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),step:1})},g_={name:Uo("Decrease decimal places"),icon:"o-spreadsheet-Icon.DECRASE_DECIMAL",execute:e=>e.model.dispatch("SET_DECIMAL",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),step:-1})},p_={name:Uo("Bold"),description:"Ctrl+B",execute:e=>oT(e,{bold:!e.model.getters.getCurrentStyle().bold}),icon:"o-spreadsheet-Icon.BOLD",isActive:e=>!!e.model.getters.getCurrentStyle().bold},m_={name:Uo("Italic"),description:"Ctrl+I",execute:e=>oT(e,{italic:!e.model.getters.getCurrentStyle().italic}),icon:"o-spreadsheet-Icon.ITALIC",isActive:e=>!!e.model.getters.getCurrentStyle().italic},f_={name:Uo("Underline"),description:"Ctrl+U",execute:e=>oT(e,{underline:!e.model.getters.getCurrentStyle().underline}),icon:"o-spreadsheet-Icon.UNDERLINE",isActive:e=>!!e.model.getters.getCurrentStyle().underline},v_={name:Uo("Strikethrough"),execute:e=>oT(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),icon:"o-spreadsheet-Icon.STRIKE",isActive:e=>!!e.model.getters.getCurrentStyle().strikethrough},b_={name:Uo("Font size"),children:ke.map((e=>({name:e.toString(),sequence:e,id:`font_size_${e}`,execute:t=>oT(t,{fontSize:e}),isActive:t=>function(e,t){const o=e.model.getters.getCurrentStyle().fontSize||fe;return o===t}(t,e)}))),icon:"o-spreadsheet-Icon.FONT_SIZE"},S_={name:Uo("Alignment"),icon:"o-spreadsheet-Icon.ALIGN_LEFT"},y_={name:Uo("Horizontal align"),icon:e=>function(e){switch(L_(e)){case"right":return"o-spreadsheet-Icon.ALIGN_RIGHT";case"center":return"o-spreadsheet-Icon.ALIGN_CENTER";default:return"o-spreadsheet-Icon.ALIGN_LEFT"}}(e)},C_={name:Uo("Left"),description:"Ctrl+Shift+L",execute:e=>oT(e,{align:"left"}),isActive:e=>"left"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_LEFT"},w_={name:Uo("Center"),description:"Ctrl+Shift+E",execute:e=>oT(e,{align:"center"}),isActive:e=>"center"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_CENTER"},x_={name:Uo("Right"),description:"Ctrl+Shift+R",execute:e=>oT(e,{align:"right"}),isActive:e=>"right"===L_(e),icon:"o-spreadsheet-Icon.ALIGN_RIGHT"},I_={name:Uo("Vertical align"),icon:e=>function(e){switch(H_(e)){case"top":return"o-spreadsheet-Icon.ALIGN_TOP";case"middle":return"o-spreadsheet-Icon.ALIGN_MIDDLE";default:return"o-spreadsheet-Icon.ALIGN_BOTTOM"}}(e)},E_={name:Uo("Top"),execute:e=>oT(e,{verticalAlign:"top"}),isActive:e=>"top"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_TOP"},R_={name:Uo("Middle"),execute:e=>oT(e,{verticalAlign:"middle"}),isActive:e=>"middle"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_MIDDLE"},T_={name:Uo("Bottom"),execute:e=>oT(e,{verticalAlign:"bottom"}),isActive:e=>"bottom"===H_(e),icon:"o-spreadsheet-Icon.ALIGN_BOTTOM"},A_={name:Uo("Wrapping"),icon:"o-spreadsheet-Icon.WRAPPING_OVERFLOW"},__={name:Uo("Wrapping"),icon:e=>function(e){switch(U_(e)){case"wrap":return"o-spreadsheet-Icon.WRAPPING_WRAP";case"clip":return"o-spreadsheet-Icon.WRAPPING_CLIP";default:return"o-spreadsheet-Icon.WRAPPING_OVERFLOW"}}(e)},D_={name:Uo("Overflow"),execute:e=>oT(e,{wrapping:"overflow"}),isActive:e=>"overflow"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_OVERFLOW"},O_={name:Uo("Wrap"),execute:e=>oT(e,{wrapping:"wrap"}),isActive:e=>"wrap"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_WRAP"},F_={name:Uo("Clip"),execute:e=>oT(e,{wrapping:"clip"}),isActive:e=>"clip"===U_(e),icon:"o-spreadsheet-Icon.WRAPPING_CLIP"},M_={name:Uo("Text Color"),icon:"o-spreadsheet-Icon.TEXT_COLOR"},P_={name:Uo("Fill Color"),icon:"o-spreadsheet-Icon.FILL_COLOR"},N_={name:Uo("Conditional formatting"),execute:e=>{e.openSidePanel("ConditionalFormatting",{selection:e.model.getters.getSelectedZones()})},icon:"o-spreadsheet-Icon.CONDITIONAL_FORMAT"},k_={name:Uo("Clear formatting"),description:"Ctrl+<",execute:e=>e.model.dispatch("CLEAR_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()}),icon:"o-spreadsheet-Icon.CLEAR_FORMAT"};function V_(e,t){const o=e.model.getters.getActivePosition();return"VALUE"===e.model.getters.getPivotCellFromPosition(o).type?e.model.getters.getEvaluatedCell(o).format===t:e.model.getters.getCell(o)?.format===t}function L_(e){const t=e.model.getters.getCurrentStyle();if(t.align)return t.align;return e.model.getters.getActiveCell().defaultAlign}function H_(e){const t=e.model.getters.getCurrentStyle();return t.verticalAlign?t.verticalAlign:ge}function U_(e){const t=e.model.getters.getCurrentStyle();return t.wrapping?t.wrapping:pe}var B_=Object.freeze({__proto__:null,EXAMPLE_DATE:XA,clearFormat:k_,createFormatActionSpec:BA,decraseDecimalPlaces:g_,fillColor:P_,formatAlignment:S_,formatAlignmentBottom:T_,formatAlignmentCenter:w_,formatAlignmentHorizontal:y_,formatAlignmentLeft:C_,formatAlignmentMiddle:R_,formatAlignmentRight:x_,formatAlignmentTop:E_,formatAlignmentVertical:I_,formatBold:p_,formatCF:N_,formatCustomCurrency:KA,formatFontSize:b_,formatItalic:m_,formatNumberAccounting:YA,formatNumberAutomatic:zA,formatNumberCurrency:ZA,formatNumberCurrencyRounded:jA,formatNumberDate:JA,formatNumberDateTime:e_,formatNumberDayAndFullMonth:a_,formatNumberDayAndShortMonth:c_,formatNumberDuration:t_,formatNumberFullDateTime:n_,formatNumberFullMonth:h_,formatNumberFullQuarter:s_,formatNumberFullWeekDayAndMonth:r_,formatNumberNumber:GA,formatNumberPercent:qA,formatNumberPlainText:$A,formatNumberQuarter:o_,formatNumberShortMonth:d_,formatNumberShortWeekDay:l_,formatNumberTime:QA,formatPercent:WA,formatStrikethrough:v_,formatUnderline:f_,formatWrapping:__,formatWrappingClip:F_,formatWrappingIcon:A_,formatWrappingOverflow:D_,formatWrappingWrap:O_,incraseDecimalPlaces:u_,moreFormats:i_,textColor:M_});function z_(e,t,o){const s=e.model.getters.getActiveSheetId(),i="COL"===t?"FREEZE_COLUMNS":"FREEZE_ROWS";e.model.dispatch(i,{sheetId:s,quantity:o}).isCancelledBecause("MergeOverlap")&&e.raiseError(Wx)}class $_{map={};constructor(e=[]){for(const[t,o]of e)this.set(t,o)}set({sheetId:e,col:t,row:o},s){const i=this.map;i[e]||(i[e]={}),i[e][t]||(i[e][t]={}),i[e][t][o]=s}get({sheetId:e,col:t,row:o}){return this.map[e]?.[t]?.[o]}getSheet(e){return this.map[e]}has({sheetId:e,col:t,row:o}){return void 0!==this.map[e]?.[t]?.[o]}delete({sheetId:e,col:t,row:o}){delete this.map[e]?.[t]?.[o]}keys(){const e=this.map,t=[];for(const o in e)for(const s in e[o])for(const i in e[o][s])t.push({sheetId:o,col:parseInt(s),row:parseInt(i)});return t}keysForSheet(e){const t=this.map[e];if(!t)return[];const o=[];for(const s in t)for(const i in t[s])o.push({sheetId:e,col:parseInt(s),row:parseInt(i)});return o}*entries(){const e=this.map;for(const t of this.keys()){const{sheetId:o,col:s,row:i}=t;yield[t,e[o][s][i]]}}}class G_ extends Xc{mutators=["enable","disable"];isInvalidated=!1;fingerprintColors={[W_]:"#D9D9D9"};isEnabled=!1;colors=new $_;handle(e){switch(di(e)&&this.isEnabled&&(this.isInvalidated=!0),e.type){case"UNDO":case"REDO":case"ACTIVATE_SHEET":this.isEnabled&&(this.isInvalidated=!0)}}finalize(){this.isInvalidated&&(this.isInvalidated=!1,this.computeFingerprints())}enable(){this.isEnabled=!0,this.computeFingerprints()}disable(){this.isEnabled=!1,this.colors=new $_}computeFingerprints(){this.colors=new $_;const e=new $_,t=new Set,o=this.getters.getActiveSheetId(),s=this.getters.getCells(o);for(const o in s){const i=this.computeFingerprint(s[o]);if(!i)continue;t.add(i);const n=this.getters.getCellPosition(o);e.set(n,i)}this.assignColors(t);for(const[t,o]of e.entries()){const e=this.fingerprintColors[o];this.colors.set(t,e),this.colorSpreadZone(t,e)}}colorSpreadZone(e,t){const o=this.getters.getSpreadZone(e);if(!o)return;const s=e.sheetId;for(let e=o.top;e<=o.bottom;e++)for(let i=o.left;i<=o.right;i++){const o={sheetId:s,col:i,row:e};this.colors.set(o,t)}}assignColors(e){const t=new go(e.size);Object.keys(this.fingerprintColors).forEach((()=>t.next()));for(const o of e)this.fingerprintColors[o]||(this.fingerprintColors[o]=Qt(t.next(),.8))}computeFingerprint(e){const t=this.getters.getCellPosition(e.id);return e.isFormula?this.computeFormulaFingerprint(t,e):this.getLiteralFingerprint(t)}computeFormulaFingerprint(e,t){const o=t.compiledFormula.dependencies,s=e.col,i=e.row,n=this.getters.getSheetIds().indexOf(e.sheetId),r={dx:0,dy:0,dSheet:0};for(const e of o){const t=e.zone,[o,a]=e.parts,l=this.getters.getSheetIds().indexOf(e.sheetId);r.dSheet=l-n;const c=e.isFullRow&&!e.unboundedZone.hasHeader,h=e.isFullCol&&!e.unboundedZone.hasHeader,d=c||o?.colFixed?0:s,u=h||o?.rowFixed?0:i,g=!a&&o?.colFixed||a?.colFixed,p=!a&&o.rowFixed||a?.rowFixed,m=void 0===e.unboundedZone.right||g?0:s,f=void 0===e.unboundedZone.bottom||p?0:i,v=as({top:t.top-u,left:t.left-d,right:t.right-m,bottom:t.bottom-f});for(let e=v.top;e<=v.bottom;e++)for(let t=v.left;t<=v.right;t++)r.dx+=t,r.dy+=e}const a=t.compiledFormula.normalizedFormula;return l=r,Object.entries(l).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>t)).join(",")+a;var l}getLiteralFingerprint(e){switch(this.getters.getEvaluatedCell(e).type){case oi.number:case oi.boolean:return W_;case oi.text:case oi.empty:case oi.error:return}}}const W_="DATA_FINGERPRINT",q_={name:e=>{const t=e.model.getters.getElementsFromSelection("COL");let o=t[0],s=t[t.length-1];return 1===t.length?Uo("Hide column %s",vo(o).toString()):s-o+1===t.length?Uo("Hide columns %s - %s",vo(o).toString(),vo(s).toString()):Uo("Hide columns")},execute:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getElementsFromSelection("COL");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"COL",o)},icon:"o-spreadsheet-Icon.HIDE_COL"},Z_={name:Uo("Unhide columns"),execute:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("COL").some((e=>t.includes(e)))},icon:"o-spreadsheet-Icon.UNHIDE_COL"},j_={name:Uo("Unhide all columns"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"COL",elements:Array.from(Array(e.model.getters.getNumberCols(t)).keys())})},isVisible:e=>e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).length>0,icon:"o-spreadsheet-Icon.UNHIDE_COL"},Y_={name:e=>{const t=e.model.getters.getElementsFromSelection("ROW");let o=t[0],s=t[t.length-1];return 1===t.length?Uo("Hide row %s",(o+1).toString()):s-o+1===t.length?Uo("Hide rows %s - %s",(o+1).toString(),(s+1).toString()):Uo("Hide rows")},execute:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getElementsFromSelection("ROW");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"ROW",o)},icon:"o-spreadsheet-Icon.HIDE_ROW"},X_={name:Uo("Unhide rows"),execute:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("ROW").some((e=>t.includes(e)))},icon:"o-spreadsheet-Icon.UNHIDE_ROW"},K_={name:Uo("Unhide all rows"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"ROW",elements:Array.from(Array(e.model.getters.getNumberRows(t)).keys())})},isVisible:e=>e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).length>0,icon:"o-spreadsheet-Icon.UNHIDE_ROW"},J_={name:Uo("Unfreeze"),isVisible:e=>{const{xSplit:t,ySplit:o}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+o>0},execute:e=>e.model.dispatch("UNFREEZE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),icon:"o-spreadsheet-Icon.UNFREEZE"},Q_={name:Uo("Freeze"),icon:"o-spreadsheet-Icon.FREEZE"},eD={name:Uo("No rows"),execute:e=>e.model.dispatch("UNFREEZE_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit},tD={name:Uo("1 row"),execute:e=>z_(e,"ROW",1),isReadonlyAllowed:!0},oD={name:Uo("2 rows"),execute:e=>z_(e,"ROW",2),isReadonlyAllowed:!0},sD={name:Uo("Up to current row"),execute:e=>{const{bottom:t}=e.model.getters.getSelectedZone();z_(e,"ROW",t+1)},isReadonlyAllowed:!0},iD={name:Uo("No columns"),execute:e=>e.model.dispatch("UNFREEZE_COLUMNS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit},nD={name:Uo("1 column"),execute:e=>z_(e,"COL",1),isReadonlyAllowed:!0},rD={name:Uo("2 columns"),execute:e=>z_(e,"COL",2),isReadonlyAllowed:!0},aD={name:Uo("Up to current column"),execute:e=>{const{right:t}=e.model.getters.getSelectedZone();z_(e,"COL",t+1)},isReadonlyAllowed:!0},lD={name:Uo("Gridlines"),execute:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("SET_GRID_LINES_VISIBILITY",{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},isActive:e=>{const t=e.model.getters.getActiveSheetId();return e.model.getters.getGridLinesVisibility(t)}},cD={name:Uo("Irregularity map"),execute:e=>{const t=e.getStore(G_);t.isEnabled?t.disable():t.enable()},isReadonlyAllowed:!0,icon:"o-spreadsheet-Icon.IRREGULARITY_MAP"},hD={name:Uo("Formulas"),isActive:e=>e.model.getters.shouldShowFormulas(),execute:e=>e.model.dispatch("SET_FORMULA_VISIBILITY",{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0},dD={name:e=>{const t=e.model.getters.getSelectedZone();return t.left===t.right?Uo("Group column %s",vo(t.left)):Uo("Group columns %s - %s",vo(t.left),vo(t.right))},execute:e=>mD(e,"COL"),isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZone(),s=e.model.getters.getHeaderGroupsInZone(t,"COL",o);return pT(e)&&!s.some((e=>e.start===o.left&&e.end===o.right))},icon:"o-spreadsheet-Icon.GROUP_COLUMNS"},uD={name:e=>{const t=e.model.getters.getSelectedZone();return t.top===t.bottom?Uo("Group row %s",String(t.top+1)):Uo("Group rows %s - %s",String(t.top+1),String(t.bottom+1))},execute:e=>mD(e,"ROW"),isVisible:e=>{const t=e.model.getters.getActiveSheetId(),o=e.model.getters.getSelectedZone(),s=e.model.getters.getHeaderGroupsInZone(t,"ROW",o);return pT(e)&&!s.some((e=>e.start===o.top&&e.end===o.bottom))},icon:"o-spreadsheet-Icon.GROUP_ROWS"},gD={name:e=>{const t=e.model.getters.getSelectedZone();return t.left===t.right?Uo("Ungroup column %s",vo(t.left)):Uo("Ungroup columns %s - %s",vo(t.left),vo(t.right))},execute:e=>fD(e,"COL"),icon:"o-spreadsheet-Icon.UNGROUP_COLUMNS"},pD={name:e=>{const t=e.model.getters.getSelectedZone();return t.top===t.bottom?Uo("Ungroup row %s",String(t.top+1)):Uo("Ungroup rows %s - %s",String(t.top+1),String(t.bottom+1))},execute:e=>fD(e,"ROW"),icon:"o-spreadsheet-Icon.UNGROUP_ROWS"};function mD(e,t){const o=e.model.getters.getSelectedZone(),s=e.model.getters.getActiveSheetId();e.model.dispatch("GROUP_HEADERS",{sheetId:s,dimension:t,start:"COL"===t?o.left:o.top,end:"COL"===t?o.right:o.bottom})}function fD(e,t){const o=e.model.getters.getSelectedZone(),s=e.model.getters.getActiveSheetId();e.model.dispatch("UNGROUP_HEADERS",{sheetId:s,dimension:t,start:"COL"===t?o.left:o.top,end:"COL"===t?o.right:o.bottom})}function vD(e,t){const o=e.model.getters.getActiveSheetId(),s=e.model.getters.getSelectedZones();return 1===s.length&&e.model.getters.getHeaderGroupsInZone(o,t,s[0]).length>0}const bD=new eR;bD.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("sort_columns",{..._A,name:e=>e.model.getters.getActiveCols().size>1?Uo("Sort columns"):Uo("Sort column"),sequence:50,separator:!0}).addChild("sort_ascending",["sort_columns"],{...DA,sequence:10}).addChild("sort_descending",["sort_columns"],{...PA,sequence:20}).add("add_column_before",{...YT,sequence:70}).add("add_column_after",{...JT,sequence:80}).add("delete_column",{...DT,sequence:90,icon:"o-spreadsheet-Icon.TRASH"}).add("clear_column",{...FT,sequence:100,icon:"o-spreadsheet-Icon.CLEAR"}).add("hide_columns",{...q_,sequence:105,separator:!0}).add("unhide_columns",{...Z_,sequence:106,separator:!0}).add("conditional_formatting",{...N_,sequence:110,separator:!0}).add("edit_table",{...VT,isVisible:uT,sequence:120}).add("delete_table",{...LT,isVisible:uT,sequence:125,separator:!0}).add("group_columns",{sequence:150,...dD}).add("ungroup_columns",{sequence:155,...gD,isVisible:e=>vD(e,"COL")});const SD=new n;SD.add("format_number_automatic",{...zA,id:"format_number_automatic",sequence:10}).add("format_number_plain_text",{...$A,id:"format_number_plain_text",sequence:15,separator:!0}).add("format_number_number",{...GA,id:"format_number_number",sequence:20}).add("format_number_percent",{...qA,id:"format_number_percent",sequence:30,separator:!0}).add("format_number_currency",{...ZA,id:"format_number_currency",sequence:40}).add("format_number_accounting",{...YA,id:"format_number_accounting",sequence:45}).add("format_number_currency_rounded",{...jA,id:"format_number_currency_rounded",sequence:50}).add("format_custom_currency",{...KA,id:"format_custom_currency",sequence:60,separator:!0}).add("format_number_date",{...JA,id:"format_number_date",sequence:70}).add("format_number_time",{...QA,id:"format_number_time",sequence:80}).add("format_number_date_time",{...e_,id:"format_number_date_time",sequence:90}).add("format_number_duration",{...t_,id:"format_number_duration",sequence:100,separator:!0}).add("more_formats",{...i_,id:"more_formats",sequence:120});const yD=Et((e=>nr(e)?"date":e.includes("[$")?"currency":"number")),CD={name:Uo("More formats"),icon:"o-spreadsheet-Icon.NUMBER_FORMATS",children:[e=>{const t=function(e){const t=new Set(SD.getAll().map((t=>"function"==typeof t.format?t.format(e):t.format))),o=new Map;for(const s of e.model.getters.getSheetIds()){const i=e.model.getters.getEvaluatedCells(s);for(const e in i){const s=i[e];if(s.format&&!o.has(s.format)&&!t.has(s.format)){const e=yD(s.format);"date"!==e&&"currency"!==e||o.set(s.format,BA({descriptionValue:"currency"===e?1e3:XA,format:s.format,name:s.format}))}}}return[...o.values()]}(e).map((e=>({...e,sequence:110})));return t.length>0&&(t[t.length-1].separator=!0),o([...SD.getAll(),...t])}]},wD=new eR;function xD(e,t){const o=e.getActiveSheetId(),s=function(e,t){const o=[],s=e.getActiveSheetId();for(const i of e.getSheetViewVisibleCols())for(const n of e.getSheetViewVisibleRows()){const r={sheetId:s,col:i,row:n};t===e.getPivotIdFromPosition(r)&&o.push(r)}return o}(e,t);return ms(s.map(hs)).map((e=>({sheetId:o,zone:e,noFill:!0,color:a})))}wD.add("cut",{...yT,sequence:10}).add("copy",{...ST,sequence:20}).add("paste",{...CT,sequence:30}).add("paste_special",{...wT,sequence:40,separator:!0}).addChild("paste_value_only",["paste_special"],{...xT,sequence:10}).addChild("paste_format_only",["paste_special"],{...IT,sequence:20}).add("add_row_before",{...$T,sequence:50}).add("add_row_after",{...qT,sequence:60}).add("delete_row",{...TT,sequence:70,icon:"o-spreadsheet-Icon.TRASH"}).add("clear_row",{..._T,sequence:80,icon:"o-spreadsheet-Icon.CLEAR"}).add("hide_rows",{...Y_,sequence:85,separator:!0}).add("unhide_rows",{...X_,sequence:86,separator:!0}).add("conditional_formatting",{...N_,sequence:90,separator:!0}).add("group_rows",{sequence:100,...uD}).add("ungroup_rows",{sequence:110,...pD,isVisible:e=>vD(e,"ROW")});const ID=new eR;ID.add("file",{name:Uo("File"),sequence:10}).addChild("settings",["file"],{name:Uo("Settings"),sequence:100,execute:e=>e.openSidePanel("Settings"),icon:"o-spreadsheet-Icon.COG"}).add("edit",{name:Uo("Edit"),sequence:20}).addChild("undo",["edit"],{...vT,sequence:10}).addChild("redo",["edit"],{...bT,sequence:20,separator:!0}).addChild("copy",["edit"],{...ST,sequence:30}).addChild("cut",["edit"],{...yT,sequence:40}).addChild("paste",["edit"],{...CT,sequence:50}).addChild("paste_special",["edit"],{...wT,sequence:60,separator:!0}).addChild("paste_special_value",["edit","paste_special"],{...xT,sequence:10}).addChild("paste_special_format",["edit","paste_special"],{...IT,sequence:20}).addChild("edit_table",["edit"],{...VT,isVisible:uT,sequence:60}).addChild("find_and_replace",["edit"],{...ET,sequence:65,separator:!0}).addChild("delete",["edit"],{name:Uo("Delete"),icon:"o-spreadsheet-Icon.TRASH",sequence:70}).addChild("edit_delete_cell_values",["edit","delete"],{...RT,sequence:10}).addChild("edit_delete_row",["edit","delete"],{...TT,sequence:20}).addChild("edit_delete_column",["edit","delete"],{...DT,sequence:30}).addChild("edit_delete_cell_shift_up",["edit","delete"],{...PT,sequence:40}).addChild("edit_delete_cell_shift_left",["edit","delete"],{...NT,sequence:50}).addChild("edit_unhide_columns",["edit"],{...j_,sequence:80}).addChild("edit_unhide_rows",["edit"],{...K_,sequence:80}).add("view",{name:Uo("View"),sequence:30}).addChild("unfreeze_panes",["view"],{...J_,sequence:4}).addChild("freeze_panes",["view"],{...Q_,sequence:5}).addChild("unfreeze_rows",["view","freeze_panes"],{...eD,sequence:5}).addChild("freeze_first_row",["view","freeze_panes"],{...tD,sequence:10}).addChild("freeze_second_row",["view","freeze_panes"],{...oD,sequence:15}).addChild("freeze_current_row",["view","freeze_panes"],{...sD,sequence:20,separator:!0}).addChild("unfreeze_columns",["view","freeze_panes"],{...iD,sequence:25}).addChild("freeze_first_col",["view","freeze_panes"],{...nD,sequence:30}).addChild("freeze_second_col",["view","freeze_panes"],{...rD,sequence:35}).addChild("freeze_current_col",["view","freeze_panes"],{...aD,sequence:40}).addChild("group_headers",["view"],{name:Uo("Group"),sequence:15,separator:!0,icon:"o-spreadsheet-Icon.PLUS_IN_BOX",isVisible:pT}).addChild("group_columns",["view","group_headers"],{...dD,sequence:5}).addChild("ungroup_columns",["view","group_headers"],{...gD,isVisible:e=>vD(e,"COL"),sequence:10}).addChild("group_rows",["view","group_headers"],{...uD,sequence:15}).addChild("ungroup_rows",["view","group_headers"],{...pD,isVisible:e=>vD(e,"ROW"),sequence:20}).addChild("show",["view"],{name:Uo("Show"),sequence:1,icon:"o-spreadsheet-Icon.SHOW"}).addChild("view_gridlines",["view","show"],{...lD,sequence:5}).addChild("view_formulas",["view","show"],{...hD,sequence:10}).addChild("view_irregularity_map",["view"],{...cD,sequence:40,separator:!0}).add("insert",{name:Uo("Insert"),sequence:40}).addChild("insert_row",["insert"],{...zT,sequence:10}).addChild("insert_row_before",["insert","insert_row"],{...GT,sequence:10}).addChild("insert_row_after",["insert","insert_row"],{...ZT,sequence:20}).addChild("insert_column",["insert"],{...jT,sequence:20}).addChild("insert_column_before",["insert","insert_column"],{...XT,sequence:10}).addChild("insert_column_after",["insert","insert_column"],{...QT,sequence:20}).addChild("insert_cell",["insert"],{...eA,sequence:30}).addChild("insert_cell_down",["insert","insert_cell"],{...tA,name:Uo("Shift down"),sequence:10}).addChild("insert_cell_right",["insert","insert_cell"],{...oA,name:Uo("Shift right"),sequence:20}).addChild("insert_sheet",["insert"],{...vA,sequence:40,separator:!0}).addChild("insert_chart",["insert"],{...sA,sequence:50}).addChild("insert_pivot",["insert"],{...iA,sequence:52}).addChild("insert_image",["insert"],{...nA,sequence:55}).addChild("insert_table",["insert"],{...rA,sequence:57}).addChild("insert_function",["insert"],{...aA,sequence:60}).addChild("insert_function_sum",["insert","insert_function"],{...lA,sequence:0}).addChild("insert_function_average",["insert","insert_function"],{...cA,sequence:10}).addChild("insert_function_count",["insert","insert_function"],{...hA,sequence:20}).addChild("insert_function_max",["insert","insert_function"],{...dA,sequence:30}).addChild("insert_function_min",["insert","insert_function"],{...uA,sequence:40,separator:!0}).addChild("categorie_function_all",["insert","insert_function"],{...gA,sequence:50}).addChild("categories_function_list",["insert","insert_function"],(()=>{const e=vS.content;return[...new Set(vS.getAll().filter((e=>!e.hidden)).map((e=>e.category)))].filter(lt).sort().map(((t,o)=>{const s=Object.keys(e).filter((o=>e[o].category===t&&!e[o].hidden));return{name:t,children:bA(s)}}))})).addChild("insert_link",["insert"],{...pA,separator:!0,sequence:70}).addChild("insert_checkbox",["insert"],{...mA,sequence:80}).addChild("insert_dropdown",["insert"],{...fA,separator:!0,sequence:90}).add("format",{name:Uo("Format"),sequence:50}).addChild("format_number",["format"],{...CD,name:Uo("Number"),sequence:10,separator:!0}).addChild("format_bold",["format"],{...p_,sequence:20}).addChild("format_italic",["format"],{...m_,sequence:30}).addChild("format_underline",["format"],{...f_,sequence:40}).addChild("format_strikethrough",["format"],{...v_,sequence:50,separator:!0}).addChild("format_font_size",["format"],{...b_,sequence:60,separator:!0}).addChild("format_alignment",["format"],{...S_,sequence:70}).addChild("format_alignment_left",["format","format_alignment"],{...C_,sequence:10}).addChild("format_alignment_center",["format","format_alignment"],{...w_,sequence:20}).addChild("format_alignment_right",["format","format_alignment"],{...x_,sequence:30,separator:!0}).addChild("format_alignment_top",["format","format_alignment"],{...E_,sequence:40}).addChild("format_alignment_middle",["format","format_alignment"],{...R_,sequence:50}).addChild("format_alignment_bottom",["format","format_alignment"],{...T_,sequence:60,separator:!0}).addChild("format_wrapping",["format"],{...A_,sequence:80,separator:!0}).addChild("format_wrapping_overflow",["format","format_wrapping"],{...D_,sequence:10}).addChild("format_wrapping_wrap",["format","format_wrapping"],{...O_,sequence:20}).addChild("format_wrapping_clip",["format","format_wrapping"],{...F_,sequence:30}).addChild("format_cf",["format"],{...N_,sequence:90,separator:!0}).addChild("format_clearFormat",["format"],{...k_,sequence:100,separator:!0}).add("data",{name:Uo("Data"),sequence:60}).addChild("sort_range",["data"],{..._A,sequence:10,separator:!0}).addChild("sort_ascending",["data","sort_range"],{...DA,sequence:10}).addChild("sort_descending",["data","sort_range"],{...PA,sequence:20}).addChild("data_cleanup",["data"],{...OA,sequence:15}).addChild("remove_duplicates",["data","data_cleanup"],{...FA,sequence:10}).addChild("trim_whitespace",["data","data_cleanup"],{...MA,sequence:20}).addChild("split_to_columns",["data"],{...VA,sequence:20}).addChild("data_validation",["data"],{name:Uo("Data Validation"),execute:e=>{e.openSidePanel("DataValidation")},icon:"o-spreadsheet-Icon.DATA_VALIDATION",sequence:30,separator:!0}).addChild("add_remove_data_filter",["data"],{...NA,sequence:40,separator:!0}).addChild("data_sources_data",["data"],(e=>e.model.getters.getPivotIds().map(((t,o)=>{const s={get highlights(){return xD(e.model.getters,t)}};return{id:`item_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:50+o,isReadonlyAllowed:!0,execute:e=>e.openSidePanel("PivotSidePanel",{pivotId:t}),onStartHover:e=>e.getStore(xS).register(s),onStopHover:e=>e.getStore(xS).unRegister(s),icon:"o-spreadsheet-Icon.PIVOT",separator:o===e.model.getters.getPivotIds().length-1,secondaryIcon:e=>e.model.getters.isPivotUnused(t)?"o-spreadsheet-Icon.UNUSED_PIVOT_WARNING":void 0}})))).addChild("reinsert_dynamic_pivot",["data"],LA).addChild("reinsert_static_pivot",["data"],HA);const ED=new class extends n{addTransformation(e,t,o){this.content[e]||(this.content[e]=new Map);for(const s of t)this.content[e].set(s,o);return this}getTransformation(e,t){return this.content[t]&&this.content[t].get(e)}};class RD extends t.Component{static template="o_spreadsheet.Section";static props={class:{type:String,optional:!0},title:{type:String,optional:!0},slots:Object}}function TD(e,t,o=(()=>{})){const s=()=>{window.removeEventListener("pointerdown",o),window.removeEventListener("pointerup",i),window.removeEventListener("dragstart",n),window.removeEventListener("pointermove",e),window.removeEventListener("wheel",e)},i=e=>{t(e),s()};function n(e){e.preventDefault()}return window.addEventListener("pointerdown",o),window.addEventListener("pointerup",i),window.addEventListener("dragstart",n),window.addEventListener("pointermove",e),window.addEventListener("wheel",e,{passive:!1}),s}function AD(e,t,o,s=!1){let i,n,r,a,l,c=null;const h=e.model.getters,d=h.getActiveSheetId(),u=NR();let g,p;const m=o=>{if(i=o,c)return;const{x:r,y:f}=h.getMainViewportCoordinates();let{top:v,left:b,bottom:S,right:y}=h.getActiveMainViewport(),{scrollX:C,scrollY:w}=h.getActiveSheetScrollInfo();const{xSplit:x,ySplit:I}=h.getPaneDivisions(d);let E=!1,R=140;const T=i.clientX-u.left;if(g=h.getColIndex(T),"vertical"!==s){const t=n.clientX-u.left,o=h.getEdgeScrollCol(T,t,a);if(o.canEdgeScroll){let t;switch(E=!0,R=Math.min(R,o.delay),o.direction){case"reset":g=x,t=x;break;case 1:g=y,t=b+1;break;case-1:for(g=b-1;e.model.getters.isColHidden(d,g);)g--;t=g}C=h.getColDimensions(d,t).start-r}}const A=i.clientY-u.top;if(p=h.getRowIndex(A),"horizontal"!==s){const t=n.clientY-u.top,o=h.getEdgeScrollRow(A,t,l);if(o.canEdgeScroll){let t;switch(E=!0,R=Math.min(R,o.delay),o.direction){case"reset":p=I,t=I;break;case 1:p=S,t=v+o.direction;break;case-1:for(p=v-1;e.model.getters.isRowHidden(d,p);)p--;t=p}w=e.model.getters.getRowDimensions(d,t).start-f}}E||(-1===p&&(p=A<0?0:h.getNumberRows(d)-1),-1===g&&T<0&&(g=T<0?0:h.getNumberCols(d)-1)),t(g,p,i),E&&(e.model.dispatch("SET_VIEWPORT_OFFSET",{offsetX:C,offsetY:w}),c=setTimeout((()=>{c=null,m(i)}),Math.round(R))),n=i};TD(m,(()=>{clearTimeout(c),o()}),(e=>{n=e,r=e,a=r.clientX-u.left,l=r.clientY-u.top}))}function _D(){let e;const o=document.body.style.cursor;let s=[];const i=()=>{e=void 0,document.body.style.cursor=o,s.forEach((e=>e())),s=[]};t.onWillUnmount((()=>{i()}));const n=t.useState({itemsStyle:{},draggedItemId:void 0,start:(t,r)=>{n.cancel=()=>{n.draggedItemId=void 0,n.itemsStyle={},document.body.style.cursor=o,r.onCancel?.(),i()};document.body.style.cursor="move",n.draggedItemId=r.draggedItemId;const a="horizontal"===t?new MD(r.scrollableContainerEl):new FD(r.scrollableContainerEl);e=new DD({...r,container:a,onChange:()=>{document.body.style.cursor="move",e&&(Object.assign(n.itemsStyle,e.getItemStyles()),r.onChange?.())},onDragEnd:(e,t)=>{n.draggedItemId=void 0,n.itemsStyle={},document.body.style.cursor=o,r.onDragEnd?.(e,t),i()},onCancel:n.cancel});const l=TD(e.onMouseMove.bind(e),e.onMouseUp.bind(e));s.push(l);const c=e.onScroll.bind(e);r.scrollableContainerEl.addEventListener("scroll",c),s.push((()=>r.scrollableContainerEl.removeEventListener("scroll",c))),s.push(e.destroy.bind(e))},cancel:()=>{}});return n}class DD{draggedItemId;items;container;initialMousePosition;currentMousePosition;initialScroll;minPosition;maxPosition;edgeScrollIntervalId;onChange;onCancel;onDragEnd;deadZone;constructor(e){this.items=e.items.map((e=>({...e,positionAtStart:e.position}))),this.draggedItemId=e.draggedItemId,this.container=e.container,this.onChange=e.onChange,this.onCancel=e.onCancel,this.onDragEnd=e.onDragEnd,this.initialMousePosition=e.initialMousePosition,this.currentMousePosition=e.initialMousePosition,this.initialScroll=this.container.scroll,this.minPosition=this.items[0].position,this.maxPosition=this.items[this.items.length-1].position+this.items[this.items.length-1].size}getItemStyles(){const e={};for(let t of this.items)e[t.id]=this.getItemStyle(t.id);return e}getItemStyle(e){const t=this.container.cssPositionProperty,o={position:"relative"};return o[t]=(this.getItemsPositions()[e]||0)+"px",o.transition=`${t} 0.5s`,o["pointer-events"]="none",this.draggedItemId===e&&(o.transition=`${t} 0s`,o["z-index"]="1000"),ih(o)}onScroll(){this.moveDraggedItemToPosition(this.currentMousePosition+this.scrollOffset)}onMouseMove(e){if(e.button>1)return void this.onCancel();const t=this.container.getMousePosition(e);this.currentMousePosition=t,t<this.container.start||t>this.container.end?this.startEdgeScroll(t<this.container.start?-1:1):(this.stopEdgeScroll(),this.moveDraggedItemToPosition(t+this.scrollOffset))}moveDraggedItemToPosition(e){const t=this.getHoveredItemIndex(e,this.items),o=this.items.findIndex((e=>e.id===this.draggedItemId)),s=this.items[o];if(this.deadZone&&this.isInZone(e,this.deadZone))return void this.onChange(this.getItemsPositions());if(this.isInZone(e,{start:s.position,end:s.position+s.size})&&(this.deadZone=void 0),o===t)return void this.onChange(this.getItemsPositions());const i=Math.min(o,t),n=Math.max(o,t),r=Math.sign(t-o);let a=0;for(let e=i;e<=n;e++)e!==o&&(this.items[e].position-=r*s.size,a+=this.items[e].size);s.position+=r*a,this.items.sort(((e,t)=>e.position-t.position)),this.deadZone=r>0?{start:e,end:s.position}:{start:s.position+s.size,end:e},this.onChange(this.getItemsPositions())}onMouseUp(e){0!==e.button&&this.onCancel(),e.stopPropagation(),e.preventDefault();const t=this.items.findIndex((e=>e.id===this.draggedItemId));return this.onDragEnd(this.draggedItemId,t),this.stopEdgeScroll(),!1}startEdgeScroll(e){this.edgeScrollIntervalId||(this.edgeScrollIntervalId=window.setInterval((()=>{const t=3*e;this.container.scroll+=t}),5))}stopEdgeScroll(){window.clearInterval(this.edgeScrollIntervalId),this.edgeScrollIntervalId=void 0}getHoveredItemIndex(e,t){return e<=this.minPosition?0:e>=this.maxPosition?t.length-1:t.findIndex((t=>t.position+t.size>=e))}getItemsPositions(){const e={};for(let t of this.items){if(t.id!==this.draggedItemId){e[t.id]=t.position-t.positionAtStart;continue}let o=this.currentMousePosition-this.initialMousePosition+this.scrollOffset;o=Math.max(this.minPosition-t.positionAtStart,o),o=Math.min(this.maxPosition-t.positionAtStart-t.size,o),e[t.id]=o}return e}isInZone(e,t){return e>=t.start&&e<=t.end}get scrollOffset(){return this.container.scroll-this.initialScroll}destroy(){this.stopEdgeScroll()}}class OD{el;constructor(e){this.el=e}get containerRect(){return this.el.getBoundingClientRect()}}class FD extends OD{get start(){return this.containerRect.top}get end(){return this.containerRect.bottom}get cssPositionProperty(){return"top"}get scroll(){return this.el.scrollTop}set scroll(e){this.el.scrollTop=e}getMousePosition(e){return e.clientY}}class MD extends OD{get start(){return this.containerRect.left}get end(){return this.containerRect.right}get cssPositionProperty(){return"left"}get scroll(){return this.el.scrollLeft}set scroll(e){this.el.scrollLeft=e}getMousePosition(e){return e.clientX}}const PD={ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up"};function ND(e,t){const o=PD[e.key];e.shiftKey?t.resizeAnchorZone(o,$R(e)?"end":1):t.moveAnchorCell(o,$R(e)?"end":1)}class kD{mutators=["focus","unfocus"];focusedElement=null;focus(e){this.focusedElement=e}unfocus(e){this.focusedElement&&this.focusedElement===e&&(this.focusedElement=null)}}class VD extends Xc{initialRanges;inputHasSingleRange;colors;mutators=["resetWithRanges","focusById","unfocus","addEmptyRange","removeRange","changeRange","reset","confirm","updateColors"];ranges=[];focusedRangeIndex=null;inputSheetId;focusStore=this.get(kD);highlightStore=this.get(xS);constructor(e,t=[],o=!1,s=[]){if(super(e),this.initialRanges=t,this.inputHasSingleRange=o,this.colors=s,o&&t.length>1)throw new Error("Input with a single range cannot be instantiated with several range references.");this.inputSheetId=this.getters.getActiveSheetId(),this.resetWithRanges(t),this.highlightStore.register(this),this.onDispose((()=>{this.unfocus(),this.highlightStore.unRegister(this)}))}handleEvent(e){if(null===this.focusedRangeIndex)return;const t=this.inputSheetId,o=this.getters.getActiveSheetId(),s=e.options.unbounded?this.getters.getUnboundedZone(o,e.anchor.zone):e.anchor.zone,i=this.getters.getRangeFromZone(o,s);if("newAnchor"===e.mode&&!this.inputHasSingleRange&&""!==this.ranges[this.focusedRangeIndex].xc.trim()){const e=this.getters.getSelectionRangeString(i,t);this.insertNewRange(this.ranges.length,[e]),this.focusLast()}else{let e=i.parts;const o=this.ranges[this.focusedRangeIndex].xc.trim();o&&(e=this.getters.getRangeFromSheetXC(t,o).parts);const s=i.clone({parts:e}),n=this.getters.getSelectionRangeString(s,t);this.setRange(this.focusedRangeIndex,[n])}}handle(e){switch(e.type){case"ACTIVATE_SHEET":if(e.sheetIdFrom!==e.sheetIdTo){const{col:t,row:o}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:0,row:0}),s=this.getters.expandZone(e.sheetIdTo,hs({col:t,row:o}));this.model.selection.resetAnchor(this,{cell:{col:t,row:o},zone:s})}break;case"START_CHANGE_HIGHLIGHT":const t=this.getters.getActiveSheetId(),o=this.getters.expandZone(t,e.zone),s=this.ranges.findIndex((e=>{const{xc:s,sheetName:i}=qr(e.xc),n=i||this.getters.getSheetName(this.inputSheetId);if(this.getters.getSheetName(t)!==n)return!1;const r=this.getters.getRangeFromSheetXC(t,s);return Qo(this.getters.expandZone(t,r.zone),o)}));if(-1!==s){this.focus(s);const{left:e,top:t}=o;this.model.selection.resetAnchor(this,{cell:{col:e,row:t},zone:o})}}}changeRange(e,t){if(this.inputHasSingleRange&&t.split(",").length>1)return;const o=this.getIndex(e);if(null!==o&&this.focusedRangeIndex!==o&&this.focus(o),null!==o){const e=t.replace(/^,+/,"").split(",").map((e=>e.trim()));this.setRange(o,e),this.captureSelection()}}addEmptyRange(){this.inputHasSingleRange&&1===this.ranges.length||(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}removeRange(e){if(1===this.ranges.length)return;const t=this.getIndex(e);null!==t&&this.removeRangeByIndex(t)}updateColors(e){this.colors=e;const t=new uo(this.ranges.length,this.colors);this.ranges=this.ranges.map((e=>({...e,color:t.next()})))}confirm(){for(const e of this.selectionInputs)""===e.xc&&this.removeRange(e.id);const e=this.getters.getActiveSheetId();this.inputSheetId!==e&&this.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e,sheetIdTo:this.inputSheetId}),this.selectionInputValues.join()!==this.initialRanges.join()&&this.resetWithRanges(this.selectionInputValues),this.initialRanges=this.selectionInputValues,this.unfocus()}reset(){this.resetWithRanges(this.initialRanges),this.confirm()}get selectionInputValues(){return this.cleanInputs(this.ranges.map((e=>e.xc?e.xc:"")))}get selectionInputs(){return this.ranges.map(((e,t)=>Object.assign({},e,{color:this.hasMainFocus&&null!==this.focusedRangeIndex&&this.getters.isRangeValid(e.xc)?e.color:null,isFocused:this.hasMainFocus&&this.focusedRangeIndex===t,isValidRange:""===e.xc||this.getters.isRangeValid(e.xc)})))}get isResettable(){return this.initialRanges.join()!==this.ranges.map((e=>e.xc)).join()}get isConfirmable(){return this.selectionInputs.every((e=>e.isValidRange))}get hasFocus(){return this.selectionInputs.some((e=>e.isFocused))}get hasMainFocus(){const e=this.focusStore.focusedElement;return!!e&&e===this}get highlights(){return this.hasMainFocus?this.ranges.map((e=>this.inputToHighlights(e))).flat():[]}focusById(e){this.focus(this.getIndex(e))}focus(e){this.focusStore.focus(this),this.focusedRangeIndex=e,this.captureSelection()}focusLast(){this.focus(this.ranges.length-1)}unfocus(){this.focusedRangeIndex=null,this.focusStore.unfocus(this),this.model.selection.release(this)}captureSelection(){if(null===this.focusedRangeIndex)return;const e=this.ranges[this.focusedRangeIndex],t=this.getters.getActiveSheetId(),o=this.getters.getRangeFromSheetXC(t,e?.xc||"A1").zone;this.model.selection.capture(this,{cell:{col:o.left,row:o.top},zone:o},{handleEvent:this.handleEvent.bind(this),release:this.unfocus.bind(this)})}resetWithRanges(e){this.ranges=[],this.insertNewRange(0,e),0===this.ranges.length&&(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}setContent(e,t){this.ranges[e]={...this.ranges[e],xc:t}}insertNewRange(e,t){const o=Math.max(0,...this.ranges.map((e=>Number(e.id)))),s=new uo(this.ranges.length,this.colors);for(let t=0;t<e;t++)s.next();this.ranges.splice(e,0,...t.map(((e,t)=>({xc:e,id:o+t+1,color:s.next()}))))}setRange(e,t){const[,...o]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,o),o.length&&this.focus(e+o.length)}removeRangeByIndex(e){this.ranges.splice(e,1),null!==this.focusedRangeIndex&&this.focusLast()}inputToHighlights({xc:e,color:t}){const o=this.cleanInputs([e]).filter((e=>this.getters.isRangeValid(e))).filter((e=>this.shouldBeHighlighted(this.inputSheetId,e)));return o.map((e=>{const{sheetName:o}=qr(e);return{zone:this.getters.getRangeFromSheetXC(this.inputSheetId,e).zone,sheetId:o&&this.getters.getSheetIdByName(o)||this.inputSheetId,color:t,interactive:!0}}))}cleanInputs(e){return e.map((e=>e.split(","))).flat().map((e=>e.trim())).filter((e=>""!==e))}shouldBeHighlighted(e,t){const{sheetName:o}=qr(t),s=this.getters.getSheetIdByName(o),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(s===i||void 0===s&&i===e)}getIndex(e){const t=this.ranges.findIndex((t=>t.id===e));return t>=0?t:null}}th`
282
282
  .o-selection {
283
283
  .o-selection-input {
284
284
  padding: 2px 0px;
@@ -1855,7 +1855,7 @@
1855
1855
  background: #e7f2f6;
1856
1856
  }
1857
1857
  }
1858
- `;class IP extends t.Component{static template="o_spreadsheet.PivotHTMLRenderer";static components={Checkbox:fR};static props={pivotId:String,onCellClicked:Function};pivot=this.env.model.getters.getPivot(this.props.pivotId);data={columns:[],rows:[],values:[]};state=t.useState({showMissingValuesOnly:!1});setup(){const e=this.pivot.getTableStructure(),t=this.env.model.getters.getPivotFormulaId(this.props.pivotId);this.data={columns:this._buildColHeaders(t,e),rows:this._buildRowHeaders(t,e),values:this._buildValues(t,e)}}get tracker(){return this.env.model.getters.getPivotPresenceTracker(this.props.pivotId)}getTableData(){if(!this.state.showMissingValuesOnly)return this.data;const e=this.getColumnsIndexes(),t=this.getRowsIndexes();return{columns:this.buildColumnsMissing(e),rows:this.buildRowsMissing(t),values:this.buildValuesMissing(e,t)}}addRecursiveRow(e){const t=this.pivot.getTableStructure().rows,o=[...t[e].values];if(o.length<=1)return[e];o.pop();const s=t.findIndex((e=>JSON.stringify(e.values)===JSON.stringify(o)));return[e].concat(this.addRecursiveRow(s))}buildColumnsMissing(e){const t=[];for(const e of this.data.columns){const o=[];for(const t in e)for(let s=0;s<e[t].span;s++)o.push(parseInt(t,10));t.push(o)}for(let o=t[t.length-1].length;o>=0;o--)if(!e.includes(o))for(const e of t)e.splice(o,1);const o=[];for(const e in t){const s=[];let i,n=1;for(let o=0;o<t[e].length;o++)i!==t[e][o]?(void 0!==i&&s.push(Object.assign({},this.data.columns[e][i],{span:n})),i=t[e][o],n=1):n++;void 0!==i&&s.push(Object.assign({},this.data.columns[e][i],{span:n})),o.push(s)}return o}buildRowsMissing(e){return e.map((e=>this.data.rows[e]))}buildValuesMissing(e,t){const o=e.map((()=>[]));for(const s of t)for(const t in e)o[t].push(this.data.values[e[t]][s]);return o}getColumnsIndexes(){const e=new Set;for(let t=0;t<this.data.columns.length;t++){const o=[];for(let e=0;e<this.data.columns[t].length;e++)for(let s=0;s<this.data.columns[t][e].span;s++)o.push(this.data.columns[t][e]);for(let t=0;t<o.length;t++)o[t].isMissing&&e.add(t)}for(let t=0;t<this.data.columns[this.data.columns.length-1].length;t++){this.data.values[t].find((e=>e.isMissing))&&e.add(t)}return Array.from(e).sort(((e,t)=>e-t))}getRowsIndexes(){const e=new Set;for(let t=0;t<this.data.rows.length;t++){this.data.rows[t].isMissing&&e.add(t);for(const o of this.data.values)o[t].isMissing&&this.addRecursiveRow(t).forEach((t=>e.add(t)))}return Array.from(e).sort(((e,t)=>e-t))}_buildColHeaders(e,t){const o=[];for(const s of t.columns){const t=[];for(const o of s){const s=[];for(let e=0;e<o.fields.length;e++)s.push({value:o.fields[e]},{value:o.values[e]});const i=this.pivot.parseArgsToPivotDomain(s),n=this.env.model.getters.getLocale();if("measure"===i.at(-1)?.field){const{value:s,format:r}=this.pivot.getPivotMeasureValue(Gi(i.at(-1).value),i);t.push({formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(s,{format:r,locale:n}),span:o.width,isMissing:!this.tracker?.isHeaderPresent(i)})}else{const{value:s,format:r}=this.pivot.getPivotHeaderValueAndFormat(i);t.push({formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(s,{format:r,locale:n}),span:o.width,isMissing:!this.tracker?.isHeaderPresent(i)})}}o.push(t)}const s=o[o.length-1];return o[o.length-1]=s.map((e=>(e.isMissing||(e.style="color: #756f6f;"),e))),o}_buildRowHeaders(e,t){const o=[];for(const s of t.rows){const t=[];for(let e=0;e<s.fields.length;e++)t.push({value:s.fields[e]},{value:s.values[e]});const i=this.pivot.parseArgsToPivotDomain(t),{value:n,format:r}=this.pivot.getPivotHeaderValueAndFormat(i),a=this.env.model.getters.getLocale(),l={formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(n,{format:r,locale:a}),isMissing:!this.tracker?.isHeaderPresent(i)};s.indent>1&&(l.style=`padding-left: ${s.indent-10}px`),o.push(l)}return o}_buildValues(e,t){const o=[];for(const s of t.columns.at(-1)||[]){const i=[],n=Gi(s.values[s.values.length-1]);for(const o of t.rows){const t=[];for(let e=0;e<o.fields.length;e++)t.push({value:o.fields[e]},{value:o.values[e]});for(let e=0;e<s.fields.length-1;e++)t.push({value:s.fields[e]},{value:s.values[e]});const r=this.pivot.parseArgsToPivotDomain(t),{value:a,format:l}=this.pivot.getPivotCellValueAndFormat(n,r),c=this.env.model.getters.getLocale();i.push({formula:`=PIVOT.VALUE(${bc(e,r,n).join(",")})`,value:Kn(a,{format:l,locale:c}),isMissing:!this.tracker?.isValuePresent(n,r)})}o.push(i)}return o}}class EP{static getters=[];history;constructor(e){this.history=Object.assign(Object.create(e),{update:e.addChange.bind(e,this),selectCell:()=>{}})}exportForExcel(e){}allowDispatch(e){return"Success"}beforeHandle(e){}handle(e){}finalize(){}batchValidations(...e){return t=>e.map((e=>e.call(this,t))).flat()}chainValidations(...e){return t=>{for(const o of e){let e=o.call(this,t);Array.isArray(e)||(e=[e]);const s=e.filter((e=>"Success"!==e));if(s.length)return s}return"Success"}}checkValidations(e,...t){return this.batchValidations(...t)(e)}}class RP extends EP{getters;dispatch;canDispatch;constructor({getters:e,stateObserver:t,range:o,dispatch:s,canDispatch:i}){super(t),o.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.dispatch=s,this.canDispatch=i}import(e){}export(e){}adaptRanges(e,t){}garbageCollectExternalResources(){}}class TP{id;format;style;sheetId;getRangeString;isFormula=!0;compiledFormula;constructor(e,t,o,s,i,n,r){this.id=e,this.format=o,this.style=s,this.sheetId=n,this.getRangeString=r;let a=0;const l=t.tokens.map((e=>{if("REFERENCE"===e.type){const e=a++;return new AP(i,e,this.sheetId,this.getRangeString)}return e}));this.compiledFormula={...t,dependencies:i,tokens:l}}get content(){return ut(this.compiledFormula.tokens.map((e=>e.value)))}get contentWithFixedReferences(){let e=0;return ut(this.compiledFormula.tokens.map((t=>{if("REFERENCE"===t.type){const t=e++;return this.getRangeString(this.compiledFormula.dependencies[t],this.sheetId,{useBoundedReference:!0})}return t.value})))}}class AP{ranges;rangeIndex;sheetId;getRangeString;type="REFERENCE";constructor(e,t,o,s){this.ranges=e,this.rangeIndex=t,this.sheetId=o,this.getRangeString=s}get value(){const e=this.ranges[this.rangeIndex];return this.getRangeString(e,this.sheetId)}}function _P(e){return""===e?NaN:Number(e)}function DP(e){return Object.entries(e).map((([e,t])=>t?OP(parseInt(e,10),t):void 0)).filter(lt).map((e=>Ao(e.left,e.top)+":"+Ao(e.right,e.bottom)))}function OP(e,t){return{...t.zone,id:e}}class FP{getters;providers=[];constructor(e){this.getters=e}static getters=["adaptFormulaStringDependencies","copyFormulaStringForSheet","extendRange","getRangeString","getRangeFromSheetXC","createAdaptedRanges","getRangeDataFromXc","getRangeDataFromZone","getRangeFromRangeData","getRangeFromZone","getRangesUnion","recomputeRanges","isRangeValid","removeRangesSheetPrefix"];allowDispatch(e){return"MOVE_RANGES"===e.type?1===e.target.length?"Success":"InvalidZones":"Success"}beforeHandle(e){}handle(e){switch(e.type){case"REMOVE_COLUMNS_ROWS":{let t="COL"===e.dimension?"left":"top",o="COL"===e.dimension?"right":"bottom",s="COL"===e.dimension?"columns":"rows";const i=[...e.elements];i.sort(((e,t)=>t-e));const n=Ye(i);this.executeOnAllRanges((i=>{if(i.sheetId!==e.sheetId)return{changeType:"NONE"};let r=i,a="NONE";for(let e of n){const n=Ft(e),l=Ot(e);if(i.zone[t]<=n&&n<=i.zone[o]){const e=Math.min(i.zone[o],l)-n+1;a="RESIZE",r=this.createAdaptedRange(r,s,a,-e)}else if(i.zone[t]>=n&&i.zone[o]<=l)a="REMOVE",r=i.clone({...this.getInvalidRange()});else if(i.zone[t]<=l&&i.zone[o]>=l){const e=l-i.zone[t]+1;a="RESIZE",r=this.createAdaptedRange(r,s,a,-e),r=this.createAdaptedRange(r,s,"MOVE",-(i.zone[t]-n))}else n<i.zone[t]&&(a="MOVE",r=this.createAdaptedRange(r,s,a,-(l-n+1)))}return"NONE"!==a?{changeType:a,range:r}:{changeType:"NONE"}}),e.sheetId);break}case"ADD_COLUMNS_ROWS":{let t="COL"===e.dimension?"left":"top",o="COL"===e.dimension?"right":"bottom",s="COL"===e.dimension?"columns":"rows";this.executeOnAllRanges((i=>{if(i.sheetId!==e.sheetId)return{changeType:"NONE"};if("after"===e.position){if(i.zone[t]<=e.base&&e.base<i.zone[o])return{changeType:"RESIZE",range:this.createAdaptedRange(i,s,"RESIZE",e.quantity)};if(e.base<i.zone[t])return{changeType:"MOVE",range:this.createAdaptedRange(i,s,"MOVE",e.quantity)}}else{if(i.zone[t]<e.base&&e.base<=i.zone[o])return{changeType:"RESIZE",range:this.createAdaptedRange(i,s,"RESIZE",e.quantity)};if(e.base<=i.zone[t])return{changeType:"MOVE",range:this.createAdaptedRange(i,s,"MOVE",e.quantity)}}return{changeType:"NONE"}}),e.sheetId);break}case"DELETE_SHEET":this.executeOnAllRanges((t=>{if(t.sheetId!==e.sheetId)return{changeType:"NONE"};const o=this.getters.getSheetName(e.sheetId);return{changeType:"REMOVE",range:t=t.clone({...this.getInvalidRange(),invalidSheetName:o})}}),e.sheetId);break;case"RENAME_SHEET":this.executeOnAllRanges((t=>{if(t.sheetId===e.sheetId)return{changeType:"CHANGE",range:t};if(na(t.invalidSheetName,e.name)){const o=void 0,s=e.sheetId;return{changeType:"CHANGE",range:t.clone({sheetId:s,invalidSheetName:o})}}return{changeType:"NONE"}}));break;case"MOVE_RANGES":{const t=e.target[0];this.executeOnAllRanges((o=>{if(o.sheetId!==e.sheetId||!os(o.zone,t))return{changeType:"NONE"};const s=e.targetSheetId,i=e.col-t.left,n=e.row-t.top,r=this.createAdaptedRange(o,"both","MOVE",[i,n]),a=e.sheetId!==s||r.prefixSheet;return{changeType:"MOVE",range:r.clone({sheetId:s,prefixSheet:a})}}));break}}}finalize(){}verifyRangeRemoved(e){return t=>{const o=e(t);return"NONE"===o.changeType||Go(o.range.zone)?o:{range:o.range,changeType:"REMOVE"}}}createAdaptedRange(e,t,o,s){const i=ls(e.unboundedZone,t,o,s);return e.clone({zone:i})}executeOnAllRanges(e,t){const o=this.verifyRangeRemoved(e);for(const e of this.providers)e(o,t)}addRangeProvider(e){this.providers.push(e)}createAdaptedRanges(e,t,o,s){const i=e.map((e=>jr.fromRange(e,this.getters)));return i.map((e=>{if(!Go(e.zone))return e;const i=e.prefixSheet?e.sheetId:s,n={...e.unboundedZone,left:e.isFullRow&&!e.unboundedZone.hasHeader?e.unboundedZone.left:e.unboundedZone.left+(e.parts[0].colFixed?0:t),right:e.isFullRow?e.unboundedZone.right:e.unboundedZone.right+((e.parts[1]||e.parts[0]).colFixed?0:t),top:e.isFullCol&&!e.unboundedZone.hasHeader?e.unboundedZone.top:e.unboundedZone.top+(e.parts[0].rowFixed?0:o),bottom:e.isFullCol?e.unboundedZone.bottom:e.unboundedZone.bottom+((e.parts[1]||e.parts[0]).rowFixed?0:o)};return e.clone({sheetId:i,zone:n}).orderZone()}))}removeRangesSheetPrefix(e,t){return t.map((t=>{const o=jr.fromRange(t,this.getters);return o.prefixSheet&&o.sheetId===e?o.clone({prefixSheet:!1}):o}))}extendRange(e,t,o){const s=jr.fromRange(e,this.getters),i="COL"===t?s.zone.right+o:s.zone.right,n="ROW"===t?s.zone.bottom+o:s.zone.bottom,r={left:s.zone.left,top:s.zone.top,right:s.isFullRow?void 0:i,bottom:s.isFullCol?void 0:n};return new jr({...s,zone:r},this.getters.getSheetSize).orderZone()}getRangeFromSheetXC(e,t){if(!Br.test(t)||!this.getters.tryGetSheet(e))return new jr({sheetId:"",zone:{left:-1,top:-1,right:-1,bottom:-1},parts:[],invalidXc:t,prefixSheet:!1},this.getters.getSheetSize);let o,s=t,i=!1;t.includes("!")&&(({xc:s,sheetName:o}=qr(t)),o&&(i=!0));const n=zo(s),r=jr.getRangeParts(s,n),a=o&&!this.getters.getSheetIdByName(o)?o:void 0,l=this.getters.getSheetIdByName(o)||e;return new jr({prefixSheet:i,zone:n,sheetId:l,invalidSheetName:a,parts:r},this.getters.getSheetSize).orderZone()}getRangeString(e,t,o={useBoundedReference:!1,useFixedReference:!1}){if(!e)return wi.InvalidReference;if(e.invalidXc)return e.invalidXc;if(!this.getters.tryGetSheet(e.sheetId))return wi.InvalidReference;if(e.zone.bottom-e.zone.top<0||e.zone.right-e.zone.left<0)return wi.InvalidReference;if(e.zone.left<0||e.zone.top<0)return wi.InvalidReference;const s=jr.fromRange(e,this.getters);let i=s.sheetId!==t||s.invalidSheetName||s.prefixSheet,n="";if(i&&(n=s.invalidSheetName?s.invalidSheetName:We(this.getters.getSheetName(s.sheetId))),i&&!n)return wi.InvalidReference;let r=this.getRangePartString(s,0,o);return s.parts&&2===s.parts.length&&(s.zone.top!==s.zone.bottom||s.zone.left!==s.zone.right||s.parts[0].rowFixed||s.parts[0].colFixed||s.parts[1].rowFixed||s.parts[1].colFixed)&&(r+=":",r+=this.getRangePartString(s,1,o)),`${i?n+"!":""}${r}`}getRangeDataFromXc(e,t){return this.getters.getRangeFromSheetXC(e,t).rangeData}getRangeDataFromZone(e,t){return{_sheetId:e,_zone:t=this.getters.getUnboundedZone(e,t)}}getRangeFromZone(e,t){return new jr({sheetId:e,zone:t,parts:[{colFixed:!1,rowFixed:!1},{colFixed:!1,rowFixed:!1}],prefixSheet:!1},this.getters.getSheetSize)}recomputeRanges(e,t){const o=e.map((e=>jr.fromRange(e,this.getters).unboundedZone)),s=t.map((e=>jr.fromRange(e,this.getters).unboundedZone));return _o(o,s).map((t=>this.getRangeFromZone(e[0].sheetId,t)))}getRangeFromRangeData(e){const t={prefixSheet:!1,zone:e._zone,sheetId:e._sheetId,invalidSheetName:void 0,parts:[{colFixed:!1,rowFixed:!1},{colFixed:!1,rowFixed:!1}]};return new jr(t,this.getters.getSheetSize)}isRangeValid(e){if(!e)return!1;const{xc:t,sheetName:o}=qr(e);return null!==t.match(Br)&&(!o||void 0!==this.getters.getSheetIdByName(o))}getRangesUnion(e){const t=e.map((e=>jr.fromRange(e,this.getters).unboundedZone)),o=function(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:e.some((e=>void 0===e.bottom))?void 0:Math.max(...e.map((e=>e.bottom))),right:e.some((e=>void 0===e.right))?void 0:Math.max(...e.map((e=>e.right)))}}(...t);return this.getRangeFromZone(e[0].sheetId,o)}adaptFormulaStringDependencies(e,t,o){if(!t.startsWith("="))return t;const s=VS(t),i=s.dependencies.map((t=>{const s=this.getters.getRangeFromSheetXC(e,t),i=o(s);return"NONE"===i.changeType?s:i.range}));return this.getters.getFormulaString(e,s.tokens,i)}copyFormulaStringForSheet(e,t,o,s){if(!o.startsWith("="))return o;const i=VS(o),n=i.dependencies.map((o=>{const i=this.getters.getRangeFromSheetXC(e,o);return"keepSameReference"===s?i:Yr(e,t,i)}));return this.getters.getFormulaString(t,i.tokens,n)}getRangePartString(e,t,o={useBoundedReference:!1,useFixedReference:!1}){const s=e.parts[t]?.colFixed||o.useFixedReference?"$":"",i=vo(0===t?e.zone.left:e.zone.right),n=e.parts[t]?.rowFixed||o.useFixedReference?"$":"",r=String(0===t?e.zone.top+1:e.zone.bottom+1);let a="";return a=e.isFullCol&&!o.useBoundedReference?0===t&&e.unboundedZone.hasHeader?s+i+n+r:s+i:e.isFullRow&&!o.useBoundedReference?0===t&&e.unboundedZone.hasHeader?s+i+n+r:n+r:s+i+n+r,a}getInvalidRange(){return{parts:[],prefixSheet:!1,zone:{left:-1,top:-1,right:-1,bottom:-1},sheetId:"",invalidXc:wi.InvalidReference}}}function MP(e,t){if(!e)return;const o=t(e);switch(o.changeType){case"NONE":return e;case"REMOVE":return;default:return o.range}}class PP extends EP{getters;constructor({getters:e,stateObserver:t}){super(t),this.getters=e}}const NP=new n;NP.add("pivots",(e=>{for(const t of e.getPivotIds()){const o=e.getPivot(t);WF.get(o.type).onIterationEndEvaluation(o)}}));const kP=vS.mapping;function VP(e,t,o){return new LP(e,t,o).getParameters()}class LP{getters;computeCell;evalContext;rangeCache={};constructor(e,t,o){this.getters=t,this.computeCell=o,this.evalContext=Object.assign(Object.create(kP),e,{getters:this.getters,locale:this.getters.getLocale()})}getParameters(){return{referenceDenormalizer:this.refFn.bind(this),ensureRange:this.range.bind(this),evalContext:this.evalContext}}refFn(e,t){const o=this.getRangeError(e);if(o)return o;if(t){return{value:Zr(this.getters.getSheetName(e.sheetId),qo(e.zone))}}const s={sheetId:e.sheetId,col:e.zone.left,row:e.zone.top};return this.computeCell(s)}range(e){const t=this.getRangeError(e);if(t)return[[t]];const o=e.sheetId,s=e.zone,i=Jo(s,this.getters.getSheetZone(o));if(!i)return[[]];const{top:n,left:r,bottom:a,right:l}=s,c=`${o}-${n}-${r}-${a}-${l}`;if(c in this.rangeCache)return this.rangeCache[c];const h=i.bottom-i.top+1,d=i.right-i.left+1,u=new Array(d);for(let e=i.left;e<=i.right;e++){const t=e-i.left;u[t]=new Array(h);for(let s=i.top;s<=i.bottom;s++){const n=s-i.top;u[t][n]=this.computeCell({sheetId:o,col:e,row:s})}}return this.rangeCache[c]=u,u}getRangeError(e){return Go(e.zone)?e.invalidSheetName?new Ii(Uo("Invalid sheet name: %s",e.invalidSheetName)):void 0:new Ti}}function HP(e,t,o,s,i){UP(e,t,o||0,s||e.length-1,i||zP)}function UP(e,t,o,s,i){for(;s>o;){if(s-o>600){var n=s-o+1,r=t-o+1,a=Math.log(n),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(n-l)/n)*(r-n/2<0?-1:1);UP(e,t,Math.max(o,Math.floor(t-r*l/n+c)),Math.min(s,Math.floor(t+(n-r)*l/n+c)),i)}var h=e[t],d=o,u=s;for(BP(e,o,t),i(e[s],h)>0&&BP(e,o,s);d<u;){for(BP(e,d,u),d++,u--;i(e[d],h)<0;)d++;for(;i(e[u],h)>0;)u--}0===i(e[o],h)?BP(e,o,u):BP(e,++u,s),u<=t&&(o=u+1),t<=u&&(s=u-1)}}function BP(e,t,o){var s=e[t];e[t]=e[o],e[o]=s}function zP(e,t){return e<t?-1:e>t?1:0}class $P{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(e){let t=this.data;const o=[];if(!eN(e,t))return o;const s=this.toBBox,i=[];for(;t;){for(let n=0;n<t.children.length;n++){const r=t.children[n],a=t.leaf?s(r):r;eN(e,a)&&(t.leaf?o.push(r):QP(e,a)?this._all(r,o):i.push(r))}t=i.pop()}return o}collides(e){let t=this.data;if(!eN(e,t))return!1;const o=[];for(;t;){for(let s=0;s<t.children.length;s++){const i=t.children[s],n=t.leaf?this.toBBox(i):i;if(eN(e,n)){if(t.leaf||QP(e,n))return!0;o.push(i)}}t=o.pop()}return!1}load(e){if(!e||!e.length)return this;if(e.length<this._minEntries){for(let t=0;t<e.length;t++)this.insert(e[t]);return this}let t=this._build(e.slice(),0,e.length-1,0);if(this.data.children.length)if(this.data.height===t.height)this._splitRoot(this.data,t);else{if(this.data.height<t.height){const e=this.data;this.data=t,t=e}this._insert(t,this.data.height-t.height-1,!0)}else this.data=t;return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=tN([]),this}remove(e,t){if(!e)return this;let o=this.data;const s=this.toBBox(e),i=[],n=[];let r,a,l;for(;o||i.length;){if(o||(o=i.pop(),a=i[i.length-1],r=n.pop(),l=!0),o.leaf){const s=GP(e,o.children,t);if(-1!==s)return o.children.splice(s,1),i.push(o),this._condense(i),this}l||o.leaf||!QP(o,s)?a?(r++,o=a.children[r],l=!1):o=null:(i.push(o),n.push(r),r=0,a=o,o=o.children[0])}return this}toBBox(e){return e}compareMinX(e,t){return e.minX-t.minX}compareMinY(e,t){return e.minY-t.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,t){const o=[];for(;e;)e.leaf?t.push(...e.children):o.push(...e.children),e=o.pop();return t}_build(e,t,o,s){const i=o-t+1;let n,r=this._maxEntries;if(i<=r)return n=tN(e.slice(t,o+1)),WP(n,this.toBBox),n;s||(s=Math.ceil(Math.log(i)/Math.log(r)),r=Math.ceil(i/Math.pow(r,s-1))),n=tN([]),n.leaf=!1,n.height=s;const a=Math.ceil(i/r),l=a*Math.ceil(Math.sqrt(r));oN(e,t,o,l,this.compareMinX);for(let i=t;i<=o;i+=l){const t=Math.min(i+l-1,o);oN(e,i,t,a,this.compareMinY);for(let o=i;o<=t;o+=a){const i=Math.min(o+a-1,t);n.children.push(this._build(e,o,i,s-1))}}return WP(n,this.toBBox),n}_chooseSubtree(e,t,o,s){for(;s.push(t),!t.leaf&&s.length-1!==o;){let o,s=1/0,r=1/0;for(let a=0;a<t.children.length;a++){const l=t.children[a],c=XP(l),h=(i=e,n=l,(Math.max(n.maxX,i.maxX)-Math.min(n.minX,i.minX))*(Math.max(n.maxY,i.maxY)-Math.min(n.minY,i.minY))-c);h<r?(r=h,s=c<s?c:s,o=l):h===r&&c<s&&(s=c,o=l)}t=o||t.children[0]}var i,n;return t}_insert(e,t,o){const s=o?e:this.toBBox(e),i=[],n=this._chooseSubtree(s,this.data,t,i);for(n.children.push(e),ZP(n,s);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(s,i,t)}_split(e,t){const o=e[t],s=o.children.length,i=this._minEntries;this._chooseSplitAxis(o,i,s);const n=this._chooseSplitIndex(o,i,s),r=tN(o.children.splice(n,o.children.length-n));r.height=o.height,r.leaf=o.leaf,WP(o,this.toBBox),WP(r,this.toBBox),t?e[t-1].children.push(r):this._splitRoot(o,r)}_splitRoot(e,t){this.data=tN([e,t]),this.data.height=e.height+1,this.data.leaf=!1,WP(this.data,this.toBBox)}_chooseSplitIndex(e,t,o){let s,i=1/0,n=1/0;for(let r=t;r<=o-t;r++){const t=qP(e,0,r,this.toBBox),a=qP(e,r,o,this.toBBox),l=JP(t,a),c=XP(t)+XP(a);l<i?(i=l,s=r,n=c<n?c:n):l===i&&c<n&&(n=c,s=r)}return s||o-t}_chooseSplitAxis(e,t,o){const s=e.leaf?this.compareMinX:jP,i=e.leaf?this.compareMinY:YP;this._allDistMargin(e,t,o,s)<this._allDistMargin(e,t,o,i)&&e.children.sort(s)}_allDistMargin(e,t,o,s){e.children.sort(s);const i=this.toBBox,n=qP(e,0,t,i),r=qP(e,o-t,o,i);let a=KP(n)+KP(r);for(let s=t;s<o-t;s++){const t=e.children[s];ZP(n,e.leaf?i(t):t),a+=KP(n)}for(let s=o-t-1;s>=t;s--){const t=e.children[s];ZP(r,e.leaf?i(t):t),a+=KP(r)}return a}_adjustParentBBoxes(e,t,o){for(let s=o;s>=0;s--)ZP(t[s],e)}_condense(e){for(let t,o=e.length-1;o>=0;o--)0===e[o].children.length?o>0?(t=e[o-1].children,t.splice(t.indexOf(e[o]),1)):this.clear():WP(e[o],this.toBBox)}}function GP(e,t,o){if(!o)return t.indexOf(e);for(let s=0;s<t.length;s++)if(o(e,t[s]))return s;return-1}function WP(e,t){qP(e,0,e.children.length,t,e)}function qP(e,t,o,s,i){i||(i=tN(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let n=t;n<o;n++){const t=e.children[n];ZP(i,e.leaf?s(t):t)}return i}function ZP(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function jP(e,t){return e.minX-t.minX}function YP(e,t){return e.minY-t.minY}function XP(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function KP(e){return e.maxX-e.minX+(e.maxY-e.minY)}function JP(e,t){const o=Math.max(e.minX,t.minX),s=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),n=Math.min(e.maxY,t.maxY);return Math.max(0,i-o)*Math.max(0,n-s)}function QP(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function eN(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function tN(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function oN(e,t,o,s,i){const n=[t,o];for(;n.length;){if((o=n.pop())-(t=n.pop())<=s)continue;const r=t+Math.ceil((o-t)/s/2)*s;HP(e,r,t,o,i),n.push(t,r,r,o)}}class sN{rTrees={};constructor(e=[]){const t={};for(const o of e){const e=o.boundingBox.sheetId;t[e]||(t[e]=[]),t[e].push(o)}for(const e in t)this.rTrees[e]=new iN,this.rTrees[e].load(t[e])}insert(e){const t=e.boundingBox.sheetId;this.rTrees[t]||(this.rTrees[t]=new iN),this.rTrees[t].insert(e)}search({zone:e,sheetId:t}){return this.rTrees[t]?this.rTrees[t].search({minX:e.left,minY:e.top,maxX:e.right,maxY:e.bottom}):[]}remove(e){const t=e.boundingBox.sheetId;this.rTrees[t]&&this.rTrees[t].remove(e,this.rtreeItemComparer)}rtreeItemComparer(e,t){return e.data==t.data&&e.boundingBox.sheetId===t.boundingBox.sheetId&&e.boundingBox?.zone.left===t.boundingBox.zone.left&&e.boundingBox?.zone.top===t.boundingBox.zone.top&&e.boundingBox?.zone.right===t.boundingBox.zone.right&&e.boundingBox?.zone.bottom===t.boundingBox.zone.bottom}}class iN extends $P{toBBox({boundingBox:e}){const t=e.zone;return{minX:t.left,minY:t.top,maxX:t.right,maxY:t.bottom}}compareMinX(e,t){return e.boundingBox.zone.left-t.boundingBox.zone.left}compareMinY(e,t){return e.boundingBox.zone.top-t.boundingBox.zone.top}}class nN{createEmptyPositionSet;dependencies=new $_;rTree;constructor(e,t=[]){this.createEmptyPositionSet=e,this.rTree=new sN(t)}removeAllDependencies(e){const t=this.dependencies.get(e);if(t){for(const e of t)this.rTree.remove(e);this.dependencies.delete(e)}}addDependencies(e,t){const o=t.map((({sheetId:t,zone:o})=>({data:e,boundingBox:{zone:o,sheetId:t}})));for(const e of o)this.rTree.insert(e);const s=this.dependencies.get(e);s?s.push(...o):this.dependencies.set(e,o)}getCellsDependingOn(e){const t=this.createEmptyPositionSet(),o=Array.from(e).reverse();for(;o.length>0;){const e=o.pop(),s=e.zone,i=e.sheetId;for(let e=s.left;e<=s.right;e++)for(let o=s.top;o<=s.bottom;o++)t.add({sheetId:i,col:e,row:o});const n=this.rTree.search(e).map((e=>e.data)),r={};for(const e of n)t.has(e)||(r[e.sheetId]||(r[e.sheetId]=[]),r[e.sheetId].push(hs(e)));for(const e in r){const t=_o(r[e],[]);o.push(...t.map((t=>({sheetId:e,zone:t}))))}}for(const o of e){const e=o.zone,s=o.sheetId;for(let o=e.left;o<=e.right;o++)for(let i=e.top;i<=e.bottom;i++)t.delete({sheetId:s,col:o,row:i})}return t}}class rN extends Uint32Array{columnOffset=0;cols=0;rows=0;static create(e,t){const o=function(e){if(0===e)return-1/0;if(e<0)return NaN;return 32-Math.clz32(--e)}(t),s=new this((e<<o>>5)+1);return s.columnOffset=o,s.cols=t,s.rows=e,s}getValue(e){const[t,o]=this.getCoordinates(e);return this[t]>>o&1}setValue(e,t){const[o,s]=this.getCoordinates(e),i=0===(this[o]>>s&1)&&1===t;return this[o]=this[o]&~(1<<s)|t<<s,i}isEmpty(){return!this.some((e=>0!==e))}fillAllPositions(){this.fill(-1>>>0)}clear(){this.fill(0)}getCoordinates(e){const{row:t,col:o}=e,s=(t<<this.columnOffset)+o,i=s>>5;return[i,s-(i<<5)]}}class aN{sheets={};insertions=[];maxSize=0;constructor(e){for(const t in e){const o=e[t].cols,s=e[t].rows;this.maxSize+=o*s,this.sheets[t]=rN.create(s,o)}}add(e){this.sheets[e.sheetId].setValue(e,1)&&this.insertions.push(e)}addMany(e){for(const t of e)this.add(t)}delete(e){this.sheets[e.sheetId].setValue(e,0)}deleteMany(e){for(const t of e)this.delete(t)}has(e){return 1===this.sheets[e.sheetId].getValue(e)}clear(){const e=[...this];this.insertions=[];for(const e in this.sheets)this.sheets[e].clear();return e}isEmpty(){if(0===this.insertions.length)return!0;for(const e in this.sheets)if(!this.sheets[e].isEmpty())return!1;return!0}fillAllPositions(){this.insertions=new Array(this.maxSize);let e=0;for(const t in this.sheets){const o=this.sheets[t];o.fillAllPositions();for(let s=0;s<o.rows;s++)for(let i=0;i<o.cols;i++)this.insertions[e++]={sheetId:t,row:s,col:i}}}*[Symbol.iterator](){for(const e of this.insertions)1===this.sheets[e.sheetId].getValue(e)&&(yield e)}}class lN{resultsToArrayFormulas=new sN;arrayFormulasToResults=new $_;searchFormulaPositionsSpreadingOn(e,t){return this.resultsToArrayFormulas.search({sheetId:e,zone:t}).map((e=>e.data))||cN}getArrayResultZone(e){return this.arrayFormulasToResults.get(e)}removeNode(e){this.resultsToArrayFormulas.remove({boundingBox:{sheetId:e.sheetId,zone:hs(e)},data:e}),this.arrayFormulasToResults.delete(e)}addRelation({arrayFormulaPosition:e,resultZone:t}){this.resultsToArrayFormulas.insert({boundingBox:{sheetId:e.sheetId,zone:t},data:e}),this.arrayFormulasToResults.set(e,t)}isArrayFormula(e){return this.arrayFormulasToResults.has(e)}}const cN=[],hN=Object.freeze(Rr(new Ri)),dN=Object.freeze(Rr({value:null}));class uN{context;getters;compilationParams;evaluatedCells=new $_;formulaDependencies=gt(new nN(this.createEmptyPositionSet.bind(this)));blockedArrayFormulas=new aN({});spreadingRelations=new lN;constructor(e,t){this.context=e,this.getters=t,this.compilationParams=VP(this.context,this.getters,this.computeAndSave.bind(this))}getEvaluatedCell(e){return this.evaluatedCells.get(e)||dN}getSpreadZone(e,t={ignoreSpillError:!1}){const o=this.spreadingRelations.getArrayResultZone(e);if(!o)return;const s=this.evaluatedCells.get(e);return s?.type!==oi.error||t.ignoreSpillError&&s?.value===wi.SpilledBlocked?Ko(hs(e),o):hs(e)}getEvaluatedPositions(){return this.evaluatedCells.keys()}getEvaluatedPositionsInSheet(e){return this.evaluatedCells.keysForSheet(e)}getArrayFormulaSpreadingOn(e){if(this.getEvaluatedCell(e).type===oi.empty)return;const t=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e.sheetId,hs(e));return Array.from(t).find((e=>!this.blockedArrayFormulas.has(e)))}updateDependencies(e){this.formulaDependencies().removeAllDependencies(e);const t=this.getDirectDependencies(e);this.formulaDependencies().addDependencies(e,t)}addDependencies(e,t){this.formulaDependencies().addDependencies(e,t);for(const e of t){const t=e.sheetId,{left:o,bottom:s,right:i,top:n}=e.zone;for(let e=o;e<=i;e++)for(let o=n;o<=s;o++)this.computeAndSave({sheetId:t,col:e,row:o})}}updateCompilationParameters(){this.compilationParams=VP(this.context,this.getters,this.computeAndSave.bind(this)),this.compilationParams.evalContext.updateDependencies=this.updateDependencies.bind(this),this.compilationParams.evalContext.addDependencies=this.addDependencies.bind(this),this.compilationParams.evalContext.lookupCaches={forwardSearch:new Map,reverseSearch:new Map}}createEmptyPositionSet(){const e={};for(const t of this.getters.getSheetIds())e[t]={rows:this.getters.getNumberRows(t),cols:this.getters.getNumberCols(t)};return new aN(e)}evaluateCells(e){const t=performance.now(),o=this.createEmptyPositionSet();o.addMany(e);const s=this.getArrayFormulasImpactedByChangesOf(e);o.addMany(this.getCellsDependingOn(e)),o.addMany(s),o.addMany(this.getCellsDependingOn(s)),this.evaluate(o),console.debug("evaluate Cells",performance.now()-t,"ms")}getArrayFormulasImpactedByChangesOf(e){const t=this.createEmptyPositionSet();for(const o of e){const e=this.getters.getCell(o)?.content,s=this.getArrayFormulaSpreadingOn(o);void 0!==s&&t.add(s),e||t.add(o)}const o=ns(t);for(const e in o)for(const s of o[e])t.addMany(this.getArrayFormulasBlockedBy(e,s));return t}buildDependencyGraph(){this.blockedArrayFormulas=this.createEmptyPositionSet(),this.spreadingRelations=new lN,this.formulaDependencies=gt((()=>{const e=[...this.getAllCells()].flatMap((e=>this.getDirectDependencies(e).filter((e=>!e.invalidSheetName&&!e.invalidXc)).map((t=>({data:e,boundingBox:{zone:t.zone,sheetId:t.sheetId}})))));return new nN(this.createEmptyPositionSet.bind(this),e)}))}evaluateAllCells(){const e=performance.now();this.evaluatedCells=new $_,this.evaluate(this.getAllCells()),console.debug("evaluate all cells",performance.now()-e,"ms")}evaluateFormulaResult(e,t){const o=VS(t),s=o.dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t)));return this.updateCompilationParameters(),this.evaluateCompiledFormula(e,{...o,dependencies:s})}evaluateCompiledFormula(e,t,o){try{const s=mN(t,this.compilationParams,e,this.buildSafeGetSymbolValue(o),this.compilationParams.evalContext.__originCellPosition);return bi(s)?nn(s,pN):pN(s)}catch(e){return bS(e,"")}}getAllCells(){const e=this.createEmptyPositionSet();return e.fillAllPositions(),e}getArrayFormulasBlockedBy(e,t){const o=this.createEmptyPositionSet(),s=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e,t);o.addMany(s);const i=[...s].filter((e=>!this.blockedArrayFormulas.has(e)));return i.length&&o.deleteMany(i),o.addMany(this.getCellsDependingOn(o)),o}nextPositionsToUpdate=new aN({});cellsBeingComputed=new Set;symbolsBeingComputed=new Set;evaluate(e){this.cellsBeingComputed=new Set,this.nextPositionsToUpdate=e;let t=0;for(;!this.nextPositionsToUpdate.isEmpty()&&t++<30;){this.updateCompilationParameters();const e=this.nextPositionsToUpdate.clear();for(let t=0;t<e.length;++t)this.evaluatedCells.delete(e[t]);for(let t=0;t<e.length;++t){const o=e[t];if(this.nextPositionsToUpdate.has(o))continue;const s=this.computeCell(o);s!==dN&&this.evaluatedCells.set(o,s)}NP.getAll().forEach((e=>e(this.getters)))}t>=30&&console.warn("Maximum iteration reached while evaluating cells")}computeCell(e){const t=this.evaluatedCells.get(e);if(t)return t;this.blockedArrayFormulas.has(e)||this.invalidateSpreading(e),this.spreadingRelations.isArrayFormula(e)&&this.spreadingRelations.removeNode(e);const o=this.getters.getCell(e);if(void 0===o)return dN;const s=o.id,i={format:o.format,locale:this.getters.getLocale()};try{return this.cellsBeingComputed.has(s)?hN:(this.cellsBeingComputed.add(s),o.isFormula?this.computeFormulaCell(e,o):Ir(o,i))}catch(e){return e.value=e?.value||wi.GenericError,e.message=e?.message||yS,Rr(e)}finally{this.cellsBeingComputed.delete(s)}}computeAndSave(e){const t=this.computeCell(e);return this.evaluatedCells.has(e)||this.evaluatedCells.set(e,t),t}computeFormulaCell(e,t){const o=mN(t.compiledFormula,this.compilationParams,e.sheetId,this.buildSafeGetSymbolValue(),e);if(!bi(o)){const s=Rr(pN(o),this.getters.getLocale(),t);return s.type===oi.error&&(s.errorOriginPosition=o.errorOriginPosition??e),s}this.assertSheetHasEnoughSpaceToSpreadFormulaResult(e,o);const s=o.length,i=o[0].length,n={top:e.row,bottom:e.row+i-1,left:e.col,right:e.col+s-1};return this.spreadingRelations.addRelation({resultZone:n,arrayFormulaPosition:e}),this.assertNoMergedCellsInSpreadZone(e,o),gN(s,i,this.checkCollision(e)),gN(s,i,this.spreadValues(e,o)),this.invalidatePositionsDependingOnSpread(e.sheetId,n),Rr(pN(o[0][0]),this.getters.getLocale(),t)}invalidatePositionsDependingOnSpread(e,t){const o=this.formulaDependencies().getCellsDependingOn(function(e){const{top:t,left:o,bottom:s,right:i}=e;if(1===gs(e))return[];const n={top:t+1,bottom:s,left:o,right:o};if(i===o)return[n];const r={top:t,bottom:s,left:o+1,right:i};return t===s?[r]:[n,r]}(t).map((t=>({sheetId:e,zone:t}))));o.delete({sheetId:e,col:t.left,row:t.top}),this.nextPositionsToUpdate.addMany(o)}assertSheetHasEnoughSpaceToSpreadFormulaResult({sheetId:e,col:t,row:o},s){const i=this.getters.getNumberCols(e),n=this.getters.getNumberRows(e),r=t+s.length<=i,a=o+s[0].length<=n;if(!r||!a){if(r)throw new Di(Uo("Result couldn't be automatically expanded. Please insert more rows."));if(a)throw new Di(Uo("Result couldn't be automatically expanded. Please insert more columns."));throw new Di(Uo("Result couldn't be automatically expanded. Please insert more columns and rows."))}}assertNoMergedCellsInSpreadZone({sheetId:e,col:t,row:o},s){if(0!==this.getters.getMergesInZone(e,{top:o,bottom:o+s[0].length-1,left:t,right:t+s.length-1}).length)throw new Di(Uo("Merged cells found in the spill zone. Please unmerge cells before using array formulas."))}checkCollision(e){const{sheetId:t,col:o,row:s}=e;return(i,n)=>{const r={sheetId:t,col:i+o,row:n+s},a=this.getters.getCell(r);if(a?.content||this.getters.getEvaluatedCell(r).type!==oi.empty)throw this.blockedArrayFormulas.add(e),new Di(Uo("Array result was not expanded because it would overwrite data in %s.",Ao(r.col,r.row)));this.blockedArrayFormulas.delete(e)}}spreadValues({sheetId:e,col:t,row:o},s){return(i,n)=>{const r={sheetId:e,col:i+t,row:n+o},a=this.getters.getCell(r),l=Rr(pN(s[i][n]),this.getters.getLocale(),a);l.type===oi.error&&(l.errorOriginPosition=s[i][n].errorOriginPosition??r),this.evaluatedCells.set(r,l)}}invalidateSpreading(e){const t=this.spreadingRelations.getArrayResultZone(e);if(!t)return;for(let o=t.left;o<=t.right;o++)for(let s=t.top;s<=t.bottom;s++){const t={sheetId:e.sheetId,col:o,row:s},i=this.getters.getCell(t)?.content;i||this.evaluatedCells.delete(t)}const o=e.sheetId;this.invalidatePositionsDependingOnSpread(o,t),this.nextPositionsToUpdate.addMany(this.getArrayFormulasBlockedBy(o,t))}buildSafeGetSymbolValue(e){return t=>{if(this.symbolsBeingComputed.has(t))return hN;this.symbolsBeingComputed.add(t);try{const o=e?.(t);return o||new Ei(Uo("Invalid formula"))}finally{this.symbolsBeingComputed.delete(t)}}}getDirectDependencies(e){const t=this.getters.getCell(e);return t?.isFormula?t.compiledFormula.dependencies:[]}getCellsDependingOn(e){const t=[],o=ns(e);for(const e in o)t.push(...o[e].map((t=>({sheetId:e,zone:t}))));return this.formulaDependencies().getCellsDependingOn(t)}}function gN(e,t,o){for(let s=0;s<e;++s)for(let e=0;e<t;++e)0===s&&0===e||o(s,e)}function pN(e){return null===e.value||void 0===e.value?{...e,value:0}:e}function mN(e,t,o,s,i){return t.evalContext.__originCellPosition=i,t.evalContext.__originSheetId=o,e.execute(e.dependencies,t.referenceDenormalizer,t.ensureRange,s,t.evalContext)}const fN=/"(#[0-9a-fA-F]{6})"/g;const vN={isValid:!0};const bN="0.00%";function SN(e){return class extends e{getters;cache={};rankAsc={};rankDesc={};runningTotal={};runningTotalInPercent={};constructor(e,t){super(e,t),this.getters=t.getters}init(e){this.cache={},this.rankAsc={},this.rankDesc={},this.runningTotal={},this.runningTotalInPercent={},super.init(e)}getPivotCellValueAndFormat(e,t){return this.getMeasureDisplayValue(e,t)}_getPivotCellValueAndFormat(e,t){const o=`${e}-${t.map((e=>e.field+"="+e.value)).join(",")}`;if(this.cache[o])return this.cache[o];const s=this.getMeasure(e),i=s.computedBy?this.computeMeasure(s,t):super.getPivotCellValueAndFormat(e,t);return s.format?this.cache[o]={...i,format:s.format}:this.cache[o]=i,this.cache[o]}computeMeasure(e,t){if(!e.computedBy)return{value:0};const{columns:o,rows:s}=super.definition;if(o.length+s.length!==t.length){const o=this.getValuesToAggregate(e,t),s=uc[e.aggregator];if(!s)return{value:0};try{return s([o],this.getters.getLocale())}catch(t){return bS(t,e.aggregator.toUpperCase())}}const i=this.getters.getMeasureCompiledFormula(e),n=this.getters.evaluateCompiledFormula(e.computedBy.sheetId,i,(e=>{const{columns:o,rows:s}=this.definition;if(o.find((t=>t.nameWithGranularity===e))){const{colDomain:o}=kl(this,t),s=o.findIndex((t=>t.field===e));return this.getPivotHeaderValueAndFormat(o.slice(0,s+1))}if(s.find((t=>t.nameWithGranularity===e))){const{rowDomain:o}=kl(this,t),s=o.findIndex((t=>t.field===e));return this.getPivotHeaderValueAndFormat(o.slice(0,s+1))}return this.getPivotCellValueAndFormat(e,t)}));return bi(n)?n[0][0]:n}getValuesToAggregate(e,t){const{rowDomain:o,colDomain:s}=kl(this,t),i=super.getTableStructure(),n=[];if(0===s.length&&o.length<this.definition.rows.length&&this.definition.rows.length&&this.definition.columns.length){const t=this.treeToLeafDomains(i.getColTree()),s=this.getSubTreeMatchingDomain(i.getRowTree(),o),r=this.treeToLeafDomains(s);for(const s of t)for(const t of r)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t).concat(s)));return n}if(o.length===this.definition.rows.length&&0===s.length){const t=i.getColTree(),r=this.getSubTreeMatchingDomain(t,s),a=this.treeToLeafDomains(r,s);for(const t of a)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t)));return n}if(o.length===this.definition.rows.length&&s.length&&s.length<this.definition.columns.length){const t=this.getSubTreeMatchingDomain(i.getColTree(),s),r=this.treeToLeafDomains(t,s);for(const t of r)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t)));return n}{const t=i.getRowTree(),r=this.getSubTreeMatchingDomain(t,o),a=this.treeToLeafDomains(r,o);for(const t of a)n.push(this._getPivotCellValueAndFormat(e.id,t.concat(s)));return n}}getSubTreeMatchingDomain(e,t,o=0){if(o>t.length)return[];if(t.length===o)return e;for(const s of e){const e=Cc(this.definition.getDimension(s.field),t[o]?.value);if(s.field===t[o]?.field&&s.value===e)return this.getSubTreeMatchingDomain(s.children,t,o+1)}return e}treeToLeafDomains(e,t=[]){const o=[];for(const s of e){const e=this.definition.getDimension(s.field),i=[...t,{field:s.field,value:s.value,type:e.type}];0===s.children.length?o.push(i):o.push(...this.treeToLeafDomains(s.children,i))}return o}getMeasureDisplayValue(e,t){const o=this.getMeasure(e),s=this._getPivotCellValueAndFormat(e,t);if(!o.display||"no_calculations"===o.display.type||s.message)return s;const i=o.display.fieldNameWithGranularity;if(i&&!this.isFieldInPivot(i))return{value:wi.NotAvailable,message:Uo('Field "%s" not found in pivot for measure display calculation',i)};try{const e=o.display;switch(e.type){case"%_of_grand_total":return this.asPercentOfGrandTotal(s,o);case"%_of_col_total":return this.asPercentOfColumnTotal(s,o,t);case"%_of_row_total":return this.asPercentOfRowTotal(s,o,t);case"%_of_parent_row_total":return this.asPercentOfParentRowTotal(s,o,t);case"%_of_parent_col_total":return this.asPercentOfParentColumnTotal(s,o,t);case"index":return this.asIndex(s,o,t);case"%_of_parent_total":return this.asPercentOfParentTotal(s,o,t,e);case"running_total":return this.asRunningTotal(s,o,t,e,"running_total");case"%_running_total":return this.asRunningTotal(s,o,t,e,"%_running_total");case"rank_asc":return this.asRank(s,o,t,e,"asc");case"rank_desc":return this.asRank(s,o,t,e,"desc");case"%_of":return this.asPercentOf(s,o,t,e);case"difference_from":return this.asDifferenceFrom(s,o,t,e);case"%_difference_from":return this.asDifferenceFromInPercent(s,o,t,e)}return s}catch(e){return bS(e,"COMPUTE_MEASURE_DISPLAY_VALUE")}}asPercentOfGrandTotal(e,t){const o=this.getGrandTotal(t.id);return 0===o?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/o,format:bN}}asPercentOfRowTotal(e,t,o){const s=this.getRowTotal(t.id,o);return 0===s?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/s,format:bN}}asPercentOfColumnTotal(e,t,o){const s=this.getColumnTotal(t.id,o);return 0===s?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/s,format:bN}}asPercentOfParentRowTotal(e,t,o){const s=function(e,t){const{colDomain:o,rowDomain:s}=kl(e,t);return[...o,...s.slice(0,s.length-1)]}(this,o),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,s));return 0===i?{value:""}:{value:this.measureValueToNumber(e)/i,format:bN}}asPercentOfParentColumnTotal(e,t,o){const s=function(e,t){const{colDomain:o,rowDomain:s}=kl(e,t);return[...o.slice(0,o.length-1),...s]}(this,o),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,s));return 0===i?{value:""}:{value:this.measureValueToNumber(e)/i,format:bN}}asPercentOfParentTotal(e,t,o,s){const{fieldNameWithGranularity:i}=s;if(!i)return e;if(!Bl(i,o))return{value:""};const n=function(e,t,o){let{rowDomain:s,colDomain:i}=kl(e,o);if("row"===zl(e,t)){const e=s.findIndex((e=>e.field===t));if(-1===e)return o;s=s.slice(0,e+1)}else{const e=i.findIndex((e=>e.field===t));if(-1===e)return o;i=i.slice(0,e+1)}return[...s,...i]}(this,i,o),r=this._getPivotCellValueAndFormat(t.id,n),a=this.measureValueToNumber(r);return 0===a?{value:""}:{value:this.measureValueToNumber(e)/a,format:bN}}asIndex(e,t,o){const s=this.measureValueToNumber(e),i=this.getRowTotal(t.id,o),n=this.getColumnTotal(t.id,o),r=this.getGrandTotal(t.id);return 0===i||0===n?{value:wi.DivisionByZero}:{value:s*r/(n*i),format:void 0}}asRunningTotal(e,t,o,s,i){const{fieldNameWithGranularity:n}=s;if(!n)return e;const r="running_total"===i?this.runningTotal:this.runningTotalInPercent;let a=r[t.id]?.[n];a||(a=this.computeRunningTotal(t,n,i),r[t.id]||(r[t.id]={}),r[t.id][n]=a);const{rowDomain:l,colDomain:c}=kl(this,o),h=$l(c),d=$l(l),u=a[h]?.[d];return{value:u??"",format:"running_total"===i?e.format:bN}}asPercentOf(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};let r=this.getComparisonValue(t,o,i,n),a=this.strictMeasureValueToNumber(e);return 0===r||"sameValue"===r&&0===a?{value:wi.DivisionByZero}:!r||"sameValue"===r&&!a?{value:""}:"sameValue"===r?{value:1,format:bN}:void 0===a?{value:wi.NullError}:{value:a/r,format:bN}}asDifferenceFrom(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};const r=this.getComparisonValue(t,o,i,n)||0;return"sameValue"===r?{value:""}:{value:this.measureValueToNumber(e)-r,format:e.format}}asDifferenceFromInPercent(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};let r=this.getComparisonValue(t,o,i,n);const a=this.strictMeasureValueToNumber(e);return 0===r?{value:wi.DivisionByZero}:r&&"sameValue"!==r?void 0===a?{value:wi.NullError}:{value:(a-r)/r,format:bN}:{value:""}}asRank(e,t,o,s,i){const{fieldNameWithGranularity:n}=s;if(!n)return e;if(!Bl(n,o))return{value:""};const r="asc"===i?this.rankAsc:this.rankDesc;let a=r[t.id]?.[n];a||(a=this.computeRank(t,n,i),r[t.id]||(r[t.id]={}),r[t.id][n]=a);const{rowDomain:l,colDomain:c}=kl(this,o),h=$l(c),d=$l(l),u=a[h]?.[d];return{value:u??""}}computeRank(e,t,o){const s={},i=zl(this,t),n="row"===i?"column":"row";let r=this.getPivotValueCells(e.id);"column"===i&&(r=rn(r));for(const a of r){const r=$l(Vl(this,n,a[0].domain)),l=a.map((t=>({...t,value:this.strictMeasureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain)),rowDomain:Vl(this,i,t.domain)}))).filter((e=>Bl(t,e.rowDomain))),c=Object.groupBy(l,(e=>Wl(e.rowDomain,t)));for(const e in c)c[e]=Pt(c[e]||[],(e=>e.value)).filter((e=>void 0!==e.value)).sort(((e,t)=>"asc"===o?e.value-t.value:t.value-e.value));s[r]={};for(const e of l){const o=$l(Vl(this,i,e.domain)),n=c[Wl(e.rowDomain,t)];if(!n)continue;const a=n.findIndex((t=>t.value===e.value));-1!==a&&(s[r][o]=a+1)}}return"row"===i?s:Nt(s)}computeRunningTotal(e,t,o){const s={},i=zl(this,t),n="row"===i?"column":"row";let r=this.getPivotValueCells(e.id);"column"===i&&(r=rn(r));for(const a of r){const r=$l(Vl(this,n,a[0].domain));s[r]={};const l={},c=a.map((t=>({...t,rowDomain:Vl(this,i,t.domain),value:this.measureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain))}))).filter((e=>Bl(t,e.rowDomain)));for(const e of c){const o=$l(e.rowDomain),i=ql(e.rowDomain,t),n=(l[i]||0)+e.value;l[i]=n,s[r][o]=n}if("%_running_total"===o)for(const e of c){const o=e.rowDomain,i=$l(o),n=ql(o,t),a=s[r][i]||0,c=l[n];s[r][i]=c?a/c:void 0}}return"row"===i?s:Nt(s)}getGrandTotal(e){const t=this._getPivotCellValueAndFormat(e,[]);return this.measureValueToNumber(t)}getRowTotal(e,t){const o=kl(this,t).rowDomain,s=this._getPivotCellValueAndFormat(e,o);return this.measureValueToNumber(s)}getColumnTotal(e,t){const o=kl(this,t).colDomain,s=this._getPivotCellValueAndFormat(e,o);return this.measureValueToNumber(s)}isFieldInPivot(e){return this.definition.columns.some((t=>t.nameWithGranularity===e))||this.definition.rows.some((t=>t.nameWithGranularity===e))}getComparisonValue(e,t,o,s){const i=s===Pl||s===Nl?function(e,t,o,s){const i=zl(e,o),n="row"===i?e.getTableStructure().getRowTree():e.getTableStructure().getColTree(),r=Hl(Vl(e,i,t),n,o),a=r?.map((e=>e.value))??[],l=function(e,t){const o=t.find((t=>t.field===e));return o?.value}(o,t);if(void 0===l)return;const c=a.indexOf(l);if(void 0===l||-1===c)return;return Ul(t,o,a[Ze(c+(s===Pl?-1:1),0,a.length-1)])}(this,t,o,s):Ul(t,o,s);if(ft(i,t))return"sameValue";if(!i||!function(e,t){const{rowDomain:o,colDomain:s}=kl(e,t);return Ll(o,e.getTableStructure().getRowTree())&&Ll(s,e.getTableStructure().getColTree())}(this,i))throw new Ai;const n=this._getPivotCellValueAndFormat(e.id,i);return this.strictMeasureValueToNumber(n)}getPivotValueCells(e){return this.getTableStructure().getPivotCells().map((t=>t.filter((t=>"VALUE"===t.type&&t.measure===e)))).filter((e=>e.length>0))}measureValueToNumber(e){if("number"==typeof e.value)return e.value;if(!e.value)return 0;throw new Error(`Value ${e.value} is not a number`)}strictMeasureValueToNumber(e){if("number"==typeof e.value)return e.value;if(e.value)throw new Error(`Value ${e.value} is not a number`)}getTableStructure(){const e=super.getTableStructure();return this.sortTableStructure(e),e}sortTableStructure(e){if(!this.definition.sortedColumn||e.isSorted)return;const t=this.definition.sortedColumn.measure;_c(this.definition.sortedColumn,this)&&e.sort(t,this.definition.sortedColumn,((e,t)=>this._getPivotCellValueAndFormat(e,t)))}}}const yN=["ADD_PIVOT","UPDATE_PIVOT"];function CN(e){return yN.includes(e.type)}class wN extends EP{static layers=[];getters;ui;selection;dispatch;canDispatch;constructor({getters:e,stateObserver:t,dispatch:o,canDispatch:s,uiActions:i,selection:n}){super(t),this.getters=e,this.ui=i,this.selection=n,this.dispatch=o,this.canDispatch=s}drawLayer(e,t){}}class xN{cells;getters;index=0;direction;constructor(e,t,o){this.cells=e,this.getters=t,this.direction=o}next(){const e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:o,tooltip:s}=KS.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:o,tooltip:s,origin:{col:e.data.col,row:e.data.row}}}}function IN(e,t){if("SPREADSHEET"!==e.pivot.type)return e;if(e.pivot.dataSet?.sheetId!==t.sheetId)return e;const o=Nc(e.pivot.dataSet.zone,t),s=o?{...e.pivot.dataSet,zone:o}:void 0;return{...e,pivot:{...e.pivot,dataSet:s}}}function EN(e,t){return{...e,definition:KR(e.definition,t)}}function RN(e,t){if(e.sheetId!==t.sheetId)return e;if(("FREEZE_COLUMNS"===e.type?"COL":"ROW")!==t.dimension)return e;let o=e.quantity;if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));for(let t of e)o>t&&o--}if("ADD_COLUMNS_ROWS"===t.type){o=o>("before"===t.position?t.base-1:t.base)?o+t.quantity:o}return o>0?{...e,quantity:o}:void 0}function TN(e,t){if(e.sheetId!==t.sheetId)return e;const o=Nc(e.zone,t);if(!o)return;const s=e.newTableRange?kc(e.newTableRange,t):void 0;return{...e,newTableRange:s,zone:o}}function AN(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let o;if("REMOVE_COLUMNS_ROWS"===t.type)o=oa(t.elements,[e.base])[0];else if("ADD_COLUMNS_ROWS"===t.type){o=ta(mt(t.position,t.base),t.quantity,[e.base])[0]}return void 0!==o?{...e,base:o}:void 0}function _N(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;const o=je(e.start,e.end+1);let s=[];if("REMOVE_COLUMNS_ROWS"===t.type)s=oa(t.elements,o);else if("ADD_COLUMNS_ROWS"===t.type){s=ta(mt(t.position,t.base),t.quantity,o)}return 0!==s.length?{...e,start:Math.min(...s),end:Math.max(...s)}:void 0}ED.addTransformation("ADD_COLUMNS_ROWS",["ADD_COLUMNS_ROWS"],AN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["ADD_COLUMNS_ROWS"],AN),ED.addTransformation("ADD_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],EN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],EN),ED.addTransformation("DELETE_SHEET",["MOVE_RANGES"],(function(e,t){const o=t.sheetId;if(e.targetSheetId===o||e.sheetId===o)return;return e})),ED.addTransformation("DELETE_FIGURE",["UPDATE_FIGURE","UPDATE_CHART"],(function(e,t){if(e.id===t.id)return;return e})),ED.addTransformation("CREATE_SHEET",["CREATE_SHEET"],(function(e,t){e.sheetId===t.sheetId&&(e={...e,sheetId:`${e.sheetId}~`});if(e.name===t.name)return{...e,name:e.name?.match(/\d+/)?e.name.replace(/\d+/,(e=>(parseInt(e)+1).toString())):`${e.name}~`,position:e.position+1};return e})),ED.addTransformation("ADD_MERGE",["ADD_MERGE","REMOVE_MERGE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;const o=[];for(const s of e.target)t.target.every((e=>!es(s,e)))&&o.push(s);if(o.length)return{...e,target:o};return})),ED.addTransformation("ADD_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],RN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],RN),ED.addTransformation("ADD_COLUMNS_ROWS",["UPDATE_TABLE"],TN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["UPDATE_TABLE"],TN),ED.addTransformation("REMOVE_TABLE_STYLE",["CREATE_TABLE","UPDATE_TABLE"],(function(e,t){if(e.config?.styleId!==t.tableStyleId)return e;return{...e,config:{...e.config,styleId:Aw.styleId}}})),ED.addTransformation("ADD_COLUMNS_ROWS",["GROUP_HEADERS","UNGROUP_HEADERS","FOLD_HEADER_GROUP","UNFOLD_HEADER_GROUP"],_N),ED.addTransformation("REMOVE_COLUMNS_ROWS",["GROUP_HEADERS","UNGROUP_HEADERS","FOLD_HEADER_GROUP","UNFOLD_HEADER_GROUP"],_N),ED.addTransformation("REMOVE_PIVOT",["RENAME_PIVOT","DUPLICATE_PIVOT","INSERT_PIVOT","UPDATE_PIVOT"],(function(e,t){if(e.pivotId===t.pivotId)return;return e})),ED.addTransformation("DELETE_SHEET",["ADD_PIVOT","UPDATE_PIVOT"],(function(e,t){if("SPREADSHEET"!==e.pivot.type)return e;if(e.pivot.dataSet?.sheetId===t.sheetId)return{...e,pivot:{...e.pivot,dataSet:void 0}};return e})),ED.addTransformation("ADD_COLUMNS_ROWS",["ADD_PIVOT","UPDATE_PIVOT"],IN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["ADD_PIVOT","UPDATE_PIVOT"],IN);const DN=[{match:function(e){return"sheetId"in e},fn:MN},{match:function(e){return"target"in e&&"sheetId"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const s=[];for(const o of e.target){const e=Nc(o,t);e&&s.push(e)}if(!s.length)return"IGNORE_COMMAND";return{...e,target:s}}},{match:function(e){return"sheetId"in e&&"zone"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const s=Nc(e.zone,t);if(s)return{...e,zone:s};return"IGNORE_COMMAND"}},{match:function(e){return"col"in e&&"row"in e&&"sheetId"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type)return function(e,t){const o="COL"===t.dimension?"col":"row";let s=e[o];if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));if(e.includes(s))return"IGNORE_COMMAND";for(let t of e)s>=t&&s--}"ADD_COLUMNS_ROWS"===t.type&&(s>t.base||s===t.base&&"before"===t.position)&&(s+=t.quantity);return{...e,[o]:s}}(e,t);if("ADD_MERGE"===t.type)return function(e,t){for(const o of t.target){if(!(e.col===o.left&&e.row===o.top)&&ts(e.col,e.row,o))return"IGNORE_COMMAND"}return e}(e,t);return"SKIP_TRANSFORMATION"}},{match:function(e){return"dimension"in e&&"sheetId"in e&&"elements"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"!==t.type&&"REMOVE_COLUMNS_ROWS"!==t.type)return"SKIP_TRANSFORMATION";if(t.dimension!==e.dimension)return e;let s=[];if("REMOVE_COLUMNS_ROWS"===t.type)s=oa(t.elements,e.elements);else if("ADD_COLUMNS_ROWS"===t.type){s=ta(mt(t.position,t.base),t.quantity,e.elements)}if(0===s.length)return"IGNORE_COMMAND";return{...e,elements:s}}},{match:function(e){return"ranges"in e},fn:function(e,t){if(!("sheetId"in t))return e;const o=e.ranges.map((e=>kc(e,t))).filter(lt);if(!o.length)return"IGNORE_COMMAND";return{...e,ranges:o}}}];function ON(e,t){const o=ED.getTransformation(e.type,t.type);return o?o(e,t):function(e,t){for(const{match:o,fn:s}of DN)if(o(e)){const o=s(e,t);if("SKIP_TRANSFORMATION"===o)continue;if("IGNORE_COMMAND"===o)return;e=o}return e}(e,t)}function FN(e,t){let o=[...e];for(const e of t)o=o.map((t=>ON(t,e))).filter(lt);return o}function MN(e,t){if(!("sheetId"in t))return e;const o="DELETE_SHEET"===t.type&&t.sheetId;return e.sheetId===o?"IGNORE_COMMAND":"CREATE_SHEET"===e.type||"CREATE_SHEET"===t.type||e.sheetId!==t.sheetId?e:"SKIP_TRANSFORMATION"}class PN{rootCommand;timestamp;id;clientId;_commands=[];_changes=[];constructor(e,t,o,s,i,n){this.rootCommand=s,this.timestamp=n,this.id=e,this.clientId=t,this._commands=[...o],this._changes=i?[...i]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}}class NN extends Error{}class kN extends Vc{revisions;transportService;serverRevisionId;clients={};clientId="local";debouncedMove;pendingMessages=[];waitingAck=!1;waitingUndoRedoAck=!1;isReplayingInitialRevisions=!1;processedRevisions=new Set;lastRevisionMessage=void 0;uuidGenerator=new xa;lastLocalOperation;constructor(e,t,o=ye){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=o,this.debouncedMove=dt(this._move.bind(this),200)}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t,o){if(!t.length||!o.length||!this.canApplyOptimisticUpdate())return;const s=new PN(this.uuidGenerator.uuidv4(),this.clientId,t,e,o,Date.now());this.revisions.append(s.id,s),"REQUEST_REDO"!==e.type&&(this.lastLocalOperation=s),this.trigger("new-local-state-update",{id:s.id}),this.sendUpdateMessage({type:"REMOTE_REVISION",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:s.id,clientId:s.clientId,commands:s.commands})}undo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_UNDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),undoneRevisionId:e})}redo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_REDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),redoneRevisionId:e})}move(e){this.debouncedMove(e)}join(e){e?(this.clients[e.id]=e,this.clientId=e.id):(this.clients.local={id:"local",name:"local"},this.clientId="local"),this.transportService.onNewMessage(this.clientId,this.onMessageReceived.bind(this))}loadInitialMessages(e){const t=performance.now(),o=e.reduce(((e,t)=>e+("REMOTE_REVISION"===t.type?t.commands.length:1)),0);this.isReplayingInitialRevisions=!0;for(const t of e)this.onMessageReceived(t);this.isReplayingInitialRevisions=!1,console.debug("Replayed",o,"commands in",performance.now()-t,"ms")}async leave(e){e&&1===Object.keys(this.clients).length&&this.lastRevisionMessage&&"SNAPSHOT_CREATED"!==this.lastRevisionMessage?.type&&await this.snapshot(e()),delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.transportService.sendMessage({type:"CLIENT_LEFT",clientId:this.clientId,version:1})}async snapshot(e){if(0!==this.pendingMessages.length)return;const t=this.uuidGenerator.uuidv4();await this.transportService.sendMessage({type:"SNAPSHOT",nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getClient(){const e=this.clients[this.clientId];if(!e)throw new NN("The client left the session");return e}getConnectedClients(){return new Set(Object.values(this.clients).filter(lt))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return 0===this.pendingMessages.length}getLastLocalNonEmptyRevision(){return this.lastLocalOperation}_move(e){if(!this.clients[this.clientId])return;const t=this.clients[this.clientId]?.position;if(t?.col===e.col&&t.row===e.row&&t.sheetId===e.sheetId)return;const o=t?"CLIENT_MOVED":"CLIENT_JOINED",s=this.getClient();this.clients[this.clientId]={...s,position:e},this.transportService.sendMessage({type:o,version:1,client:{...s,position:e}})}onMessageReceived(e){if(!this.isAlreadyProcessed(e))if(this.isWrongServerRevisionId(e))this.trigger("unexpected-revision-id");else{switch(e.type){case"CLIENT_MOVED":this.onClientMoved(e);break;case"CLIENT_JOINED":this.onClientJoined(e);break;case"CLIENT_LEFT":this.onClientLeft(e);break;case"REVISION_REDONE":this.revisions.redo(e.redoneRevisionId,e.nextRevisionId,e.serverRevisionId),this.trigger("revision-redone",{revisionId:e.redoneRevisionId,commands:this.revisions.get(e.redoneRevisionId).commands});break;case"REVISION_UNDONE":this.revisions.undo(e.undoneRevisionId,e.nextRevisionId,e.serverRevisionId),this.trigger("revision-undone",{revisionId:e.undoneRevisionId,commands:this.revisions.get(e.undoneRevisionId).commands});break;case"REMOTE_REVISION":const{clientId:t,commands:o,timestamp:s}=e,i=new PN(e.nextRevisionId,t,o,void 0,void 0,s);if(i.clientId!==this.clientId){this.revisions.insert(i.id,i,e.serverRevisionId);const t=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.commands)).flat();this.trigger("remote-revision-received",{commands:FN(o,t)})}break;case"SNAPSHOT_CREATED":{const t=new PN(e.nextRevisionId,"server",[],void 0,void 0,Date.now());this.revisions.insert(t.id,t,e.serverRevisionId),this.dropPendingHistoryMessages(),this.trigger("snapshot"),this.lastLocalOperation=void 0;break}}this.acknowledge(e),this.trigger("collaborative-event-received")}}onClientMoved(e){e.client.id!==this.clientId&&(this.clients[e.client.id]=e.client)}onClientJoined(e){if(e.client.id!==this.clientId){this.clients[e.client.id]=e.client;const t=this.clients[this.clientId];if(t){const{position:e}=t;e&&this.transportService.sendMessage({type:"CLIENT_MOVED",version:1,client:{...t,position:e}})}}}onClientLeft(e){e.clientId!==this.clientId&&delete this.clients[e.clientId]}sendUpdateMessage(e){this.pendingMessages.push(e),this.waitingAck||this.sendPendingMessage()}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if("REMOTE_REVISION"===e.type){let t=this.revisions.get(e.nextRevisionId);0===t.commands.length&&(this.revisions.rebase(t.id),t=this.revisions.get(e.nextRevisionId)),e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.\n ${JSON.stringify(e)}`);this.waitingAck=!0,this.transportService.sendMessage({...e,serverRevisionId:this.serverRevisionId})}}acknowledge(e){switch("REVISION_UNDONE"!==e.type&&"REVISION_REDONE"!==e.type||(this.waitingUndoRedoAck=!1),e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"SNAPSHOT_CREATED":this.waitingAck=!1,this.pendingMessages=this.pendingMessages.filter((t=>t.nextRevisionId!==e.nextRevisionId)),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.lastRevisionMessage=e,this.sendPendingMessage();break;case"REVISION_UNDONE":{this.waitingAck=!1,this.pendingMessages=this.pendingMessages.filter((t=>t.nextRevisionId!==e.nextRevisionId));const t=this.pendingMessages.findIndex((e=>"REMOTE_REVISION"===e.type));-1!==t&&this.revisions.rebase(this.pendingMessages[t].nextRevisionId),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.sendPendingMessage();break}}}isAlreadyProcessed(e){if("CLIENT_MOVED"===e.type&&e.client.id===this.clientId)return!0;switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":case"SNAPSHOT_CREATED":return this.processedRevisions.has(e.nextRevisionId);default:return!1}}isWrongServerRevisionId(e){switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":case"SNAPSHOT_CREATED":return e.serverRevisionId!==this.serverRevisionId;default:return!1}}dropPendingHistoryMessages(){this.waitingUndoRedoAck=!1,this.pendingMessages=this.pendingMessages.filter((({type:e})=>"REVISION_REDONE"!==e&&"REVISION_UNDONE"!==e))}}const VN=new Set(["HIDE_COLUMNS_ROWS","UNHIDE_COLUMNS_ROWS","UNFOLD_HEADER_GROUP","UNGROUP_HEADERS","FOLD_HEADER_GROUP","FOLD_ALL_HEADER_GROUPS","UNFOLD_ALL_HEADER_GROUPS","FOLD_HEADER_GROUPS_IN_ZONE","UNFOLD_HEADER_GROUPS_IN_ZONE","CREATE_TABLE","UPDATE_TABLE","UPDATE_FILTER","REMOVE_TABLE","RESIZE_TABLE","CREATE_TABLE_STYLE","REMOVE_TABLE_STYLE"]);function LN(e){return VN.has(e.type)}const HN=[UN,function(e,t){return"target"in t&&Array.isArray(t.target)?{...ze(t),target:e.getSelectedZones()}:t},function(e,t){if(!("row"in t)||!("col"in t))return t;const{col:o,row:s}=e.getActivePosition();return{...ze(t),col:o,row:s}},function(e,t){return"ranges"in t?{...ze(t),ranges:e.getSelectedZones().map((t=>e.getRangeDataFromZone(e.getActiveSheetId(),t)))}:t}];function UN(e,t){return"sheetId"in t?{...ze(t),sheetId:e.getActiveSheetId()}:t}function BN(e,t){return"zone"in t?{...ze(t),zone:e.getSelectedZone()}:t}const zN=new xa;function $N(e,t){const o=e.getSelectedZone();return{...UN(e,t),elements:"COL"===t.dimension?je(o.left,o.right+1):je(o.top,o.bottom+1)}}function GN(e,t){const o=e.getSelectedZone();return{...ze(t),zone:o}}function WN(e,t){const o=ze(t),s=e.getSelectedZone(),{top:i,bottom:n,left:r,right:a}=s;return"cols"in o?o.cols=je(r,a+1):"rows"in o&&(o.rows=je(i,n+1)),o}function qN(e,t){const o=e.getSelectedZone();return{...UN(e,t),start:"COL"===t.dimension?o.left:o.top,end:"COL"===t.dimension?o.right:o.bottom}}const ZN=new n;ZN.add("UPDATE_CELL",YN),ZN.add("CLEAR_CELL",YN),ZN.add("CLEAR_CELLS",YN),ZN.add("DELETE_CONTENT",YN),ZN.add("ADD_MERGE",YN),ZN.add("REMOVE_MERGE",YN),ZN.add("SET_FORMATTING",YN),ZN.add("CLEAR_FORMATTING",YN),ZN.add("SET_BORDER",YN),ZN.add("CREATE_TABLE",YN),ZN.add("REMOVE_TABLE",YN),ZN.add("HIDE_SHEET",YN),ZN.add("ADD_COLUMNS_ROWS",(function(e,t){const o=e.getActivePosition();return{...UN(e,t),base:"COL"===t.dimension?o.col:o.row}})),ZN.add("REMOVE_COLUMNS_ROWS",$N),ZN.add("HIDE_COLUMNS_ROWS",$N),ZN.add("RESIZE_COLUMNS_ROWS",$N),ZN.add("CREATE_SHEET",(function(e,t){const o=ze(t);o.sheetId=zN.smallUuid();const s=t.name||e.getSheet(e.getActiveSheetId()).name,i=s.match(/(.+?)\d*$/)?.[1]||s;return o.name=e.getNextSheetName(i),o})),ZN.add("CREATE_FIGURE",(function(e,t){const o=UN(e,t);return o.figure.id=zN.smallUuid(),o})),ZN.add("CREATE_CHART",(function(e,t){return{...UN(e,t),id:zN.smallUuid()}})),ZN.add("CREATE_IMAGE",(function(e,t){return{...UN(e,t),figureId:zN.smallUuid()}})),ZN.add("GROUP_HEADERS",qN),ZN.add("UNGROUP_HEADERS",qN),ZN.add("UNGROUP_HEADERS",qN),ZN.add("UNFOLD_HEADER_GROUPS_IN_ZONE",BN),ZN.add("FOLD_HEADER_GROUPS_IN_ZONE",BN);const jN=new n;function YN(e,t){let o=ze(t);for(const t of HN)o=t(e,o);return o}function XN(e,t){if(e.rootCommand&&"object"==typeof e.rootCommand)return di(e.rootCommand)?function(e,t){if(!t)return;if(!ZN.contains(t.type))return;return ZN.get(t.type)(e,t)}(t,e.rootCommand):function(e,t,o){if(!jN.contains(t.type))return;return jN.get(t.type)(e,t,o)}(t,e.rootCommand,e.commands)}jN.add("PASTE",(function(e,t){return{type:"REPEAT_PASTE",pasteOption:ze(t.pasteOption),target:e.getSelectedZones()}})),jN.add("INSERT_CELL",GN),jN.add("DELETE_CELL",GN),jN.add("AUTORESIZE_COLUMNS",WN),jN.add("AUTORESIZE_ROWS",WN),jN.add("SORT_CELLS",(function(e,t){const o=e.getSelectedZone();return{...UN(e,t),col:o.left,row:o.top,zone:o}})),jN.add("SUM_SELECTION",YN),jN.add("SET_DECIMAL",YN);class KN{trackedValues=new Set;domainToArray(e){return e.flatMap((e=>[e.field,Gi(e.value)]))}isValuePresent(e,t){const o=JSON.stringify({measure:e,domain:this.domainToArray(t)});return this.trackedValues.has(o)}isHeaderPresent(e){const t=JSON.stringify({domain:this.domainToArray(e)});return this.trackedValues.has(t)}trackValue(e,t){const o=JSON.stringify({measure:e,domain:this.domainToArray(t)});this.trackedValues.add(o)}trackHeader(e){const t=JSON.stringify({domain:this.domainToArray(e)});this.trackedValues.add(t)}}class JN{getters;sheetId;boundaries;top;bottom;left;right;offsetX;offsetY;canScrollVertically;canScrollHorizontally;viewportWidth;viewportHeight;offsetCorrectionX;offsetCorrectionY;constructor(e,t,o,s,i,n){if(this.getters=e,this.sheetId=t,this.boundaries=o,s.width<0||s.height<0)throw new Error("Viewport size cannot be negative");this.viewportWidth=s.height&&s.width,this.viewportHeight=s.width&&s.height,this.top=o.top,this.bottom=o.bottom,this.left=o.left,this.right=o.right,this.offsetX=n.x,this.offsetY=n.y,this.canScrollVertically=i.canScrollVertically,this.canScrollHorizontally=i.canScrollHorizontally,this.offsetCorrectionX=this.getters.getColDimensions(this.sheetId,this.boundaries.left).start,this.offsetCorrectionY=this.getters.getRowDimensions(this.sheetId,this.boundaries.top).start,this.adjustViewportOffsetX(),this.adjustViewportOffsetY()}getMaxSize(){const e=this.getters.findLastVisibleColRowIndex(this.sheetId,"COL",{first:this.boundaries.left,last:this.boundaries.right}),t=this.getters.findLastVisibleColRowIndex(this.sheetId,"ROW",{first:this.boundaries.top,last:this.boundaries.bottom}),{end:o}=this.getters.getColDimensions(this.sheetId,e),{end:s}=this.getters.getRowDimensions(this.sheetId,t);let i=o-this.offsetCorrectionX;this.canScrollHorizontally&&(i=Math.max(i,this.viewportWidth));let n=s-this.offsetCorrectionY;return this.canScrollVertically&&(n=Math.max(n,this.viewportHeight),s+he>n&&!this.getters.isReadonly()&&(n+=he)),{width:i,height:n}}getColIndex(e){return e<this.offsetCorrectionX||e>this.offsetCorrectionX+this.viewportWidth?-1:this.searchHeaderIndex("COL",e-this.offsetCorrectionX+this.snapCorrection.x,this.left)}getRowIndex(e){return e<this.offsetCorrectionY||e>this.offsetCorrectionY+this.viewportHeight?-1:this.searchHeaderIndex("ROW",e-this.offsetCorrectionY+this.snapCorrection.y,this.top)}adjustPosition(e){const t=this.sheetId,o=this.getters.getMainCellPosition({sheetId:t,...e}),{col:s,row:i}=this.getters.getNextVisibleCellPosition(o);ts(s,this.boundaries.top,this.boundaries)&&this.adjustPositionX(s),ts(this.boundaries.left,i,this.boundaries)&&this.adjustPositionY(i)}adjustPositionX(e){const t=this.sheetId,{start:o,end:s}=this.getters.getColDimensions(t,e);this.offsetX+this.viewportWidth+this.offsetCorrectionX<s?this.offsetX=s-this.viewportWidth:this.offsetX+this.offsetCorrectionX>o&&(this.offsetX=o-this.offsetCorrectionX),this.adjustViewportZoneX()}adjustPositionY(e){const t=this.sheetId,{start:o,end:s}=this.getters.getRowDimensions(t,e);this.offsetY+this.viewportHeight+this.offsetCorrectionY<s?this.offsetY=s-this.viewportHeight:this.offsetY+this.offsetCorrectionY>o&&(this.offsetY=o-this.offsetCorrectionY),this.adjustViewportZoneY()}willNewOffsetScrollViewport(e,t){return this.canScrollHorizontally&&this.offsetX!==e||this.canScrollVertically&&this.offsetY!==t}setViewportOffset(e,t){this.setViewportOffsetX(e),this.setViewportOffsetY(t)}adjustViewportZone(){this.adjustViewportZoneX(),this.adjustViewportZoneY()}getVisibleRect(e){const t=Jo(e,this),o=this.snapCorrection.x,s=this.snapCorrection.y;if(t){return{x:this.getters.getColRowOffset("COL",this.left,t.left)+this.offsetCorrectionX-(this.left!==t.left?o:0),y:this.getters.getColRowOffset("ROW",this.top,t.top)+this.offsetCorrectionY-(this.top!==t.top?s:0),width:Math.min(this.getters.getColRowOffset("COL",t.left,t.right+1)-(this.left===t.left?o:0),this.viewportWidth),height:Math.min(this.getters.getColRowOffset("ROW",t.top,t.bottom+1)-(this.top===t.top?s:0),this.viewportHeight)}}}getFullRect(e){const t=Jo(e,this.boundaries),o=this.snapCorrection.x,s=this.snapCorrection.y;if(t){return{x:this.getters.getColRowOffset("COL",this.left,e.left)+this.offsetCorrectionX-o,y:this.getters.getColRowOffset("ROW",this.top,e.top)+this.offsetCorrectionY-s,width:this.getters.getColRowOffset("COL",e.left,e.right+1),height:this.getters.getColRowOffset("ROW",e.top,e.bottom+1)}}}isVisible(e,t){return t<=this.bottom&&t>=this.top&&e>=this.left&&e<=this.right&&!this.getters.isColHidden(this.sheetId,e)&&!this.getters.isRowHidden(this.sheetId,t)}searchHeaderIndex(e,t,o=0){if(this.viewportWidth<=0||this.viewportHeight<=0)return-1;const s=this.sheetId,i=this.getters.getNumberHeaders(s,e);let n=o,r=i;for(;n<=r&&n!==i&&-1!==r;){const i=Math.floor((n+r)/2),a=this.getters.getColRowOffset(e,o,i),l=this.getters.getHeaderSize(s,e,i);if(t>=a&&t<a+l)return i;t>=a+l?n=i+1:r=i-1}return-1}setViewportOffsetX(e){this.canScrollHorizontally&&(this.offsetX=e,this.adjustViewportZoneX())}setViewportOffsetY(e){this.canScrollVertically&&(this.offsetY=e,this.adjustViewportZoneY())}adjustViewportOffsetX(){if(this.canScrollHorizontally){const{width:e}=this.getMaxSize();this.viewportWidth+this.offsetX>e&&(this.offsetX=Math.max(0,e-this.viewportWidth))}this.adjustViewportZoneX()}adjustViewportOffsetY(){if(this.canScrollVertically){const{height:e}=this.getMaxSize();this.viewportHeight+this.offsetY>e&&(this.offsetY=Math.max(0,e-this.viewportHeight))}this.adjustViewportZoneY()}adjustViewportZoneX(){this.left=this.searchHeaderIndex("COL",this.offsetX,this.boundaries.left),this.right=Math.min(this.boundaries.right,this.searchHeaderIndex("COL",Math.max(this.viewportWidth+this.snapCorrection.x-.1),this.left)),this.viewportWidth&&(-1===this.left&&(this.left=this.boundaries.left),-1===this.right&&(this.right=this.boundaries.right))}adjustViewportZoneY(){this.top=this.searchHeaderIndex("ROW",this.offsetY,this.boundaries.top),this.bottom=Math.min(this.boundaries.bottom,this.searchHeaderIndex("ROW",Math.max(this.viewportHeight+this.snapCorrection.y-.1,0),this.top)),this.viewportHeight&&(-1===this.top&&(this.top=this.boundaries.top),-1===this.bottom&&(this.bottom=this.boundaries.bottom))}get snapCorrection(){return{x:Math.abs(this.offsetX-this.getters.getColRowOffset("COL",this.boundaries.left,Math.max(0,this.left))),y:Math.abs(this.offsetY-this.getters.getColRowOffset("ROW",this.boundaries.top,Math.max(0,this.top)))}}}const QN=(new n).add("settings",class extends RP{static getters=["getLocale"];locale=fi;allowDispatch(e){return"UPDATE_LOCALE"===e.type?ja(e.locale)?"Success":"InvalidLocale":"Success"}handle(e){if("UPDATE_LOCALE"===e.type){const t=this.locale,o=e.locale;this.history.update("locale",o),this.changeCellsDateFormatWithLocale(t,o)}}getLocale(){return this.locale}changeCellsDateFormatWithLocale(e,t){for(const o of this.getters.getSheetIds())for(const[s,i]of Object.entries(this.getters.getCells(o))){let o;if(i.format===e.dateFormat&&(o=t.dateFormat),i.format===e.timeFormat&&(o=t.timeFormat),i.format===ll(e)&&(o=ll(t)),o){const{col:e,row:t,sheetId:i}=this.getters.getCellPosition(s);this.dispatch("UPDATE_CELL",{col:e,row:t,sheetId:i,format:o})}}}import(e){this.locale=e.settings?.locale??fi}export(e){e.settings={locale:this.locale}}}).add("sheet",class extends RP{static getters=["getSheetName","tryGetSheetName","getSheet","tryGetSheet","getSheetIdByName","getSheetIds","getVisibleSheetIds","isSheetVisible","doesHeaderExist","doesHeadersExist","getCell","getCellPosition","getColsZone","getRowCells","getRowsZone","getNumberCols","getNumberRows","getNumberHeaders","getGridLinesVisibility","getNextSheetName","getSheetSize","getSheetZone","getPaneDivisions","checkZonesExistInSheet","getCommandZones","getUnboundedZone","checkElementsIncludeAllNonFrozenHeaders","getDuplicateSheetName"];sheetIdsMapName={};orderedSheetIds=[];sheets={};cellPosition={};allowDispatch(e){const t=this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e);if("Success"!==t)return t;switch(e.type){case"HIDE_SHEET":return 1===this.getVisibleSheetIds().length?"NotEnoughSheets":"Success";case"CREATE_SHEET":return this.checkValidations(e,this.checkSheetName,this.checkSheetPosition);case"DUPLICATE_SHEET":return this.sheets[e.sheetIdTo]?"DuplicatedSheetId":this.orderedSheetIds.map(this.getSheetName.bind(this)).includes(e.sheetNameTo)?"DuplicatedSheetName":"Success";case"MOVE_SHEET":try{const t=this.orderedSheetIds.findIndex((t=>t===e.sheetId));return this.findIndexOfTargetSheet(t,e.delta),"Success"}catch(e){return"WrongSheetMove"}case"RENAME_SHEET":return this.isRenameAllowed(e);case"COLOR_SHEET":return!e.color||$t(e.color)?"Success":"InvalidColor";case"DELETE_SHEET":return this.getVisibleSheetIds().length>1?"Success":"NotEnoughSheets";case"ADD_COLUMNS_ROWS":return this.doesHeaderExist(e.sheetId,e.dimension,e.base)?e.quantity<=0?"InvalidQuantity":"Success":"InvalidHeaderIndex";case"REMOVE_COLUMNS_ROWS":{const t=Ft(e.elements),o=Ot(e.elements);return t<0||!this.doesHeaderExist(e.sheetId,e.dimension,o)?"InvalidHeaderIndex":this.checkElementsIncludeAllNonFrozenHeaders(e.sheetId,e.dimension,e.elements)?"NotEnoughElements":"Success"}case"FREEZE_ROWS":return this.checkValidations(e,this.checkRowFreezeQuantity,this.checkRowFreezeOverlapMerge);case"FREEZE_COLUMNS":return this.checkValidations(e,this.checkColFreezeQuantity,this.checkColFreezeOverlapMerge);default:return"Success"}}handle(e){switch(e.type){case"SET_GRID_LINES_VISIBILITY":this.setGridLinesVisibility(e.sheetId,e.areGridLinesVisible);break;case"CREATE_SHEET":const t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update("sheetIdsMapName",t.name,t.id);break;case"MOVE_SHEET":this.moveSheet(e.sheetId,e.delta);break;case"RENAME_SHEET":this.renameSheet(this.sheets[e.sheetId],e.name);break;case"COLOR_SHEET":this.history.update("sheets",e.sheetId,"color",e.color);break;case"HIDE_SHEET":this.hideSheet(e.sheetId);break;case"SHOW_SHEET":this.showSheet(e.sheetId);break;case"DUPLICATE_SHEET":this.duplicateSheet(e.sheetId,e.sheetIdTo,e.sheetNameTo);break;case"DELETE_SHEET":this.deleteSheet(this.sheets[e.sheetId]);break;case"REMOVE_COLUMNS_ROWS":"COL"===e.dimension?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.addColumns(this.sheets[e.sheetId],e.base,e.position,e.quantity):this.addRows(this.sheets[e.sheetId],e.base,e.position,e.quantity);break;case"UPDATE_CELL_POSITION":this.updateCellPosition(e);break;case"FREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,e.quantity,"COL");break;case"FREEZE_ROWS":this.setPaneDivisions(e.sheetId,e.quantity,"ROW");break;case"UNFREEZE_ROWS":this.setPaneDivisions(e.sheetId,0,"ROW");break;case"UNFREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,0,"COL");break;case"UNFREEZE_COLUMNS_ROWS":this.setPaneDivisions(e.sheetId,0,"COL"),this.setPaneDivisions(e.sheetId,0,"ROW")}}import(e){for(let t of e.sheets)this.sheetIdsMapName[t.name]=t.id;for(let t of e.sheets){const e=t.name||"Sheet"+(Object.keys(this.sheets).length+1),{colNumber:o,rowNumber:s}=this.getImportedSheetSize(t),i={id:t.id,name:e,numberOfCols:o,rows:ea(s),areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible,panes:{xSplit:t.panes?.xSplit||0,ySplit:t.panes?.ySplit||0},color:t.color};this.orderedSheetIds.push(i.id),this.sheets[i.id]=i}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(lt).map((e=>{const t=this.sheets[e],o={id:t.id,name:t.name,colNumber:t.numberOfCols,rowNumber:this.getters.getNumberRows(t.id),rows:{},cols:{},merges:[],cells:{},styles:{},formats:{},borders:{},conditionalFormats:[],dataValidationRules:[],figures:[],tables:[],areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible,color:t.color};return(t.panes.xSplit||t.panes.ySplit)&&(o.panes=t.panes),o}))}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}tryGetSheet(e){return this.sheets[e]}getSheet(e){const t=this.sheets[e];if(!t)throw new Error(`Sheet ${e} not found.`);return t}isSheetVisible(e){return this.getSheet(e).isVisible}getSheetName(e){return this.getSheet(e).name}tryGetSheetName(e){return this.tryGetSheet(e)?.name}getSheetIdByName(e){if(e){const t=$e(e);for(const e in this.sheetIdsMapName)if(na(e,t))return this.sheetIdsMapName[e]}}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}doesHeaderExist(e,t,o){return"COL"===t?o>=0&&o<this.getNumberCols(e):o>=0&&o<this.getNumberRows(e)}doesHeadersExist(e,t,o){return o.every((o=>this.doesHeaderExist(e,t,o)))}getCell({sheetId:e,col:t,row:o}){const s=this.tryGetSheet(e),i=s?.rows[o]?.cells[t];if(void 0!==i)return this.getters.getCellById(i)}getColsZone(e,t,o){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:o}}getRowCells(e,t){return Object.values(this.getSheet(e).rows[t]?.cells).filter(lt)}getRowsZone(e,t,o){return{top:t,bottom:o,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){const t=this.cellPosition[e];if(!t)throw new Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return"COL"===t?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e="Sheet"){return sa(this.orderedSheetIds.map(this.getSheetName.bind(this)),e)}getSheetSize(e){return{numberOfRows:this.getNumberRows(e),numberOfCols:this.getNumberCols(e)}}getSheetZone(e){return{top:0,left:0,bottom:this.getNumberRows(e)-1,right:this.getNumberCols(e)-1}}getUnboundedZone(e,t){if(void 0===t.bottom||void 0===t.right)return t;const o=0===t.left&&t.right===this.getNumberCols(e)-1,s=0===t.top&&t.bottom===this.getNumberRows(e)-1;return{...t,bottom:s?void 0:t.bottom,right:o&&!s?void 0:t.right}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,o){const s={...this.getPaneDivisions(e)};"COL"===o?s.xSplit=t:"ROW"===o&&(s.ySplit=t),this.history.update("sheets",e,"panes",s)}checkElementsIncludeAllNonFrozenHeaders(e,t,o){const s=this.getters.getPaneDivisions(e),i="ROW"===t?s.ySplit:s.xSplit,n=this.getters.getNumberHeaders(e,t);if(!i)return!1;return bt(o,je(i,n))}getCommandZones(e){const t=[];return"zone"in e&&t.push(e.zone),"target"in e&&t.push(...e.target),"ranges"in e&&t.push(...e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone))),"col"in e&&"row"in e&&t.push({top:e.row,left:e.col,bottom:e.row,right:e.col}),t}checkZonesExistInSheet(e,t){if(!t.every(Go))return"InvalidRange";if(t.length){const o=this.getSheetZone(e);return t.every((e=>os(e,o)))?"Success":"TargetOutOfSheet"}return"Success"}updateCellPosition(e){const{sheetId:t,cellId:o,col:s,row:i}=e;o?this.setNewPosition(o,t,s,i):this.clearPosition(t,s,i)}setNewPosition(e,t,o,s){const i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update("cellPosition",e,{row:s,col:o,sheetId:t}),this.history.update("sheets",t,"rows",s,"cells",o,e)}clearPosition(e,t,o){const s=this.sheets[e]?.rows[o].cells[t];s&&(this.history.update("cellPosition",s,void 0),this.history.update("sheets",e,"rows",o,"cells",t,void 0))}setGridLinesVisibility(e,t){this.history.update("sheets",e,"areGridLinesVisible",t)}createSheet(e,t,o,s,i){const n={id:e,name:t,numberOfCols:o,rows:ea(s),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0}},r=this.orderedSheetIds.slice();r.splice(i,0,n.id);const a=this.sheets;return this.history.update("orderedSheetIds",r),this.history.update("sheets",Object.assign({},a,{[n.id]:n})),n}moveSheet(e,t){const o=this.orderedSheetIds.slice(),s=o.findIndex((t=>t===e)),i=o.splice(s,1);let n=this.findIndexOfTargetSheet(s,t);o.splice(n,0,i[0]),this.history.update("orderedSheetIds",o)}findIndexOfTargetSheet(e,t){for(;0!=t&&0<=e&&e<=this.orderedSheetIds.length;)t>0?(e++,this.isSheetVisible(this.orderedSheetIds[e])&&t--):t<0&&(e--,this.isSheetVisible(this.orderedSheetIds[e])&&t++);if(0===t)return e;throw new Error(Uo("There is not enough visible sheets"))}checkSheetName(e){const t=this.getters.tryGetSheetName(e.sheetId);if(void 0!==t&&e.name===t)return"UnchangedSheetName";const{orderedSheetIds:o,sheets:s}=this,i=e.name&&e.name.trim().toLowerCase();return o.find((t=>na(s[t]?.name,i)&&t!==e.sheetId))?"DuplicatedSheetName":De.test(i)?"ForbiddenCharactersInSheetName":"Success"}checkSheetPosition(e){const{orderedSheetIds:t}=this;return e.position>t.length||e.position<0?"WrongSheetPosition":"Success"}checkRowFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberRows(e.sheetId)?"Success":"InvalidFreezeQuantity"}checkColFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberCols(e.sheetId)?"Success":"InvalidFreezeQuantity"}checkRowFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.top<e.quantity&&e.quantity<=o.bottom)return"MergeOverlap";return"Success"}checkColFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.left<e.quantity&&e.quantity<=o.right)return"MergeOverlap";return"Success"}isRenameAllowed(e){return e.name&&e.name.trim().toLowerCase()?this.checkSheetName(e):"MissingSheetName"}renameSheet(e,t){const o=e.name;this.history.update("sheets",e.id,"name",t.trim());const s=Object.assign({},this.sheetIdsMapName);delete s[o],s[t]=e.id,this.history.update("sheetIdsMapName",s)}hideSheet(e){this.history.update("sheets",e,"isVisible",!1)}showSheet(e){this.history.update("sheets",e,"isVisible",!0)}duplicateSheet(e,t,o){const s=ze(this.getSheet(e));s.id=t,s.name=o;for(let e=0;e<=s.numberOfCols;e++)for(let t=0;t<=s.rows.length;t++)s.rows[t]&&(s.rows[t].cells[e]=void 0);const i=this.orderedSheetIds.slice(),n=i.indexOf(e);i.splice(n+1,0,s.id),this.history.update("orderedSheetIds",i),this.history.update("sheets",Object.assign({},this.sheets,{[s.id]:s}));for(const t of Object.values(this.getters.getCells(e))){const{col:e,row:o}=this.getCellPosition(t.id);this.dispatch("UPDATE_CELL",{sheetId:s.id,col:e,row:o,content:t.content,format:t.format,style:t.style})}const r=Object.assign({},this.sheetIdsMapName);r[s.name]=s.id,this.history.update("sheetIdsMapName",r)}getDuplicateSheetName(e){return ia(e,this.orderedSheetIds.map(this.getSheetName.bind(this)))}deleteSheet(e){const t=e.name,o=Object.assign({},this.sheets);delete o[e.id],this.history.update("sheets",o);const s=this.orderedSheetIds.slice(),i=s.indexOf(e.id);s.splice(i,1),this.history.update("orderedSheetIds",s);const n=Object.assign({},this.sheetIdsMapName);delete n[t],this.history.update("sheetIdsMapName",n)}removeColumns(e,t){t.sort(((e,t)=>t-e));for(let o of t)this.moveCellOnColumnsDeletion(e,o);const o=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",o-t.length);const s=t.filter((t=>t<e.panes.xSplit)).length;s&&this.setPaneDivisions(e.id,e.panes.xSplit-s,"COL")}removeRows(e,t){t.sort(((e,t)=>t-e));for(let o of Ye(t)){const t=o[o.length-1],s=o[0];this.moveCellOnRowsDeletion(e,t,s),this.updateRowsStructureOnDeletion(e,t,s)}const o=t.filter((t=>t<e.panes.ySplit)).length;o&&this.setPaneDivisions(e.id,e.panes.ySplit-o,"ROW")}addColumns(e,t,o,s){const i="before"===o?t:t+1;this.moveCellsOnAddition(e,i,s,"columns");const n=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",n+s),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+s,"COL")}addRows(e,t,o,s){const i="before"===o?t:t+1;this.addEmptyRows(e,s),this.moveCellsOnAddition(e,i,s,"rows"),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+s,"ROW")}moveCellOnColumnsDeletion(e,t){this.dispatch("CLEAR_CELLS",{sheetId:e.id,target:[{left:t,top:0,right:t,bottom:e.rows.length-1}]});for(let o=0;o<e.rows.length;o++){const s=e.rows[o];for(let i in s.cells){const n=Number(i),r=s.cells[i];r&&n>t&&this.setNewPosition(r,e.id,n-1,o)}}}moveCellsOnAddition(e,t,o,s){const i=[];for(let n=0;n<e.rows.length;n++){const r=e.rows[n];if("rows"!==s||n>=t)for(let a in r.cells){const l=Number(a),c=r.cells[a];c&&("rows"===s||l>=t)&&i.push({sheetId:e.id,cellId:c,col:l+("columns"===s?o:0),row:n+("rows"===s?o:0),type:"UPDATE_CELL_POSITION"})}}for(let e of i.reverse())this.updateCellPosition(e)}moveCellOnRowsDeletion(e,t,o){this.dispatch("CLEAR_CELLS",{sheetId:e.id,target:[{left:0,top:t,right:this.getters.getNumberCols(e.id),bottom:o}]});const s=o-t+1;for(let t=0;t<e.rows.length;t++){const i=e.rows[t];if(t>o)for(let o in i.cells){const n=Number(o),r=i.cells[o];r&&this.setNewPosition(r,e.id,n,t-s)}}}updateRowsStructureOnDeletion(e,t,o){const s=[],i=e.rows.map((e=>e.cells)).reverse();for(let n in e.rows){const e=Number(n);e>=t&&e<=o||s.push({cells:i.pop()})}this.history.update("sheets",e.id,"rows",s)}addEmptyRows(e,t){const o=e.rows.slice();for(let e=0;e<t;e++)o.push({cells:{}});this.history.update("sheets",e.id,"rows",o)}getImportedSheetSize(e){const t=Object.keys(e.cells).map(To);let o=e.rowNumber,s=e.colNumber;for(let{col:e,row:i}of t)o=Math.max(o,i+1),s=Math.max(s,e+1);return{rowNumber:o,colNumber:s}}checkSheetExists(e){return"CREATE_SHEET"!==e.type&&"sheetId"in e&&void 0===this.sheets[e.sheetId]?"InvalidSheetId":"CREATE_SHEET"===e.type&&void 0!==this.sheets[e.sheetId]?"DuplicatedSheetId":"Success"}checkZonesAreInSheet(e){return"sheetId"in e?"ranges"in e&&e.ranges.some((e=>""!==e._sheetId&&!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkZonesExistInSheet(e.sheetId,this.getCommandZones(e)):"Success"}}).add("header grouping",class extends RP{static getters=["getHeaderGroups","getGroupsLayers","getVisibleGroupLayers","getHeaderGroup","getHeaderGroupsInZone","isGroupFolded","isRowFolded","isColFolded"];groups={};allowDispatch(e){switch(e.type){case"GROUP_HEADERS":{const{start:t,end:o,sheetId:s}=e;if(!this.getters.tryGetSheet(s))return"InvalidSheetId";if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,o]))return"InvalidHeaderGroupStartEnd";if(t>o)return"InvalidHeaderGroupStartEnd";if(this.findGroupWithStartEnd(e.sheetId,e.dimension,t,o))return"HeaderGroupAlreadyExists";break}case"UNGROUP_HEADERS":{const{start:t,end:o,sheetId:s}=e;if(!this.getters.tryGetSheet(s))return"InvalidSheetId";if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,o]))return"InvalidHeaderGroupStartEnd";if(t>o)return"InvalidHeaderGroupStartEnd";break}case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUP":if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);if(!t)return"UnknownHeaderGroup";if(je(0,this.getters.getNumberHeaders(e.sheetId,e.dimension)).every((o=>o>=t.start&&o<=t.end||this.getters.isHeaderHiddenByUser(e.sheetId,e.dimension,o))))return"NotEnoughElements"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("groups",e.sheetId,{ROW:[],COL:[]});break;case"GROUP_HEADERS":this.groupHeaders(e.sheetId,e.dimension,e.start,e.end);break;case"UNGROUP_HEADERS":this.unGroupHeaders(e.sheetId,e.dimension,e.start,e.end);break;case"DUPLICATE_SHEET":{const t=ze(this.groups[e.sheetId]);this.history.update("groups",e.sheetIdTo,t);break}case"DELETE_SHEET":{const t={...this.groups};delete t[e.sheetId],this.history.update("groups",t);break}case"ADD_COLUMNS_ROWS":const t=mt(e.position,e.base);this.moveGroupsOnHeaderInsertion(e.sheetId,e.dimension,t,e.quantity);break;case"REMOVE_COLUMNS_ROWS":this.moveGroupsOnHeaderDeletion(e.sheetId,e.dimension,e.elements);break;case"UNFOLD_HEADER_GROUP":{const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.unfoldHeaderGroup(e.sheetId,e.dimension,t);break}case"FOLD_HEADER_GROUP":{const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.foldHeaderGroup(e.sheetId,e.dimension,t);break}case"UNFOLD_ALL_HEADER_GROUPS":{const t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(const o of t)this.unfoldHeaderGroup(e.sheetId,e.dimension,o);break}case"FOLD_ALL_HEADER_GROUPS":{const t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(const o of t)this.foldHeaderGroup(e.sheetId,e.dimension,o);break}case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":{const t="UNFOLD_HEADER_GROUPS_IN_ZONE"===e.type?"unfold":"fold",o=this.getGroupsLayers(e.sheetId,e.dimension);"fold"===t&&o.reverse();const s=o.flat(),i="ROW"===e.dimension?e.zone.top:e.zone.left,n="ROW"===e.dimension?e.zone.bottom:e.zone.right,r=new Set;for(let e=i;e<=n;e++){const o=s.filter((t=>t.start-1<=e&&e<=t.end));for(const e of o)if(!("fold"===t&&e.isFolded||"unfold"===t&&!e.isFolded)){r.add(e);break}}for(const o of r)"unfold"===t?this.unfoldHeaderGroup(e.sheetId,e.dimension,o):this.foldHeaderGroup(e.sheetId,e.dimension,o);break}}}getHeaderGroups(e,t){return this.groups[e][t]}getHeaderGroup(e,t,o,s){return this.getHeaderGroups(e,t).find((e=>e.start===o&&e.end===s))}getHeaderGroupsInZone(e,t,o){return this.getHeaderGroups(e,t).filter((e=>{const s="ROW"===t?o.top:o.left,i="ROW"===t?o.bottom:o.right;return this.doGroupOverlap(e,s,i)}))}getGroupsLayers(e,t){const o=this.getHeaderGroups(e,t);return this.bricksFallingAlgorithm(o,0,0)}getVisibleGroupLayers(e,t){const o=this.getGroupsLayers(e,t);for(const s of o)for(let o=s.length-1;o>=0;o--){const i=s[o];if(0===i.start)continue;je(i.start-1,i.end+1).every((o=>this.getters.isHeaderHiddenByUser(e,t,o)))&&s.splice(o,1)}return o.filter((e=>e.length>0))}isGroupFolded(e,t,o,s){return this.getHeaderGroup(e,t,o,s)?.isFolded||!1}isRowFolded(e,t){return this.getters.getHeaderGroups(e,"ROW").some((e=>e.start<=t&&t<=e.end&&e.isFolded))}isColFolded(e,t){return this.getters.getHeaderGroups(e,"COL").some((e=>e.start<=t&&t<=e.end&&e.isFolded))}getGroupId(e){return`${e.start}-${e.end}}`}bricksFallingAlgorithm(e,t,o,s=0){const i={};for(const t of e)i[this.getGroupId(t)]=t.isFolded;const n={};for(const t of e)for(let e=t.start;e<=t.end;e++)n[e]=n[e]?n[e]+1:1;for(let e=t;e<=o;e++)n[e]=n[e]?n[e]+s:s;const r=Math.max(...Object.values(n),0),a=Array.from({length:r},(()=>[])),l=Math.max(o,...e.map((e=>e.end)));for(let o=Math.min(t,...e.map((e=>e.start)));o<=l;o++){const e=n[o]||0;for(let t=0;t<e;t++){const e=a[t].at(-1);if(e&&It([e.end,o]))e.end++;else{const e={start:o,end:o};a[t].push(e)}}}for(const e of a)for(const t of e)t.isFolded=i[this.getGroupId(t)];return a}groupHeaders(e,t,o,s){const i=this.getHeaderGroups(e,t),n=this.bricksFallingAlgorithm(i,o,s,1).flat();this.history.update("groups",e,t,this.removeDuplicateGroups(n))}unGroupHeaders(e,t,o,s){const i=this.getHeaderGroups(e,t),n=this.bricksFallingAlgorithm(i,o,s,-1).flat();this.history.update("groups",e,t,this.removeDuplicateGroups(n))}moveGroupsOnHeaderInsertion(e,t,o,s){const i=this.groups[e][t];for(let n=0;n<i.length;n++){const r=i[n],[a,l]=ta(o,s,[r.start,r.end]);a===r.start&&l===r.end||this.history.update("groups",e,t,n,{...r,start:a,end:l})}}moveGroupsOnHeaderDeletion(e,t,o){const s=this.getHeaderGroups(e,t),i=[];for(const e of s){const t=oa(o,je(e.start,e.end+1));0!==t.length&&i.push({...e,start:Math.min(...t),end:Math.max(...t)})}this.history.update("groups",e,t,this.bricksFallingAlgorithm(i,0,0).flat())}doGroupOverlap(e,t,o){return e.start<=o&&e.end>=t}removeDuplicateGroups(e){const t={};for(const o of e)t[this.getGroupId(o)]=o;return Object.values(t)}findGroupWithStartEnd(e,t,o,s){return this.getHeaderGroups(e,t).find((e=>e.start===o&&e.end===s))}foldHeaderGroup(e,t,o){const s=this.getGroupIndex(e,t,o.start,o.end);if(void 0===s)return;this.history.update("groups",e,t,s,"isFolded",!0);const i=this.getters.getHeaderGroups(e,t);for(let s=0;s<i.length;s++){const n=i[s];n.start===o.start&&n.end<=o.end&&this.history.update("groups",e,t,s,"isFolded",!0)}}unfoldHeaderGroup(e,t,o){const s=this.getGroupIndex(e,t,o.start,o.end);if(void 0===s)return;this.history.update("groups",e,t,s,"isFolded",!1);const i=this.getters.getHeaderGroups(e,t);for(let s=0;s<i.length;s++){const n=i[s];n.start===o.start&&n.end>=o.end&&this.history.update("groups",e,t,s,"isFolded",!1)}}getGroupIndex(e,t,o,s){const i=this.groups[e][t].findIndex((e=>e.start===o&&e.end===s));return-1===i?void 0:i}import(e){for(const t of e.sheets)if(this.groups[t.id]={ROW:[],COL:[]},t.headerGroups)for(const e of["ROW","COL"])for(const o of t.headerGroups[e]||[])this.groups[t.id][e].push({...o})}export(e){for(const t of e.sheets)t.headerGroups=this.groups[t.id]}exportForExcel(e){for(const t of e.sheets)for(const e of["ROW","COL"]){const o=this.getGroupsLayers(t.id,e);for(let s=0;s<o.length;s++){const i=o[s];for(const o of i){for(let i=o.start;i<=o.end;i++){const n=TC(t,e,i);n.outlineLevel=s+1,o.isFolded&&(n.isHidden=!0)}if(o.isFolded){TC(t,e,o.end+1).collapsed=!0}}}}}}).add("header visibility",class extends RP{static getters=["checkElementsIncludeAllVisibleHeaders","getHiddenColsGroups","getHiddenRowsGroups","isHeaderHiddenByUser","isRowHiddenByUser","isColHiddenByUser"];hiddenHeaders={};allowDispatch(e){switch(e.type){case"HIDE_COLUMNS_ROWS":{if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";const t="COL"===e.dimension?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),o="COL"===e.dimension?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return new Set((t||[]).flat().concat(e.elements)).size>=o?"TooManyHiddenElements":Ft(e.elements)<0||Ot(e.elements)>o?"InvalidHeaderIndex":"Success"}case"REMOVE_COLUMNS_ROWS":return this.getters.tryGetSheet(e.sheetId)?this.checkElementsIncludeAllVisibleHeaders(e.sheetId,e.dimension,e.elements)?"NotEnoughElements":"Success":"InvalidSheetId"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":const t={COL:Array(this.getters.getNumberCols(e.sheetId)).fill(!1),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(!1)};this.history.update("hiddenHeaders",e.sheetId,t);break;case"DUPLICATE_SHEET":this.history.update("hiddenHeaders",e.sheetIdTo,ze(this.hiddenHeaders[e.sheetId]));break;case"DELETE_SHEET":this.history.update("hiddenHeaders",e.sheetId,void 0);break;case"REMOVE_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]],o=mt(e.position,e.base);t.splice(o,0,...Array(e.quantity).fill(!1)),this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"HIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!0);break;case"UNHIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!1)}}checkElementsIncludeAllVisibleHeaders(e,t,o){return bt(o,this.getAllVisibleHeaders(e,t))}isHeaderHiddenByUser(e,t,o){return"COL"===t?this.isColHiddenByUser(e,o):this.isRowHiddenByUser(e,o)}isRowHiddenByUser(e,t){return this.hiddenHeaders[e].ROW[t]||this.getters.isRowFolded(e,t)}isColHiddenByUser(e,t){return this.hiddenHeaders[e].COL[t]||this.getters.isColFolded(e,t)}getHiddenColsGroups(e){const t=[[]],o=this.hiddenHeaders[e].COL;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getHiddenRowsGroups(e){const t=[[]],o=this.hiddenHeaders[e].ROW;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getAllVisibleHeaders(e,t){const o=je(0,this.getters.getNumberHeaders(e,t)),s=[];return this.getters.getHeaderGroups(e,t).forEach((e=>{e.isFolded&&s.push(...je(e.start,e.end+1))})),o.filter((o=>!this.hiddenHeaders[e][t][o]&&!s.includes(o)))}import(e){for(let t of e.sheets){this.hiddenHeaders[t.id]={COL:[],ROW:[]};for(let e=0;e<t.rowNumber;e++)this.hiddenHeaders[t.id].ROW[e]=Boolean(t.rows[e]?.isHidden);for(let e=0;e<t.colNumber;e++)this.hiddenHeaders[t.id].COL[e]=Boolean(t.cols[e]?.isHidden)}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(let e=0;e<this.getters.getNumberRows(o.id);e++)(t||this.hiddenHeaders[o.id].ROW[e])&&(void 0===o.rows[e]&&(o.rows[e]={}),o.rows[e].isHidden||=this.hiddenHeaders[o.id].ROW[e]);void 0===o.cols&&(o.cols={});for(let e=0;e<this.getters.getNumberCols(o.id);e++)(t||this.hiddenHeaders[o.id].COL[e])&&(void 0===o.cols[e]&&(o.cols[e]={}),o.cols[e].isHidden||=this.hiddenHeaders[o.id].COL[e])}}}).add("tables",class extends RP{static getters=["getCoreTable","getCoreTables","getCoreTableMatchingTopLeft"];tables={};nextTableId=1;adaptRanges(e,t){const o=t?[t]:this.getters.getSheetIds();for(const t of o)for(const o of this.getCoreTables(t))this.applyRangeChangeOnTable(t,o,e)}allowDispatch(e){switch(e.type){case"CREATE_TABLE":if(e.ranges.some((t=>!this.getters.tryGetSheet(t._sheetId)||t._sheetId!==e.sheetId)))return"InvalidSheetId";const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone));return ps(t)?this.checkValidations(e,(e=>this.getTablesOverlappingZones(e.sheetId,t).length?"TableOverlap":"Success"),(e=>this.checkTableConfigUpdateIsValid(e.config))):"NonContinuousTargets";case"UPDATE_TABLE":return this.getCoreTableMatchingTopLeft(e.sheetId,e.zone)?this.checkValidations(e,this.checkUpdatedTableZoneIsValid,(e=>this.checkTableConfigUpdateIsValid(e.config))):"TableNotFound";case"ADD_MERGE":for(const t of this.getCoreTables(e.sheetId)){const o=t.range.zone;for(const t of e.target)if(es(o,t))return"MergeInTable"}}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("tables",e.sheetId,{});break;case"DELETE_SHEET":{const t={...this.tables};delete t[e.sheetId],this.history.update("tables",t);break}case"DUPLICATE_SHEET":{const t={};for(const o of this.getCoreTables(e.sheetId))t[o.id]="dynamic"===o.type?this.copyDynamicTableForSheet(e.sheetIdTo,o):this.copyStaticTableForSheet(e.sheetIdTo,o);this.history.update("tables",e.sheetIdTo,t);break}case"CREATE_TABLE":{const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e))),o=this.getters.getRangesUnion(t),s=this.getters.getMergesInZone(e.sheetId,o.zone);s.length&&this.dispatch("REMOVE_MERGE",{sheetId:e.sheetId,target:s});const i=this.consumeNextId(),n=e.config||Aw,r="dynamic"===e.tableType?this.createDynamicTable(i,o,n):this.createStaticTable(i,e.tableType,o,n);this.history.update("tables",e.sheetId,r.id,r);break}case"REMOVE_TABLE":{const t={};for(const o of this.getCoreTables(e.sheetId))e.target.every((e=>!Jo(o.range.zone,e)))&&(t[o.id]=o);this.history.update("tables",e.sheetId,t);break}case"UPDATE_TABLE":this.updateTable(e);break;case"UPDATE_CELL":{const t=e.sheetId;for(const o of this.getCoreTables(t)){if("dynamic"===o.type)continue;const s=this.canUpdateCellCmdExtendTable(e,o);"down"===s?this.extendTableDown(t,o):"right"===s&&this.extendTableRight(t,o)}break}case"DELETE_CONTENT":{const t={...this.tables[e.sheetId]};for(const o in t){const s=t[o];s&&e.target.some((e=>os(s.range.zone,e)))&&this.dispatch("REMOVE_TABLE",{sheetId:e.sheetId,target:[s.range.zone]})}break}}}getCoreTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(lt):[]}getCoreTable({sheetId:e,col:t,row:o}){return this.getCoreTables(e).find((e=>ts(t,o,e.range.zone)))}getTablesOverlappingZones(e,t){return this.getCoreTables(e).filter((e=>t.some((t=>es(e.range.zone,t)))))}extendTableDown(e,t){const o=this.getters.extendRange(t.range,"ROW",1);this.history.update("tables",e,t.id,this.updateStaticTable(t,o))}extendTableRight(e,t){const o=this.getters.extendRange(t.range,"COL",1);this.history.update("tables",e,t.id,this.updateStaticTable(t,o))}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:o,row:s},i){if(!e)return"none";const n=i.range.zone;let r="none";if(n.bottom+1===s&&o>=n.left&&o<=n.right?r="down":n.right+1===o&&s>=n.top&&s<=n.bottom&&(r="right"),"none"===r)return"none";const a="down"===r?{...n,bottom:n.bottom+1,top:n.bottom+1}:{...n,right:n.right+1,left:n.right+1};for(let e=a.top;e<=a.bottom;e++)for(let o=a.left;o<=a.right;o++){const s={sheetId:t,col:o,row:e},i=this.getters.getCell(s)?.content;if(i||this.getters.isInMerge(s)||this.getTablesOverlappingZones(t,[hs(s)]).length)return"none"}return r}getCoreTableMatchingTopLeft(e,t){for(const o of this.getCoreTables(e)){const e=o.range.zone;if(e.left===t.left&&e.top===t.top)return o}}checkUpdatedTableZoneIsValid(e){if(!e.newTableRange)return"Success";const t=this.getters.getRangeFromRangeData(e.newTableRange).zone,o=this.getters.checkZonesExistInSheet(e.sheetId,[t]);if("Success"!==o)return o;const s=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!s)return"TableNotFound";return this.getTablesOverlappingZones(e.sheetId,[t]).filter((e=>e.id!==s.id)).length?"TableOverlap":"Success"}checkTableConfigUpdateIsValid(e){return e&&(void 0!==e.numberOfHeaders&&e.numberOfHeaders<0||e.hasFilters&&0===e.numberOfHeaders)?"InvalidTableConfig":"Success"}createStaticTable(e,t,o,s,i){const n=o.zone;if(!i){i=[];for(const e of je(n.left,n.right+1)){const t={...n,left:e,right:e},r=this.consumeNextId();i.push(this.createFilterFromZone(r,o.sheetId,t,s))}}return{id:e,range:o,filters:i,config:s,type:t}}createDynamicTable(e,t,o){const s=ds(t.zone);return{id:e,range:this.getters.getRangeFromZone(t.sheetId,s),config:o,type:"dynamic"}}updateTable(e){const t=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return;const o=e.newTableRange?this.getters.getRangeFromRangeData(e.newTableRange):void 0;if(o){const t=this.getters.getMergesInZone(e.sheetId,o.zone);this.dispatch("REMOVE_MERGE",{sheetId:e.sheetId,target:t})}const s=o||t.range,i=this.updateTableConfig(e.config,t.config),n=e.tableType??t.type;if("dynamic"===n&&"dynamic"!==t.type||"dynamic"!==n&&"dynamic"===t.type){const o="dynamic"===n?this.createDynamicTable(t.id,s,i):this.createStaticTable(t.id,n,s,i);this.history.update("tables",e.sheetId,t.id,o)}else{const o="dynamic"===t.type?this.updateDynamicTable(t,s,i):this.updateStaticTable(t,s,i,n);this.history.update("tables",e.sheetId,t.id,o)}}updateStaticTable(e,t,o,s=e.type){if("dynamic"===s)throw new Error("Cannot use updateStaticTable to update a dynamic table");const i=t||e.range,n=i.zone,r=this.updateTableConfig(o,e.config),a=r||e.config,l=[];if(t||r&&"numberOfHeaders"in r)for(const t of je(n.left,n.right+1)){const o=n.top===e.range.zone.top?e.filters.find((e=>e.col===t)):void 0,s={...n,left:t,right:t},r=o?.id||this.consumeNextId();l.push(this.createFilterFromZone(r,i.sheetId,s,a))}return{...e,range:i,config:a,filters:l.length?l:e.filters,type:s}}updateDynamicTable(e,t,o){const s=t?this.getters.getRangeFromZone(t.sheetId,ds(t.zone)):e.range,i=o||e.config;return{...e,range:s,config:i}}updateTableConfig(e,t){if(!e)return t;const o={...t,...e};return 0===e.numberOfHeaders?o.hasFilters=!1:!0===e.hasFilters&&(o.numberOfHeaders||=1),o}createFilterFromZone(e,t,o,s){return iM(e,this.getters.getRangeFromZone(t,o),s,this.getters.getRangeFromZone)}copyStaticTableForSheet(e,t){const o=this.getters.getRangeFromZone(e,t.range.zone),s=t.filters.map((o=>{const s=this.getters.getRangeFromZone(e,o.rangeWithHeaders.zone);return iM(o.id,s,t.config,this.getters.getRangeFromZone)}));return{id:t.id,range:o,filters:s,config:ze(t.config),type:t.type}}copyDynamicTableForSheet(e,t){const o=this.getters.getRangeFromZone(e,t.range.zone);return{id:t.id,range:o,config:ze(t.config),type:"dynamic"}}applyRangeChangeOnTable(e,t,o){const s=o(t.range);let i;switch(s.changeType){case"REMOVE":return void this.history.update("tables",e,t.id,void 0);case"NONE":return;default:i=s.range}if("dynamic"===t.type){const o=this.updateDynamicTable(t,i);return void this.history.update("tables",e,t.id,o)}const n=[];for(const e of t.filters){const s=o(e.rangeWithHeaders);switch(s.changeType){case"REMOVE":continue;case"NONE":n.push(e);break;default:const o=s.range,i=iM(e.id,o,t.config,this.getters.getRangeFromZone);n.push(i)}}const r=i.zone;if(n.length<ss(r).numberOfCols){for(let o=r.left;o<=r.right;o++)if(!n.find((e=>e.col===o))){const s=this.consumeNextId(),i={...r,left:o,right:o};n.push(this.createFilterFromZone(s,e,i,t.config))}n.sort(((e,t)=>e.col-t.col))}const a=this.createStaticTable(t.id,t.type,i,t.config,n);this.history.update("tables",e,t.id,a)}consumeNextId(){const e=`${this.nextTableId}`;return this.history.update("nextTableId",this.nextTableId+1),e}import(e){for(const t of e.sheets)for(const e of t.tables||[]){const o=this.consumeNextId(),s=e.config||Aw,i=this.getters.getRangeFromSheetXC(t.id,e.range),n=e.type||"static",r="dynamic"===n?this.createDynamicTable(o,i,s):this.createStaticTable(o,n,i,s);this.history.update("tables",t.id,r.id,r)}}export(e){for(const t of e.sheets)for(const e of this.getCoreTables(t.id)){const o={range:qo(e.range.zone),type:e.type};ft(e.config,Aw)||(o.config=e.config),t.tables.push(o)}}exportForExcel(e){for(const t of e.sheets)for(const e of this.getCoreTables(t.id)){const o=qo(e.range.zone);t.tables.push({range:o,filters:[],config:e.config})}}}).add("dataValidation",class extends RP{static getters=["cellHasListDataValidationIcon","getDataValidationRule","getDataValidationRules","getValidationRuleForCell"];rules={};adaptRanges(e,t){const o=t?[t]:Object.keys(this.rules);for(const t of o)this.loopThroughRangesOfSheet(t,e)}loopThroughRangesOfSheet(e,t){for(let o=this.rules[e].length-1;o>=0;o--){const s=this.rules[e][o];for(let i=s.ranges.length-1;i>=0;i--){const n=t(s.ranges[i]);switch(n.changeType){case"REMOVE":if(1===s.ranges.length)this.removeDataValidationRule(e,s.id);else{const t=s.ranges.slice();t.splice(i,1),this.history.update("rules",e,o,"ranges",t)}break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("rules",e,o,"ranges",i,n.range)}}}}allowDispatch(e){switch(e.type){case"ADD_DATA_VALIDATION_RULE":return this.getters.tryGetSheet(e.sheetId)?e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkValidations(e,this.chainValidations(this.checkEmptyRange,this.checkValidRange,this.checkCriterionTypeIsValid,this.checkCriterionHasValidNumberOfValues,this.checkCriterionValuesAreValid)):"InvalidSheetId";case"REMOVE_DATA_VALIDATION_RULE":if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";if(!this.rules[e.sheetId].find((t=>t.id===e.id)))return"UnknownDataValidationRule"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("rules",e.sheetId,[]);break;case"DUPLICATE_SHEET":{const t=ze(this.rules[e.sheetId]).map((t=>({...t,ranges:t.ranges.map((t=>Yr(e.sheetId,e.sheetIdTo,t)))})));this.history.update("rules",e.sheetIdTo,t);break}case"DELETE_SHEET":{const t={...this.rules};delete t[e.sheetId],this.history.update("rules",t);break}case"REMOVE_DATA_VALIDATION_RULE":this.removeDataValidationRule(e.sheetId,e.id);break;case"ADD_DATA_VALIDATION_RULE":{const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e)));this.addDataValidationRule(e.sheetId,{...e.rule,ranges:t});break}case"DELETE_CONTENT":{const t=_o(e.target),o=e.sheetId;for(const e of t)for(let t=e.top;t<=e.bottom;t++)for(let s=e.left;s<=e.right;s++){const e=this.getValidationRuleForCell({sheetId:o,col:s,row:t});if(e&&("isBoolean"===e.criterion.type||"isValueInList"===e.criterion.type&&!this.getters.getCell({sheetId:o,col:s,row:t})?.content)){const e=this.rules[o],i=[this.getters.getRangeFromSheetXC(o,Ao(s,t))],n=this.removeRangesFromRules(o,i,e);this.history.update("rules",o,n)}}}}}getDataValidationRules(e){return this.rules[e]}getDataValidationRule(e,t){return this.rules[e].find((e=>e.id===t))}getValidationRuleForCell({sheetId:e,col:t,row:o}){if(this.rules[e])for(const s of this.rules[e])for(const e of s.ranges)if(ts(t,o,e.zone))return s}cellHasListDataValidationIcon(e){const t=this.getValidationRuleForCell(e);return!!t&&(("isValueInList"===t.criterion.type||"isValueInRange"===t.criterion.type)&&"arrow"===t.criterion.displayStyle)}addDataValidationRule(e,t){const o=this.rules[e];"isBoolean"===t.criterion.type?this.setCenterStyleToBooleanCells(t):"isValueInList"===t.criterion.type&&(t.criterion.values=Array.from(new Set(t.criterion.values)));const s=this.removeRangesFromRules(e,t.ranges,o),i=s.findIndex((e=>e.id===t.id));-1!==i?(s[i]=t,this.history.update("rules",e,s)):this.history.update("rules",e,[...s,t])}removeRangesFromRules(e,t,o){o=ze(o);for(const e of o)e.ranges=this.getters.recomputeRanges(e.ranges,t);return o.filter((e=>e.ranges.length>0))}removeDataValidationRule(e,t){const o=this.rules[e].filter((e=>e.id!==t));this.history.update("rules",e,o)}setCenterStyleToBooleanCells(e){for(const t of Jr(e.ranges)){const e=this.getters.getCell(t),o={...e?.style,align:e?.style?.align??"center",verticalAlign:e?.style?.verticalAlign??"middle"};this.dispatch("UPDATE_CELL",{...t,style:o})}}checkEmptyRange(e){return e.ranges.length?"Success":"EmptyRange"}import(e){for(const t of e.sheets)if(this.rules[t.id]=[],t.dataValidationRules)for(const e of t.dataValidationRules)this.rules[t.id].push({...e,ranges:e.ranges.map((e=>this.getters.getRangeFromSheetXC(t.id,e)))})}export(e){if(e.sheets)for(const t of e.sheets){t.dataValidationRules=[];for(const e of this.rules[t.id])t.dataValidationRules.push({...e,ranges:e.ranges.map((e=>this.getters.getRangeString(e,t.id)))})}}exportForExcel(e){if(e.sheets)for(const t of e.sheets){t.dataValidationRules=[];for(const e of this.rules[t.id]){const o={...ze(e),ranges:e.ranges.map((e=>this.getters.getRangeString(e,t.id,{useBoundedReference:!0})))};"isValueInRange"===e.criterion.type&&(o.criterion.values=e.criterion.values.map((e=>{const o=this.getters.getRangeFromSheetXC(t.id,e);return this.getters.getRangeString(o,t.id,{useBoundedReference:!0,useFixedReference:!0})}))),t.dataValidationRules.push(o)}}}checkCriterionTypeIsValid(e){return ZO.contains(e.rule.criterion.type)?"Success":"UnknownDataValidationCriterionType"}checkCriterionHasValidNumberOfValues(e){const t=e.rule.criterion,o=ZO.get(t.type).numberOfValues(t);return void 0!==o&&t.values.length!==o?"InvalidNumberOfCriterionValues":"Success"}checkCriterionValuesAreValid(e){const t=e.rule.criterion,o=ZO.get(t.type);return t.values.some((e=>"onlyFormulas"===o.allowedValues&&!e.startsWith("=")||(e.startsWith("=")?"onlyLiterals"===o.allowedValues||VS(e).isBadExpression:!o.isCriterionValueValid(e))))?"InvalidDataValidationCriterionValue":"Success"}checkValidRange(e){const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e))),o=t.map((t=>this.getters.getRangeString(t,e.sheetId)));return o.some((e=>!this.getters.isRangeValid(e)))?"InvalidRange":"Success"}}).add("cell",class extends RP{static getters=["zoneToXC","getCells","getTranslatedCellFormula","getCellStyle","getCellById","getFormulaString","getFormulaMovedInSheet"];nextId=1;cells={};adaptRanges(e,t){for(const o of Object.keys(this.cells))for(const s of Object.values(this.cells[o]||{}))if(s.isFormula)for(const i of s.compiledFormula.dependencies)if(!t||i.sheetId===t){const t=e(i);"NONE"!==t.changeType&&this.history.update("cells",o,s.id,"compiledFormula","dependencies",s.compiledFormula.dependencies.indexOf(i),t.range)}}allowDispatch(e){switch(e.type){case"UPDATE_CELL":return this.checkValidations(e,this.checkCellOutOfSheet,this.checkUselessUpdateCell);case"CLEAR_CELL":return this.checkValidations(e,this.checkCellOutOfSheet,this.checkUselessClearCell);case"UPDATE_CELL_POSITION":return!e.cellId||this.cells[e.sheetId]?.[e.cellId]?"Success":"InvalidCellId";default:return"Success"}}handle(e){switch(e.type){case"SET_FORMATTING":"style"in e&&this.setStyle(e.sheetId,e.target,e.style),"format"in e&&void 0!==e.format&&this.setFormatter(e.sheetId,e.target,e.format);break;case"CLEAR_FORMATTING":this.clearFormatting(e.sheetId,e.target);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumnsRows(e,this.copyColumnStyle.bind(this)):this.handleAddColumnsRows(e,this.copyRowStyle.bind(this));break;case"UPDATE_CELL":this.updateCell(e.sheetId,e.col,e.row,e);break;case"CLEAR_CELL":this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col,row:e.row,content:"",style:null,format:""});break;case"CLEAR_CELLS":this.clearCells(e.sheetId,e.target);break;case"DELETE_CONTENT":this.clearZones(e.sheetId,e.target);break;case"DELETE_SHEET":this.history.update("cells",e.sheetId,void 0)}}clearZones(e,t){for(let o of _o(t))for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++){const o=this.getters.getCell({sheetId:e,col:t,row:s});(o?.isFormula||o?.content)&&this.dispatch("UPDATE_CELL",{sheetId:e,content:"",col:t,row:s})}}setFormatter(e,t,o){for(let s of _o(t))for(let t=s.top;t<=s.bottom;t++)for(let i=s.left;i<=s.right;i++)this.dispatch("UPDATE_CELL",{sheetId:e,col:i,row:t,format:o})}clearFormatting(e,t){for(let o of _o(t))for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,style:null,format:""})}clearCells(e,t){for(const o of t)for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,content:"",style:null,format:""})}handleAddColumnsRows(e,t){let o,s;"before"===e.position?(o=je(e.base,e.base+e.quantity),s=e.base+e.quantity):(o=je(e.base+1,e.base+e.quantity+1),s=e.base),t(e.sheetId,s,o)}import(e){for(let t of e.sheets){const o=t.id,s=new $_;for(const e in t.cells)if(t.cells[e]){const{col:o,row:i}=To(e),n={sheetId:t.id,col:o,row:i};s.set(n,{content:t.cells[e]})}for(const[e,o]of[["style",t.styles],["format",t.formats]])for(const[i,n]of ys(t.id,o)){const t=s.get(i);t?t[e]=n:s.set(i,{[e]:n})}for(const i of s.keysForSheet(o)){const o=s.get(i);if(o?.content||o?.format||o?.style){const s=this.importCell(t.id,o?.content,o?.style?e.styles[o?.style]:void 0,o?.format?e.formats[o?.format]:void 0);this.history.update("cells",t.id,s.id,s),this.dispatch("UPDATE_CELL_POSITION",{cellId:s.id,...i})}}}}export(e){const t={},o={};for(let s of e.sheets){const e=[],i=[],n={},r=Object.keys(this.cells[s.id]||{}).map((e=>this.getters.getCellPosition(e))).sort(((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col));for(const s of r){const r=this.getters.getCell(s),a=Ao(s.col,s.row),l=this.removeDefaultStyleValues(r.style);if(Object.keys(l).length){const o=bs(l,t);e[o]??=[],e[o].push(s)}if(r.format){const e=bs(r.format,o);i[e]??=[],i[e].push(s)}r.content&&(n[a]=r.content)}s.styles=Ss(e),s.formats=Ss(i),s.cells=n}e.styles=t,e.formats=o}importCell(e,t,o,s){const i=this.getNextUid();return this.createCell(i,t||"",s,o,e)}exportForExcel(e){this.export(e);const t=[];for(const o in e.formats||[])wr(e.formats[o])||(t.push(Number(o)),delete e.formats[o]);if(t.length)for(const o of e.sheets)for(const e in o.formats){const s=o.formats[e];s&&t.includes(s)&&delete o.formats[e]}}removeDefaultStyleValues(e){const t={...e};for(const e in ue)t[e]===ue[e]&&delete t[e];return t}getCells(e){return this.cells[e]||{}}getCellById(e){const t=this.getters.getCellPosition(e);return this.cells[t.sheetId][e]}getFormulaString(e,t,o,s=!1){if(!o.length)return ut(t.map((e=>e.value)));let i=0;return ut(t.map((t=>{if("REFERENCE"===t.type){const t=o[i++];return this.getters.getRangeString(t,e,{useBoundedReference:s})}return t.value})))}getTranslatedCellFormula(e,t,o,s){const i=this.getters.createAdaptedRanges(LS(s).dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t))),t,o,e);return this.getFormulaString(e,s,i)}getFormulaMovedInSheet(e,t,o){const s=LS(o).dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t))),i=this.getters.removeRangesSheetPrefix(t,s);return this.getFormulaString(t,o,i)}getCellStyle(e){return this.getters.getCell(e)?.style||{}}zoneToXC(e,t,o=[{colFixed:!1,rowFixed:!1}]){const s=Ao((t=this.getters.expandZone(e,t)).left,t.top,o[0]),i=Ao(t.right,t.bottom,o.length>1?o[1]:o[0]),n=this.getters.getMainCellPosition({sheetId:e,col:t.left,row:t.top}),r=this.getters.getMainCellPosition({sheetId:e,col:t.right,row:t.bottom}),a=n.col===r.col&&n.row===r.row;return s==i||a?s:s+":"+i}setStyle(e,t,o){for(let s of _o(t))for(let t=s.left;t<=s.right;t++)for(let i=s.top;i<=s.bottom;i++){const s=this.getters.getCell({sheetId:e,col:t,row:i});this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:i,style:o?{...s?.style,...o}:void 0})}}copyColumnStyle(e,t,o){for(let s=0;s<this.getters.getNumberRows(e);s++){const i=this.getFormat(e,t,s);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,...i})}}copyRowStyle(e,t,o){for(let s=0;s<this.getters.getNumberCols(e);s++){const i=this.getFormat(e,s,t);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:s,row:t,...i})}}getFormat(e,t,o){const s={},i=this.getters.getMainCellPosition({sheetId:e,col:t,row:o}),n=this.getters.getCell(i);return n&&(n.style&&(s.style=n.style),n.format&&(s.format=n.format)),s}getNextUid(){const e=this.nextId.toString();return this.history.update("nextId",this.nextId+1),e}updateCell(e,t,o,s){const i=this.getters.getCell({sheetId:e,col:t,row:o}),n="content"in s||"formula"in s,r=n?xt(s?.content):i?.content||"";let a;a=void 0!==s.style?s.style||void 0:i?i.style:void 0;const l="format"in s?s.format:i&&i.format;if((n&&!r&&!s.formula||!n&&(!i||""===i.content))&&!a&&!l)return void(i&&(this.history.update("cells",e,i.id,void 0),this.dispatch("UPDATE_CELL_POSITION",{cellId:void 0,col:t,row:o,sheetId:e})));const c=i?.id||this.getNextUid(),h=this.createCell(c,r,l,a,e);this.history.update("cells",e,h.id,h),this.dispatch("UPDATE_CELL_POSITION",{cellId:h.id,col:t,row:o,sheetId:e})}createCell(e,t,o,s,i){return t.startsWith("=")?this.createFormulaCell(e,t,o,s,i):this.createLiteralCell(e,t,o,s)}createLiteralCell(e,t,o,s){const i=this.getters.getLocale(),n=Er(t,i);return xr(o=o||("number"==typeof n?cr(t,i)||hr(t):void 0))||Pi(t)||(t=Gi(n)),{id:e,content:t,style:s,format:o,isFormula:!1,parsedValue:n}}createFormulaCell(e,t,o,s,i){const n=VS(t);return n.dependencies.length?this.createFormulaCellWithDependencies(e,n,o,s,i):{id:e,content:t,style:s,format:o,isFormula:!0,compiledFormula:{...n,dependencies:[]}}}createFormulaCellWithDependencies(e,t,o,s,i){const n=[];for(const e of t.dependencies)n.push(this.getters.getRangeFromSheetXC(i,e));return new TP(e,t,o,s,n,i,this.getters.getRangeString)}checkCellOutOfSheet(e){const{sheetId:t,col:o,row:s}=e;if(!this.getters.tryGetSheet(t))return"InvalidSheetId";return ts(o,s,this.getters.getSheetZone(t))?"Success":"TargetOutOfSheet"}checkUselessClearCell(e){const t=this.getters.getCell(e);return t&&(t.content||t.style||t.format)?"Success":"NoChanges"}checkUselessUpdateCell(e){const t=this.getters.getCell(e),o="style"in e,s="format"in e;return("content"in e||"formula"in e)&&t?.content!==e.content||o&&!ft(t?.style,e.style)||s&&t?.format!==e.format?"Success":"NoChanges"}}).add("merge",class extends RP{static getters=["isInMerge","isInSameMerge","isMergeHidden","getMainCellPosition","expandZone","doesIntersectMerge","doesColumnsHaveCommonMerges","doesRowsHaveCommonMerges","getMerges","getMerge","getMergesInZone","isSingleCellOrMerge","getSelectionRangeString","isMainCellPosition"];nextId=1;merges={};mergeCellMap={};allowDispatch(e){const t="force"in e&&!!e.force;switch(e.type){case"ADD_MERGE":return t?this.checkValidations(e,this.checkFrozenPanes):this.checkValidations(e,this.checkDestructiveMerge,this.checkOverlap,this.checkFrozenPanes);case"UPDATE_CELL":return this.checkMergedContentUpdate(e);case"REMOVE_MERGE":return this.checkMergeExists(e);default:return"Success"}}handle(e){switch(e.type){case"CREATE_SHEET":case"DELETE_SHEET":this.history.update("merges",e.sheetId,{}),this.history.update("mergeCellMap",e.sheetId,{});break;case"DUPLICATE_SHEET":const t=this.merges[e.sheetId];if(!t)break;for(const o of Object.values(t).filter(lt))this.addMerge(e.sheetIdTo,o.zone);break;case"ADD_MERGE":for(const t of e.target)this.addMerge(e.sheetId,t);break;case"REMOVE_MERGE":for(const t of e.target)this.removeMerge(e.sheetId,t)}}adaptRanges(e,t){const o=t?[t]:Object.keys(this.merges);for(const t of o)this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map((t=>this.getMergeById(e,parseInt(t,10)))).filter(lt)}getMerge({sheetId:e,col:t,row:o}){const s=this.mergeCellMap[e],i=s?t in s&&s[t]?.[o]:void 0;return i?this.getMergeById(e,i):void 0}getMergesInZone(e,t){const o=this.mergeCellMap[e];if(!o)return[];const s=new Set;for(let e=t.left;e<=t.right;e++)for(let i=t.top;i<=t.bottom;i++){const t=o[e]?.[i];t&&s.add(t)}return Array.from(s).map((t=>this.getMergeById(e,t))).filter(lt)}getSelectionRangeString(e,t){const o=jr.fromRange(e,this.getters),s=this.getters.expandZone(o.sheetId,o.zone),i=o.clone({zone:{...s,bottom:o.isFullCol?void 0:s.bottom,right:o.isFullRow?void 0:s.right}}),n=this.getters.getRangeString(i,t);if(this.isSingleCellOrMerge(o.sheetId,o.zone)){const{sheetName:e,xc:t}=qr(n);return Zr(e,t.split(":")[0])}return n}doesIntersectMerge(e,t){for(const o of this.getMerges(e))if(es(t,o))return!0;return!1}doesColumnsHaveCommonMerges(e,t,o){const s=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(s.id,t,i,o,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,o){const s=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(s.id,i,t,i,o))return!0;return!1}expandZone(e,t){let{left:o,right:s,top:i,bottom:n}=t,r={left:o,right:s,top:i,bottom:n};for(let t in this.merges[e]){const o=this.getMergeById(e,parseInt(t));o&&es(o,r)&&(r=Ko(o,r))}return Qo(r,t)?r:this.expandZone(e,r)}isInSameMerge(e,t,o,s,i){const n=this.getMerge({sheetId:e,col:t,row:o}),r=this.getMerge({sheetId:e,col:s,row:i});return!(!n||!r)&&Qo(n,r)}isInMerge({sheetId:e,col:t,row:o}){const s=this.mergeCellMap[e];return!!s&&(t in s&&Boolean(s[t]?.[o]))}getMainCellPosition(e){const t=this.getMerge(e);return t?{sheetId:e.sheetId,col:t.left,row:t.top}:e}isMergeHidden(e,t){const o=this.getters.getHiddenColsGroups(e),s=this.getters.getHiddenRowsGroups(e);for(let e of o)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of s)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){const o=this.getMerge({sheetId:e,col:t.left,row:t.top});if(o)return Qo(t,o);const{numberOfCols:s,numberOfRows:i}=ss(t);return 1===s&&1===i}isMainCellPosition(e){return ft(this.getMainCellPosition(e),e)}isMergeDestructive(e,t){let{left:o,right:s,top:i,bottom:n}=t;s=Ze(s,0,this.getters.getNumberCols(e)-1),n=Ze(n,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=n;t++)for(let n=o;n<=s;n++)if(n!==o||t!==i){const o=this.getters.getCell({sheetId:e,col:n,row:t});if(o&&""!==o.content)return!0}return!1}getMergeById(e,t){const o=this.merges[e]?.[t];return void 0!==o?OP(t,o):void 0}checkDestructiveMerge({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return"Success";return t.some((t=>this.isMergeDestructive(e,t)))?"MergeIsDestructive":"Success"}checkOverlap({target:e}){for(const t of e)for(const o of e)if(t!==o&&es(t,o))return"MergeOverlap";return"Success"}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return"Success";const{xSplit:o,ySplit:s}=this.getters.getPaneDivisions(e);for(const e of t)if(e.left<o&&e.right>=o||e.top<s&&e.bottom>=s)return"FrozenPaneOverlap";return"Success"}checkMergedContentUpdate(e){const{col:t,row:o,content:s}=e;if(void 0===s)return"Success";const{col:i,row:n}=this.getMainCellPosition(e);return i===t&&n===o?"Success":"CellIsMerged"}checkMergeExists(e){const{sheetId:t,target:o}=e;for(const e of o){const{left:o,top:s}=e,i=this.getMerge({sheetId:t,col:o,row:s});if(void 0===i||!Qo(e,i))return"InvalidTarget"}return"Success"}addMerge(e,t){let{left:o,right:s,top:i,bottom:n}=t;s=Ze(s,0,this.getters.getNumberCols(e)-1),n=Ze(n,0,this.getters.getNumberRows(e)-1);if(Ao(o,i)===Ao(s,n))return;const r=this.getters.getCell({sheetId:e,col:o,row:i});let a=this.nextId++;this.history.update("merges",e,a,this.getters.getRangeFromSheetXC(e,qo({left:o,top:i,right:s,bottom:n})));let l=new Set;for(let t=i;t<=n;t++)for(let n=o;n<=s;n++){n===o&&t===i||this.dispatch("UPDATE_CELL",{sheetId:e,col:n,row:t,style:r?r.style:null,content:""});const s=this.getMerge({sheetId:e,col:n,row:t});s&&l.add(s.id),this.history.update("mergeCellMap",e,n,t,a)}for(let t of l){const{top:o,bottom:s,left:i,right:n}=this.getMergeById(e,t);for(let t=o;t<=s;t++)for(let o=i;o<=n;o++){const s={sheetId:e,col:o,row:t},i=this.getMerge(s);i&&i.id===a||(this.history.update("mergeCellMap",e,o,t,void 0),this.dispatch("CLEAR_CELL",s))}this.history.update("merges",e,t,void 0)}}removeMerge(e,t){const{left:o,top:s,bottom:i,right:n}=t,r=this.getMerge({sheetId:e,col:o,row:s});if(void 0!==r&&Qo(t,r)){this.history.update("merges",e,r.id,void 0);for(let t=s;t<=i;t++)for(let s=o;s<=n;s++)this.history.update("mergeCellMap",e,s,t,void 0)}}applyRangeChangeOnSheet(e,t){const o=Object.entries(this.merges[e]||{});for(const[s,i]of o)if(i){const o=i.zone,n=t(i);switch(n.changeType){case"NONE":break;case"REMOVE":this.removeMerge(e,o);break;default:const{numberOfCols:t,numberOfRows:i}=ss(n.range.zone);1===t&&1===i?this.removeMerge(e,o):this.history.update("merges",e,parseInt(s,10),n.range)}}this.history.update("mergeCellMap",e,{});for(const t of this.getMerges(e))for(const{col:o,row:s}of rs(t))this.history.update("mergeCellMap",e,o,s,t.id)}import(e){const t=e.sheets||[];for(let e of t)this.history.update("merges",e.id,{}),this.history.update("mergeCellMap",e.id,{}),e.merges&&this.importMerges(e.id,e.merges)}importMerges(e,t){for(let o of t)this.addMerge(e,$o(o))}export(e){for(let t of e.sheets){const e=this.merges[t.id];e&&t.merges.push(...DP(e))}}exportForExcel(e){this.export(e)}}).add("headerSize",class extends RP{static getters=["getUserRowSize","getColSize"];sizes={};handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("sizes",e.sheetId,{COL:Array(this.getters.getNumberCols(e.sheetId)).fill(void 0),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(void 0)});break;case"DUPLICATE_SHEET":this.history.update("sizes",e.sheetIdTo,ze(this.sizes[e.sheetId]));break;case"DELETE_SHEET":const t={...this.sizes};delete t[e.sheetId],this.history.update("sizes",t);break;case"REMOVE_COLUMNS_ROWS":{const t=Rt(this.sizes[e.sheetId][e.dimension],e.elements);this.history.update("sizes",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];const o=mt(e.position,e.base),s=t[e.base];t.splice(o,0,...Array(e.quantity).fill(s)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"RESIZE_COLUMNS_ROWS":if("ROW"===e.dimension)for(const t of e.elements)this.history.update("sizes",e.sheetId,e.dimension,t,e.size||void 0);else for(const t of e.elements)this.history.update("sizes",e.sheetId,e.dimension,t,e.size||void 0)}}getColSize(e,t){return Math.round(this.sizes[e]?.COL[t]||oe)}getUserRowSize(e,t){const o=this.sizes[e]?.ROW[t];return o?Math.round(o):void 0}import(e){for(let t of e.sheets){const e={COL:Array(t.colNumber).fill(void 0),ROW:Array(t.rowNumber).fill(void 0)};for(let[o,s]of Object.entries(t.rows))s.size&&(e.ROW[o]=s.size);for(let[o,s]of Object.entries(t.cols))s.size&&(e.COL[o]=s.size);this.sizes[t.id]=e}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(const e of je(0,this.getters.getNumberRows(o.id)))(t||this.sizes[o.id].ROW[e])&&(o.rows[e]={...o.rows[e],size:this.getUserRowSize(o.id,e)??se});void 0===o.cols&&(o.cols={});for(let e of je(0,this.getters.getNumberCols(o.id)))(t||this.sizes[o.id].COL[e])&&(o.cols[e]={...o.cols[e],size:this.getColSize(o.id,e)})}}}).add("borders",class extends RP{static getters=["getCellBorder","getBordersColors"];borders={};allowDispatch(e){return"SET_BORDER"===e.type?this.checkBordersUnchanged(e):"Success"}handle(e){switch(e.type){case"ADD_MERGE":for(const t of e.target)this.addBordersToMerge(e.sheetId,t);break;case"DUPLICATE_SHEET":const t=this.borders[e.sheetId];if(t){const o=t.slice().map((e=>e?.slice().map((e=>ze(e)))));this.history.update("borders",e.sheetIdTo,o)}break;case"DELETE_SHEET":const o={...this.borders};delete o[e.sheetId],this.history.update("borders",o);break;case"SET_BORDER":this.setBorder(e.sheetId,e.col,e.row,e.border);break;case"SET_BORDERS_ON_TARGET":for(const t of e.target)for(let o=t.top;o<=t.bottom;o++)for(let s=t.left;s<=t.right;s++)this.setBorder(e.sheetId,s,o,e.border);break;case"SET_ZONE_BORDERS":if(e.border){const t=e.target.map((t=>this.getters.expandZone(e.sheetId,t)));this.setBorders(e.sheetId,t,e.border.position,""===e.border.color?void 0:{style:e.border.style||be,color:e.border.color||Se})}break;case"CLEAR_FORMATTING":this.clearBorders(e.sheetId,e.target);break;case"REMOVE_COLUMNS_ROWS":const s=[...e.elements].sort(((e,t)=>t-e));for(const t of Ye(s))if("COL"===e.dimension){const o=this.getters.getColsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[o]),this.shiftBordersHorizontally(e.sheetId,t[0]+1,-t.length)}else{const o=this.getters.getRowsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[o]),this.shiftBordersVertically(e.sheetId,t[0]+1,-t.length)}break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumns(e):this.handleAddRows(e)}}handleAddColumns(e){let t,o;"before"===e.position?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity),t=e.base,o=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,o)}handleAddRows(e){let t,o;"before"===e.position?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity),t=e.base,o=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,o)}getCellBorder({sheetId:e,col:t,row:o}){const s=this.borders[e]?.[t]?.[o];return s?.top||s?.bottom||s?.left||s?.right?ze(s):null}getBordersColors(e){const t=[],o=this.borders[e];if(o)for(const e of o.filter(lt))for(const o of e)if(o)for(const e of["top","bottom","left","right"]){const s=o[e]?.color;s&&t.push(s)}return t}ensureColumnBorderContinuity(e,t,o){const s=je(t+1,o);for(let i=0;i<this.getters.getNumberRows(e);i++){const n=this.getCellBorder({sheetId:e,col:t,row:i}),r=this.getCellBorder({sheetId:e,col:o,row:i});if(n&&r){const t=this.getCommonSides(n,r);for(let o of s)this.addBorder(e,o,i,t)}}}ensureRowBorderContinuity(e,t,o){const s=je(t+1,o);for(let i=0;i<this.getters.getNumberCols(e);i++){const n=this.getCellBorder({sheetId:e,col:i,row:t}),r=this.getCellBorder({sheetId:e,col:i,row:o});if(n&&r){const t=this.getCommonSides(n,r);for(let o of s)this.addBorder(e,i,o,t)}}}getCommonSides(e,t){const o={};for(let s of["top","bottom","left","right"])e[s]&&ft(e[s],t[s])&&(o[s]=e[s]);return o}getColumnsWithBorders(e){const t=this.borders[e];return t?Object.keys(t).map((e=>parseInt(e,10))):[]}getRowsWithBorders(e){const t=this.borders[e]?.filter(lt);if(!t)return[];const o=new Set;for(const e of t)for(const t in e)o.add(parseInt(t,10));return Array.from(o)}getRowsRange(e){return this.borders[e]?je(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,o){this.borders[e]&&this.getColumnsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((t=>{this.moveBordersOfColumn(e,t,o)}))}shiftBordersVertically(e,t,o){this.borders[e]&&(o<0&&this.moveBordersOfRow(e,t,o,{destructive:!1}),this.getRowsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((t=>{this.moveBordersOfRow(e,t,o)})))}moveBordersOfRow(e,t,o,{destructive:s}={destructive:!0}){const i=this.borders[e];i&&this.getColumnsWithBorders(e).forEach((n=>{const r=i[n]?.[t+o],a=i[n]?.[t];this.history.update("borders",e,n,t+o,s?a:a||r),this.history.update("borders",e,n,t,void 0)}))}moveBordersOfColumn(e,t,o,{destructive:s}={destructive:!0}){const i=this.borders[e];i&&this.getRowsRange(e).forEach((n=>{const r=i[t+o]?.[n],a=i[t]?.[n];this.history.update("borders",e,t+o,n,s?a:a||r),s&&this.history.update("borders",e,t,n,void 0)}))}setBorder(e,t,o,s,i=!0){const n=this.getters.getNumberCols(e)-1,r=this.getters.getNumberRows(e)-1;!i&&this.borders[e]?.[t]?.[o]?.left||(this.history.update("borders",e,t,o,"left",s?.left),s?.left&&t>0&&!ft(this.getCellBorder({sheetId:e,col:t-1,row:o})?.right,s?.left)&&this.history.update("borders",e,t-1,o,"right",void 0)),!i&&this.borders[e]?.[t]?.[o]?.top||(this.history.update("borders",e,t,o,"top",s?.top),s?.top&&o>0&&!ft(this.getCellBorder({sheetId:e,col:t,row:o-1})?.bottom,s?.top)&&this.history.update("borders",e,t,o-1,"bottom",void 0)),!i&&this.borders[e]?.[t]?.[o]?.right||(this.history.update("borders",e,t,o,"right",s?.right),s?.right&&t<n&&!ft(this.getCellBorder({sheetId:e,col:t+1,row:o})?.left,s?.right)&&this.history.update("borders",e,t+1,o,"left",void 0)),!i&&this.borders[e]?.[t]?.[o]?.bottom||(this.history.update("borders",e,t,o,"bottom",s?.bottom),s?.bottom&&o<r&&!ft(this.getCellBorder({sheetId:e,col:t,row:o+1})?.top,s?.bottom)&&this.history.update("borders",e,t,o+1,"top",void 0))}clearBorders(e,t,o=!1){const s=this.getters.getNumberCols(e)-1,i=this.getters.getNumberRows(e)-1;for(let n of _o(t))for(let t=n.top;t<=n.bottom;t++){o&&(n.left>0&&this.history.update("borders",e,n.left-1,t,"right",void 0),n.right<s&&this.history.update("borders",e,n.right+1,t,"left",void 0));for(let s=n.left;s<=n.right;s++)this.history.update("borders",e,s,t,void 0),o&&(n.top>0&&this.history.update("borders",e,s,n.top-1,"bottom",void 0),n.bottom<i&&this.history.update("borders",e,s,n.bottom+1,"top",void 0))}}clearInsideBorders(e,t){for(let o of t)for(let t=o.top;t<=o.bottom;t++)for(let s=o.left;s<=o.right;s++)this.history.update("borders",e,s,t,void 0)}addBorder(e,t,o,s){this.setBorder(e,t,o,{...this.getCellBorder({sheetId:e,col:t,row:o}),...s})}setBorders(e,t,o,s){if("clear"===o)return this.clearBorders(e,t,!0);for(let i of _o(t)){if("all"===o)for(let t=i.top;t<=i.bottom;t++)for(let o=i.left;o<=i.right;o++)this.addBorder(e,o,t,{top:s,right:s,bottom:s,left:s});if("h"===o||"hv"===o){if(i.top===i.bottom)continue;for(let t=i.left;t<=i.right;t++){this.addBorder(e,t,i.top,{bottom:s});for(let o=i.top+1;o<i.bottom;o++)this.addBorder(e,t,o,{top:s,bottom:s});this.addBorder(e,t,i.bottom,{top:s})}}if("v"===o||"hv"===o){if(i.left===i.right)continue;for(let t=i.top;t<=i.bottom;t++){this.addBorder(e,i.left,t,{right:s});for(let o=i.left+1;o<i.right;o++)this.addBorder(e,o,t,{left:s,right:s});this.addBorder(e,i.right,t,{left:s})}}if("left"===o||"external"===o)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.left,t,{left:s});if("right"===o||"external"===o)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.right,t,{right:s});if("top"===o||"external"===o)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.top,{top:s});if("bottom"===o||"external"===o)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.bottom,{bottom:s})}}addBordersToMerge(e,t){const{left:o,right:s,top:i,bottom:n}=t,r=this.getCellBorder({sheetId:e,col:o,row:i}),a=this.getCellBorder({sheetId:e,col:s,row:n});this.clearBorders(e,[t]),r?.top&&this.setBorders(e,[{...t,bottom:i}],"top",r.top),r?.left&&this.setBorders(e,[{...t,right:o}],"left",r.left),a?.bottom?this.setBorders(e,[{...t,top:n}],"bottom",a.bottom):r?.bottom&&this.setBorders(e,[{...t,top:n}],"bottom",r.bottom),a?.right?this.setBorders(e,[{...t,left:s}],"right",a.right):r?.right&&this.setBorders(e,[{...t,left:s}],"right",r.right)}checkBordersUnchanged(e){const t=this.getCellBorder(e),o=!(e.border?.bottom||e.border?.left||e.border?.right||e.border?.top);return!t&&o||ft(t,e.border)?"NoChanges":"Success"}import(e){if(Object.keys(e.borders||{}).length)for(const t of e.sheets)for(const[o,s]of ys(t.id,t.borders)){const{sheetId:t,col:i,row:n}=o,r=e.borders[s];this.setBorder(t,i,n,r,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,$o(e))}export(e){const t={};for(let o of e.sheets){const e={};for(let s=0;s<o.colNumber;s++)for(let i=0;i<o.rowNumber;i++){const n=this.getCellBorder({sheetId:o.id,col:s,row:i});if(n){const r=bs(n,t),a={sheetId:o.id,col:s,row:i};e[r]??=[],e[r].push(a)}}o.borders=Ss(e)}e.borders=t}exportForExcel(e){this.export(e)}}).add("conditional formatting",class extends RP{static getters=["getConditionalFormats","getRulesSelection","getRulesByCell","getAdaptedCfRanges"];cfRules={};loopThroughRangesOfSheet(e,t){for(const o of this.cfRules[e]){if("DataBarRule"===o.rule.type&&o.rule.rangeValues){const s=t(o.rule.rangeValues);switch(s.changeType){case"REMOVE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"rule","rangeValues",void 0);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"rule","rangeValues",s.range)}}for(const s of o.ranges){const i=t(s);switch(i.changeType){case"REMOVE":let t=o.ranges.slice();t.splice(o.ranges.indexOf(s),1),t.length>=1?this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",t):this.removeConditionalFormatting(o.id,e);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",o.ranges.indexOf(s),i.range)}}}}adaptRanges(e,t){if(t)this.loopThroughRangesOfSheet(t,e);else for(const t of Object.keys(this.cfRules))this.loopThroughRangesOfSheet(t,e)}allowDispatch(e){switch(e.type){case"ADD_CONDITIONAL_FORMAT":return e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkValidations(e,this.checkCFRule,this.checkEmptyRange,this.checkCFHasChanged);case"CHANGE_CONDITIONAL_FORMAT_PRIORITY":return this.checkValidPriorityChange(e.cfId,e.delta,e.sheetId)}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.cfRules[e.sheetId]=[];break;case"DUPLICATE_SHEET":this.history.update("cfRules",e.sheetIdTo,[]);for(const t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case"DELETE_SHEET":const t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update("cfRules",t);break;case"ADD_CONDITIONAL_FORMAT":const o={...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))};this.addConditionalFormatting(o,e.sheetId);break;case"REMOVE_CONDITIONAL_FORMAT":this.removeConditionalFormatting(e.id,e.sheetId);break;case"CHANGE_CONDITIONAL_FORMAT_PRIORITY":this.changeCFPriority(e.cfId,e.delta,e.sheetId)}}import(e){for(let t of e.sheets)this.cfRules[t.id]=t.conditionalFormats.map((e=>this.mapToConditionalFormatInternal(t.id,e)))}export(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e))))}exportForExcel(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e,{useBoundedReference:!0}))))}getConditionalFormats(e){return this.cfRules[e]?.map((t=>this.mapToConditionalFormat(e,t)))||[]}getRulesSelection(e,t){const o=new Set;return t.forEach((t=>{this.getRulesByZone(e,t).forEach((e=>{o.add(e)}))})),Array.from(o)}getRulesByZone(e,t){const o=new Set;for(let s=t.top;s<=t.bottom;s++)for(let i=t.left;i<=t.right;i++){this.getRulesByCell(e,i,s).forEach((e=>{o.add(e.id)}))}return o}getRulesByCell(e,t,o){const s=[];for(let i of this.cfRules[e])for(let e of i.ranges)ts(t,o,e.zone)&&s.push(i);return new Set(s.map((t=>this.mapToConditionalFormat(e,t))))}getAdaptedCfRanges(e,t,o,s){if(0===o.length&&0===s.length)return;const i=this.getters.getConditionalFormats(e),n=i.findIndex((e=>e.id===t.id));let r=[];n>-1&&(r=i[n].ranges.map(zo));const a=_o(r,s);return _o([...o,...a],[]).map((t=>this.getters.getRangeDataFromZone(e,t)))}mapToConditionalFormat(e,t,{useBoundedReference:o}={useBoundedReference:!1}){const s=t.ranges.map((t=>this.getters.getRangeString(t,e,{useBoundedReference:o})));return"DataBarRule"!==t.rule.type?{...t,rule:{...t.rule},ranges:s}:{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues&&this.getters.getRangeString(t.rule.rangeValues,e,{useBoundedReference:o})},ranges:s}}mapToConditionalFormatInternal(e,t){const o=t.ranges.map((t=>this.getters.getRangeFromSheetXC(e,t)));return"DataBarRule"!==t.rule.type?{...t,rule:{...t.rule},ranges:o}:{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues?this.getters.getRangeFromSheetXC(e,t.rule.rangeValues):void 0},ranges:o}}addConditionalFormatting(e,t){const o=this.cfRules[t].slice(),s=o.findIndex((t=>t.id===e.id)),i=this.mapToConditionalFormatInternal(t,e);s>-1?o.splice(s,1,i):o.push(i),this.history.update("cfRules",t,o)}checkValidPriorityChange(e,t,o){if(!this.cfRules[o])return"InvalidSheetId";const s=this.cfRules[o].findIndex((t=>t.id===e));if(-1===s)return"InvalidConditionalFormatId";const i=s-t;return i<0||i>=this.cfRules[o].length?"InvalidConditionalFormatId":"Success"}checkEmptyRange(e){return e.ranges.length?"Success":"EmptyRange"}checkCFRule(e){const t=e.cf.rule;switch(t.type){case"CellIsRule":return this.checkValidations(t,this.checkOperatorArgsNumber(2,["Between","NotBetween"]),this.checkOperatorArgsNumber(1,["BeginsWith","ContainsText","EndsWith","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","NotContains","Equal","NotEqual"]),this.checkOperatorArgsNumber(0,["IsEmpty","IsNotEmpty"]),this.checkCFValues);case"ColorScaleRule":return this.checkValidations(t,this.chainValidations(this.checkThresholds(this.checkFormulaCompilation)),this.chainValidations(this.checkThresholds(this.checkNaN),this.batchValidations(this.checkMinBiggerThanMax,this.checkMinBiggerThanMid,this.checkMidBiggerThanMax)));case"IconSetRule":return this.checkValidations(t,this.chainValidations(this.checkInflectionPoints(this.checkNaN),this.checkLowerBiggerThanUpper),this.chainValidations(this.checkInflectionPoints(this.checkFormulaCompilation)))}return"Success"}checkCFHasChanged(e){const t=this.mapToConditionalFormatInternal(e.sheetId,{...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))}),o=this.cfRules[e.sheetId]?.find((t=>t.id===e.cf.id));return o&&ft(t,o)?"NoChanges":"Success"}checkOperatorArgsNumber(e,t){if(e>2)throw new Error("Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.");return o=>{if(t.includes(o.operator)){const t=[],s=e=>void 0===e||""===e;return e>=1&&s(o.values[0])&&t.push("FirstArgMissing"),e>=2&&s(o.values[1])&&t.push("SecondArgMissing"),t.length?t:"Success"}return"Success"}}checkNaN(e,t){if(["number","percentage","percentile"].includes(e.type)&&(""===e.value||isNaN(e.value)))switch(t){case"min":return"MinNaN";case"max":return"MaxNaN";case"mid":return"MidNaN";case"upperInflectionPoint":return"ValueUpperInflectionNaN";case"lowerInflectionPoint":return"ValueLowerInflectionNaN"}return"Success"}checkFormulaCompilation(e,t){if("formula"!==e.type)return"Success";if(VS(e.value||"").isBadExpression)switch(t){case"min":return"MinInvalidFormula";case"max":return"MaxInvalidFormula";case"mid":return"MidInvalidFormula";case"upperInflectionPoint":return"ValueUpperInvalidFormula";case"lowerInflectionPoint":return"ValueLowerInvalidFormula"}return"Success"}checkThresholds(e){return this.batchValidations((t=>e(t.minimum,"min")),(t=>e(t.maximum,"max")),(t=>t.midpoint?e(t.midpoint,"mid"):"Success"))}checkInflectionPoints(e){return this.batchValidations((t=>e(t.lowerInflectionPoint,"lowerInflectionPoint")),(t=>e(t.upperInflectionPoint,"upperInflectionPoint")))}checkLowerBiggerThanUpper(e){const t=e.lowerInflectionPoint.value,o=e.upperInflectionPoint.value;return["number","percentage","percentile"].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(o)?"LowerBiggerThanUpper":"Success"}checkMinBiggerThanMax(e){const t=e.minimum.value,o=e.maximum.value;return["number","percentage","percentile"].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&_P(t)>=_P(o)?"MinBiggerThanMax":"Success"}checkMidBiggerThanMax(e){const t=e.midpoint?.value,o=e.maximum.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&_P(t)>=_P(o)?"MidBiggerThanMax":"Success"}checkMinBiggerThanMid(e){const t=e.minimum.value,o=e.midpoint?.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&_P(t)>=_P(o)?"MinBiggerThanMid":"Success"}checkCFValues(e){for(const t of e.values){if(!t.startsWith("="))continue;if(VS(t||"").isBadExpression)return"ValueCellIsInvalidFormula"}return"Success"}removeConditionalFormatting(e,t){const o=this.cfRules[t].findIndex((t=>t.id===e));if(-1!==o){const e=this.cfRules[t].slice();e.splice(o,1),this.history.update("cfRules",t,e)}}changeCFPriority(e,t,o){const s=this.cfRules[o].findIndex((t=>t.id===e)),i=this.cfRules[o][s],n=s-t,r=[...this.cfRules[o]];r.splice(s,1),r.splice(n,0,i),this.history.update("cfRules",o,r)}}).add("figures",class extends RP{static getters=["getFigures","getFigure","getFigureSheetId"];figures={};insertionOrders=[];allowDispatch(e){switch(e.type){case"CREATE_FIGURE":return this.checkFigureDuplicate(e.figure.id);case"UPDATE_FIGURE":case"DELETE_FIGURE":return this.checkFigureExists(e.sheetId,e.id);default:return"Success"}}beforeHandle(e){if("DELETE_SHEET"===e.type)this.getters.getFigures(e.sheetId).forEach((t=>{this.dispatch("DELETE_FIGURE",{id:t.id,sheetId:e.sheetId})}))}handle(e){switch(e.type){case"CREATE_SHEET":this.figures[e.sheetId]={};break;case"DELETE_SHEET":this.deleteSheet(e.sheetId);break;case"CREATE_FIGURE":this.addFigure(e.figure,e.sheetId);break;case"UPDATE_FIGURE":const{type:t,sheetId:o,...s}=e,i=s;this.updateFigure(o,i);break;case"DELETE_FIGURE":this.removeFigure(e.id,e.sheetId);break;case"REMOVE_COLUMNS_ROWS":this.onRowColDelete(e.sheetId,e.dimension)}}onRowColDelete(e,t){"ROW"===t?this.onRowDeletion(e):this.onColDeletion(e)}onRowDeletion(e){const t=this.getters.getNumberRows(e);let o=0;for(let s=0;s<t;s++)o+=this.getters.getUserRowSize(e,s)||se;const s=this.getters.getFigures(e);for(const t of s){const s=Math.min(t.y,o-t.height);s!==t.y&&this.dispatch("UPDATE_FIGURE",{sheetId:e,id:t.id,y:s})}}onColDeletion(e){const t=this.getters.getNumberCols(e);let o=0;for(let s=0;s<t;s++)o+=this.getters.getColSize(e,s);const s=this.getters.getFigures(e);for(const t of s){const s=Math.min(t.x,o-t.width);s!==t.x&&this.dispatch("UPDATE_FIGURE",{sheetId:e,id:t.id,x:s})}}updateFigure(e,t){if("id"in t)for(const[o,s]of Object.entries(t))switch(o){case"x":case"y":void 0!==s&&this.history.update("figures",e,t.id,o,Math.max(s,0));break;case"width":case"height":void 0!==s&&this.history.update("figures",e,t.id,o,s)}}addFigure(e,t){this.history.update("figures",t,e.id,e),this.history.update("insertionOrders",this.insertionOrders.length,e.id)}deleteSheet(e){this.history.update("insertionOrders",this.insertionOrders.filter((t=>!this.figures[e]?.[t]))),this.history.update("figures",e,void 0)}removeFigure(e,t){this.history.update("insertionOrders",this.insertionOrders.filter((t=>t!==e))),this.history.update("figures",t,e,void 0)}checkFigureExists(e,t){return void 0===this.figures[e]?.[t]?"FigureDoesNotExist":"Success"}checkFigureDuplicate(e){return Object.values(this.figures).find((t=>t?.[e]))?"DuplicatedFigureId":"Success"}getFigures(e){const t=[];for(const o of this.insertionOrders){const s=this.figures[e]?.[o];s&&t.push(s)}return t}getFigure(e,t){return this.figures[e]?.[t]}getFigureSheetId(e){return Object.keys(this.figures).find((t=>void 0!==this.figures[t]?.[e]))}import(e){for(let t of e.sheets)for(const e of t.figures)this.addFigure(e,t.id)}export(e){for(const t of e.sheets)for(const e of this.getFigures(t.id)){const o=void 0;t.figures.push({...e,data:o})}}exportForExcel(e){this.export(e)}}).add("chart",class extends RP{static getters=["isChartDefined","getChartDefinition","getChartType","getChartIds","getChart","getContextCreationChart"];charts={};createChart=jR(this.getters);validateChartDefinition=e=>XR(this,e.definition);adaptRanges(e){for(const[t,o]of Object.entries(this.charts))this.history.update("charts",t,o?.updateRanges(e))}allowDispatch(e){switch(e.type){case"CREATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartDuplicate));case"UPDATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartExists,this.checkChartChanged));default:return"Success"}}handle(e){switch(e.type){case"CREATE_CHART":this.addFigure(e.id,e.sheetId,e.position,e.size),this.addChart(e.id,e.definition);break;case"UPDATE_CHART":this.addChart(e.id,e.definition);break;case"DUPLICATE_SHEET":{const t=this.getters.getFigures(e.sheetId);for(const o of t)if("chart"===o.tag){const t=o.id.split(xe).pop(),s=`${e.sheetIdTo}${xe}${t}`,i=this.charts[o.id]?.duplicateInDuplicatedSheet(e.sheetIdTo);i&&this.dispatch("CREATE_CHART",{id:s,position:{x:o.x,y:o.y},size:{width:o.width,height:o.height},definition:i.getDefinition(),sheetId:e.sheetIdTo})}break}case"DELETE_FIGURE":this.history.update("charts",e.id,void 0);break;case"DELETE_SHEET":for(let t of this.getChartIds(e.sheetId))this.history.update("charts",t,void 0)}}getContextCreationChart(e){return this.charts[e]?.getContextCreation()}getChart(e){return this.charts[e]}getChartType(e){const t=this.charts[e]?.type;if(!t)throw new Error("Chart not defined.");return t}isChartDefined(e){return e in this.charts&&void 0!==this.charts}getChartIds(e){return Object.entries(this.charts).filter((([,t])=>t?.sheetId===e)).map((([e])=>e))}getChartDefinition(e){const t=this.charts[e]?.getDefinition();if(!t)throw new Error(`There is no chart with the given figureId: ${e}`);return t}import(e){for(let t of e.sheets)if(t.figures)for(let e of t.figures)"chart"===e.tag&&(this.charts[e.id]=this.createChart(e.id,e.data,t.id))}export(e){if(e.sheets)for(let t of e.sheets){const e=this.getters.getFigures(t.id),o=[];for(let t of e){const e=t;if(e&&"chart"===e.tag){const t=this.charts[e.id]?.getDefinition();t&&(e.data=t,o.push(e))}else o.push(e)}t.figures=o}}addFigure(e,t,o={x:0,y:0},s={width:536,height:335}){if(this.getters.getFigure(t,e))return;const i={id:e,x:o.x,y:o.y,width:s.width,height:s.height,tag:"chart"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}addChart(e,t){const o=this.getters.getFigureSheetId(e);o&&this.history.update("charts",e,this.createChart(e,t,o))}checkChartDuplicate(e){return this.getters.getFigureSheetId(e.id)?"DuplicatedChartId":"Success"}checkChartExists(e){return this.isChartDefined(e.id)?"Success":"ChartDoesNotExist"}checkChartChanged(e){return ft(this.getChartDefinition(e.id),e.definition)?"NoChanges":"Success"}}).add("image",class extends RP{static getters=["getImage","getImagePath","getImageSize"];fileStore;images={};syncedImages=new Set;constructor(e){super(e),this.fileStore=e.external.fileStore}allowDispatch(e){return"CREATE_IMAGE"===e.type&&this.getters.getFigure(e.sheetId,e.figureId)?"InvalidFigureId":"Success"}handle(e){switch(e.type){case"CREATE_IMAGE":this.addImage(e.figureId,e.sheetId,e.position,e.size),this.history.update("images",e.sheetId,e.figureId,e.definition),this.syncedImages.add(e.definition.path);break;case"DUPLICATE_SHEET":{const t=this.getters.getFigures(e.sheetId);for(const o of t)if("image"===o.tag){const t=o.id.split(xe).pop(),s=`${e.sheetIdTo}${xe}${t}`,i=this.getImage(o.id);if(i){const t={width:o.width,height:o.height};this.dispatch("CREATE_IMAGE",{sheetId:e.sheetIdTo,figureId:s,position:{x:o.x,y:o.y},size:t,definition:ze(i)})}}break}case"DELETE_FIGURE":this.history.update("images",e.sheetId,e.id,void 0);break;case"DELETE_SHEET":this.history.update("images",e.sheetId,void 0)}}garbageCollectExternalResources(){const e=new Set(this.getAllImages().map((e=>e.path)));for(const t of this.syncedImages)e.has(t)||this.fileStore?.delete(t)}getImage(e){for(const t of Object.values(this.images))if(t&&t[e])return t[e];throw new Error(`There is no image with the given figureId: ${e}`)}getImagePath(e){return this.getImage(e).path}getImageSize(e){return this.getImage(e).size}addImage(e,t,o,s){const i={id:e,x:o.x,y:o.y,width:s.width,height:s.height,tag:"image"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}import(e){for(const t of e.sheets){const e=(t.figures||[]).filter((e=>"image"===e.tag));for(const o of e)this.history.update("images",t.id,o.id,o.data),this.syncedImages.add(o.data.path)}}export(e){for(const t of e.sheets){const e=t.figures.filter((e=>"image"===e.tag));for(const o of e)o.data=this.images[t.id]?.[o.id]}}exportForExcel(e){for(const t of e.sheets){t.images||(t.images=[]);const e=this.getters.getFigures(t.id),o=[];for(const t of e)if("image"===t?.tag){const e=this.getImage(t.id);e&&o.push({...t,data:ze(e)})}t.images=[...t.images,...o]}}getAllImages(){const e=[];for(const t in this.images)e.push(...Object.values(this.images[t]||{}).filter(lt));return e}}).add("pivot_core",class extends RP{static getters=["getPivotCoreDefinition","getPivotDisplayName","getPivotId","getPivotFormulaId","getPivotIds","getMeasureCompiledFormula","getPivotName","isExistingPivot"];nextFormulaId=1;pivots={};formulaIds={};compiledMeasureFormulas={};allowDispatch(e){switch(e.type){case"ADD_PIVOT":return this.checkDuplicatedMeasureIds(e.pivot);case"UPDATE_PIVOT":return e.pivotId in this.pivots?ft(e.pivot,this.pivots[e.pivotId]?.definition)?"NoChanges":""===e.pivot.name?"EmptyName":this.checkDuplicatedMeasureIds(e.pivot):"PivotIdNotFound";case"RENAME_PIVOT":if(!(e.pivotId in this.pivots))return"PivotIdNotFound";if(""===e.name)return"EmptyName";break;case"REMOVE_PIVOT":case"DUPLICATE_PIVOT":case"INSERT_PIVOT":case"DUPLICATE_PIVOT":if(!(e.pivotId in this.pivots))return"PivotIdNotFound"}return"Success"}handle(e){switch(e.type){case"ADD_PIVOT":{const{pivotId:t,pivot:o}=e;this.addPivot(t,o);break}case"INSERT_PIVOT":{const{sheetId:t,col:o,row:s,pivotId:i,table:n}=e,r={sheetId:t,col:o,row:s},{cols:a,rows:l,measures:c,fieldsType:h}=n,d=new MF(a,l,c,h||{}),u=this.getPivotFormulaId(i);this.insertPivot(r,u,d);break}case"RENAME_PIVOT":this.history.update("pivots",e.pivotId,"definition","name",e.name);break;case"REMOVE_PIVOT":{const t={...this.pivots};delete t[e.pivotId];const o=this.getPivotFormulaId(e.pivotId);this.history.update("formulaIds",o,void 0),this.history.update("pivots",t);break}case"DUPLICATE_PIVOT":{const{pivotId:t,newPivotId:o}=e,s=ze(this.getPivotCore(t).definition);s.name=e.duplicatedPivotName??s.name+" (copy)",this.addPivot(o,s);break}case"UPDATE_PIVOT":this.history.update("pivots",e.pivotId,"definition",this.repairSortedColumn(ze(e.pivot))),this.compileCalculatedMeasures(e.pivot.measures)}}adaptRanges(e){for(const t in this.compiledMeasureFormulas)for(const o in this.compiledMeasureFormulas[t]){const s=this.compiledMeasureFormulas[t][o],i=[];for(const t of s.dependencies){const o=e(t);"NONE"===o.changeType?i.push(t):i.push(o.range)}const n=this.getters.getFormulaString(t,s.tokens,i);n!==o&&this.replaceMeasureFormula(t,o,n)}}getPivotDisplayName(e){return`(#${this.getPivotFormulaId(e)}) ${this.getPivotName(e)}`}getPivotName(e){return this.getPivotCore(e).definition.name}getPivotCoreDefinition(e){return this.getPivotCore(e).definition}getPivotId(e){return this.formulaIds[e]}getPivotFormulaId(e){return this.getPivotCore(e).formulaId}getPivotIds(){return Object.keys(this.pivots)}isExistingPivot(e){return e in this.pivots}getMeasureCompiledFormula(e){if(!e.computedBy)throw new Error(`Measure ${e.fieldName} is not computed by formula`);const t=e.computedBy.sheetId;return this.compiledMeasureFormulas[t][e.computedBy.formula]}addPivot(e,t,o=this.nextFormulaId.toString()){this.history.update("pivots",e,{definition:this.repairSortedColumn(ze(t)),formulaId:o}),this.compileCalculatedMeasures(t.measures),this.history.update("formulaIds",o,e),this.history.update("nextFormulaId",this.nextFormulaId+1)}compileCalculatedMeasures(e){for(const t of e)if(t.computedBy){const e=t.computedBy.sheetId,o=this.compileMeasureFormula(t.computedBy.sheetId,t.computedBy.formula);this.history.update("compiledMeasureFormulas",e,t.computedBy.formula,o)}}insertPivot(e,t,o){this.resizeSheet(e.sheetId,e,o);const s=o.getPivotCells();for(let o=0;o<s.length;o++)for(let i=0;i<s[o].length;i++){const n=s[o][i];this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col+o,row:e.row+i,content:yc(t,n)})}}resizeSheet(e,{col:t,row:o},s){const i=s.getNumberOfDataColumns()+1,n=this.getters.getNumberCols(e),r=n-t;r<i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:n-1,sheetId:e,quantity:i-r,position:"after"});const a=s.columns.length+s.rows.length,l=this.getters.getNumberRows(e),c=l-o;c<a&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:l-1,sheetId:e,quantity:a-c,position:"after"})}getPivotCore(e){const t=this.pivots[e];if(!t)throw new Error(`Pivot with id ${e} not found`);return t}compileMeasureFormula(e,t){const o=VS(t),s=o.dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t)));return{...o,dependencies:s}}replaceMeasureFormula(e,t,o){this.history.update("compiledMeasureFormulas",e,t,void 0),this.history.update("compiledMeasureFormulas",e,o,this.compileMeasureFormula(e,o));for(const s in this.pivots){const i=this.pivots[s];if(i)for(const n of i.definition.measures)if(n.computedBy?.formula===t){const t=i.definition.measures.indexOf(n);this.history.update("pivots",s,"definition","measures",t,"computedBy",{formula:o,sheetId:e})}}}checkDuplicatedMeasureIds(e){const t=new Set(e.measures.map((e=>e.id)));return e.measures.length!==t.size?"InvalidDefinition":"Success"}repairSortedColumn(e){if(e.sortedColumn){const t=e.measures.find((t=>t.fieldName===e.sortedColumn?.measure));if(t)return{...e,sortedColumn:{...e.sortedColumn,measure:t.id}}}return e}import(e){if(e.pivots)for(const[t,o]of Object.entries(e.pivots))this.addPivot(t,o,o.formulaId);this.history.update("nextFormulaId",e.pivotNextId||gc(this.pivots)+1)}export(e){e.pivots={};for(const t in this.pivots)e.pivots[t]={...this.getPivotCoreDefinition(t),formulaId:this.getPivotFormulaId(t)};e.pivotNextId=this.nextFormulaId}}).add("spreadsheet_pivot_core",class extends RP{allowDispatch(e){switch(e.type){case"ADD_PIVOT":case"UPDATE_PIVOT":const t=e.pivot;return this.checkDataSetValidity(t)}return"Success"}adaptRanges(e){for(const t of this.getters.getPivotIds()){const o=this.getters.getPivotCoreDefinition(t);if("SPREADSHEET"===o.type&&o.dataSet){const{sheetId:s,zone:i}=o.dataSet,n=MP(this.getters.getRangeFromZone(s,i),e),r=n&&{sheetId:n.sheetId,zone:n.zone};this.dispatch("UPDATE_PIVOT",{pivotId:t,pivot:{...o,dataSet:r}})}}}checkDataSetValidity(e){if("SPREADSHEET"===e.type&&e.dataSet){const{zone:t,sheetId:o}=e.dataSet;return o&&this.getters.tryGetSheet(o)&&t&&Go(t)?this.getters.checkZonesExistInSheet(o,[t]):"InvalidDataSet"}return"Success"}}).add("tableStyle",class extends RP{static getters=["getNewCustomTableStyleName","getTableStyle","getTableStyles","isTableStyleEditable"];styles={};allowDispatch(e){switch(e.type){case"CREATE_TABLE":case"UPDATE_TABLE":if(e.config?.styleId&&!this.styles[e.config.styleId])return"InvalidTableConfig";break;case"CREATE_TABLE_STYLE":if(!Ww[e.templateName])return"InvalidTableStyle";try{zt(e.primaryColor)}catch(e){return"InvalidTableStyle"}}return"Success"}handle(e){switch(e.type){case"CREATE_TABLE_STYLE":const t=qw(e.tableStyleName,e.templateName,e.primaryColor);this.history.update("styles",e.tableStyleId,t);break;case"REMOVE_TABLE_STYLE":const o={...this.styles};delete o[e.tableStyleId],this.history.update("styles",o);for(const t of this.getters.getSheetIds())for(const o of this.getters.getCoreTables(t))o.config.styleId===e.tableStyleId&&this.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{styleId:Aw.styleId}})}}getTableStyle(e){if(!this.styles[e])throw new Error(`Table style ${e} does not exist`);return this.styles[e]}getTableStyles(){return this.styles}getNewCustomTableStyleName(){return kt(Uo("Custom Table Style"),Object.values(this.styles).map((e=>e.displayName)),{compute:(e,t)=>`${e} ${t}`,start:2})}isTableStyleEditable(e){return!Gw[e]}import(e){for(const e in Gw)this.styles[e]=Gw[e];for(const t in e.customTableStyles){const o=e.customTableStyles[t];this.styles[t]=qw(o.displayName,o.templateName,o.primaryColor)}}export(e){const t={};for(const e in this.styles)Gw[e]||(t[e]={displayName:this.styles[e].displayName,templateName:this.styles[e].templateName,primaryColor:this.styles[e].primaryColor});e.customTableStyles=t}}),ek=(new n).add("ui_sheet",class extends wN{static getters=["doesCellHaveGridIcon","getCellWidth","getCellIconSrc","getTextWidth","getCellText","getCellMultiLineText","getContiguousZone"];ctx=document.createElement("canvas").getContext("2d");allowDispatch(e){return this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e)}handle(e){switch(e.type){case"AUTORESIZE_COLUMNS":for(let t of e.cols){const o=this.getColMaxWidth(e.sheetId,t);0!==o&&this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"COL",size:o,sheetId:e.sheetId})}break;case"AUTORESIZE_ROWS":this.autoResizeRows(e.sheetId,e.rows)}}getCellWidth(e){const t=this.getters.getCellComputedStyle(e);let o=0;const s=this.getters.getEvaluatedCell(e).formattedValue;if(s){const e=ba(this.ctx,s,t,void 0);o+=Math.max(...e.map((e=>ha(this.ctx,e,t))))}if(this.getters.getCellIconSrc(e)&&(o+=function(e){return fa(e)+8}(t)),this.getters.doesCellHaveGridIcon(e)&&(o+=20),0===o)return 0;if(o+=2*ae,"wrap"===t.wrapping){const t=this.getters.getColSize(this.getters.getActiveSheetId(),e.col);return Math.min(t,o)}return o}getCellIconSrc(e){const t=qy.getAll();for(const o of t){const t=o(this.getters,e);if(t)return t}}getTextWidth(e,t){return ha(this.ctx,e,t)}getCellText(e,t){const o=this.getters.getCell(e),s=this.getters.getLocale();if(t?.showFormula&&o?.isFormula)return el(o.content,s);if(t?.showFormula&&!o?.content)return"";{const i=this.getters.getEvaluatedCell(e),n=t?.availableWidth?{availableWidth:t.availableWidth,measureText:e=>ha(this.ctx,e,o?.style||{})}:void 0;return Kn(i.value,{format:i.format,locale:s,formatWidth:n})}}getCellMultiLineText(e,t){const o=this.getters.getCellStyle(e),s=this.getters.getCellText(e,{showFormula:this.getters.shouldShowFormulas(),availableWidth:t.maxWidth});return ba(this.ctx,s,o,t.wrapText?t.maxWidth:void 0)}doesCellHaveGridIcon(e){const t=this.getters.isFilterHeader(e),o=!this.getters.isReadonly()&&this.getters.cellHasListDataValidationIcon(e);return t||o}getContiguousZone(e,t){const o=t=>{for(const o of je(t.left,t.right+1)){if(!this.isCellEmpty({sheetId:e,col:o,row:t.top-1}))return{...t,top:t.top-1};if(!this.isCellEmpty({sheetId:e,col:o,row:t.bottom+1}))return{...t,bottom:t.bottom+1}}for(const o of je(t.top,t.bottom+1)){if(!this.isCellEmpty({sheetId:e,col:t.left-1,row:o}))return{...t,left:t.left-1};if(!this.isCellEmpty({sheetId:e,col:t.right+1,row:o}))return{...t,right:t.right+1}}return t};let s=!1,i=t;do{s=!1;const e=o(i);Qo(i,e)||(s=!0,i=e)}while(s);return i}isCellEmpty(e){const t=this.getters.getMainCellPosition(e);return this.getters.getEvaluatedCell(t).type===oi.empty}getColMaxWidth(e,t){const o=rs(this.getters.getColsZone(e,t,t)).map((t=>this.getCellWidth({sheetId:e,...t})));return Math.max(0,Ot(o))}checkSheetExists(e){return"sheetId"in e&&void 0===this.getters.tryGetSheet(e.sheetId)?"InvalidSheetId":"Success"}checkZonesAreInSheet(e){const t="sheetId"in e?e.sheetId:this.getters.tryGetActiveSheetId();if("ranges"in e&&e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId))))return"InvalidSheetId";const o=this.getters.getCommandZones(e);return!t&&o.length>0?"NoActiveSheet":t&&o.length>0?this.getters.checkZonesExistInSheet(t,o):"Success"}autoResizeRows(e,t){const o=[];for(const s of t){let t=0;for(const o of this.getters.getRowCells(e,s)){const s=this.getters.getCellById(o);if(!s)continue;const i=this.getters.getCellPosition(s.id),n=this.getters.getColSize(e,i.col);if(s.isFormula){const e=this.getters.getEvaluatedCell(i).formattedValue,o=aa(this.ctx,e,s?.style,n);o>t&&o>se&&(t=o)}else{const e=s.content,o=aa(this.ctx,e,s?.style,n);o>=t&&o>se&&(t=0)}}o.push(t||null)}const s=new Map(o.map((e=>[e,[]])));for(let e=0;e<o.length;e++)s.get(o[e])?.push(t[e]);for(const[t,o]of s)this.dispatch("RESIZE_COLUMNS_ROWS",{elements:o,dimension:"ROW",size:t,sheetId:e})}}).add("ui_options",class extends wN{static getters=["shouldShowFormulas"];showFormulas=!1;handle(e){if("SET_FORMULA_VISIBILITY"===e.type)this.showFormulas=e.show}shouldShowFormulas(){return this.showFormulas}}).add("autofill",class extends wN{static layers=["Autofill"];static getters=["getAutofillTooltip"];autofillZone;steps;lastCellSelected={};direction;tooltip;allowDispatch(e){if("AUTOFILL_SELECT"===e.type){const t=this.getters.getActiveSheetId();return this.lastCellSelected.col=-1===e.col?this.lastCellSelected.col:Ze(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=-1===e.row?this.lastCellSelected.row:Ze(e.row,0,this.getters.getNumberRows(t)),void 0!==this.lastCellSelected.col&&void 0!==this.lastCellSelected.row?"Success":"InvalidAutofillSelection"}return"Success"}handle(e){switch(e.type){case"AUTOFILL":this.autofill(!0);break;case"AUTOFILL_SELECT":this.select(e.col,e.row);break;case"AUTOFILL_AUTO":this.autofillAuto()}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||void 0===this.direction)return void(this.tooltip=void 0);const t=this.getters.getSelectedZone(),o=this.autofillZone,s=[];switch(this.direction){case"down":for(let e=t.left;e<=t.right;e++){const i=[];for(let o=t.top;o<=t.bottom;o++)i.push(Ao(e,o));const n=this.createGenerator(i);for(let t=o.top;t<=o.bottom;t++)s.push(this.computeNewCell(n,e,t))}break;case"up":for(let e=t.left;e<=t.right;e++){const i=[];for(let o=t.bottom;o>=t.top;o--)i.push(Ao(e,o));const n=this.createGenerator(i);for(let t=o.bottom;t>=o.top;t--)s.push(this.computeNewCell(n,e,t))}break;case"left":for(let e=t.top;e<=t.bottom;e++){const i=[];for(let o=t.right;o>=t.left;o--)i.push(Ao(o,e));const n=this.createGenerator(i);for(let t=o.right;t>=o.left;t--)s.push(this.computeNewCell(n,t,e))}break;case"right":for(let e=t.top;e<=t.bottom;e++){const i=[];for(let o=t.left;o<=t.right;o++)i.push(Ao(o,e));const n=this.createGenerator(i);for(let t=o.left;t<=o.right;t++)s.push(this.computeNewCell(n,t,e))}}if(e){const e={},t={},o={},i=this.getters.getActiveSheetId();for(const n of s)this.collectBordersData(n,e),this.autofillMerge(i,n),this.autofillCell(i,n),this.collectConditionalFormatsData(i,n,t),this.collectDataValidationsData(i,n,o);this.autofillBorders(i,e),this.autofillConditionalFormats(i,t),this.autofillDataValidations(i,o),this.autofillZone=void 0,this.selection.resizeAnchorZone(this.direction,this.steps),this.lastCellSelected={},this.direction=void 0,this.steps=0,this.tooltip=void 0}}collectBordersData(e,t){const o=JSON.stringify(e.border);o in t||(t[o]=[]),t[o].push(hs({col:e.col,row:e.row}))}collectConditionalFormatsData(e,t,o){const{originCol:s,originRow:i,col:n,row:r}=t,a=this.getters.getRulesByCell(e,s,i),l=Ao(n,r);for(const e of a)e.id in o||(o[e.id]=[]),o[e.id].push(l)}collectDataValidationsData(e,t,o){const{originCol:s,originRow:i,col:n,row:r}=t,a={sheetId:e,col:s,row:i},l=this.getters.getValidationRuleForCell(a);l&&(l.id in o||(o[l.id]=[]),o[l.id].push(hs({col:n,row:r})))}autofillCell(e,t){this.dispatch("UPDATE_CELL",{sheetId:e,col:t.col,row:t.row,content:t.content||"",style:t.style||null,format:t.format||""}),this.dispatch("AUTOFILL_CELL",t)}autofillBorders(e,t){for(const o in t){const s="undefined"===o?void 0:JSON.parse(o);this.dispatch("SET_BORDERS_ON_TARGET",{sheetId:e,border:s,target:_o(t[o])})}}autofillConditionalFormats(e,t){for(const o in t){const s=t[o],i=this.getters.getConditionalFormats(e).find((e=>e.id===o));if(!i)continue;const n=this.getters.getAdaptedCfRanges(e,i,s.map($o),[]);n&&this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:i.id,rule:i.rule,stopIfTrue:i.stopIfTrue},ranges:n,sheetId:e})}}autofillDataValidations(e,t){for(const o in t){const s=t[o],i=this.getters.getDataValidationRule(e,o);if(!i)continue;const n=i.ranges.map((e=>e.zone)),r=_o(n.concat(s),[]);this.dispatch("ADD_DATA_VALIDATION_RULE",{rule:i,ranges:r.map((t=>this.getters.getRangeDataFromZone(e,t))),sheetId:e})}}select(e,t){const o=this.getters.getSelectedZone();if(ts(e,t,o))this.autofillZone=void 0;else{switch(this.direction=this.getDirection(e,t),this.direction){case"up":this.saveZone(t,o.top-1,o.left,o.right),this.steps=o.top-t;break;case"down":this.saveZone(o.bottom+1,t,o.left,o.right),this.steps=t-o.bottom;break;case"left":this.saveZone(o.top,o.bottom,e,o.left-1),this.steps=o.left-e;break;case"right":this.saveZone(o.top,o.bottom,o.right+1,e),this.steps=e-o.right}this.autofill(!1)}}autofillAuto(){const e=this.getters.getActivePosition(),t=this.getters.getTable(e);let o=t?t.range.zone.bottom:this.getAutofillAutoLastRow();const s=this.getters.getSelectedZone();for(let t=s.bottom+1;t<=o;t++)if(this.getters.getEvaluatedCell({...e,row:t}).type!==oi.empty){o=t-1;break}o>s.bottom&&(this.select(e.col,o),this.autofill(!0))}getAutofillAutoLastRow(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();let o=e.left,s=e.bottom;if(o>0){let e={sheetId:t,col:o-1,row:s};for(;this.getters.getEvaluatedCell(e).type!==oi.empty;)s+=1,e={sheetId:t,col:o-1,row:s}}if(s===e.bottom&&(o=e.right,o<=this.getters.getNumberCols(t))){let e={sheetId:t,col:o+1,row:s};for(;this.getters.getEvaluatedCell(e).type!==oi.empty;)s+=1,e={sheetId:t,col:o+1,row:s}}return s-1}computeNewCell(e,t,o){const{cellData:s,tooltip:i,origin:n}=e.next(),{content:r,style:a,border:l,format:c}=s;return this.tooltip=i,{originCol:n.col,originRow:n.row,col:t,row:o,content:r,style:a,border:l,format:c}}getRule(e,t){const o=JS.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((o=>o.condition(e,t)));return o&&this.direction&&o.generateRule(e,t,this.direction)}createGenerator(e){const t=[],o=[],s=this.getters.getActiveSheetId();for(let t of e){const{col:e,row:i}=To(t),n=this.getters.getCell({sheetId:s,col:e,row:i});o.push({col:e,row:i,cell:n,sheetId:s})}const i=o.map((e=>e.cell));for(let e of o){let o={type:"COPY_MODIFIER"};if(e&&e.cell){o=this.getRule(e.cell,i)||o}const s=this.getters.getCellBorder(e)||void 0;t.push({data:{...e,border:s},rule:o})}return new xN(t,this.getters,this.direction)}saveZone(e,t,o,s){this.autofillZone={top:e,bottom:t,left:o,right:s}}getDirection(e,t){const o=this.getters.getSelectedZone(),s={up:{number:o.top-t,value:"up"},down:{number:t-o.bottom,value:"down"},left:{number:o.left-e,value:"left"},right:{number:e-o.right,value:"right"}};if(1===Object.values(s).map((e=>e.number>0?1:0)).reduce(((e,t)=>e+t)))return Object.values(s).find((e=>e.number>0?1:0)).value;const i=s.up.number>0?"up":"down",n=s.left.number>0?"left":"right";return Math.abs(s[i].number)>=Math.abs(s[n].number)?s[i].value:s[n].value}autofillMerge(e,t){const{originCol:o,originRow:s,col:i,row:n}=t,r={sheetId:e,col:i,row:n},a={sheetId:e,col:o,row:s};if(this.getters.isInMerge(r)&&!this.getters.isInMerge(a)){const t=this.getters.getMerge(r);t&&this.dispatch("REMOVE_MERGE",{sheetId:e,target:[t]})}const l=this.getters.getMerge(a);l?.left===o&&l?.top===s&&this.dispatch("ADD_MERGE",{sheetId:e,target:[{top:n,bottom:n+l.bottom-l.top,left:i,right:i+l.right-l.left}]})}drawLayer(e){if(!this.autofillZone)return;const{ctx:t,thinLineWidth:o}=e,{x:s,y:i,width:n,height:r}=this.getters.getVisibleRect(this.autofillZone);n>0&&r>0&&(t.strokeStyle="black",t.lineWidth=o,t.setLineDash([3]),t.strokeRect(s,i,n,r),t.setLineDash([]))}}).add("sort",class extends wN{allowDispatch(e){return"SORT_CELLS"===e.type?ts(e.col,e.row,e.zone)?this.checkValidations(e,this.checkMerge,this.checkMergeSizes,this.checkArrayFormulaInSortZone):"InvalidSortAnchor":"Success"}handle(e){if("SORT_CELLS"===e.type)this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{})}checkMerge({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return"Success";return rs(t).some((({col:t,row:o})=>!this.getters.isInMerge({sheetId:e,col:t,row:o})))?"InvalidSortZone":"Success"}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return"Success";const o=this.getters.getMerges(e).filter((e=>es(e,t))),s=ss(o[0]);let[i,n]=[s.numberOfCols,s.numberOfRows];return o.every((e=>{let[t,o]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&o===n}))?"Success":"InvalidSortZone"}checkArrayFormulaInSortZone({sheetId:e,zone:t}){return rs(t).some((({col:t,row:o})=>this.getters.getArrayFormulaSpreadingOn({sheetId:e,col:t,row:o})))?"SortZoneWithArrayFormulas":"Success"}hasHeader(e,t){if(1===t[0].length)return!1;let o=t.map((t=>t.map((({col:t,row:o})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:o}).type))));return o[0][0]===oi.empty&&(o=o.slice(1)),!o.some((e=>e[0]===oi.empty))&&!!o.some((e=>e[1]!==oi.empty&&e[0]!==e[1]))}sortZone(e,t,o,s,i){const[n,r]=this.mainCellsSteps(e,o);let a=this.getters.getMainCellPosition({sheetId:e,col:t.col,row:t.row}).col,l=Object.assign({},o),c=this.mainCells(e,o);!i.sortHeaders&&this.hasHeader(e,c)&&(l.top+=r),c=this.mainCells(e,l);const h=function(e,t,o){const s=e.map(((e,t)=>({index:t,type:e.type,value:e.value})));return(o?s.map((e=>e.type===oi.empty?{...e,type:oi.number,value:0}:e)):s).sort(em(t))}(c[a-l.left].map((e=>this.getters.getEvaluatedCell(e))),s,Boolean(i.emptyCellAsZero)),d=h.map((e=>e.index)),[u,g]=[c.length,c[0].length],p=[];for(let e=0;e<u;e++)for(let t=0;t<g;t++){let{col:o,row:s,sheetId:i}=c[e][d[t]];const a=this.getters.getCell({sheetId:i,col:o,row:s});let h=l.left+e*n,u=l.top+t*r,g={sheetId:i,col:h,row:u,content:""};if(a){let e=a.content;if(a.isFormula){const t=this.getters.getCellPosition(a.id);e=this.getters.getTranslatedCellFormula(i,0,u-t.row,a.compiledFormula.tokens)}g.style=a.style,g.content=e,g.format=a.format}p.push(g)}p.forEach((e=>this.dispatch("UPDATE_CELL",e)))}mainCellsSteps(e,t){const o=this.getters.getMerge({sheetId:e,col:t.left,row:t.top});return[o?o.right-o.left+1:1,o?o.bottom-o.top+1:1]}mainCells(e,t){const[o,s]=this.mainCellsSteps(e,t),i=[],n=je(t.left,t.right+1,o),r=je(t.top,t.bottom+1,s);for(const t of n){const o=[];i.push(o);for(const s of r)o.push({sheetId:e,col:t,row:s})}return i}}).add("automatic_sum",class extends wN{static getters=["getAutomaticSums"];handle(e){if("SUM_SELECTION"===e.type){const e=this.getters.getActiveSheetId(),{zones:t,anchor:o}=this.getters.getSelection();for(const s of t){const t=this.getAutomaticSums(e,s,o.cell);this.dispatchCellUpdates(e,t)}}}getAutomaticSums(e,t,o){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,o):this.sumData(e,t)}sumData(e,t){const o=this.dimensionsToSum(e,t),s=this.sumDimensions(e,t,o).filter((({zone:t})=>!this.getters.isEmpty(e,t)));return o.has("ROW")&&o.has("COL")&&s.push(this.sumTotal(t)),s}sumAdjacentData(e,t,o){const{col:s,row:i}=ts(o.col,o.row,t)?o:{col:t.left,row:t.top},n=this.findAdjacentData(e,s,i);return n?this.getters.isSingleCellOrMerge(e,t)||is(Ko(n,t))?[{position:{col:s,row:i},zone:n}]:this.sumDimensions(e,Ko(n,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,o){const s=this.getters.getSheet(e),i=this.getters.getMainCellPosition({sheetId:e,col:t,row:o}),n=this.findSuitableZoneToSum(s,i.col,i.row);if(n)return this.getters.expandZone(e,n)}findSuitableZoneToSum(e,t,o){const s=this.getters.getEvaluatedCell({sheetId:e.id,col:t,row:o-1}),i=this.getters.getEvaluatedCell({sheetId:e.id,col:t-1,row:o});if(this.isNumber(i)&&!this.isNumber(s))return this.findHorizontalZone(e,t,o);const n=this.findVerticalZone(e,t,o);if(this.isZoneValid(n))return n;const r=this.findHorizontalZone(e,t,o);return this.isZoneValid(r)?r:void 0}findVerticalZone(e,t,o){const s={top:0,bottom:o-1,left:t,right:t},i=this.reduceZoneStart(e,s,s.bottom);return{...s,top:i}}findHorizontalZone(e,t,o){const s={top:o,bottom:o,left:0,right:t-1},i=this.reduceZoneStart(e,s,s.right);return{...s,left:i}}reduceZoneStart(e,t,o){const s=this.getters.getEvaluatedCellsInZone(e.id,t),i=je(o,-1,-1),n=Ot(i.filter((e=>s[e]&&!s[e].isAutoSummable))),r=Ye(i.filter((e=>this.isNumber(s[e]))))[0]||[];return Ot(r)<n?1/0:Ft(r)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){return e.type===oi.number&&!(e.format&&nr(e.format))}isZoneValid(e){return e.bottom>=e.top&&e.right>=e.left}lastColIsEmpty(e,t){return this.getters.isEmpty(e,{...t,left:t.right})}lastRowIsEmpty(e,t){return this.getters.isEmpty(e,{...t,top:t.bottom})}dimensionsToSum(e,t){const o=new Set;return is(t)?(o.add(1===ss(t).numberOfCols?"COL":"ROW"),o):(this.lastColIsEmpty(e,t)&&o.add("ROW"),this.lastRowIsEmpty(e,t)&&o.add("COL"),0===o.size&&o.add("COL"),o)}sumDimensions(e,t,o){return[...o.has("COL")?this.sumColumns(t,e):[],...o.has("ROW")?this.sumRows(t,e):[]]}sumTotal(e){const{bottom:t,right:o}=e;return{position:{col:o,row:t},zone:{...e,top:t,right:o-1}}}sumColumns(e,t){const o=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,o.bottom-1)},rs(o).map((t=>({position:t,zone:{...e,right:t.col,left:t.col}})))}sumRows(e,t){const o=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,o.right-1)},rs(o).map((t=>({position:t,zone:{...e,top:t.row,bottom:t.row}})))}dispatchCellUpdates(e,t){for(const o of t){const{col:t,row:s}=o.position;this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,content:`=SUM(${this.getters.zoneToXC(e,o.zone)})`})}}nextEmptyRow(e,t){let o=t.bottom+1;const{left:s,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:o,top:o,left:s,right:i});)o++;return{...t,top:o,bottom:o}}nextEmptyCol(e,t){let o=t.right+1;const{top:s,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:o,right:o,top:s,bottom:i});)o++;return{...t,left:o,right:o}}transpose(e){return new Set([...e.values()].map((e=>"COL"===e?"ROW":"COL")))}}).add("format",class extends wN{handle(e){switch(e.type){case"SET_DECIMAL":this.setDecimal(e.sheetId,e.target,e.step);break;case"SET_FORMATTING_WITH_PIVOT":this.setContextualFormat(e.sheetId,e.target,e.format)}}setContextualFormat(e,t,o){const s=[],i={};for(const o of _o(t))for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++){const o={sheetId:e,col:t,row:n},r=this.getters.getPivotCellFromPosition(o);if(this.isSpilledPivotValueFormula(o,r)){s.push(o);const e=this.getters.getPivotIdFromPosition(o)||"";i[e]??=new Set,i[e].add(r.measure)}}const n=_o(s.map(hs));for(const e in i){const t=i[e],s=this.getters.getPivotCoreDefinition(e);this.dispatch("UPDATE_PIVOT",{pivotId:e,pivot:{...s,measures:s.measures.map((e=>t.has(e.id)?{...e,format:o}:e))}})}this.dispatch("SET_FORMATTING",{sheetId:e,target:n,format:""}),this.dispatch("SET_FORMATTING",{sheetId:e,target:_o(t,n),format:o})}isSpilledPivotValueFormula(e,t){const o=this.getters.getCell(e);return"VALUE"===t.type&&!o?.isFormula}setDecimal(e,t,o){const s={};for(const i of _o(t))for(const t of rs(i)){const i=this.getCellNumberFormat({sheetId:e,...t});if(void 0!==i){const e=yr(i,o);s[e]=s[e]||[],s[e].push(t)}}for(const t in s){const o=_o(s[t].map((e=>hs(e))));this.setContextualFormat(e,o,t)}}getCellNumberFormat(e){for(const t of[e]){const e=this.getters.getEvaluatedCell(t);if(!(e.type!==oi.number||e.format&&nr(e.format)))return e.format||lr(e.value)}}}).add("insert_pivot",class extends wN{static getters=[];allowDispatch(e){if("DUPLICATE_PIVOT_IN_NEW_SHEET"===e.type){if(!this.getters.isExistingPivot(e.pivotId))return"PivotIdNotFound";if(!this.getters.getPivot(e.pivotId).isValid())return"PivotInError"}return"Success"}handle(e){switch(e.type){case"INSERT_NEW_PIVOT":this.insertNewPivot(e.pivotId,e.newSheetId);break;case"DUPLICATE_PIVOT_IN_NEW_SHEET":this.duplicatePivotInNewSheet(e.pivotId,e.newPivotId,e.newSheetId);break;case"INSERT_PIVOT_WITH_TABLE":this.insertPivotWithTable(e.sheetId,e.col,e.row,e.pivotId,e.table,e.pivotMode);break;case"SPLIT_PIVOT_FORMULA":this.splitPivotFormula(e.sheetId,e.col,e.row,e.pivotId)}}insertNewPivot(e,t){1===gs(this.getters.getSelectedZone())&&this.selection.selectTableAroundSelection();const o=this.getters.getActiveSheetId();this.dispatch("ADD_PIVOT",{pivotId:e,pivot:{dataSet:{zone:this.getters.getSelectedZone(),sheetId:o},columns:[],rows:[],measures:[],name:Uo("New pivot"),type:"SPREADSHEET"}});const s=this.getters.getSheetIds().findIndex((e=>e===o))+1,i=this.getters.getPivotFormulaId(e);this.dispatch("CREATE_SHEET",{sheetId:t,name:Uo("Pivot #%(formulaId)s",{formulaId:i}),position:s}),this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:o,sheetIdTo:t});const n=this.getters.getPivot(e);this.insertPivotWithTable(t,0,0,e,n.getTableStructure().export(),"dynamic")}duplicatePivotInNewSheet(e,t,o){this.dispatch("DUPLICATE_PIVOT",{pivotId:e,newPivotId:t,duplicatedPivotName:Uo("%s (copy)",this.getters.getPivotCoreDefinition(e).name)});const s=this.getters.getActiveSheetId(),i=this.getters.getSheetIds().indexOf(s)+1,n=this.getters.getPivotFormulaId(t),r=this.getters.getPivotName(t);if(this.dispatch("CREATE_SHEET",{sheetId:o,name:this.getPivotDuplicateSheetName(Uo("%(newPivotName)s (Pivot #%(formulaId)s)",{newPivotName:r,formulaId:n})),position:i}).isSuccessful){this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:s,sheetIdTo:o});const i=this.getters.getPivot(e);this.insertPivotWithTable(o,0,0,t,i.getTableStructure().export(),"dynamic")}}getPivotDuplicateSheetName(e){const t=this.getters.getSheetIds().map((e=>this.getters.getSheetName(e)));return kt(qe(e),t)}insertPivotWithTable(e,t,o,s,i,n){const{cols:r,rows:a,measures:l,fieldsType:c}=i,h=new MF(r,a,l,c||{}),d=h.columns.length-1;this.resizeSheet(e,t,o,h);const u=this.getters.getPivotFormulaId(s);let g;"dynamic"===n?(this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:o,content:`=PIVOT(${u})`}),g={left:t,right:t,top:o,bottom:o}):(this.dispatch("INSERT_PIVOT",{sheetId:e,col:t,row:o,pivotId:s,table:h.export()}),g={left:t,right:t+h.getNumberOfDataColumns(),top:o,bottom:o+d+h.rows.length}),this.dispatch("CREATE_TABLE",{tableType:n,sheetId:e,ranges:[this.getters.getRangeDataFromZone(e,g)],config:{...Ve,numberOfHeaders:d}})}resizeSheet(e,t,o,s){const i=s.getNumberOfDataColumns()+1,n=this.getters.getNumberCols(e),r=n-t;r<i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:n-1,sheetId:e,quantity:i-r,position:"after"});const a=s.columns.length+s.rows.length,l=this.getters.getNumberRows(e),c=l-o;c<a&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:l-1,sheetId:e,quantity:a-c,position:"after"})}splitPivotFormula(e,t,o,s){const i=this.getters.getSpreadZone({sheetId:e,col:t,row:o});if(!i)return;const n=this.getters.getPivotFormulaId(s),r=new Map;for(let t=i.left;t<=i.right;t++)for(let o=i.top;o<=i.bottom;o++){const s={sheetId:e,col:t,row:o};r.set(s,this.getters.getPivotCellFromPosition(s))}for(const[e,t]of r)this.dispatch("UPDATE_CELL",{...e,content:yc(n,t)});const a=this.getters.getCoreTable({sheetId:e,col:t,row:o});if("dynamic"===a?.type){const s=hs({col:t,row:o}),n=this.getters.getRangeDataFromZone(e,i);this.dispatch("UPDATE_TABLE",{sheetId:e,zone:s,newTableRange:n,tableType:"static"})}}}).add("pivot_presence",class extends wN{static getters=["getPivotPresenceTracker"];trackPresencePivotId;tracker;handle(e){switch(e.type){case"PIVOT_START_PRESENCE_TRACKING":this.tracker=new KN,this.trackPresencePivotId=e.pivotId;break;case"PIVOT_STOP_PRESENCE_TRACKING":this.trackPresencePivotId=void 0}}getPivotPresenceTracker(e){if(this.trackPresencePivotId===e){if(!this.tracker)throw new Error("Tracker not initialized");return this.tracker}}}).add("split_to_columns",class extends wN{static getters=["getAutomaticSeparator"];allowDispatch(e){return"SPLIT_TEXT_INTO_COLUMNS"===e.type?this.chainValidations(this.batchValidations(this.checkSingleColSelected,this.checkNonEmptySelector),this.batchValidations(this.checkNotOverwritingContent,this.checkSeparatorInSelection))(e):"Success"}handle(e){if("SPLIT_TEXT_INTO_COLUMNS"===e.type)this.splitIntoColumns(e)}getAutomaticSeparator(){const e=this.getters.getSelectedCells();for(const t of e)if(t.value&&t.type===oi.text){const e=this.getAutoSeparatorForString(t.value);if(e)return e}return" "}getAutoSeparatorForString(e){const t=[Ne,";",","," ","."];for(const o of t)if(e.includes(o))return o}splitIntoColumns({separator:e,addNewColumns:t}){const o=this.getters.getSelectedZone(),s=this.getters.getActiveSheetId(),i=this.getSplittedCols(o,e);t&&this.addColsToAvoidCollisions(o,i),this.removeMergesInSplitZone(o,i),this.addColumnsToNotOverflowSheet(o,i);for(let e=0;e<i.length;e++){const t=o.top+e,n=i[e],r=o.left,a=this.getters.getCell({sheetId:s,col:r,row:t});if(1!==n.length||n[0]!==a?.content)for(const[e,o]of n.entries())this.dispatch("UPDATE_CELL",{sheetId:s,col:r+e,row:t,content:Ya(o,this.getters.getLocale()),format:"",style:a?.style||null})}}getSplittedCols(e,t){if(!t)throw new Error("Separator cannot be empty");const o=this.getters.getActiveSheetId(),s=[];for(const i of je(e.top,e.bottom+1)){const n=this.getters.getEvaluatedCell({sheetId:o,col:e.left,row:i}).formattedValue;s.push(this.splitAndRemoveTrailingEmpty(n,t))}return s}splitAndRemoveTrailingEmpty(e,t){const o=e.split(t);for(;o.length>1&&""===o[o.length-1];)o.pop();return o}willSplittedColsOverwriteContent(e,t){const o=this.getters.getActiveSheetId();for(const s of je(e.top,e.bottom+1)){const i=t[s-e.top];for(let t=1;t<i.length;t++){const i=this.getters.getCell({sheetId:o,col:e.left+t,row:s});if(i&&i.content)return!0}}return!1}removeMergesInSplitZone(e,t){const o=this.getters.getActiveSheetId(),s=Math.max(...t.map((e=>e.length))),i={...e,right:e.left+s-1},n=this.getters.getMergesInZone(o,i);this.dispatch("REMOVE_MERGE",{sheetId:o,target:n})}addColsToAvoidCollisions(e,t){const o=this.getters.getActiveSheetId();let s=0;for(const i of je(e.top,e.bottom+1)){const n={sheetId:o,col:e.left,row:i},r=t[i-e.top],a=this.getColsToAddToAvoidCollision(n,r);s=Math.max(s,a)}s&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:e.left,sheetId:o,quantity:s,position:"after"})}getColsToAddToAvoidCollision(e,t){const o=t.length;for(let t=1;t<o;t++){const s=e.col+t,i=this.getters.getCell({...e,col:s});if(i&&i.content)return o-t}return 0}addColumnsToNotOverflowSheet(e,t){const o=this.getters.getActiveSheetId(),s=Math.max(...t.map((e=>e.length-1))),i=this.getters.getNumberCols(o)-1;e.left+s>i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:i,sheetId:o,quantity:e.left+s-i,position:"after"})}checkSingleColSelected(){return this.getters.isSingleColSelected()?"Success":"MoreThanOneColumnSelected"}checkNonEmptySelector(e){return""===e.separator?"EmptySplitSeparator":"Success"}checkNotOverwritingContent(e){if(e.addNewColumns||e.force)return"Success";const t=this.getters.getSelectedZones()[0],o=this.getSplittedCols(t,e.separator);return this.willSplittedColsOverwriteContent(t,o)?"SplitWillOverwriteContent":"Success"}checkSeparatorInSelection({separator:e}){const t=this.getters.getSelectedCells();for(const o of t)if(o.formattedValue.includes(e))return"Success";return"NoSplitSeparatorInSelection"}}).add("collaborative",class extends wN{static getters=["getClientsToDisplay","getClient","getConnectedClients","isFullySynchronized"];static layers=["Selection"];availableColors=new go(12);colors={};session;constructor(e){super(e),this.session=e.session}isPositionValid(e){return e.row<this.getters.getNumberRows(e.sheetId)&&e.col<this.getters.getNumberCols(e.sheetId)}getClient(){return this.session.getClient()}getConnectedClients(){return this.session.getConnectedClients()}isFullySynchronized(){return this.session.isFullySynchronized()}getClientsToDisplay(){try{this.getters.getClient()}catch(e){if(e instanceof NN)return[];throw e}const e=this.getters.getActiveSheetId(),t=[];for(const o of this.getters.getConnectedClients())if(o.id!==this.getters.getClient().id&&o.position&&o.position.sheetId===e&&this.isPositionValid(o.position)){const e=o.position;this.colors[o.id]||(this.colors[o.id]=this.availableColors.next());const s=this.colors[o.id];t.push({...o,position:e,color:s})}return t}drawLayer(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,s=this.getters.getActiveSheetId();for(const e of this.getClientsToDisplay()){const{row:i,col:n}=e.position,r=this.getters.expandZone(s,{top:i,bottom:i,left:n,right:n}),{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(r);if(c<=0||h<=0)continue;const d=e.color;t.fillStyle=`${d}10`,t.lineWidth=4*o,t.strokeStyle=d,t.globalCompositeOperation="multiply",t.fillRect(a,l,c,h),t.globalCompositeOperation="source-over",t.strokeRect(a,l,c,h),t.font=`bold ${fe+1}px ${ve}`}}}).add("history",class extends wN{static getters=["canUndo","canRedo"];undoStack=[];redoStack=[];session;constructor(e){super(e),this.session=e.session,this.session.on("new-local-state-update",this,this.onNewLocalStateUpdate),this.session.on("snapshot",this,(()=>{this.undoStack=[],this.redoStack=[]}))}allowDispatch(e){switch(e.type){case"REQUEST_UNDO":if(!this.canUndo())return"EmptyUndoStack";break;case"REQUEST_REDO":if(!this.canRedo())return"EmptyRedoStack"}return"Success"}handle(e){switch(e.type){case"REQUEST_UNDO":case"REQUEST_REDO":this.requestHistoryChange("REQUEST_UNDO"===e.type?"UNDO":"REDO")}}finalize(){}requestHistoryChange(e){const t="UNDO"===e?this.undoStack.pop():this.redoStack.pop();if(t)"UNDO"===e?(this.session.undo(t),this.redoStack.push(t)):(this.session.redo(t),this.undoStack.push(t));else{const e=this.getPossibleRevisionToRepeat();if(!e)return;const t=XN(e,this.getters);if(!t)return;if(!Array.isArray(t))return void this.dispatch(t.type,t);for(const e of t)this.dispatch(e.type,e)}}canUndo(){return this.undoStack.length>0}canRedo(){if(this.redoStack.length>0)return!0;const e=this.getPossibleRevisionToRepeat();return!(!(t=e)||!t.rootCommand||"object"!=typeof t.rootCommand)&&(di(t.rootCommand)?ZN.contains(t.rootCommand.type):jN.contains(t.rootCommand.type));var t}onNewLocalStateUpdate({id:e}){this.undoStack.push(e),this.redoStack=[],this.undoStack.length>99&&this.undoStack.shift()}getPossibleRevisionToRepeat(){return this.session.getLastLocalNonEmptyRevision()}}).add("data_cleanup",class extends wN{allowDispatch(e){return"REMOVE_DUPLICATES"===e.type?this.checkValidations(e,this.chainValidations(this.checkSingleRangeSelected,this.checkNoMergeInZone,this.checkRangeContainsValues,this.checkColumnsIncludedInZone),this.chainValidations(this.checkNoColumnProvided,this.checkColumnsAreUnique)):"Success"}handle(e){switch(e.type){case"REMOVE_DUPLICATES":this.removeDuplicates(e.columns,e.hasHeader);break;case"TRIM_WHITESPACE":this.trimWhitespace()}}removeDuplicates(e,t){const o=this.getters.getActiveSheetId(),s=this.getters.getSelectedZone();t&&(s.top+=1);const i=this.getUniqueRowsIndexes(o,s.top,s.bottom,e),n=i.length;if(n===ss(s).numberOfRows)return void this.notifyRowsRemovedAndRemaining(0,n);const r=i.map((e=>({left:s.left,top:e,right:s.right,bottom:e}))),a=new Dc(this.getters,this.dispatch),l=a.copy(Ia(o,r));if(!l)return;this.dispatch("CLEAR_CELLS",{target:[s],sheetId:o});const c={left:s.left,top:s.top,right:s.left,bottom:s.top};a.paste({zones:[c],sheetId:o},l,{isCutOperation:!1});const h={left:s.left,top:s.top-(t?1:0),right:s.right,bottom:s.top+n-1};this.selection.selectZone({cell:{col:h.left,row:h.top},zone:h});const d=s.bottom-s.top+1-n;this.notifyRowsRemovedAndRemaining(d,n)}getUniqueRowsIndexes(e,t,o,s){const i=new Map;for(const n of je(t,o+1)){const t=s.map((t=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}).value));!Object.values(i).some((e=>ft(e,t)))&&(i[n]=t)}return Object.keys(i).map((e=>parseInt(e)))}notifyRowsRemovedAndRemaining(e,t){this.ui.notifyUI({type:"info",text:Uo("%s duplicate rows found and removed.\n%s unique rows remain.",e.toString(),t.toString()),sticky:!1})}checkSingleRangeSelected(){return 1!==this.getters.getSelectedZones().length?"MoreThanOneRangeSelected":"Success"}checkNoMergeInZone(){const e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZone();return this.getters.getMergesInZone(e,t).length>0?"WillRemoveExistingMerge":"Success"}checkRangeContainsValues(e){const t=this.getters.getActiveSheetId(),o=this.getters.getSelectedZone();e.hasHeader&&(o.top+=1);return this.getters.getEvaluatedCellsInZone(t,o).every((e=>"empty"===e.type))?"EmptyTarget":"Success"}checkNoColumnProvided(e){return 0===e.columns.length?"NoColumnsProvided":"Success"}checkColumnsIncludedInZone(e){const t=this.getters.getSelectedZone();return e.columns.some((e=>e<t.left||e>t.right))?"ColumnsNotIncludedInZone":"Success"}checkColumnsAreUnique(e){return e.columns.length!==new Set(e.columns).size?"DuplicatesColumnsSelected":"Success"}trimWhitespace(){const e=_o(this.getters.getSelectedZones()),t=this.getters.getActiveSheetId();let o=0;for(const{col:s,row:i}of e.map(rs).flat()){const e=this.getters.getCell({col:s,row:i,sheetId:t});if(!e)continue;const n=At(e.content);n!==e.content&&(o+=1,this.dispatch("UPDATE_CELL",{sheetId:t,col:s,row:i,content:n}))}const s=o?Uo("Trimmed whitespace from %s cells.",o):Uo("No selected cells had whitespace trimmed.");this.ui.notifyUI({type:"info",text:s,sticky:!1})}}).add("table_autofill",class extends wN{handle(e){if("AUTOFILL_TABLE_COLUMN"===e.type){const t=this.getters.getCoreTable(e),o=this.getters.getCell(e);if(!t?.config.automaticAutofill||"dynamic"===t.type||!o?.isFormula)return;const{col:s,row:i}=e,n=function(e,t){const o=t.numberOfHeaders,s={...e,top:e.top+o};return s.top<=s.bottom?s:void 0}(t.range.zone,t.config);if(n&&ts(s,i,n)){const t=e.autofillRowStart??n.top,o=e.autofillRowEnd??n.bottom,s={...n,top:t,bottom:o};this.autofillTableZone(e,s)}}}autofillTableZone(e,t){if(t.top===t.bottom)return;const{col:o,row:s,sheetId:i}=e;for(let e=t.top;e<=t.bottom;e++)if(e!==s&&this.getters.getEvaluatedCell({col:o,row:e,sheetId:i}).type!==oi.empty)return;const n={zone:this.getters.getSelectedZone(),cell:this.getters.getActivePosition()};this.selection.selectCell(o,s),this.dispatch("AUTOFILL_SELECT",{col:o,row:t.bottom}),this.dispatch("AUTOFILL"),this.selection.selectCell(o,s),this.dispatch("AUTOFILL_SELECT",{col:o,row:t.top}),this.dispatch("AUTOFILL"),this.selection.selectZone(n)}}).add("table_ui_resize",class extends wN{allowDispatch(e){if("RESIZE_TABLE"===e.type){const t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return"TableNotFound";const o=t.range.zone,s=this.getters.getRangeFromRangeData(e.newTableRange).zone;return s.top!==o.top||s.left!==o.left?"InvalidTableResize":this.canDispatch("UPDATE_TABLE",{...e}).reasons}return"Success"}handle(e){switch(e.type){case"RESIZE_TABLE":{const t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(this.dispatch("UPDATE_TABLE",{...e}),!t)return;const o=this.getters.getRangeFromRangeData(e.newTableRange).zone;if(this.selection.selectCell(o.right,o.bottom),!t.config.automaticAutofill)return;const s=t.range.zone;if(o.bottom>=s.bottom){for(let t=o.left;t<=o.right;t++){const i={col:t,row:s.bottom,sheetId:e.sheetId};this.getters.getCell(i)?.content.startsWith("=")&&this.dispatch("AUTOFILL_TABLE_COLUMN",{...i,autofillRowStart:s.bottom,autofillRowEnd:o.bottom})}break}}}}}).add("datavalidation_insert",class extends wN{handle(e){if("ADD_DATA_VALIDATION_RULE"===e.type)if("isBoolean"===e.rule.criterion.type){const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e)));for(const e of Jr(t)){const t=this.getters.getCell(e),o=this.getters.getEvaluatedCell(e);if(t?.content)if(t?.content&&o.type===oi.empty){let o;if(t.content.startsWith("=")){const s=this.getters.evaluateFormula(e.sheetId,t.content);o=(bi(s)?s[0][0]:s)?.toString()}else o=t.content;o&&Ke(o)||this.dispatch("UPDATE_CELL",{...e,content:"FALSE"})}else o.type!==oi.boolean&&this.dispatch("UPDATE_CELL",{...e,content:"FALSE"});else this.dispatch("UPDATE_CELL",{...e,content:"FALSE"})}}}}).add("geo_features",class extends wN{static getters=["getGeoJsonFeatures","geoFeatureNameToId","getGeoChartAvailableRegions"];geoJsonService;geoJsonCache={};constructor(e){super(e),this.geoJsonService=e.external.geoJsonService}getGeoChartAvailableRegions(){return this.geoJsonService?this.geoJsonService.getAvailableRegions()||[]:(console.error("No geoJsonService provided to the model"),[])}getGeoJsonFeatures(e){if(!this.geoJsonService)return void console.error("No geoJsonService provided to the model");const t=this.geoJsonCache[e];return t instanceof Promise?void 0:void 0!==t?t??void 0:void(this.geoJsonCache[e]=new Promise((async t=>{const o=await(this.geoJsonService?.getTopoJson(e));this.geoJsonCache[e]=this.convertToGeoJson(o),this.dispatch("EVALUATE_CHARTS"),t()})))}geoFeatureNameToId(e,t){if(this.geoJsonService)return this.geoJsonService.geoFeatureNameToId(e,t);console.error("No geoJsonService provided to the model")}convertToGeoJson(e){if(!e)return null;if("Topology"===e.type){const t=window.ChartGeo.topojson.feature(e,Object.values(e.objects)[0]);return"FeatureCollection"===t.type?t.features:[t]}if("FeatureCollection"===e.type)return e.features;throw new Error("Invalid TopoJSON")}}),tk=(new n).add("selection",class extends wN{static layers=["Selection"];static getters=["getActiveSheet","getActiveSheetId","getActiveCell","getActiveCols","getActiveRows","getCurrentStyle","getSelectedZones","getSelectedZone","getSelectedCells","getSelectedFigureId","getSelection","getActivePosition","getSheetPosition","isSingleColSelected","getElementsFromSelection","tryGetActiveSheetId","isGridSelectionActive"];gridSelection={anchor:{cell:{col:0,row:0},zone:{top:0,left:0,bottom:0,right:0}},zones:[{top:0,left:0,bottom:0,right:0}]};selectedFigureId=null;sheetsData={};moveClient;activeSheet=null;constructor(e){super(e),this.moveClient=e.moveClient}allowDispatch(e){switch(e.type){case"ACTIVATE_SHEET":try{if(!this.getters.getSheet(e.sheetIdTo).isVisible)return"SheetIsHidden";break}catch(e){return"InvalidSheetId"}case"MOVE_COLUMNS_ROWS":return this.isMoveElementAllowed(e)}return"Success"}handleEvent(e){const t=e.anchor;let o=[];switch(e.mode){case"overrideSelection":o=[t.zone];break;case"updateAnchor":o=[...this.gridSelection.zones];const s=o.findIndex((t=>Qo(t,e.previousAnchor.zone)));s>=0&&(o[s]=t.zone);break;case"newAnchor":o=[...this.gridSelection.zones,t.zone]}this.setSelectionMixin(e.anchor,o),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor));const{col:s,row:i}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:s,row:i}),this.selectedFigureId=null}handle(e){switch(e.type){case"ACTIVATE_SHEET":this.selectedFigureId=null;break;case"DELETE_FIGURE":this.selectedFigureId===e.id&&(this.selectedFigureId=null);break;case"DELETE_SHEET":this.selectedFigureId&&this.getters.getFigure(e.sheetId,this.selectedFigureId)&&(this.selectedFigureId=null)}switch(e.type){case"START":const t=this.getters.getVisibleSheetIds()[0];this.activateSheet(t,t);const{col:o,row:s}=this.getters.getNextVisibleCellPosition({sheetId:t,col:0,row:0});this.selectCell(o,s),this.selection.registerAsDefault(this,this.gridSelection.anchor,{handleEvent:this.handleEvent.bind(this)}),this.moveClient({sheetId:t,col:0,row:0});break;case"ACTIVATE_SHEET":this.activateSheet(e.sheetIdFrom,e.sheetIdTo);break;case"REMOVE_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){"COL"===e.dimension?this.onColumnsRemoved(e):this.onRowsRemoved(e);const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:s})}break}case"ADD_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){this.onAddElements(e);const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:s})}break}case"MOVE_COLUMNS_ROWS":e.sheetId===this.getActiveSheetId()&&this.onMoveElements(e);break;case"SELECT_FIGURE":this.selectedFigureId=e.id;break;case"ACTIVATE_NEXT_SHEET":this.activateNextSheet("right");break;case"ACTIVATE_PREVIOUS_SHEET":this.activateNextSheet("left");break;case"HIDE_SHEET":e.sheetId===this.getActiveSheetId()&&this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e.sheetId,sheetIdTo:this.getters.getVisibleSheetIds()[0]});break;case"UNDO":case"REDO":case"DELETE_SHEET":const i=Object.keys(this.sheetsData).filter((e=>!this.getters.tryGetSheet(e)));for(const e of i)delete this.sheetsData[e];for(const e in this.sheetsData){const t=this.clipSelection(e,this.sheetsData[e].gridSelection);this.sheetsData[e]={gridSelection:ze(t)}}this.fallbackToVisibleSheet();const n=this.getters.getActiveSheetId();this.gridSelection.zones=this.gridSelection.zones.map((e=>this.getters.expandZone(n,e))),this.gridSelection.anchor.zone=this.getters.expandZone(n,this.gridSelection.anchor.zone),this.setSelectionMixin(this.gridSelection.anchor,this.gridSelection.zones),this.selectedFigureId=null}}finalize(){this.fallbackToVisibleSheet(),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor))}isGridSelectionActive(){return this.selection.isListening(this)}getActiveSheet(){return this.activeSheet}getActiveSheetId(){return this.activeSheet.id}tryGetActiveSheetId(){return this.activeSheet?.id}getActiveCell(){return this.getters.getEvaluatedCell(this.getActivePosition())}getActiveCols(){const e=new Set;for(let t of this.gridSelection.zones)if(0===t.top&&t.bottom===this.getters.getNumberRows(this.getters.getActiveSheetId())-1)for(let o=t.left;o<=t.right;o++)e.add(o);return e}getActiveRows(){const e=new Set,t=this.getters.getActiveSheetId();for(let o of this.gridSelection.zones)if(0===o.left&&o.right===this.getters.getNumberCols(t)-1)for(let t=o.top;t<=o.bottom;t++)e.add(t);return e}getCurrentStyle(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();return this.getters.getCellStyle({sheetId:t,col:e.left,row:e.top})}getSelectedZones(){return ze(this.gridSelection.zones)}getSelectedZone(){return ze(this.gridSelection.anchor.zone)}getSelection(){return ze(this.gridSelection)}getSelectedCells(){const e=this.getters.getActiveSheetId(),t=[];for(const o of this.gridSelection.zones)t.push(...this.getters.getEvaluatedCellsInZone(e,o));return t}getSelectedFigureId(){return this.selectedFigureId}getActivePosition(){return this.getters.getMainCellPosition({sheetId:this.getActiveSheetId(),col:this.gridSelection.anchor.cell.col,row:this.gridSelection.anchor.cell.row})}getSheetPosition(e){if(e===this.getters.getActiveSheetId())return this.getActivePosition();{const t=this.sheetsData[e];return t?{sheetId:e,col:t.gridSelection.anchor.cell.col,row:t.gridSelection.anchor.cell.row}:this.getters.getNextVisibleCellPosition({sheetId:e,col:0,row:0})}}isSingleColSelected(){const e=this.getters.getSelectedZones();return 1===e.length&&e[0].left===e[0].right}getElementsFromSelection(e){if("COL"===e&&0===this.getters.getActiveCols().size)return[];if("ROW"===e&&0===this.getters.getActiveRows().size)return[];const t=this.getters.getSelectedZones();let o=[];const s="COL"===e?"left":"top",i="COL"===e?"right":"bottom";for(const e of t){const t=Array.from({length:e[i]-e[s]+1},((t,o)=>e[s]+o));o=o.concat(t)}return[...new Set(o)].sort()}activateSheet(e,t){if(this.setActiveSheet(t),this.sheetsData[e]={gridSelection:ze(this.gridSelection)},t in this.sheetsData)Object.assign(this,this.sheetsData[t]),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor));else{const{col:e,row:o}=this.getters.getNextVisibleCellPosition({sheetId:t,col:0,row:0});this.selectCell(e,o)}const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.activeSheet.id,col:o,row:s})}setSelectionMixin(e,t){const{anchor:o,zones:s}=this.clipSelection(this.getters.getActiveSheetId(),{anchor:e,zones:t});this.gridSelection.anchor=o,this.gridSelection.zones=function(e){return e.reverse().filter(((e,t,o)=>t===o.findIndex((t=>t.top===e.top&&t.bottom===e.bottom&&t.left===e.left&&t.right===e.right)))).reverse()}(s)}selectCell(e,t){const o=this.getters.getActiveSheetId(),s=this.getters.expandZone(o,{left:e,right:e,top:t,bottom:t});this.setSelectionMixin({zone:s,cell:{col:e,row:t}},[s])}setActiveSheet(e){this.activeSheet=this.getters.getSheet(e)}activateNextSheet(e){const t=this.getters.getSheetIds(),o=(t.findIndex((e=>e===this.activeSheet.id))+("left"===e?t.length-1:1))%t.length;this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:this.getActiveSheetId(),sheetIdTo:t[o]})}onColumnsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,s=Yo(o,"left",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Yo(i,"left",[...e.elements]);const n={cell:{col:i.left,row:i.top},zone:s},r=this.gridSelection.zones.map((t=>Yo(t,"left",[...e.elements])));this.setSelectionMixin(n,r)}onRowsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,s=Yo(o,"top",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Yo(i,"top",[...e.elements]);const n={cell:{col:i.left,row:i.top},zone:s},r=this.gridSelection.zones.map((t=>Yo(t,"top",[...e.elements])));this.setSelectionMixin(n,r)}onAddElements(e){const t="COL"===e.dimension?"left":"top",o=jo(this.gridSelection.anchor.zone,t,e.base,e.position,e.quantity),s=this.gridSelection.zones.map((o=>jo(o,t,e.base,e.position,e.quantity))),i={cell:{col:o.left,row:o.top},zone:o};this.setSelectionMixin(i,s)}onMoveElements(e){const t=e.elements.length;this.dispatch("ADD_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,base:e.base,quantity:t,position:e.position});const o="COL"===e.dimension,s=e.elements[0],i=e.elements[t-1],n=e.base<s,r=n&&o?t:0,a=n&&!o?t:0,l=[{left:o?s+r:0,right:o?i+r:this.getters.getNumberCols(e.sheetId)-1,top:o?0:s+a,bottom:o?this.getters.getNumberRows(e.sheetId)-1:i+a}],c=this.getActiveSheetId(),h=n?e.base:e.base+1,d=[{left:o?h:0,right:o?h+t-1:this.getters.getNumberCols(e.sheetId)-1,top:o?0:h,bottom:o?this.getters.getNumberRows(e.sheetId)-1:h+t-1}];for(const e of Pc.cellHandlers.getAll()){const t=new e(this.getters,this.dispatch),o=t.copy(Ia(c,l));o&&t.paste({zones:d,sheetId:c},o,{isCutOperation:!0})}const u=d[0],g=u.left,p=u.top;this.setSelectionMixin({zone:u,cell:{col:g,row:p}},[u]);const m=n?e.elements.map((e=>e+t)):e.elements;let f=n?e.base:e.base+1;const v={};for(const t of m){const o=this.getters.getHeaderSize(e.sheetId,e.dimension,t);o!=this.getters.getHeaderSize(e.sheetId,e.dimension,f)&&(v[o]??=[],v[o].push(f),f+=1)}for(const t in v)this.dispatch("RESIZE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,size:parseInt(t,10),elements:v[t]});this.dispatch("REMOVE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,elements:m})}isMoveElementAllowed(e){const t="COL"===e.dimension,o=e.elements[0],s=e.elements[e.elements.length-1],i=e.sheetId,n=t?this.getters.doesColumnsHaveCommonMerges:this.getters.doesRowsHaveCommonMerges;if(n(i,o-1,o)||n(i,s,s+1)||n(i,e.base-1,e.base))return"WillRemoveExistingMerge";const r=[e.base,...e.elements],a=t?this.getters.getNumberCols(i):this.getters.getNumberRows(i);return r.some((e=>e<0||e>=a))?"InvalidHeaderIndex":"Success"}fallbackToVisibleSheet(){if(!this.getters.tryGetSheet(this.getters.getActiveSheetId())){const e=this.getters.getVisibleSheetIds();if(this.activeSheet=this.getters.getSheet(e[0]),this.activeSheet.id in this.sheetsData){const{anchor:e}=this.clipSelection(this.activeSheet.id,this.sheetsData[this.activeSheet.id].gridSelection);this.selectCell(e.cell.col,e.cell.row)}else this.selectCell(0,0);const{col:t,row:o}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:t,row:o})}}clipSelection(e,t){const o=this.getters.getNumberCols(e)-1,s=this.getters.getNumberRows(e)-1;return{zones:t.zones.map((e=>({left:Ze(e.left,0,o),right:Ze(e.right,0,o),top:Ze(e.top,0,s),bottom:Ze(e.bottom,0,s)}))),anchor:{cell:{col:Ze(t.anchor.cell.col,0,o),row:Ze(t.anchor.cell.row,0,s)},zone:{left:Ze(t.anchor.zone.left,0,o),right:Ze(t.anchor.zone.right,0,o),top:Ze(t.anchor.zone.top,0,s),bottom:Ze(t.anchor.zone.bottom,0,s)}}}}drawLayer(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,s=this.getSelectedZones();t.fillStyle="#f3f7fe";const i=1===s.length&&s[0].left===s[0].right&&s[0].top===s[0].bottom;t.fillStyle=i?"#f3f7fe":"#e9f0ff",t.strokeStyle=p,t.lineWidth=1.5*o;for(const e of s){const{x:o,y:s,width:i,height:n}=this.getters.getVisibleRect(e);t.globalCompositeOperation="multiply",t.fillRect(o,s,i,n),t.globalCompositeOperation="source-over",t.strokeRect(o,s,i,n)}t.globalCompositeOperation="source-over";const n=this.getActivePosition();let r;t.strokeStyle=p,t.lineWidth=3*o,r=this.getters.isInMerge(n)?this.getters.getMerge(n):hs(n);const{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(r);c>0&&h>0&&t.strokeRect(a,l,c,h)}}).add("evaluation_filter",class extends wN{static getters=["getFilterHiddenValues","getFirstTableInSelection","isRowFiltered","isFilterActive"];filterValues={};hiddenRows={};isEvaluationDirty=!1;allowDispatch(e){if("UPDATE_FILTER"===e.type)if(!this.getters.getFilterId(e))return"FilterNotFound";return"Success"}handle(e){switch(e.type){case"UNDO":case"REDO":case"UPDATE_CELL":case"EVALUATE_CELLS":case"ACTIVATE_SHEET":case"REMOVE_TABLE":case"ADD_COLUMNS_ROWS":case"REMOVE_COLUMNS_ROWS":case"UPDATE_TABLE":this.isEvaluationDirty=!0;break;case"START":for(const e of this.getters.getSheetIds())this.filterValues[e]={};break;case"CREATE_SHEET":this.filterValues[e.sheetId]={};break;case"HIDE_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"GROUP_HEADERS":case"UNGROUP_HEADERS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_ALL_HEADER_GROUPS":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":this.updateHiddenRows(e.sheetId);break;case"UPDATE_FILTER":this.updateFilter(e),this.updateHiddenRows(e.sheetId);break;case"DUPLICATE_SHEET":this.filterValues[e.sheetIdTo]=ze(this.filterValues[e.sheetId])}}finalize(){if(this.isEvaluationDirty){for(const e of this.getters.getSheetIds())this.updateHiddenRows(e);this.isEvaluationDirty=!1}}isRowFiltered(e,t){return!!this.hiddenRows[e]?.has(t)}getFilterHiddenValues(e){const t=this.getters.getFilterId(e),o=e.sheetId;return t&&this.filterValues[o]&&this.filterValues[o][t]||[]}isFilterActive(e){const t=this.getters.getFilterId(e),o=e.sheetId;return Boolean(t&&this.filterValues[o]?.[t]?.length)}getFirstTableInSelection(){const e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZones();return this.getters.getTablesOverlappingZones(e,t)[0]}updateFilter({col:e,row:t,hiddenValues:o,sheetId:s}){const i=this.getters.getFilterId({sheetId:s,col:e,row:t});i&&(this.filterValues[s]||(this.filterValues[s]={}),this.filterValues[s][i]=o)}updateHiddenRows(e){const t=this.getters.getFilters(e).sort(((e,t)=>e.rangeWithHeaders.zone.top-t.rangeWithHeaders.zone.top)),o=new Set;for(let s of t){if(o.has(s.rangeWithHeaders.zone.top)||this.getters.isRowHiddenByUser(e,s.rangeWithHeaders.zone.top))continue;const t=this.filterValues[e]?.[s.id]?.map(Sa),i=s.filteredRange?.zone;if(!t||!i)continue;const n=new Set(t);for(let t=i.top;t<=i.bottom;t++){const i=this.getCellValueAsString(e,s.col,t);n.has(i)&&o.add(t)}}this.hiddenRows[e]=o}getCellValueAsString(e,t,o){return this.getters.getEvaluatedCell({sheetId:e,col:t,row:o}).formattedValue.toLowerCase()}exportForExcel(e){for(const t of e.sheets){const e=t.id;for(const o of t.tables){const s=$o(o.range),i=[],n=[];for(const o of je(0,ss(s).numberOfCols)){const r={sheetId:t.id,col:s.left+o,row:s.top},a=this.getFilterHiddenValues(r),l=this.getters.getFilter(r),c=l?.filteredRange?rs(l.filteredRange.zone).map((t=>this.getters.getEvaluatedCell({sheetId:e,...t}).formattedValue)):[];if(a.length){const e=c.filter((e=>e)).filter((e=>!a.includes(e)));i.push({colId:o,displayedValues:[...new Set(e)],displayBlanks:!a.includes("")&&c.some((e=>!e))})}const h=this.getters.getEvaluatedCell(r).formattedValue,d=this.getUniqueColNameForExcel(o,h,n);n.push(d);const u=Ao(r.col,r.row);t.cells[u]=d,t.cellValues[u]=d}o.filters=i}}}getUniqueColNameForExcel(e,t,o){return t||(t=`Column${e}`),kt(t,o,{compute:(e,o)=>t+String(o),start:2})}}).add("header_visibility_ui",class extends wN{static getters=["getNextVisibleCellPosition","findVisibleHeader","findLastVisibleColRowIndex","findFirstVisibleColRowIndex","isRowHidden","isColHidden","isHeaderHidden"];isRowHidden(e,t){return this.getters.isRowHiddenByUser(e,t)||this.getters.isRowFiltered(e,t)}isColHidden(e,t){return this.getters.isColHiddenByUser(e,t)}isHeaderHidden(e,t,o){return"COL"===t?this.isColHidden(e,o):this.isRowHidden(e,o)}getNextVisibleCellPosition({sheetId:e,col:t,row:o}){return{sheetId:e,col:this.findVisibleHeader(e,"COL",t,this.getters.getNumberCols(e)-1),row:this.findVisibleHeader(e,"ROW",o,this.getters.getNumberRows(e)-1)}}findVisibleHeader(e,t,o,s){if(o<=s)for(let i=o;i<=s;i++)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i;if(o>s)for(let i=o;i>=s;i--)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}findLastVisibleColRowIndex(e,t,{last:o,first:s}){return je(o,s,-1).find((o=>!this.isHeaderHidden(e,t,o)))||s}findFirstVisibleColRowIndex(e,t){const o=this.getters.getNumberHeaders(e,t);for(let s=0;s<o;s++){if("COL"===t&&!this.isColHidden(e,s))return s;if("ROW"===t&&!this.isRowHidden(e,s))return s}}exportForExcel(e){for(const t of e.sheets)for(const[e,o]of Object.entries(t.rows))o.isHidden=this.isRowHidden(t.id,Number(e))}}).add("cell_computed_style",class extends wN{static getters=["getCellComputedBorder","getCellComputedStyle"];styles={};borders={};handle(e){if(ii.has(e.type)||"UPDATE_CELL"===e.type||"SET_FORMATTING"===e.type||"EVALUATE_CELLS"===e.type)return this.styles={},void(this.borders={});LN(e)?"sheetId"in e?(delete this.styles[e.sheetId],delete this.borders[e.sheetId]):(this.styles={},this.borders={}):ai.has(e.type)?this.styles={}:li.has(e.type)&&(this.borders={})}getCellComputedBorder(e){const{sheetId:t,row:o,col:s}=e;return void 0!==this.borders[t]?.[o]?.[s]||(this.borders[t]||(this.borders[t]={}),this.borders[t][o]||(this.borders[t][o]={}),this.borders[t][o][s]||(this.borders[t][o][s]=this.computeCellBorder(e))),this.borders[t][o][s]}getCellComputedStyle(e){const{sheetId:t,row:o,col:s}=e;return void 0!==this.styles[t]?.[o]?.[s]||(this.styles[t]||(this.styles[t]={}),this.styles[t][o]||(this.styles[t][o]={}),this.styles[t][o][s]||(this.styles[t][o][s]=this.computeCellStyle(e))),this.styles[t][o][s]}computeCellBorder(e){const t=this.getters.getCellBorder(e)||{},o={...St(this.getters.getCellTableBorder(e)||{}),...St(t)};return ht(o)?null:o}computeCellStyle(e){const t=this.getters.getCell(e),o=this.getters.getCellConditionalFormatStyle(e),s={...St(this.getters.getCellTableStyle(e)),...St(t?.style),...St(o)};return this.getters.getEvaluatedCell(e).link&&!s.textColor&&(s.textColor=b),s}}).add("table_computed_style",class extends wN{static getters=["getCellTableStyle","getCellTableBorder"];tableStyles={};handle(e){ii.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e)||"EVALUATE_CELLS"===e.type?this.tableStyles={}:LN(e)&&("sheetId"in e?delete this.tableStyles[e.sheetId]:this.tableStyles={})}finalize(){for(const e of this.getters.getSheetIds()){this.tableStyles[e]||(this.tableStyles[e]={});for(const t of this.getters.getTables(e))this.tableStyles[e][t.id]||(this.tableStyles[e][t.id]=this.computeTableStyle(e,t))}}getCellTableStyle(e){const t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().styles[e.col]?.[e.row]}getCellTableBorder(e){const t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().borders[e.col]?.[e.row]}computeTableStyle(e,t){return gt((()=>{const{config:o,numberOfCols:s,numberOfRows:i}=this.getTableRuntimeConfig(e,t),n=rM(o,this.getters.getTableStyle(t.config.styleId),s,i),r=this.getTableMapping(e,t),a={borders:{},styles:{}};for(let e=0;e<s;e++){const t=r.colMapping[e];a.borders[t]={},a.styles[t]={};for(let o=0;o<i;o++){const s=r.rowMapping[o];a.borders[t][s]=n.borders[e][o],a.styles[t][s]=n.styles[e][o]}}return a}))}getTableRuntimeConfig(e,t){const o=t.range.zone,s={...t.config};let i=o.right-o.left+1,n=o.bottom-o.top+1;for(let i=o.top;i<=o.bottom;i++)this.getters.isRowHidden(e,i)&&(n--,i-o.top<t.config.numberOfHeaders&&(s.numberOfHeaders--,s.numberOfHeaders<0&&(s.numberOfHeaders=0)),i===o.bottom&&(s.totalRow=!1));for(let t=o.left;t<=o.right;t++)this.getters.isColHidden(e,t)&&(i--,t===o.left&&(s.firstColumn=!1),t===o.right&&(s.lastColumn=!1));return{config:s,numberOfCols:i,numberOfRows:n}}getTableMapping(e,t){const o={},s={};let i=0,n=0;const r=t.range.zone;for(let t=r.left;t<=r.right;t++)if(!this.getters.isColHidden(e,t)){o[i]=t,i++;for(let t=r.top;t<=r.bottom;t++)this.getters.isRowHidden(e,t)||(s[n]=t,n++)}return{colMapping:o,rowMapping:s}}}).add("header_positions",class extends wN{static getters=["getColDimensions","getRowDimensions","getColRowOffset"];headerPositions={};isDirty=!0;handle(e){switch(ii.has(e.type)&&(this.headerPositions={},this.isDirty=!0),e.type){case"START":for(const e of this.getters.getSheetIds())this.headerPositions[e]=this.computeHeaderPositionsOfSheet(e);break;case"UPDATE_CELL":case"UPDATE_FILTER":case"UPDATE_TABLE":case"REMOVE_TABLE":this.headerPositions={},this.isDirty=!0;break;case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_ALL_HEADER_GROUPS":case"UNGROUP_HEADERS":case"GROUP_HEADERS":case"CREATE_SHEET":this.getters.tryGetSheet(e.sheetId)&&(this.headerPositions[e.sheetId]=this.computeHeaderPositionsOfSheet(e.sheetId));break;case"DUPLICATE_SHEET":this.headerPositions[e.sheetIdTo]=ze(this.headerPositions[e.sheetId])}}finalize(){for(const e of this.getters.getSheetIds())!this.isDirty&&this.headerPositions[e]||(this.headerPositions[e]=this.computeHeaderPositionsOfSheet(e));this.isDirty=!1}getColDimensions(e,t){const o=this.headerPositions[e].COL[t],s=this.getters.getColSize(e,t);return{start:o,size:s,end:o+(this.getters.isColHidden(e,t)?0:s)}}getRowDimensions(e,t){const o=this.headerPositions[e].ROW[t],s=this.getters.getRowSize(e,t);return{start:o,size:s,end:o+(this.getters.isRowHidden(e,t)?0:s)}}getColRowOffset(e,t,o,s=this.getters.getActiveSheetId()){const i=this.headerPositions[s][e][t];return this.headerPositions[s][e][o]-i}computeHeaderPositionsOfSheet(e){return{COL:this.computePositions(e,"COL"),ROW:this.computePositions(e,"ROW")}}computePositions(e,t){const o={};let s=0;for(let i=0;i<this.getters.getNumberHeaders(e,t)+1;i++)o[i]=s,this.getters.isHeaderHidden(e,t,i)||(s+=this.getters.getHeaderSize(e,t,i));return o}}).add("viewport",class extends wN{static getters=["getColIndex","getRowIndex","getActiveMainViewport","getSheetViewDimension","getSheetViewDimensionWithHeaders","getMainViewportRect","isVisibleInViewport","getEdgeScrollCol","getEdgeScrollRow","getVisibleFigures","getVisibleRect","getVisibleRectWithoutHeaders","getVisibleCellPositions","getColRowOffsetInViewport","getMainViewportCoordinates","getActiveSheetScrollInfo","getSheetViewVisibleCols","getSheetViewVisibleRows","getFrozenSheetViewRatio","isPixelPositionVisible","getColDimensionsInViewport","getRowDimensionsInViewport","getAllActiveViewportsZonesAndRect","getRect"];viewports={};sheetViewWidth=Pe();sheetViewHeight=Pe();gridOffsetX=0;gridOffsetY=0;sheetsWithDirtyViewports=new Set;shouldAdjustViewports=!1;allowDispatch(e){switch(e.type){case"SET_VIEWPORT_OFFSET":return this.chainValidations(this.checkScrollingDirection,this.checkIfViewportsWillChange)(e);case"RESIZE_SHEETVIEW":return this.chainValidations(this.checkValuesAreDifferent,this.checkPositiveDimension)(e);default:return"Success"}}handleEvent(e){const t=this.getters.getActiveSheetId();if(e.options.scrollIntoView){let{col:o,row:s}=cs(e.previousAnchor.zone,e.anchor.zone);if("updateAnchor"===e.mode){const i=e.previousAnchor.zone,n=e.anchor.zone,{top:r,bottom:a,left:l,right:c}=this.getMainInternalViewport(t);i.left===n.left&&i.right===n.right&&(o=l>o||o>c?l:o),i.top===n.top&&i.bottom===n.bottom&&(s=r>s||s>a?r:s)}o=Math.min(o,this.getters.getNumberCols(t)-1),s=Math.min(s,this.getters.getNumberRows(t)-1),this.sheetsWithDirtyViewports.has(t)||this.refreshViewport(this.getters.getActiveSheetId(),{col:o,row:s})}}handle(e){if(ii.has(e.type))for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);switch(e.type){case"START":this.selection.observe(this,{handleEvent:this.handleEvent.bind(this)}),this.resetViewports(this.getters.getActiveSheetId());break;case"UNDO":case"REDO":this.cleanViewports();for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);this.shouldAdjustViewports=!0;break;case"RESIZE_SHEETVIEW":this.resizeSheetView(e.height,e.width,e.gridOffsetX,e.gridOffsetY);break;case"SET_VIEWPORT_OFFSET":this.setSheetViewOffset(e.offsetX,e.offsetY);break;case"SHIFT_VIEWPORT_DOWN":const t=this.getters.getActiveSheetId(),{top:o,viewportHeight:s,offsetCorrectionY:i}=this.getMainInternalViewport(t),n=this.getters.getRowDimensions(t,o);this.shiftVertically(n.start+s-i);break;case"SHIFT_VIEWPORT_UP":{const e=this.getters.getActiveSheetId(),{top:t,viewportHeight:o,offsetCorrectionY:s}=this.getMainInternalViewport(e),i=this.getters.getRowDimensions(e,t);this.shiftVertically(i.end-s-o);break}case"REMOVE_TABLE":case"UPDATE_TABLE":case"UPDATE_FILTER":case"UNFREEZE_ROWS":case"UNFREEZE_COLUMNS":case"FREEZE_COLUMNS":case"FREEZE_ROWS":case"UNFREEZE_COLUMNS_ROWS":case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"UNGROUP_HEADERS":case"GROUP_HEADERS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_ALL_HEADER_GROUPS":this.sheetsWithDirtyViewports.add(e.sheetId);break;case"UPDATE_CELL":if("content"in e||"format"in e||void 0!==e.style?.fontSize)for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);break;case"DELETE_SHEET":this.cleanViewports(),this.sheetsWithDirtyViewports.delete(e.sheetId);break;case"ACTIVATE_SHEET":this.sheetsWithDirtyViewports.add(e.sheetIdTo);break;case"SCROLL_TO_CELL":this.refreshViewport(this.getters.getActiveSheetId(),{col:e.col,row:e.row})}}finalize(){for(const e of this.sheetsWithDirtyViewports)if(this.resetViewports(e),this.shouldAdjustViewports){const t=this.getters.getSheetPosition(e);this.getSubViewports(e).forEach((e=>{e.adjustPosition(t)}))}this.sheetsWithDirtyViewports=new Set,this.shouldAdjustViewports=!1,this.setViewports()}setViewports(){const e=this.getters.getSheetIds();for(const t of e)this.viewports[t]?.bottomRight||this.resetViewports(t)}getColIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getColIndex(e))))}getRowIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getRowIndex(e))))}getSheetViewDimensionWithHeaders(){return{width:this.sheetViewWidth+this.gridOffsetX,height:this.sheetViewHeight+this.gridOffsetY}}getSheetViewDimension(){return{width:this.sheetViewWidth,height:this.sheetViewHeight}}getActiveMainViewport(){const e=this.getters.getActiveSheetId();return this.getMainViewport(e)}getActiveSheetScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetX,scrollY:t.offsetY}}getSheetViewVisibleCols(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>je(e.left,e.right+1))).flat())].filter((t=>t>=0&&!this.getters.isHeaderHidden(e,"COL",t)))}getSheetViewVisibleRows(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>je(e.top,e.bottom+1))).flat())].filter((t=>t>=0&&!this.getters.isHeaderHidden(e,"ROW",t)))}getVisibleCellPositions(){const e=this.getSheetViewVisibleCols(),t=this.getSheetViewVisibleRows(),o=this.getters.getActiveSheetId(),s=[];for(const i of e)for(const e of t){const t={sheetId:o,col:i,row:e},n=this.getters.getMainCellPosition(t);n.row===e&&n.col===i&&s.push(t)}return s}getMainViewportRect(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e),{xSplit:o,ySplit:s}=this.getters.getPaneDivisions(e);let{width:i,height:n}=t.getMaxSize();return{x:this.getters.getColDimensions(e,o).start,y:this.getters.getRowDimensions(e,s).start,width:i,height:n}}getMaximumSheetOffset(){const e=this.getters.getActiveSheetId(),{width:t,height:o}=this.getMainViewportRect(),s=this.getMainInternalViewport(e);return{maxOffsetX:Math.max(0,t-s.viewportWidth),maxOffsetY:Math.max(0,o-s.viewportHeight)}}getColRowOffsetInViewport(e,t,o){if(o<t)return-this.getColRowOffsetInViewport(e,o,t);const s=this.getters.getActiveSheetId(),i="COL"===e?this.getters.getSheetViewVisibleCols():this.getters.getSheetViewVisibleRows(),n=i.findIndex((e=>t>=e));let r=i.findIndex((e=>o<=e));r=-1===r?i.length:r;const a=i.slice(n,r);let l=0;for(const t of a)l+=this.getters.getHeaderSize(s,e,t);return l}isVisibleInViewport({sheetId:e,col:t,row:o}){return this.getSubViewports(e).some((e=>e.isVisible(t,o)))}getEdgeScrollCol(e,t,o){let s=!1,i=0,n=0;const{xSplit:r}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{width:a}=this.getSheetViewDimension(),{x:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollX;return e>a?(s=!0,n=Pr(e-a),i=1):e<l&&o>=l&&c>0?(s=!0,n=Pr(l-e),i=-1):r&&t<l&&e>l&&(s=!0,n=Pr(e),i="reset"),{canEdgeScroll:s,direction:i,delay:n}}getEdgeScrollRow(e,t,o){let s=!1,i=0,n=0;const{ySplit:r}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{height:a}=this.getSheetViewDimension(),{y:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollY;return e>a?(s=!0,n=Pr(e-a),i=1):e<l&&o>=l&&c>0?(s=!0,n=Pr(l-e),i=-1):r&&t<l&&e>l&&(s=!0,n=Pr(e),i="reset"),{canEdgeScroll:s,direction:i,delay:n}}getVisibleRect(e){const t=this.getVisibleRectWithoutHeaders(e);return{...t,x:t.x+this.gridOffsetX,y:t.y+this.gridOffsetY}}getVisibleRectWithoutHeaders(e){const t=this.getters.getActiveSheetId();return this.mapViewportsToRect(t,(t=>t.getVisibleRect(e)))}getRect(e){const t=this.getters.getActiveSheetId(),o=this.mapViewportsToRect(t,(t=>t.getFullRect(e)));return{...o,x:o.x+this.gridOffsetX,y:o.y+this.gridOffsetY}}getMainViewportCoordinates(){const e=this.getters.getActiveSheetId(),{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e);return{x:this.getters.getColDimensions(e,t).start,y:this.getters.getRowDimensions(e,o).start}}getColDimensionsInViewport(e,t){const{top:o}=this.getMainInternalViewport(e),s={left:t,right:t,top:o,bottom:o},{x:i,width:n}=this.getVisibleRect(s),r=i-this.gridOffsetX;return{start:r,size:n,end:r+n}}getRowDimensionsInViewport(e,t){const{left:o}=this.getMainInternalViewport(e),s={left:0,right:o,top:t,bottom:t},{y:i,height:n}=this.getVisibleRect(s),r=i-this.gridOffsetY;return{start:r,size:n,end:r+n}}getAllActiveViewportsZonesAndRect(){const e=this.getters.getActiveSheetId();return this.getSubViewports(e).map((e=>({zone:e,rect:{x:e.offsetCorrectionX+this.gridOffsetX,y:e.offsetCorrectionY+this.gridOffsetY,...e.getMaxSize()}})))}ensureMainViewportExist(e){this.viewports[e]||this.resetViewports(e)}getSubViewports(e){return this.ensureMainViewportExist(e),Object.values(this.viewports[e]).filter(lt)}checkPositiveDimension(e){return e.width<0||e.height<0?"InvalidViewportSize":"Success"}checkValuesAreDifferent(e){const{height:t,width:o}=this.getSheetViewDimension();return e.gridOffsetX===this.gridOffsetX&&e.gridOffsetY===this.gridOffsetY&&e.width===o&&e.height===t?"ValuesNotChanged":"Success"}checkScrollingDirection({offsetX:e,offsetY:t}){const o=this.getMainInternalViewport(this.getters.getActiveSheetId());return!o.canScrollHorizontally&&e>0||!o.canScrollVertically&&t>0?"InvalidScrollingDirection":"Success"}checkIfViewportsWillChange({offsetX:e,offsetY:t}){const o=this.getters.getActiveSheetId(),{maxOffsetX:s,maxOffsetY:i}=this.getMaximumSheetOffset();return this.getSubViewports(o).some((o=>o.willNewOffsetScrollViewport(Ze(e,0,s),Ze(t,0,i))))?"Success":"ViewportScrollLimitsReached"}getMainViewport(e){const t=this.getMainInternalViewport(e);return{top:t.top,left:t.left,bottom:t.bottom,right:t.right}}getMainInternalViewport(e){return this.ensureMainViewportExist(e),this.viewports[e].bottomRight}cleanViewports(){const e={};for(const t of this.getters.getSheetIds())e[t]=this.viewports[t];this.viewports=e}resizeSheetView(e,t,o=0,s=0){this.sheetViewHeight=e,this.sheetViewWidth=t,this.gridOffsetX=o,this.gridOffsetY=s,this.recomputeViewports()}recomputeViewports(){for(const e of this.getters.getSheetIds())this.resetViewports(e)}setSheetViewOffset(e,t){const o=this.getters.getActiveSheetId(),{maxOffsetX:s,maxOffsetY:i}=this.getMaximumSheetOffset();this.getSubViewports(o).forEach((o=>o.setViewportOffset(Ze(e,0,s),Ze(t,0,i))))}getViewportOffset(e){return{x:this.viewports[e]?.bottomRight.offsetX||0,y:this.viewports[e]?.bottomRight.offsetY||0}}resetViewports(e){if(!this.getters.tryGetSheet(e))return;const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),s=this.getters.getNumberCols(e),i=this.getters.getNumberRows(e),n=Math.min(this.getters.getColRowOffset("COL",0,t,e),this.sheetViewWidth),r=Math.min(this.getters.getColRowOffset("ROW",0,o,e),this.sheetViewHeight),a=Math.max(this.sheetViewWidth-n,0),l=Math.max(this.sheetViewHeight-r,0),{xRatio:c,yRatio:h}=this.getFrozenSheetViewRatio(e),d=c<1,u=h<1,g=this.getViewportOffset(e),p={topLeft:o&&t&&new JN(this.getters,e,{left:0,right:t-1,top:0,bottom:o-1},{width:n,height:r},{canScrollHorizontally:!1,canScrollVertically:!1},{x:0,y:0})||void 0,topRight:o&&new JN(this.getters,e,{left:t,right:s-1,top:0,bottom:o-1},{width:a,height:r},{canScrollHorizontally:d,canScrollVertically:!1},{x:d?g.x:0,y:0})||void 0,bottomLeft:t&&new JN(this.getters,e,{left:0,right:t-1,top:o,bottom:i-1},{width:n,height:l},{canScrollHorizontally:!1,canScrollVertically:u},{x:0,y:u?g.y:0})||void 0,bottomRight:new JN(this.getters,e,{left:t,right:s-1,top:o,bottom:i-1},{width:a,height:l},{canScrollHorizontally:d,canScrollVertically:u},{x:d?g.x:0,y:u?g.y:0})};this.viewports[e]=p}refreshViewport(e,t){this.getSubViewports(e).forEach((e=>{e.adjustViewportZone(),e.adjustPosition(t)}))}shiftVertically(e){const t=this.getters.getActiveSheetId(),{top:o}=this.getMainInternalViewport(t),{scrollX:s}=this.getActiveSheetScrollInfo();this.setSheetViewOffset(s,e);const{anchor:i}=this.getters.getSelection();if(i.cell.row>=this.getters.getPaneDivisions(t).ySplit){const e=this.getMainInternalViewport(t).top-o;this.selection.selectCell(i.cell.col,i.cell.row+e)}}getVisibleFigures(){const e=this.getters.getActiveSheetId(),t=[],o=this.getters.getFigures(e),{scrollX:s,scrollY:i}=this.getActiveSheetScrollInfo(),{x:n,y:r}=this.getters.getMainViewportCoordinates(),{width:a,height:l}=this.getters.getSheetViewDimensionWithHeaders();for(const e of o)e.x>=n&&(e.x+e.width<=n+s||e.x>=a+s+n)||e.y>=r&&(e.y+e.height<=r+i||e.y>=l+i+r)||t.push(e);return t}isPixelPositionVisible(e){const{scrollX:t,scrollY:o}=this.getters.getActiveSheetScrollInfo(),{x:s,y:i}=this.getters.getMainViewportCoordinates(),{width:n,height:r}=this.getters.getSheetViewDimension();return!(e.x>=s&&(e.x<s+t||e.x>n+t+s))&&!(e.y>=i&&(e.y<i+o||e.y>r+o+i))}getFrozenSheetViewRatio(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),s=this.getters.getColDimensions(e,t).start,i=this.getters.getRowDimensions(e,o).start;return{xRatio:s/(this.sheetViewWidth+this.gridOffsetX),yRatio:i/(this.sheetViewHeight+this.gridOffsetY)}}mapViewportsToRect(e,t){let o=1/0,s=1/0,i=0,n=0,r=!1;for(const a of this.getSubViewports(e)){const e=t(a);e&&(r=!0,o=Math.min(o,e.x),s=Math.min(s,e.y),i=Math.max(i,e.x+e.width),n=Math.max(n,e.y+e.height))}return r?{x:o,y:s,width:i-o,height:n-s}:{x:0,y:0,width:0,height:0}}}).add("clipboard",class extends wN{static layers=["Clipboard"];static getters=["getClipboardContent","getClipboardId","getClipboardTextContent","isCutOperation"];status="invisible";originSheetId;copiedData;_isCutOperation=!1;clipboardId=(new xa).uuidv4();allowDispatch(e){switch(e.type){case"CUT":const t=this.getters.getSelectedZones();return this.isCutAllowedOn(t);case"PASTE_FROM_OS_CLIPBOARD":{const t=this.convertTextToClipboardData(e.clipboardContent.text??""),o=e.pasteOption;return this.isPasteAllowed(e.target,t,{pasteOption:o,isCutOperation:!1})}case"PASTE":{if(!this.copiedData)return"EmptyClipboard";const t=e.pasteOption;return this.isPasteAllowed(e.target,this.copiedData,{pasteOption:t,isCutOperation:this._isCutOperation})}case"COPY_PASTE_CELLS_ABOVE":{const e=this.getters.getSelectedZones();if(e.length>1||0===e[0].top&&0===e[0].bottom)return"InvalidCopyPasteSelection";break}case"COPY_PASTE_CELLS_ON_LEFT":{const e=this.getters.getSelectedZones();if(e.length>1||0===e[0].left&&0===e[0].right)return"InvalidCopyPasteSelection";break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);return this.isPasteAllowed(o,s,{isCutOperation:!0})}case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);return this.isPasteAllowed(o,s,{isCutOperation:!0})}}return"Success"}handle(e){switch(e.type){case"COPY":case"CUT":const t=this.getters.getSelectedZones();this.status="visible",this.originSheetId=this.getters.getActiveSheetId(),this.copiedData=this.copy(t),this._isCutOperation="CUT"===e.type;break;case"PASTE_FROM_OS_CLIPBOARD":{this._isCutOperation=!1,this.copiedData=e.clipboardContent.data||this.convertTextToClipboardData(e.clipboardContent.text??"");const t=e.pasteOption;this.paste(e.target,this.copiedData,{pasteOption:t,selectTarget:!0,isCutOperation:!1}),this.status="invisible";break}case"PASTE":{const t=e.pasteOption;this.paste(e.target,this.copiedData,{pasteOption:t,selectTarget:!0,isCutOperation:this._isCutOperation}),this.status="invisible",this._isCutOperation&&(this.copiedData=void 0,this._isCutOperation=!1);break}case"COPY_PASTE_CELLS_ABOVE":{const e=this.getters.getSelectedZone(),t=e.top!==e.bottom,o={...e,bottom:t?e.top:e.top-1,top:t?e.top:e.top-1};this.originSheetId=this.getters.getActiveSheetId();const s=this.copy([o]);this.paste([e],s,{isCutOperation:!1,selectTarget:!0})}break;case"COPY_PASTE_CELLS_ON_LEFT":{const e=this.getters.getSelectedZone(),t=e.left!==e.right,o={...e,right:t?e.left:e.left-1,left:t?e.left:e.left-1};this.originSheetId=this.getters.getActiveSheetId();const s=this.copy([o]);this.paste([e],s,{isCutOperation:!1,selectTarget:!0})}break;case"CLEAN_CLIPBOARD_HIGHLIGHT":this.status="invisible";break;case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);if(!Go(t[0])){this.dispatch("CLEAR_CELLS",{target:[e.zone],sheetId:this.getters.getActiveSheetId()});break}const s=this.copy(t);this.paste(o,s,{isCutOperation:!0});break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);this.paste(o,s,{isCutOperation:!0});break}case"ADD_COLUMNS_ROWS":if(this.status="invisible",!this._isCutOperation||e.sheetId!==this.copiedData?.sheetId)return;this.isColRowDirtyingClipboard("before"===e.position?e.base:e.base+1,e.dimension)&&(this.copiedData=void 0);break;case"REMOVE_COLUMNS_ROWS":if(this.status="invisible",!this._isCutOperation||e.sheetId!==this.copiedData?.sheetId)return;for(let t of e.elements){if(this.isColRowDirtyingClipboard(t,e.dimension)){this.copiedData=void 0;break}}this.status="invisible";break;case"REPEAT_PASTE":this.paste(e.target,this.copiedData,{isCutOperation:!1,pasteOption:e.pasteOption,selectTarget:!0});break;case"DELETE_SHEET":if(!this._isCutOperation)return;this.originSheetId===e.sheetId&&(this.copiedData=void 0,this.status="invisible");break;default:di(e)&&(this.status="invisible")}}convertTextToClipboardData(e){const t=this.selectClipboardHandlers({figureId:!0}).concat(this.selectClipboardHandlers({}));let o={};for(const{handlerName:s,handler:i}of t){const t=i.convertTextToClipboardData(e);o[s]=t;const n=["sheetId","cells","zones","figureId"];for(const e of n)t&&e in t&&(o[e]=t[e])}return o}selectClipboardHandlers(e){const t="figureId"in e?Pc.figureHandlers:Pc.cellHandlers;return t.getKeys().map((e=>({handlerName:e,handler:new(t.get(e))(this.getters,this.dispatch)})))}isCutAllowedOn(e){const t=this.getClipboardData(e);for(const{handler:e}of this.selectClipboardHandlers(t)){const o=e.isCutAllowed(t);if("Success"!==o)return o}return"Success"}isPasteAllowed(e,t,o){for(const{handler:s}of this.selectClipboardHandlers(t)){const i=s.isPasteAllowed(this.getters.getActiveSheetId(),e,t,{...o});if("Success"!==i)return i}return"Success"}isColRowDirtyingClipboard(e,t){if(!this.copiedData||!this.copiedData.zones)return!1;const{zones:o}=this.copiedData;for(let s of o){if("COL"===t&&e<=s.right)return!0;if("ROW"===t&&e<=s.bottom)return!0}return!1}copy(e){let t={};const o=this.getClipboardData(e);for(const{handlerName:e,handler:s}of this.selectClipboardHandlers(o)){const i=s.copy(o);t[e]=i;const n=["sheetId","cells","zones","figureId"];for(const e of n)i&&e in i&&(t[e]=i[e])}return t}paste(e,t,o){if(!t)return;let s,i=[];const n=this.getters.getActiveSheetId();let r={sheetId:n,zones:e};const a=this.selectClipboardHandlers(t);for(const{handlerName:l,handler:c}of a){const a=t[l];if(!a)continue;const h=c.getPasteTarget(n,e,a,o);h.figureId&&(r.figureId=h.figureId);for(const e of h.zones)i.push(e),s=void 0!==s?Ko(s,e):e}if(void 0!==s&&this.addMissingDimensions(this.getters.getActiveSheetId(),s.right-s.left+1,s.bottom-s.top+1,s.left,s.top),a.forEach((({handlerName:e,handler:s})=>{const i=t[e];i&&s.paste(r,i,o)})),!o?.selectTarget)return;const l=e[0],c=l.left,h=l.top;this.selection.getBackToDefault(),this.selection.selectZone({cell:{col:c,row:h},zone:Ko(...i)},{scrollIntoView:!1})}addMissingDimensions(e,t,o,s,i){const n=o+i-this.getters.getNumberRows(e);n>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:this.getters.getNumberRows(e)-1,sheetId:e,quantity:n,position:"after"});const r=t+s-this.getters.getNumberCols(e);r>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:this.getters.getNumberCols(e)-1,sheetId:e,quantity:r,position:"after"})}getClipboardTextContent(){return this.getPlainTextContent()}getClipboardId(){return this.clipboardId}getClipboardContent(){return{[si.PlainText]:this.getPlainTextContent(),[si.Html]:this.getHTMLContent()}}getSheetData(){const e={version:_x,clipboardId:this.clipboardId};return this.copiedData&&"figureId"in this.copiedData?e:{...e,...this.copiedData}}getPlainTextContent(){return this.copiedData?.cells&&this.copiedData.cells.map((e=>e.map((e=>this.getters.shouldShowFormulas()&&e?.tokens?.length?e?.content||"":e.evaluatedCell?.formattedValue||"")).join("\t"))).join("\n")||"\t"}getHTMLContent(){let e="";const t=this.copiedData?.cells;if(t)if(1===t.length&&1===t[0].length)e=`${this.getters.getCellText(t[0][0].position)}`;else{if(!t[0][0])return"";{let o='<table border="1" style="border-collapse:collapse">';for(const e of t){o+="<tr>";for(const t of e){if(!t)continue;o+=`<td style="${ih(sh(this.getters.getCellComputedStyle(t.position)))}">`+Qw(this.getters.getCellText(t.position))+"</td>"}o+="</tr>"}o+="</table>",e=o}}else e="\t";return`<div data-osheet-clipboard='${Qw(JSON.stringify(this.getSheetData()))}'>${e}</div>`}isCutOperation(){return this._isCutOperation??!1}getDeleteCellsTargets(e,t){const o=this.getters.getActiveSheetId();let s;return s="COL"===t?{...e,left:e.right+1,right:this.getters.getNumberCols(o)-1}:{...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1},{cut:[s],paste:[e]}}getInsertCellsTargets(e,t){const o=this.getters.getActiveSheetId();let s,i;return"COL"===t?(s={...e,right:this.getters.getNumberCols(o)-1},i={...e,left:e.right+1,right:e.right+1}):(s={...e,bottom:this.getters.getNumberRows(o)-1},i={...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1}),{cut:[s],paste:[i]}}getClipboardData(e){const t=this.getters.getActiveSheetId(),o=this.getters.getSelectedFigureId();return o?{figureId:o,sheetId:t}:Ia(t,e)}drawLayer(e){if("visible"!==this.status||!this.copiedData)return;const{sheetId:t,zones:o}=this.copiedData;if(t!==this.getters.getActiveSheetId()||!o||!o.length)return;const{ctx:s,thinLineWidth:i}=e;s.setLineDash([8,5]),s.strokeStyle=p,s.lineWidth=3.3*i;for(const e of o){const{x:t,y:o,width:i,height:n}=this.getters.getVisibleRect(e);i>0&&n>0&&s.strokeRect(t,o,i,n)}}}),ok=(new n).add("evaluation",class extends PP{static getters=["evaluateFormula","evaluateFormulaResult","evaluateCompiledFormula","getCorrespondingFormulaCell","getRangeFormattedValues","getRangeValues","getRangeFormats","getEvaluatedCell","getEvaluatedCells","getEvaluatedCellsInZone","getEvaluatedCellsPositions","getSpreadZone","getArrayFormulaSpreadingOn","isEmpty"];shouldRebuildDependenciesGraph=!0;evaluator;positionsToUpdate=[];constructor(e){super(e),this.evaluator=new uN(e.custom,this.getters)}beforeHandle(e){(ii.has(e.type)||ri.has(e.type))&&(this.shouldRebuildDependenciesGraph=!0)}handle(e){switch(e.type){case"UPDATE_CELL":if(!("content"in e)&&!("format"in e)||this.shouldRebuildDependenciesGraph)return;const t={sheetId:e.sheetId,row:e.row,col:e.col};this.positionsToUpdate.push(t),"content"in e&&this.evaluator.updateDependencies(t);break;case"EVALUATE_CELLS":this.evaluator.evaluateAllCells()}}finalize(){this.shouldRebuildDependenciesGraph?(this.evaluator.buildDependencyGraph(),this.evaluator.evaluateAllCells(),this.shouldRebuildDependenciesGraph=!1):this.positionsToUpdate.length&&this.evaluator.evaluateCells(this.positionsToUpdate),this.positionsToUpdate=[]}evaluateFormula(e,t){const o=this.evaluateFormulaResult(e,t);return bi(o)?nn(o,(e=>e.value)):o.value}evaluateFormulaResult(e,t){return this.evaluator.evaluateFormulaResult(e,t)}evaluateCompiledFormula(e,t,o){return this.evaluator.evaluateCompiledFormula(e,t,o)}getRangeFormattedValues(e){return void 0===this.getters.tryGetSheet(e.sheetId)?[]:this.mapVisiblePositions(e,(e=>this.getters.getEvaluatedCell(e).formattedValue))}getRangeValues(e){return void 0===this.getters.tryGetSheet(e.sheetId)?[]:this.mapVisiblePositions(e,(e=>this.getters.getEvaluatedCell(e).value))}getRangeFormats(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getEvaluatedCellsInZone(t.id,e.zone).map((e=>e.format))}getEvaluatedCell(e){return this.evaluator.getEvaluatedCell(e)}getEvaluatedCells(e){return this.evaluator.getEvaluatedPositionsInSheet(e).map((e=>this.getEvaluatedCell(e)))}getEvaluatedCellsPositions(e){return this.evaluator.getEvaluatedPositionsInSheet(e)}getEvaluatedCellsInZone(e,t){return rs(t).map((({col:t,row:o})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:o})))}getSpreadZone(e,t={ignoreSpillError:!1}){return this.evaluator.getSpreadZone(e,t)}getArrayFormulaSpreadingOn(e){return this.evaluator.getArrayFormulaSpreadingOn(e)}isEmpty(e,t){return rs(t).map((({col:t,row:o})=>this.getEvaluatedCell({sheetId:e,col:t,row:o}))).every((e=>e.type===oi.empty))}mapVisiblePositions(e,t){const{sheetId:o,zone:s}=e;return rs(s).reduce(((e,s)=>{const{col:i,row:n}=s;return this.getters.isColHidden(o,i)||this.getters.isRowHidden(o,n)||e.push(t({sheetId:o,...s})),e}),[])}exportForExcel(e){for(const t of e.sheets)t.cellValues={},t.formulaSpillRanges={};for(const t of this.evaluator.getEvaluatedPositions()){const o=this.evaluator.getEvaluatedCell(t),s=Ao(t.col,t.row),i=o.value;let n,r=!1,a=!0;const l=e.sheets.find((e=>e.id===t.sheetId)),c=this.getCorrespondingFormulaCell(t);if(c){const h=this.getters.getCell(t);if(a=BS(c.compiledFormula.tokens),r=a&&h?.content===c.content,!a&&""!==i){n=(i??"").toString();const t=o.format;if(t){const o=bs(t,e.formats);l.formats[s]=o}}}const h=l.cells[s];let d;d=a&&r&&c instanceof TP?c.contentWithFixedReferences:a?h:n,l.cells[s]=d,l.cellValues[s]="error"!==o.type?i:void 0;const u=this.getSpreadZone(t);u&&(l.formulaSpillRanges[s]=this.getters.getRangeString(this.getters.getRangeFromZone(t.sheetId,u),t.sheetId))}}getCorrespondingFormulaCell(e){const t=this.getters.getCell(e);if(t&&t.isFormula)return t.compiledFormula.isBadExpression?void 0:t;if(t&&t.content)return;const o=this.getArrayFormulaSpreadingOn(e);if(void 0===o)return;const s=this.getters.getCell(o);return s?.isFormula?s:void 0}}).add("evaluation_chart",class extends PP{static getters=["getChartRuntime","getStyleOfSingleCellChart"];charts={};createRuntimeChart=YR(this.getters);handle(e){if(ii.has(e.type)||ai.has(e.type)||ni.has(e.type))for(const e in this.charts)this.charts[e]=void 0;switch(e.type){case"UPDATE_CHART":case"CREATE_CHART":case"DELETE_FIGURE":this.charts[e.id]=void 0;break;case"DELETE_SHEET":for(let e in this.charts)this.getters.isChartDefined(e)||(this.charts[e]=void 0)}}getChartRuntime(e){if(!this.charts[e]){const t=this.getters.getChart(e);if(!t)throw new Error(`No chart for the given id: ${e}`);this.charts[e]=this.createRuntimeChart(t)}return this.charts[e]}getStyleOfSingleCellChart(e,t){if(e)return{background:e,fontColor:bh(e)};if(!t)return{background:m,fontColor:bh(m)};const o=t.zone.left,s=t.zone.top,i=t.sheetId,n=this.getters.getCellComputedStyle({sheetId:i,col:o,row:s}),r=n.fillColor||m;return{background:r,fontColor:n.textColor||bh(r)}}exportForExcel(e){for(const t of e.sheets){t.images||(t.images=[]);const e=this.getters.getFigures(t.id),o=[];for(const s of e){if(!s||"chart"!==s.tag)continue;const e=s.id,i=this.getters.getChart(e)?.getDefinitionForExcel();if(i)o.push({...s,data:i});else{if(!this.getters.getChart(e))continue;const o=this.getters.getChartType(e),i=xy(this.getters.getChartRuntime(e),s,o);i&&t.images.push({...s,tag:"image",data:{mimetype:"image/png",path:i,size:{width:s.width,height:s.height}}})}}t.charts=o}}}).add("evaluation_cf",class extends PP{static getters=["getConditionalIcon","getCellConditionalFormatStyle","getConditionalDataBar"];isStale=!0;computedStyles={};computedIcons={};computedDataBars={};handle(e){(ii.has(e.type)||ai.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e))&&(this.isStale=!0)}finalize(){if(this.isStale){for(const e of this.getters.getSheetIds())this.computedStyles[e]=gt((()=>this.getComputedStyles(e))),this.computedIcons[e]=gt((()=>this.getComputedIcons(e))),this.computedDataBars[e]=gt((()=>this.getComputedDataBars(e)));this.isStale=!1}}getCellConditionalFormatStyle(e){const{sheetId:t,col:o,row:s}=e,i=this.computedStyles[t]();return i&&i[o]?.[s]}getConditionalIcon({sheetId:e,col:t,row:o}){const s=this.computedIcons[e]();return s&&s[t]?.[o]}getConditionalDataBar({sheetId:e,col:t,row:o}){const s=this.computedDataBars[e]();return s&&s[t]?.[o]}getComputedStyles(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())switch(o.rule.type){case"ColorScaleRule":for(let s of o.ranges)this.applyColorScale(e,s,o.rule,t);break;case"CellIsRule":const s=o.rule.values.map((e=>e.startsWith("=")?VS(e):void 0));for(let i of o.ranges){const n=this.getters.getRangeFromSheetXC(e,i).zone;for(let i=n.top;i<=n.bottom;i++)for(let r=n.left;r<=n.right;r++){const a=this.rulePredicate[o.rule.type],l={sheetId:e,col:r,row:i},c=o.rule.values.map(((t,o)=>{const a=s[o];return a?this.getters.getTranslatedCellFormula(e,r-n.left,i-n.top,a.tokens):t}));a&&a(l,{...o.rule,values:c})&&(t[r]||(t[r]=[]),t[r][i]=Object.assign(t[r]?.[i]||{},o.rule.style))}}}return t}getComputedIcons(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())if("IconSetRule"===o.rule.type)for(let s of o.ranges)this.applyIcon(e,s,o.rule,t);return t}getComputedDataBars(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())if("DataBarRule"===o.rule.type)for(let s of o.ranges)this.applyDataBar(e,s,o.rule,t);return t}parsePoint(e,t,o,s){const i=this.getters.getEvaluatedCellsInZone(e,this.getters.getRangeFromSheetXC(e,t).zone).filter((e=>e.type===oi.number)).map((e=>e.value));switch(o.type){case"value":return"max"===s?Ot(i):Ft(i);case"number":return Number(o.value);case"percentage":const t=Ft(i);return t+(Ot(i)-t)*Number(o.value)/100;case"percentile":return ti(i,Number(o.value)/100,!0);case"formula":const n=o.value&&this.getters.evaluateFormula(e,o.value);return"number"==typeof n?n:null;default:return null}}applyIcon(e,t,o,s){const i=this.parsePoint(e,t,o.lowerInflectionPoint),n=this.parsePoint(e,t,o.upperInflectionPoint);if(null===i||null===n||i>n)return;const r=this.getters.getRangeFromSheetXC(e,t).zone,a=[o.icons.upper,o.icons.middle,o.icons.lower];for(let t=r.top;t<=r.bottom;t++)for(let l=r.left;l<=r.right;l++){const r=this.getters.getEvaluatedCell({sheetId:e,col:l,row:t});if(r.type!==oi.number)continue;const c=this.computeIcon(r.value,n,o.upperInflectionPoint.operator,i,o.lowerInflectionPoint.operator,a);s[l]||(s[l]=[]),s[l][t]=c}}computeIcon(e,t,o,s,i,n){return"ge"===o&&e>=t||"gt"===o&&e>t?n[0]:"ge"===i&&e>=s||"gt"===i&&e>s?n[1]:n[2]}applyDataBar(e,t,o,s){const i=this.getters.getRangeFromSheetXC(e,o.rangeValues||t),n=Ot(this.getters.getEvaluatedCellsInZone(e,i.zone).filter((e=>e.type===oi.number)).map((e=>e.value)));if(n<=0)return;const r=o.color,a=this.getters.getRangeFromSheetXC(e,t).zone,l=i.zone;for(let t=a.top;t<=a.bottom;t++)for(let o=a.left;o<=a.right;o++){const i=o-a.left+l.left,c=t-a.top+l.top,h=this.getters.getEvaluatedCell({sheetId:e,col:i,row:c});!ts(i,c,l)||h.type!==oi.number||h.value<=0||(s[o]||(s[o]=[]),s[o][t]={color:Ut(r),percentage:100*h.value/n})}}applyColorScale(e,t,o,s){const i=this.parsePoint(e,t,o.minimum,"min"),n=o.midpoint?this.parsePoint(e,t,o.midpoint):null,r=this.parsePoint(e,t,o.maximum,"max");if(null===i||null===r||i>=r||n&&(i>=n||n>=r))return;const a=this.getters.getRangeFromSheetXC(e,t).zone,l=[{value:i,color:o.minimum.color}];o.midpoint&&n&&l.push({value:n,color:o.midpoint.color}),l.push({value:r,color:o.maximum.color});const c=po(l);for(let t=a.top;t<=a.bottom;t++)for(let o=a.left;o<=a.right;o++){const n=this.getters.getEvaluatedCell({sheetId:e,col:o,row:t});if(n.type===oi.number){const e=Ze(n.value,i,r);s[o]||(s[o]=[]),s[o][t]=s[o]?.[t]||{},s[o][t].fillColor=c(e)}}}rulePredicate={CellIsRule:(e,t)=>{const o=this.getters.getEvaluatedCell(e);if(o.type===oi.error)return!1;let[s,i]=t.values.map((t=>t.startsWith("=")?this.getters.evaluateFormula(e.sheetId,t)??"":Er(t,fi)));if(bi(s)||bi(i))return!1;const n=o.value??"";switch(s=s??"",i=i??"",t.operator){case"IsEmpty":return""===n.toString().trim();case"IsNotEmpty":return""!==n.toString().trim();case"BeginsWith":return""!==s&&n.toString().startsWith(s.toString());case"EndsWith":return""!==s&&n.toString().endsWith(s.toString());case"Between":return n>=s&&n<=i;case"NotBetween":return!(n>=s&&n<=i);case"ContainsText":return n.toString().indexOf(s.toString())>-1;case"NotContains":return!n||-1===n.toString().indexOf(s.toString());case"GreaterThan":return n>s;case"GreaterThanOrEqual":return n>=s;case"LessThan":return n<s;case"LessThanOrEqual":return n<=s;case"NotEqual":return""!==s&&n!==s;case"Equal":return""===s||n===s;default:console.warn(Uo("Not implemented operator %s for kind of conditional formatting: %s",t.operator,t.type))}return!1}}}).add("row_size",class extends PP{static getters=["getRowSize","getHeaderSize"];tallestCellInRow={};ctx=document.createElement("canvas").getContext("2d");handle(e){switch(e.type){case"START":for(const e of this.getters.getSheetIds())this.initializeSheet(e);break;case"CREATE_SHEET":this.initializeSheet(e.sheetId);break;case"DUPLICATE_SHEET":{const t=ze(this.tallestCellInRow[e.sheetId]);this.history.update("tallestCellInRow",e.sheetIdTo,t);break}case"DELETE_SHEET":const t={...this.tallestCellInRow};delete t[e.sheetId],this.history.update("tallestCellInRow",t);break;case"REMOVE_COLUMNS_ROWS":{if("COL"===e.dimension)return;const t=Rt(this.tallestCellInRow[e.sheetId],e.elements);this.history.update("tallestCellInRow",e.sheetId,t);break}case"ADD_COLUMNS_ROWS":{if("COL"===e.dimension)return;const t=mt(e.position,e.base),o=Array(e.quantity).fill(void 0),s=Tt(this.tallestCellInRow[e.sheetId],o,t);this.history.update("tallestCellInRow",e.sheetId,s);break}case"RESIZE_COLUMNS_ROWS":{const t=e.sheetId;if("ROW"===e.dimension)for(const o of e.elements){const e=this.getRowTallestCell(t,o);this.history.update("tallestCellInRow",t,o,e)}else for(const o of je(0,this.getters.getNumberRows(t)))for(const s of e.elements)this.updateRowSizeForCellChange(t,o,s)}break;case"UPDATE_CELL":this.updateRowSizeForCellChange(e.sheetId,e.row,e.col);break;case"ADD_MERGE":case"REMOVE_MERGE":for(const t of e.target)for(const o of rs(t))this.updateRowSizeForCellChange(e.sheetId,o.row,o.col)}}getRowSize(e,t){return Math.round(this.getters.getUserRowSize(e,t)??this.tallestCellInRow[e][t]?.size??se)}getHeaderSize(e,t,o){return this.getters.isHeaderHidden(e,t,o)?0:"ROW"===t?this.getRowSize(e,o):this.getters.getColSize(e,o)}updateRowSizeForCellChange(e,t,o){const s=this.tallestCellInRow[e]?.[t];if(s?.cell.col===o){const o=this.getRowTallestCell(e,t);this.history.update("tallestCellInRow",e,t,o)}const i=this.getCellHeight({sheetId:e,col:o,row:t});if(!(i<=se)&&(!s&&i>se||s&&i>s.size)){const s={cell:{sheetId:e,col:o,row:t},size:i};this.history.update("tallestCellInRow",e,t,s)}}initializeSheet(e){const t=[];for(let o=0;o<this.getters.getNumberRows(e);o++){const s=this.getRowTallestCell(e,o);t.push(s)}this.history.update("tallestCellInRow",e,t)}getCellHeight(e){if(this.isInMultiRowMerge(e))return se;const t=this.getters.getCell(e),o=this.getters.getColSize(e.sheetId,e.col);return function(e,t,o){return t&&(t.isFormula||t.content)?aa(e,t.isFormula?"":t.content,t.style,o):se}(this.ctx,t,o)}isInMultiRowMerge(e){const t=this.getters.getMerge(e);return!!t&&t.bottom!==t.top}getRowTallestCell(e,t){if(void 0!==this.getters.getUserRowSize(e,t))return;const o=this.getters.getRowCells(e,t);let s,i=0;for(let e=0;e<o.length;e++){const t=this.getters.getCellById(o[e]);if(!t)continue;const n=this.getters.getCellPosition(t.id),r=this.getCellHeight(n);r>i&&r>se&&(i=r,s={cell:n,size:r})}return s&&s.size>se?s:void 0}}).add("data_validation_ui",class extends PP{static getters=["getDataValidationInvalidCriterionValueMessage","getInvalidDataValidationMessage","getValidationResultForCellValue","isCellValidCheckbox","isDataValidationInvalid"];validationResults={};handle(e){if(ii.has(e.type)||"EVALUATE_CELLS"===e.type||"UPDATE_CELL"===e.type&&("content"in e||"format"in e))this.validationResults={};else switch(e.type){case"ADD_DATA_VALIDATION_RULE":case"REMOVE_DATA_VALIDATION_RULE":delete this.validationResults[e.sheetId]}}isDataValidationInvalid(e){return!this.getValidationResultForCell(e).isValid}getInvalidDataValidationMessage(e){const t=this.getValidationResultForCell(e);return t.isValid?void 0:t.error}getDataValidationInvalidCriterionValueMessage(e,t){const o=ZO.get(e);return t.startsWith("=")?"onlyLiterals"===o.allowedValues?Uo("The value must not be a formula"):this.isValidFormula(t)?void 0:jx.CriterionError.validFormula:"onlyFormulas"===o.allowedValues?Uo("The value must be a formula"):o.isCriterionValueValid(t)?void 0:o.criterionValueErrorString}isCellValidCheckbox(e){if(!this.getters.isMainCellPosition(e))return!1;const t=this.getters.getValidationRuleForCell(e);return!(!t||"isBoolean"!==t.criterion.type)&&this.getValidationResultForCell(e).isValid}getValidationResultForCellValue(e,t){const o=this.getters.getValidationRuleForCell(t);if(!o)return vN;const s=this.getRuleErrorForCellValue(e,t,o);return s?{error:s,rule:o,isValid:!1}:vN}isValidFormula(e){return!VS(e).isBadExpression}getValidationResultForCell(e){const{col:t,row:o,sheetId:s}=e;return this.validationResults[s]||(this.validationResults[s]=this.computeSheetValidationResults(s)),this.validationResults[s][t]?.[o]?.()||vN}computeSheetValidationResults(e){const t={},o=this.getters.getDataValidationRules(e).map((e=>e.ranges));for(const e of Jr(o.flat())){const{col:o,row:s}=e;t[o]||(t[o]=[]),t[o][s]=gt((()=>{const t=this.getters.getEvaluatedCell(e);return t.type===oi.empty?vN:this.getValidationResultForCellValue(t.value,e)}))}return t}getRuleErrorForCellValue(e,t,o){const{sheetId:s}=t,i=o.criterion,n=ZO.get(i.type),r=this.getCellOffsetInRule(t,o),a=this.getEvaluatedCriterionValues(s,r,i),l={...i,values:a};if(!n.isValueValid(e,l,this.getters,s))return n.getErrorString(l,this.getters,s)}getCellOffsetInRule(e,t){const o=t.ranges.find((t=>ts(e.col,e.row,t.zone)));if(!o)throw new Error("The cell is not in any range of the rule");return{col:e.col-o.zone.left,row:e.row-o.zone.top}}getEvaluatedCriterionValues(e,t,o){return o.values.map((o=>{if(!o.startsWith("="))return o;const s=VS(o),i=this.getters.getTranslatedCellFormula(e,t.col,t.row,s.tokens),n=this.getters.evaluateFormula(e,i);return n&&!bi(n)?n.toString():""}))}}).add("dynamic_tables",class extends PP{static getters=["canCreateDynamicTableOnZones","doesZonesContainFilter","getFilter","getFilters","getTable","getTables","getTablesOverlappingZones","getFilterId","getFilterHeaders","isFilterHeader"];tables={};handle(e){if(ii.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e)||"EVALUATE_CELLS"===e.type)this.tables={};else switch(e.type){case"CREATE_TABLE":case"REMOVE_TABLE":case"UPDATE_TABLE":case"DELETE_CONTENT":this.tables={}}}finalize(){for(const e of this.getters.getSheetIds())this.tables[e]||(this.tables[e]=this.computeTables(e))}computeTables(e){const t=[],o=this.getters.getCoreTables(e);for(const e of o)"dynamic"!==e.type&&t.push(e);const s=[...t];for(const i of o){if("dynamic"!==i.type)continue;const o=this.coreTableToTable(e,i);let n=o.range.zone;for(const e of s)es(n,e.range.zone)&&(n={...n,right:e.range.zone.left-1});t.push({...o,range:this.getters.getRangeFromZone(e,n)})}return t}getFilters(e){return this.getTables(e).filter((e=>e.config.hasFilters)).map((e=>e.filters)).flat()}getTables(e){return this.tables[e]||[]}getFilter(e){const t=this.getTable(e);if(t&&t.config.hasFilters)return t.filters.find((t=>t.col===e.col))}getFilterId(e){return this.getFilter(e)?.id}getTable({sheetId:e,col:t,row:o}){return this.getTables(e).find((e=>ts(t,o,e.range.zone)))}getTablesOverlappingZones(e,t){return this.getTables(e).filter((e=>t.some((t=>es(e.range.zone,t)))))}doesZonesContainFilter(e,t){return this.getTablesOverlappingZones(e,t).some((e=>e.config.hasFilters))}getFilterHeaders(e){const t=[];for(const o of this.getTables(e)){if(!o.config.hasFilters)continue;const s=o.range.zone,i=s.top;for(let o=s.left;o<=s.right;o++)t.push({sheetId:e,col:o,row:i})}return t}isFilterHeader({sheetId:e,col:t,row:o}){return this.getFilterHeaders(e).some((e=>e.col===t&&e.row===o))}canCreateDynamicTableOnZones(e,t){if(!ps(t))return!1;const o=Ko(...t),s={col:o.left,row:o.top,sheetId:e},i=this.getters.getArrayFormulaSpreadingOn(s);if(!i)return!1;if(ft(i,s)&&1===gs(o))return!0;return ft(o,this.getters.getSpreadZone(i))}coreTableToTable(e,t){if("dynamic"!==t.type)return t;const o=t.range.zone,s={sheetId:e,col:o.left,row:o.top},i=this.getters.getSpreadZone(s)??t.range.zone,n=this.getters.getRangeFromZone(e,i),r=this.getDynamicTableFilters(e,t,i);return{id:t.id,range:n,filters:r,config:t.config}}getDynamicTableFilters(e,t,o){const s=[],{top:i,bottom:n,left:r,right:a}=o;for(let o=r;o<=a;o++){const a=o-r,l={left:o,right:o,top:i,bottom:n},c=iM(this.getDynamicTableFilterId(t.id,a),this.getters.getRangeFromZone(e,l),t.config,this.getters.getRangeFromZone);s.push(c)}return s}getDynamicTableFilterId(e,t){return e+"_"+t}exportForExcel(e){for(const t of e.sheets)for(const e of t.tables){const o=$o(e.range),s={sheetId:t.id,col:o.left,row:o.top},i=this.getters.getCoreTable(s),n=this.getTable(s);"dynamic"===i?.type&&n&&(e.range=qo(n.range.zone))}}}).add("custom_colors",class extends PP{customColors={};shouldUpdateColors=!0;static getters=["getCustomColors"];constructor(e){super(e),this.tryToAddColors(e.customColors??[])}handle(e){switch(e.type){case"START":for(const e of this.getters.getSheetIds())for(const t of this.getters.getChartIds(e))this.tryToAddColors(this.getChartColors(t));break;case"UPDATE_CHART":case"CREATE_CHART":this.tryToAddColors(this.getChartColors(e.id));break;case"UPDATE_CELL":case"ADD_CONDITIONAL_FORMAT":case"SET_BORDER":case"SET_ZONE_BORDERS":case"SET_FORMATTING":case"CREATE_TABLE":case"UPDATE_TABLE":this.history.update("shouldUpdateColors",!0)}}finalize(){this.shouldUpdateColors&&(this.history.update("shouldUpdateColors",!1),this.tryToAddColors(this.computeCustomColors()))}getCustomColors(){return function(e){const t=[{leadColor:Wt(255,0,0),colors:[]},{leadColor:Wt(255,128,0),colors:[]},{leadColor:Wt(128,128,0),colors:[]},{leadColor:Wt(128,255,0),colors:[]},{leadColor:Wt(0,255,0),colors:[]},{leadColor:Wt(0,255,128),colors:[]},{leadColor:Wt(0,255,255),colors:[]},{leadColor:Wt(0,127,255),colors:[]},{leadColor:Wt(0,0,255),colors:[]},{leadColor:Wt(127,0,255),colors:[]},{leadColor:Wt(128,0,128),colors:[]},{leadColor:Wt(255,0,128),colors:[]}];for(const o of e.map(jt)){let e=500,s=0;t.forEach(((t,i)=>{const n=(r=o,a=t.leadColor,Math.sqrt(Math.pow(r.r-a.r,2)+Math.pow(r.g-a.g,2)+Math.pow(r.b-a.b,2)));var r,a;e>n&&(e=n,s=i)})),t[s].colors.push(o)}return t.map((e=>e.colors.sort(((e,t)=>Xt(e).s-Xt(t).s)))).flat().map(Zt)}(Object.keys(this.customColors))}computeCustomColors(){let e=[];for(const t of this.getters.getSheetIds())e=e.concat(this.getColorsFromCells(t),this.getFormattingColors(t),this.getTableColors(t));return[...new Set([...e])]}getColorsFromCells(e){const t=Object.values(this.getters.getCells(e)),o=new Set;for(const e of t)e.style?.textColor&&o.add(e.style.textColor),e.style?.fillColor&&o.add(e.style.fillColor);for(const t of this.getters.getBordersColors(e))o.add(t);return[...o]}getFormattingColors(e){const t=this.getters.getConditionalFormats(e),o=[];for(const e of t){const t=e.rule;"CellIsRule"===t.type?(o.push(t.style.textColor),o.push(t.style.fillColor)):"ColorScaleRule"===t.type&&(o.push(Ut(t.minimum.color)),o.push(t.midpoint?Ut(t.midpoint.color):void 0),o.push(Ut(t.maximum.color)))}return o.filter(lt)}getChartColors(e){const t=this.getters.getChart(e);if(void 0===t)return[];return[...JSON.stringify(t.getDefinition()).matchAll(fN)].map((e=>e[1]))}getTableColors(e){return this.getters.getTables(e).flatMap((e=>{const t=e.config,o=this.getters.getTableStyle(t.styleId);return[this.getTableStyleElementColors(o.wholeTable),t.numberOfHeaders>0?this.getTableStyleElementColors(o.headerRow):[],t.totalRow?this.getTableStyleElementColors(o.totalRow):[],t.bandedColumns?this.getTableStyleElementColors(o.firstColumnStripe):[],t.bandedColumns?this.getTableStyleElementColors(o.secondColumnStripe):[],t.bandedRows?this.getTableStyleElementColors(o.firstRowStripe):[],t.bandedRows?this.getTableStyleElementColors(o.secondRowStripe):[],t.firstColumn?this.getTableStyleElementColors(o.firstColumn):[],t.lastColumn?this.getTableStyleElementColors(o.lastColumn):[]].flat()}))}getTableStyleElementColors(e){return e?[e.style?.fillColor,e.style?.textColor,e.border?.bottom?.color,e.border?.top?.color,e.border?.left?.color,e.border?.right?.color,e.border?.horizontal?.color,e.border?.vertical?.color].filter(lt):[]}tryToAddColors(e){for(const t of e){if(!$t(t))continue;const e=zt(t);t&&!Q.includes(e)&&this.history.update("customColors",e,!0)}}}).add("pivot_ui",class extends PP{static getters=["getPivot","getFirstPivotFunction","getPivotIdFromPosition","getPivotCellFromPosition","generateNewCalculatedMeasureName","isPivotUnused","isSpillPivotFormula"];pivots={};unusedPivots;custom;constructor(e){super(e),this.custom=e.custom}beforeHandle(e){if("START"===e.type)for(const e of this.getters.getPivotIds())this.setupPivot(e)}handle(e){if(ii.has(e.type))for(const e of this.getters.getPivotIds())WF.get(this.getters.getPivotCoreDefinition(e).type).externalData||this.setupPivot(e,{recreate:!0});switch(e.type){case"REFRESH_PIVOT":this.refreshPivot(e.id);break;case"ADD_PIVOT":this.setupPivot(e.pivotId);break;case"DUPLICATE_PIVOT":this.setupPivot(e.newPivotId);break;case"UPDATE_PIVOT":this.setupPivot(e.pivotId,{recreate:!0});break;case"DELETE_SHEET":case"UPDATE_CELL":this.unusedPivots=void 0;break;case"UNDO":case"REDO":{this.unusedPivots=void 0;const t=e.commands.filter(CN);for(const e of t){const t=e.pivotId;this.getters.isExistingPivot(t)&&this.setupPivot(t,{recreate:!0})}break}case"UPDATE_LOCALE":!function(){for(const e in $F)$F[e].set.clear(),$F[e].values={}}()}}getPivotIdFromPosition(e){const t=this.getters.getCorrespondingFormulaCell(e);if(t&&t.isFormula){const o=this.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);if(o){const e=o.args[0]?.toString();return e&&this.getters.getPivotId(e)}}}isSpillPivotFormula(e){const t=this.getters.getCorrespondingFormulaCell(e);if(t&&t.isFormula){const o=this.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);return"PIVOT"===o?.functionName}return!1}getFirstPivotFunction(e,t){const o=jS(t);if(!o)return;const{functionName:s,args:i}=o;return{functionName:s,args:i.map((t=>{if("EMPTY"==t.type)return;if("STRING"===t.type||"BOOLEAN"===t.type||"NUMBER"===t.type)return t.value;const o=rv(t);return this.getters.evaluateFormula(e,o)}))}}getPivotCellFromPosition(e){const t=this.getters.getCorrespondingFormulaCell(e);if(!t||!t.isFormula||0===YS(t.compiledFormula.tokens))return PF;const o=this.getters.getCellPosition(t.id),s=this.getters.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);if(!s)return PF;const{functionName:i,args:n}=s,r=n[0];if(!r)return PF;const a=this.getters.getPivotId(r.toString());if(!a)return PF;const l=this.getPivot(a);if(!l.isValid())return PF;if("PIVOT"===i&&!t.content.replaceAll(" ","").toUpperCase().startsWith("=PIVOT"))return PF;if("PIVOT"===i){const t=vl(n[2]),s=void 0===t||Zi(t),i=vl(n[3]),r=void 0===i||Zi(i),a=l.getTableStructure().getPivotCells(s,r),c=e.col-o.col,h=e.row-o.row;return a[c][h]}try{if("PIVOT.HEADER"===i&&"measure"===n.at(-2)){return{type:"MEASURE_HEADER",domain:l.parseArgsToPivotDomain(n.slice(1,-2).map((e=>({value:e})))),measure:n.at(-1)?.toString()||""}}if("PIVOT.HEADER"===i){return{type:"HEADER",domain:l.parseArgsToPivotDomain(n.slice(1).map((e=>({value:e}))))}}const[e,...t]=n.slice(1);return{type:"VALUE",domain:l.parseArgsToPivotDomain(t.map((e=>({value:e})))),measure:e?.toString()||""}}catch(e){return PF}}generateNewCalculatedMeasureName(e){const t=e.map((e=>e.fieldName));return kt(Uo("Calculated measure 1"),t,{compute:(e,t)=>Uo("Calculated measure %s",t)})}getPivot(e){if(!this.getters.isExistingPivot(e))throw new Error(`pivot ${e} not found`);return this.pivots[e]}isPivotUnused(e){return this._getUnusedPivots().includes(e)}refreshPivot(e){this.getters.getPivot(e).init({reload:!0})}setupPivot(e,{recreate:t}={recreate:!1}){const o=this.getters.getPivotCoreDefinition(e);if(e in this.pivots)t&&this.pivots[e].onDefinitionChange(o);else{const t=SN(WF.get(o.type).ui);this.pivots[e]=new t(this.custom,{definition:o,getters:this.getters})}}_getUnusedPivots(){if(void 0!==this.unusedPivots)return this.unusedPivots;const e=new Set(this.getters.getPivotIds());for(const t of this.getters.getSheetIds())for(const o in this.getters.getCells(t)){const t=this.getters.getCellPosition(o),s=this.getPivotIdFromPosition(t);if(s&&(e.delete(s),!e.size))return this.unusedPivots=[],[]}return this.unusedPivots=[...e],this.unusedPivots}}),sk=new n;sk.add("link",{condition:(e,t)=>!!t.getEvaluatedCell(e).link,execute:(e,t)=>Rn(t.model.getters.getEvaluatedCell(e).link,t),sequence:5});class ik{fileStore;constructor(e){this.fileStore=e}async requestImage(){const e=await this.getImageFromUser(),t=await this.fileStore.upload(e);return{path:t,size:await this.getImageOriginalSize(t),mimetype:e.type}}getImageFromUser(){return new Promise(((e,t)=>{const o=document.createElement("input");o.setAttribute("type","file"),o.setAttribute("accept","image/*"),o.addEventListener("change",(async()=>{null===o.files||1!=o.files.length?t():e(o.files[0])})),o.click()}))}getImageOriginalSize(e){return new Promise(((t,o)=>{const s=new Image;s.src=e,s.addEventListener("load",(()=>{const e={width:s.width,height:s.height};t(e)})),s.addEventListener("error",o)}))}}const nk=[{transform:"scale(0)"},{transform:"scale(0.8)",offset:.33},{opacity:"0",transform:"scale(1)",offset:1}];th`
1858
+ `;class IP extends t.Component{static template="o_spreadsheet.PivotHTMLRenderer";static components={Checkbox:fR};static props={pivotId:String,onCellClicked:Function};pivot=this.env.model.getters.getPivot(this.props.pivotId);data={columns:[],rows:[],values:[]};state=t.useState({showMissingValuesOnly:!1});setup(){const e=this.pivot.getTableStructure(),t=this.env.model.getters.getPivotFormulaId(this.props.pivotId);this.data={columns:this._buildColHeaders(t,e),rows:this._buildRowHeaders(t,e),values:this._buildValues(t,e)}}get tracker(){return this.env.model.getters.getPivotPresenceTracker(this.props.pivotId)}getTableData(){if(!this.state.showMissingValuesOnly)return this.data;const e=this.getColumnsIndexes(),t=this.getRowsIndexes();return{columns:this.buildColumnsMissing(e),rows:this.buildRowsMissing(t),values:this.buildValuesMissing(e,t)}}addRecursiveRow(e){const t=this.pivot.getTableStructure().rows,o=[...t[e].values];if(o.length<=1)return[e];o.pop();const s=t.findIndex((e=>JSON.stringify(e.values)===JSON.stringify(o)));return[e].concat(this.addRecursiveRow(s))}buildColumnsMissing(e){const t=[];for(const e of this.data.columns){const o=[];for(const t in e)for(let s=0;s<e[t].span;s++)o.push(parseInt(t,10));t.push(o)}for(let o=t[t.length-1].length;o>=0;o--)if(!e.includes(o))for(const e of t)e.splice(o,1);const o=[];for(const e in t){const s=[];let i,n=1;for(let o=0;o<t[e].length;o++)i!==t[e][o]?(void 0!==i&&s.push(Object.assign({},this.data.columns[e][i],{span:n})),i=t[e][o],n=1):n++;void 0!==i&&s.push(Object.assign({},this.data.columns[e][i],{span:n})),o.push(s)}return o}buildRowsMissing(e){return e.map((e=>this.data.rows[e]))}buildValuesMissing(e,t){const o=e.map((()=>[]));for(const s of t)for(const t in e)o[t].push(this.data.values[e[t]][s]);return o}getColumnsIndexes(){const e=new Set;for(let t=0;t<this.data.columns.length;t++){const o=[];for(let e=0;e<this.data.columns[t].length;e++)for(let s=0;s<this.data.columns[t][e].span;s++)o.push(this.data.columns[t][e]);for(let t=0;t<o.length;t++)o[t].isMissing&&e.add(t)}for(let t=0;t<this.data.columns[this.data.columns.length-1].length;t++){this.data.values[t].find((e=>e.isMissing))&&e.add(t)}return Array.from(e).sort(((e,t)=>e-t))}getRowsIndexes(){const e=new Set;for(let t=0;t<this.data.rows.length;t++){this.data.rows[t].isMissing&&e.add(t);for(const o of this.data.values)o[t].isMissing&&this.addRecursiveRow(t).forEach((t=>e.add(t)))}return Array.from(e).sort(((e,t)=>e-t))}_buildColHeaders(e,t){const o=[];for(const s of t.columns){const t=[];for(const o of s){const s=[];for(let e=0;e<o.fields.length;e++)s.push({value:o.fields[e]},{value:o.values[e]});const i=this.pivot.parseArgsToPivotDomain(s),n=this.env.model.getters.getLocale();if("measure"===i.at(-1)?.field){const{value:s,format:r}=this.pivot.getPivotMeasureValue(Gi(i.at(-1).value),i);t.push({formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(s,{format:r,locale:n}),span:o.width,isMissing:!this.tracker?.isHeaderPresent(i)})}else{const{value:s,format:r}=this.pivot.getPivotHeaderValueAndFormat(i);t.push({formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(s,{format:r,locale:n}),span:o.width,isMissing:!this.tracker?.isHeaderPresent(i)})}}o.push(t)}const s=o[o.length-1];return o[o.length-1]=s.map((e=>(e.isMissing||(e.style="color: #756f6f;"),e))),o}_buildRowHeaders(e,t){const o=[];for(const s of t.rows){const t=[];for(let e=0;e<s.fields.length;e++)t.push({value:s.fields[e]},{value:s.values[e]});const i=this.pivot.parseArgsToPivotDomain(t),{value:n,format:r}=this.pivot.getPivotHeaderValueAndFormat(i),a=this.env.model.getters.getLocale(),l={formula:`=PIVOT.HEADER(${bc(e,i).join(",")})`,value:Kn(n,{format:r,locale:a}),isMissing:!this.tracker?.isHeaderPresent(i)};s.indent>1&&(l.style=`padding-left: ${s.indent-10}px`),o.push(l)}return o}_buildValues(e,t){const o=[];for(const s of t.columns.at(-1)||[]){const i=[],n=Gi(s.values[s.values.length-1]);for(const o of t.rows){const t=[];for(let e=0;e<o.fields.length;e++)t.push({value:o.fields[e]},{value:o.values[e]});for(let e=0;e<s.fields.length-1;e++)t.push({value:s.fields[e]},{value:s.values[e]});const r=this.pivot.parseArgsToPivotDomain(t),{value:a,format:l}=this.pivot.getPivotCellValueAndFormat(n,r),c=this.env.model.getters.getLocale();i.push({formula:`=PIVOT.VALUE(${bc(e,r,n).join(",")})`,value:Kn(a,{format:l,locale:c}),isMissing:!this.tracker?.isValuePresent(n,r)})}o.push(i)}return o}}class EP{static getters=[];history;constructor(e){this.history=Object.assign(Object.create(e),{update:e.addChange.bind(e,this),selectCell:()=>{}})}exportForExcel(e){}allowDispatch(e){return"Success"}beforeHandle(e){}handle(e){}finalize(){}batchValidations(...e){return t=>e.map((e=>e.call(this,t))).flat()}chainValidations(...e){return t=>{for(const o of e){let e=o.call(this,t);Array.isArray(e)||(e=[e]);const s=e.filter((e=>"Success"!==e));if(s.length)return s}return"Success"}}checkValidations(e,...t){return this.batchValidations(...t)(e)}}class RP extends EP{getters;dispatch;canDispatch;constructor({getters:e,stateObserver:t,range:o,dispatch:s,canDispatch:i}){super(t),o.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.dispatch=s,this.canDispatch=i}import(e){}export(e){}adaptRanges(e,t){}garbageCollectExternalResources(){}}class TP{id;format;style;sheetId;getRangeString;isFormula=!0;compiledFormula;constructor(e,t,o,s,i,n,r){this.id=e,this.format=o,this.style=s,this.sheetId=n,this.getRangeString=r;let a=0;const l=t.tokens.map((e=>{if("REFERENCE"===e.type){const e=a++;return new AP(i,e,this.sheetId,this.getRangeString)}return e}));this.compiledFormula={...t,dependencies:i,tokens:l}}get content(){return ut(this.compiledFormula.tokens.map((e=>e.value)))}get contentWithFixedReferences(){let e=0;return ut(this.compiledFormula.tokens.map((t=>{if("REFERENCE"===t.type){const t=e++;return this.getRangeString(this.compiledFormula.dependencies[t],this.sheetId,{useBoundedReference:!0})}return t.value})))}}class AP{ranges;rangeIndex;sheetId;getRangeString;type="REFERENCE";constructor(e,t,o,s){this.ranges=e,this.rangeIndex=t,this.sheetId=o,this.getRangeString=s}get value(){const e=this.ranges[this.rangeIndex];return this.getRangeString(e,this.sheetId)}}function _P(e){return""===e?NaN:Number(e)}function DP(e){return Object.entries(e).map((([e,t])=>t?OP(parseInt(e,10),t):void 0)).filter(lt).map((e=>Ao(e.left,e.top)+":"+Ao(e.right,e.bottom)))}function OP(e,t){return{...t.zone,id:e}}class FP{getters;providers=[];constructor(e){this.getters=e}static getters=["adaptFormulaStringDependencies","copyFormulaStringForSheet","extendRange","getRangeString","getRangeFromSheetXC","createAdaptedRanges","getRangeDataFromXc","getRangeDataFromZone","getRangeFromRangeData","getRangeFromZone","getRangesUnion","recomputeRanges","isRangeValid","removeRangesSheetPrefix"];allowDispatch(e){return"MOVE_RANGES"===e.type?1===e.target.length?"Success":"InvalidZones":"Success"}beforeHandle(e){}handle(e){switch(e.type){case"REMOVE_COLUMNS_ROWS":{let t="COL"===e.dimension?"left":"top",o="COL"===e.dimension?"right":"bottom",s="COL"===e.dimension?"columns":"rows";const i=[...e.elements];i.sort(((e,t)=>t-e));const n=Ye(i);this.executeOnAllRanges((i=>{if(i.sheetId!==e.sheetId)return{changeType:"NONE"};let r=i,a="NONE";for(let e of n){const n=Ft(e),l=Ot(e);if(i.zone[t]<=n&&n<=i.zone[o]){const e=Math.min(i.zone[o],l)-n+1;a="RESIZE",r=this.createAdaptedRange(r,s,a,-e)}else if(i.zone[t]>=n&&i.zone[o]<=l)a="REMOVE",r=i.clone({...this.getInvalidRange()});else if(i.zone[t]<=l&&i.zone[o]>=l){const e=l-i.zone[t]+1;a="RESIZE",r=this.createAdaptedRange(r,s,a,-e),r=this.createAdaptedRange(r,s,"MOVE",-(i.zone[t]-n))}else n<i.zone[t]&&(a="MOVE",r=this.createAdaptedRange(r,s,a,-(l-n+1)))}return"NONE"!==a?{changeType:a,range:r}:{changeType:"NONE"}}),e.sheetId);break}case"ADD_COLUMNS_ROWS":{let t="COL"===e.dimension?"left":"top",o="COL"===e.dimension?"right":"bottom",s="COL"===e.dimension?"columns":"rows";this.executeOnAllRanges((i=>{if(i.sheetId!==e.sheetId)return{changeType:"NONE"};if("after"===e.position){if(i.zone[t]<=e.base&&e.base<i.zone[o])return{changeType:"RESIZE",range:this.createAdaptedRange(i,s,"RESIZE",e.quantity)};if(e.base<i.zone[t])return{changeType:"MOVE",range:this.createAdaptedRange(i,s,"MOVE",e.quantity)}}else{if(i.zone[t]<e.base&&e.base<=i.zone[o])return{changeType:"RESIZE",range:this.createAdaptedRange(i,s,"RESIZE",e.quantity)};if(e.base<=i.zone[t])return{changeType:"MOVE",range:this.createAdaptedRange(i,s,"MOVE",e.quantity)}}return{changeType:"NONE"}}),e.sheetId);break}case"DELETE_SHEET":this.executeOnAllRanges((t=>{if(t.sheetId!==e.sheetId)return{changeType:"NONE"};const o=this.getters.getSheetName(e.sheetId);return{changeType:"REMOVE",range:t=t.clone({...this.getInvalidRange(),invalidSheetName:o})}}),e.sheetId);break;case"RENAME_SHEET":this.executeOnAllRanges((t=>{if(t.sheetId===e.sheetId)return{changeType:"CHANGE",range:t};if(na(t.invalidSheetName,e.name)){const o=void 0,s=e.sheetId;return{changeType:"CHANGE",range:t.clone({sheetId:s,invalidSheetName:o})}}return{changeType:"NONE"}}));break;case"MOVE_RANGES":{const t=e.target[0];this.executeOnAllRanges((o=>{if(o.sheetId!==e.sheetId||!os(o.zone,t))return{changeType:"NONE"};const s=e.targetSheetId,i=e.col-t.left,n=e.row-t.top,r=this.createAdaptedRange(o,"both","MOVE",[i,n]),a=e.sheetId!==s||r.prefixSheet;return{changeType:"MOVE",range:r.clone({sheetId:s,prefixSheet:a})}}));break}}}finalize(){}verifyRangeRemoved(e){return t=>{const o=e(t);return"NONE"===o.changeType||Go(o.range.zone)?o:{range:o.range,changeType:"REMOVE"}}}createAdaptedRange(e,t,o,s){const i=ls(e.unboundedZone,t,o,s);return e.clone({zone:i})}executeOnAllRanges(e,t){const o=this.verifyRangeRemoved(e);for(const e of this.providers)e(o,t)}addRangeProvider(e){this.providers.push(e)}createAdaptedRanges(e,t,o,s){const i=e.map((e=>jr.fromRange(e,this.getters)));return i.map((e=>{if(!Go(e.zone))return e;const i=e.prefixSheet?e.sheetId:s,n={...e.unboundedZone,left:e.isFullRow&&!e.unboundedZone.hasHeader?e.unboundedZone.left:e.unboundedZone.left+(e.parts[0].colFixed?0:t),right:e.isFullRow?e.unboundedZone.right:e.unboundedZone.right+((e.parts[1]||e.parts[0]).colFixed?0:t),top:e.isFullCol&&!e.unboundedZone.hasHeader?e.unboundedZone.top:e.unboundedZone.top+(e.parts[0].rowFixed?0:o),bottom:e.isFullCol?e.unboundedZone.bottom:e.unboundedZone.bottom+((e.parts[1]||e.parts[0]).rowFixed?0:o)};return e.clone({sheetId:i,zone:n}).orderZone()}))}removeRangesSheetPrefix(e,t){return t.map((t=>{const o=jr.fromRange(t,this.getters);return o.prefixSheet&&o.sheetId===e?o.clone({prefixSheet:!1}):o}))}extendRange(e,t,o){const s=jr.fromRange(e,this.getters),i="COL"===t?s.zone.right+o:s.zone.right,n="ROW"===t?s.zone.bottom+o:s.zone.bottom,r={left:s.zone.left,top:s.zone.top,right:s.isFullRow?void 0:i,bottom:s.isFullCol?void 0:n};return new jr({...s,zone:r},this.getters.getSheetSize).orderZone()}getRangeFromSheetXC(e,t){if(!Br.test(t)||!this.getters.tryGetSheet(e))return new jr({sheetId:"",zone:{left:-1,top:-1,right:-1,bottom:-1},parts:[],invalidXc:t,prefixSheet:!1},this.getters.getSheetSize);let o,s=t,i=!1;t.includes("!")&&(({xc:s,sheetName:o}=qr(t)),o&&(i=!0));const n=zo(s),r=jr.getRangeParts(s,n),a=o&&!this.getters.getSheetIdByName(o)?o:void 0,l=this.getters.getSheetIdByName(o)||e;return new jr({prefixSheet:i,zone:n,sheetId:l,invalidSheetName:a,parts:r},this.getters.getSheetSize).orderZone()}getRangeString(e,t,o={useBoundedReference:!1,useFixedReference:!1}){if(!e)return wi.InvalidReference;if(e.invalidXc)return e.invalidXc;if(!this.getters.tryGetSheet(e.sheetId))return wi.InvalidReference;if(e.zone.bottom-e.zone.top<0||e.zone.right-e.zone.left<0)return wi.InvalidReference;if(e.zone.left<0||e.zone.top<0)return wi.InvalidReference;const s=jr.fromRange(e,this.getters);let i=s.sheetId!==t||s.invalidSheetName||s.prefixSheet,n="";if(i&&(n=s.invalidSheetName?s.invalidSheetName:We(this.getters.getSheetName(s.sheetId))),i&&!n)return wi.InvalidReference;let r=this.getRangePartString(s,0,o);return s.parts&&2===s.parts.length&&(s.zone.top!==s.zone.bottom||s.zone.left!==s.zone.right||s.parts[0].rowFixed||s.parts[0].colFixed||s.parts[1].rowFixed||s.parts[1].colFixed)&&(r+=":",r+=this.getRangePartString(s,1,o)),`${i?n+"!":""}${r}`}getRangeDataFromXc(e,t){return this.getters.getRangeFromSheetXC(e,t).rangeData}getRangeDataFromZone(e,t){return{_sheetId:e,_zone:t=this.getters.getUnboundedZone(e,t)}}getRangeFromZone(e,t){return new jr({sheetId:e,zone:t,parts:[{colFixed:!1,rowFixed:!1},{colFixed:!1,rowFixed:!1}],prefixSheet:!1},this.getters.getSheetSize)}recomputeRanges(e,t){const o=e.map((e=>jr.fromRange(e,this.getters).unboundedZone)),s=t.map((e=>jr.fromRange(e,this.getters).unboundedZone));return _o(o,s).map((t=>this.getRangeFromZone(e[0].sheetId,t)))}getRangeFromRangeData(e){const t={prefixSheet:!1,zone:e._zone,sheetId:e._sheetId,invalidSheetName:void 0,parts:[{colFixed:!1,rowFixed:!1},{colFixed:!1,rowFixed:!1}]};return new jr(t,this.getters.getSheetSize)}isRangeValid(e){if(!e)return!1;const{xc:t,sheetName:o}=qr(e);return null!==t.match(Br)&&(!o||void 0!==this.getters.getSheetIdByName(o))}getRangesUnion(e){const t=e.map((e=>jr.fromRange(e,this.getters).unboundedZone)),o=function(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:e.some((e=>void 0===e.bottom))?void 0:Math.max(...e.map((e=>e.bottom))),right:e.some((e=>void 0===e.right))?void 0:Math.max(...e.map((e=>e.right)))}}(...t);return this.getRangeFromZone(e[0].sheetId,o)}adaptFormulaStringDependencies(e,t,o){if(!t.startsWith("="))return t;const s=VS(t),i=s.dependencies.map((t=>{const s=this.getters.getRangeFromSheetXC(e,t),i=o(s);return"NONE"===i.changeType?s:i.range}));return this.getters.getFormulaString(e,s.tokens,i)}copyFormulaStringForSheet(e,t,o,s){if(!o.startsWith("="))return o;const i=VS(o),n=i.dependencies.map((o=>{const i=this.getters.getRangeFromSheetXC(e,o);return"keepSameReference"===s?i:Yr(e,t,i)}));return this.getters.getFormulaString(t,i.tokens,n)}getRangePartString(e,t,o={useBoundedReference:!1,useFixedReference:!1}){const s=e.parts[t]?.colFixed||o.useFixedReference?"$":"",i=vo(0===t?e.zone.left:e.zone.right),n=e.parts[t]?.rowFixed||o.useFixedReference?"$":"",r=String(0===t?e.zone.top+1:e.zone.bottom+1);let a="";return a=e.isFullCol&&!o.useBoundedReference?0===t&&e.unboundedZone.hasHeader?s+i+n+r:s+i:e.isFullRow&&!o.useBoundedReference?0===t&&e.unboundedZone.hasHeader?s+i+n+r:n+r:s+i+n+r,a}getInvalidRange(){return{parts:[],prefixSheet:!1,zone:{left:-1,top:-1,right:-1,bottom:-1},sheetId:"",invalidXc:wi.InvalidReference}}}function MP(e,t){if(!e)return;const o=t(e);switch(o.changeType){case"NONE":return e;case"REMOVE":return;default:return o.range}}class PP extends EP{getters;constructor({getters:e,stateObserver:t}){super(t),this.getters=e}}const NP=new n;NP.add("pivots",(e=>{for(const t of e.getPivotIds()){const o=e.getPivot(t);WF.get(o.type).onIterationEndEvaluation(o)}}));const kP=vS.mapping;function VP(e,t,o){return new LP(e,t,o).getParameters()}class LP{getters;computeCell;evalContext;rangeCache={};constructor(e,t,o){this.getters=t,this.computeCell=o,this.evalContext=Object.assign(Object.create(kP),e,{getters:this.getters,locale:this.getters.getLocale()})}getParameters(){return{referenceDenormalizer:this.refFn.bind(this),ensureRange:this.range.bind(this),evalContext:this.evalContext}}refFn(e,t){const o=this.getRangeError(e);if(o)return o;if(t){return{value:Zr(this.getters.getSheetName(e.sheetId),qo(e.zone))}}const s={sheetId:e.sheetId,col:e.zone.left,row:e.zone.top};return this.computeCell(s)}range(e){const t=this.getRangeError(e);if(t)return[[t]];const o=e.sheetId,s=e.zone,i=Jo(s,this.getters.getSheetZone(o));if(!i)return[[]];const{top:n,left:r,bottom:a,right:l}=s,c=`${o}-${n}-${r}-${a}-${l}`;if(c in this.rangeCache)return this.rangeCache[c];const h=i.bottom-i.top+1,d=i.right-i.left+1,u=new Array(d);for(let e=i.left;e<=i.right;e++){const t=e-i.left;u[t]=new Array(h);for(let s=i.top;s<=i.bottom;s++){const n=s-i.top;u[t][n]=this.computeCell({sheetId:o,col:e,row:s})}}return this.rangeCache[c]=u,u}getRangeError(e){return Go(e.zone)?e.invalidSheetName?new Ii(Uo("Invalid sheet name: %s",e.invalidSheetName)):void 0:new Ti}}function HP(e,t,o,s,i){UP(e,t,o||0,s||e.length-1,i||zP)}function UP(e,t,o,s,i){for(;s>o;){if(s-o>600){var n=s-o+1,r=t-o+1,a=Math.log(n),l=.5*Math.exp(2*a/3),c=.5*Math.sqrt(a*l*(n-l)/n)*(r-n/2<0?-1:1);UP(e,t,Math.max(o,Math.floor(t-r*l/n+c)),Math.min(s,Math.floor(t+(n-r)*l/n+c)),i)}var h=e[t],d=o,u=s;for(BP(e,o,t),i(e[s],h)>0&&BP(e,o,s);d<u;){for(BP(e,d,u),d++,u--;i(e[d],h)<0;)d++;for(;i(e[u],h)>0;)u--}0===i(e[o],h)?BP(e,o,u):BP(e,++u,s),u<=t&&(o=u+1),t<=u&&(s=u-1)}}function BP(e,t,o){var s=e[t];e[t]=e[o],e[o]=s}function zP(e,t){return e<t?-1:e>t?1:0}class $P{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()}all(){return this._all(this.data,[])}search(e){let t=this.data;const o=[];if(!eN(e,t))return o;const s=this.toBBox,i=[];for(;t;){for(let n=0;n<t.children.length;n++){const r=t.children[n],a=t.leaf?s(r):r;eN(e,a)&&(t.leaf?o.push(r):QP(e,a)?this._all(r,o):i.push(r))}t=i.pop()}return o}collides(e){let t=this.data;if(!eN(e,t))return!1;const o=[];for(;t;){for(let s=0;s<t.children.length;s++){const i=t.children[s],n=t.leaf?this.toBBox(i):i;if(eN(e,n)){if(t.leaf||QP(e,n))return!0;o.push(i)}}t=o.pop()}return!1}load(e){if(!e||!e.length)return this;if(e.length<this._minEntries){for(let t=0;t<e.length;t++)this.insert(e[t]);return this}let t=this._build(e.slice(),0,e.length-1,0);if(this.data.children.length)if(this.data.height===t.height)this._splitRoot(this.data,t);else{if(this.data.height<t.height){const e=this.data;this.data=t,t=e}this._insert(t,this.data.height-t.height-1,!0)}else this.data=t;return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=tN([]),this}remove(e,t){if(!e)return this;let o=this.data;const s=this.toBBox(e),i=[],n=[];let r,a,l;for(;o||i.length;){if(o||(o=i.pop(),a=i[i.length-1],r=n.pop(),l=!0),o.leaf){const s=GP(e,o.children,t);if(-1!==s)return o.children.splice(s,1),i.push(o),this._condense(i),this}l||o.leaf||!QP(o,s)?a?(r++,o=a.children[r],l=!1):o=null:(i.push(o),n.push(r),r=0,a=o,o=o.children[0])}return this}toBBox(e){return e}compareMinX(e,t){return e.minX-t.minX}compareMinY(e,t){return e.minY-t.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,t){const o=[];for(;e;)e.leaf?t.push(...e.children):o.push(...e.children),e=o.pop();return t}_build(e,t,o,s){const i=o-t+1;let n,r=this._maxEntries;if(i<=r)return n=tN(e.slice(t,o+1)),WP(n,this.toBBox),n;s||(s=Math.ceil(Math.log(i)/Math.log(r)),r=Math.ceil(i/Math.pow(r,s-1))),n=tN([]),n.leaf=!1,n.height=s;const a=Math.ceil(i/r),l=a*Math.ceil(Math.sqrt(r));oN(e,t,o,l,this.compareMinX);for(let i=t;i<=o;i+=l){const t=Math.min(i+l-1,o);oN(e,i,t,a,this.compareMinY);for(let o=i;o<=t;o+=a){const i=Math.min(o+a-1,t);n.children.push(this._build(e,o,i,s-1))}}return WP(n,this.toBBox),n}_chooseSubtree(e,t,o,s){for(;s.push(t),!t.leaf&&s.length-1!==o;){let o,s=1/0,r=1/0;for(let a=0;a<t.children.length;a++){const l=t.children[a],c=XP(l),h=(i=e,n=l,(Math.max(n.maxX,i.maxX)-Math.min(n.minX,i.minX))*(Math.max(n.maxY,i.maxY)-Math.min(n.minY,i.minY))-c);h<r?(r=h,s=c<s?c:s,o=l):h===r&&c<s&&(s=c,o=l)}t=o||t.children[0]}var i,n;return t}_insert(e,t,o){const s=o?e:this.toBBox(e),i=[],n=this._chooseSubtree(s,this.data,t,i);for(n.children.push(e),ZP(n,s);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(s,i,t)}_split(e,t){const o=e[t],s=o.children.length,i=this._minEntries;this._chooseSplitAxis(o,i,s);const n=this._chooseSplitIndex(o,i,s),r=tN(o.children.splice(n,o.children.length-n));r.height=o.height,r.leaf=o.leaf,WP(o,this.toBBox),WP(r,this.toBBox),t?e[t-1].children.push(r):this._splitRoot(o,r)}_splitRoot(e,t){this.data=tN([e,t]),this.data.height=e.height+1,this.data.leaf=!1,WP(this.data,this.toBBox)}_chooseSplitIndex(e,t,o){let s,i=1/0,n=1/0;for(let r=t;r<=o-t;r++){const t=qP(e,0,r,this.toBBox),a=qP(e,r,o,this.toBBox),l=JP(t,a),c=XP(t)+XP(a);l<i?(i=l,s=r,n=c<n?c:n):l===i&&c<n&&(n=c,s=r)}return s||o-t}_chooseSplitAxis(e,t,o){const s=e.leaf?this.compareMinX:jP,i=e.leaf?this.compareMinY:YP;this._allDistMargin(e,t,o,s)<this._allDistMargin(e,t,o,i)&&e.children.sort(s)}_allDistMargin(e,t,o,s){e.children.sort(s);const i=this.toBBox,n=qP(e,0,t,i),r=qP(e,o-t,o,i);let a=KP(n)+KP(r);for(let s=t;s<o-t;s++){const t=e.children[s];ZP(n,e.leaf?i(t):t),a+=KP(n)}for(let s=o-t-1;s>=t;s--){const t=e.children[s];ZP(r,e.leaf?i(t):t),a+=KP(r)}return a}_adjustParentBBoxes(e,t,o){for(let s=o;s>=0;s--)ZP(t[s],e)}_condense(e){for(let t,o=e.length-1;o>=0;o--)0===e[o].children.length?o>0?(t=e[o-1].children,t.splice(t.indexOf(e[o]),1)):this.clear():WP(e[o],this.toBBox)}}function GP(e,t,o){if(!o)return t.indexOf(e);for(let s=0;s<t.length;s++)if(o(e,t[s]))return s;return-1}function WP(e,t){qP(e,0,e.children.length,t,e)}function qP(e,t,o,s,i){i||(i=tN(null)),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(let n=t;n<o;n++){const t=e.children[n];ZP(i,e.leaf?s(t):t)}return i}function ZP(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function jP(e,t){return e.minX-t.minX}function YP(e,t){return e.minY-t.minY}function XP(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function KP(e){return e.maxX-e.minX+(e.maxY-e.minY)}function JP(e,t){const o=Math.max(e.minX,t.minX),s=Math.max(e.minY,t.minY),i=Math.min(e.maxX,t.maxX),n=Math.min(e.maxY,t.maxY);return Math.max(0,i-o)*Math.max(0,n-s)}function QP(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function eN(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function tN(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function oN(e,t,o,s,i){const n=[t,o];for(;n.length;){if((o=n.pop())-(t=n.pop())<=s)continue;const r=t+Math.ceil((o-t)/s/2)*s;HP(e,r,t,o,i),n.push(t,r,r,o)}}class sN{rTrees={};constructor(e=[]){const t={};for(const o of e){const e=o.boundingBox.sheetId;t[e]||(t[e]=[]),t[e].push(o)}for(const e in t)this.rTrees[e]=new iN,this.rTrees[e].load(t[e])}insert(e){const t=e.boundingBox.sheetId;this.rTrees[t]||(this.rTrees[t]=new iN),this.rTrees[t].insert(e)}search({zone:e,sheetId:t}){return this.rTrees[t]?this.rTrees[t].search({minX:e.left,minY:e.top,maxX:e.right,maxY:e.bottom}):[]}remove(e){const t=e.boundingBox.sheetId;this.rTrees[t]&&this.rTrees[t].remove(e,this.rtreeItemComparer)}rtreeItemComparer(e,t){return e.data==t.data&&e.boundingBox.sheetId===t.boundingBox.sheetId&&e.boundingBox?.zone.left===t.boundingBox.zone.left&&e.boundingBox?.zone.top===t.boundingBox.zone.top&&e.boundingBox?.zone.right===t.boundingBox.zone.right&&e.boundingBox?.zone.bottom===t.boundingBox.zone.bottom}}class iN extends $P{toBBox({boundingBox:e}){const t=e.zone;return{minX:t.left,minY:t.top,maxX:t.right,maxY:t.bottom}}compareMinX(e,t){return e.boundingBox.zone.left-t.boundingBox.zone.left}compareMinY(e,t){return e.boundingBox.zone.top-t.boundingBox.zone.top}}class nN{createEmptyPositionSet;dependencies=new $_;rTree;constructor(e,t=[]){this.createEmptyPositionSet=e,this.rTree=new sN(t)}removeAllDependencies(e){const t=this.dependencies.get(e);if(t){for(const e of t)this.rTree.remove(e);this.dependencies.delete(e)}}addDependencies(e,t){const o=t.map((({sheetId:t,zone:o})=>({data:e,boundingBox:{zone:o,sheetId:t}})));for(const e of o)this.rTree.insert(e);const s=this.dependencies.get(e);s?s.push(...o):this.dependencies.set(e,o)}getCellsDependingOn(e){const t=this.createEmptyPositionSet(),o=Array.from(e).reverse();for(;o.length>0;){const e=o.pop(),s=e.zone,i=e.sheetId;for(let e=s.left;e<=s.right;e++)for(let o=s.top;o<=s.bottom;o++)t.add({sheetId:i,col:e,row:o});const n=this.rTree.search(e).map((e=>e.data)),r={};for(const e of n)t.has(e)||(r[e.sheetId]||(r[e.sheetId]=[]),r[e.sheetId].push(hs(e)));for(const e in r){const t=_o(r[e],[]);o.push(...t.map((t=>({sheetId:e,zone:t}))))}}for(const o of e){const e=o.zone,s=o.sheetId;for(let o=e.left;o<=e.right;o++)for(let i=e.top;i<=e.bottom;i++)t.delete({sheetId:s,col:o,row:i})}return t}}class rN extends Uint32Array{columnOffset=0;cols=0;rows=0;static create(e,t){const o=function(e){if(0===e)return-1/0;if(e<0)return NaN;return 32-Math.clz32(--e)}(t),s=new this((e<<o>>5)+1);return s.columnOffset=o,s.cols=t,s.rows=e,s}getValue(e){const[t,o]=this.getCoordinates(e);return this[t]>>o&1}setValue(e,t){const[o,s]=this.getCoordinates(e),i=0===(this[o]>>s&1)&&1===t;return this[o]=this[o]&~(1<<s)|t<<s,i}isEmpty(){return!this.some((e=>0!==e))}fillAllPositions(){this.fill(-1>>>0)}clear(){this.fill(0)}getCoordinates(e){const{row:t,col:o}=e,s=(t<<this.columnOffset)+o,i=s>>5;return[i,s-(i<<5)]}}class aN{sheets={};insertions=[];maxSize=0;constructor(e){for(const t in e){const o=e[t].cols,s=e[t].rows;this.maxSize+=o*s,this.sheets[t]=rN.create(s,o)}}add(e){this.sheets[e.sheetId].setValue(e,1)&&this.insertions.push(e)}addMany(e){for(const t of e)this.add(t)}delete(e){this.sheets[e.sheetId].setValue(e,0)}deleteMany(e){for(const t of e)this.delete(t)}has(e){return 1===this.sheets[e.sheetId].getValue(e)}clear(){const e=[...this];this.insertions=[];for(const e in this.sheets)this.sheets[e].clear();return e}isEmpty(){if(0===this.insertions.length)return!0;for(const e in this.sheets)if(!this.sheets[e].isEmpty())return!1;return!0}fillAllPositions(){this.insertions=new Array(this.maxSize);let e=0;for(const t in this.sheets){const o=this.sheets[t];o.fillAllPositions();for(let s=0;s<o.rows;s++)for(let i=0;i<o.cols;i++)this.insertions[e++]={sheetId:t,row:s,col:i}}}*[Symbol.iterator](){for(const e of this.insertions)1===this.sheets[e.sheetId].getValue(e)&&(yield e)}}class lN{resultsToArrayFormulas=new sN;arrayFormulasToResults=new $_;searchFormulaPositionsSpreadingOn(e,t){return this.resultsToArrayFormulas.search({sheetId:e,zone:t}).map((e=>e.data))||cN}getArrayResultZone(e){return this.arrayFormulasToResults.get(e)}removeNode(e){this.resultsToArrayFormulas.remove({boundingBox:{sheetId:e.sheetId,zone:hs(e)},data:e}),this.arrayFormulasToResults.delete(e)}addRelation({arrayFormulaPosition:e,resultZone:t}){this.resultsToArrayFormulas.insert({boundingBox:{sheetId:e.sheetId,zone:t},data:e}),this.arrayFormulasToResults.set(e,t)}isArrayFormula(e){return this.arrayFormulasToResults.has(e)}}const cN=[],hN=Object.freeze(Rr(new Ri)),dN=Object.freeze(Rr({value:null}));class uN{context;getters;compilationParams;evaluatedCells=new $_;formulaDependencies=gt(new nN(this.createEmptyPositionSet.bind(this)));blockedArrayFormulas=new aN({});spreadingRelations=new lN;constructor(e,t){this.context=e,this.getters=t,this.compilationParams=VP(this.context,this.getters,this.computeAndSave.bind(this))}getEvaluatedCell(e){return this.evaluatedCells.get(e)||dN}getSpreadZone(e,t={ignoreSpillError:!1}){const o=this.spreadingRelations.getArrayResultZone(e);if(!o)return;const s=this.evaluatedCells.get(e);return s?.type!==oi.error||t.ignoreSpillError&&s?.value===wi.SpilledBlocked?Ko(hs(e),o):hs(e)}getEvaluatedPositions(){return this.evaluatedCells.keys()}getEvaluatedPositionsInSheet(e){return this.evaluatedCells.keysForSheet(e)}getArrayFormulaSpreadingOn(e){if(this.getEvaluatedCell(e).type===oi.empty)return;const t=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e.sheetId,hs(e));return Array.from(t).find((e=>!this.blockedArrayFormulas.has(e)))}updateDependencies(e){this.formulaDependencies().removeAllDependencies(e);const t=this.getDirectDependencies(e);this.formulaDependencies().addDependencies(e,t)}addDependencies(e,t){this.formulaDependencies().addDependencies(e,t);for(const e of t){const t=e.sheetId,{left:o,bottom:s,right:i,top:n}=e.zone;for(let e=o;e<=i;e++)for(let o=n;o<=s;o++)this.computeAndSave({sheetId:t,col:e,row:o})}}updateCompilationParameters(){this.compilationParams=VP(this.context,this.getters,this.computeAndSave.bind(this)),this.compilationParams.evalContext.updateDependencies=this.updateDependencies.bind(this),this.compilationParams.evalContext.addDependencies=this.addDependencies.bind(this),this.compilationParams.evalContext.lookupCaches={forwardSearch:new Map,reverseSearch:new Map}}createEmptyPositionSet(){const e={};for(const t of this.getters.getSheetIds())e[t]={rows:this.getters.getNumberRows(t),cols:this.getters.getNumberCols(t)};return new aN(e)}evaluateCells(e){const t=performance.now(),o=this.createEmptyPositionSet();o.addMany(e);const s=this.getArrayFormulasImpactedByChangesOf(e);o.addMany(this.getCellsDependingOn(e)),o.addMany(s),o.addMany(this.getCellsDependingOn(s)),this.evaluate(o),console.debug("evaluate Cells",performance.now()-t,"ms")}getArrayFormulasImpactedByChangesOf(e){const t=this.createEmptyPositionSet();for(const o of e){const e=this.getters.getCell(o)?.content,s=this.getArrayFormulaSpreadingOn(o);void 0!==s&&t.add(s),e||t.add(o)}const o=ns(t);for(const e in o)for(const s of o[e])t.addMany(this.getArrayFormulasBlockedBy(e,s));return t}buildDependencyGraph(){this.blockedArrayFormulas=this.createEmptyPositionSet(),this.spreadingRelations=new lN,this.formulaDependencies=gt((()=>{const e=[...this.getAllCells()].flatMap((e=>this.getDirectDependencies(e).filter((e=>!e.invalidSheetName&&!e.invalidXc)).map((t=>({data:e,boundingBox:{zone:t.zone,sheetId:t.sheetId}})))));return new nN(this.createEmptyPositionSet.bind(this),e)}))}evaluateAllCells(){const e=performance.now();this.evaluatedCells=new $_,this.evaluate(this.getAllCells()),console.debug("evaluate all cells",performance.now()-e,"ms")}evaluateFormulaResult(e,t){const o=VS(t),s=o.dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t)));return this.updateCompilationParameters(),this.evaluateCompiledFormula(e,{...o,dependencies:s})}evaluateCompiledFormula(e,t,o){try{const s=mN(t,this.compilationParams,e,this.buildSafeGetSymbolValue(o),this.compilationParams.evalContext.__originCellPosition);return bi(s)?nn(s,pN):pN(s)}catch(e){return bS(e,"")}}getAllCells(){const e=this.createEmptyPositionSet();return e.fillAllPositions(),e}getArrayFormulasBlockedBy(e,t){const o=this.createEmptyPositionSet(),s=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e,t);o.addMany(s);const i=[...s].filter((e=>!this.blockedArrayFormulas.has(e)));return i.length&&o.deleteMany(i),o.addMany(this.getCellsDependingOn(o)),o}nextPositionsToUpdate=new aN({});cellsBeingComputed=new Set;symbolsBeingComputed=new Set;evaluate(e){this.cellsBeingComputed=new Set,this.nextPositionsToUpdate=e;let t=0;for(;!this.nextPositionsToUpdate.isEmpty()&&t++<30;){this.updateCompilationParameters();const e=this.nextPositionsToUpdate.clear();for(let t=0;t<e.length;++t)this.evaluatedCells.delete(e[t]);for(let t=0;t<e.length;++t){const o=e[t];if(this.nextPositionsToUpdate.has(o))continue;const s=this.computeCell(o);s!==dN&&this.evaluatedCells.set(o,s)}NP.getAll().forEach((e=>e(this.getters)))}t>=30&&console.warn("Maximum iteration reached while evaluating cells")}computeCell(e){const t=this.evaluatedCells.get(e);if(t)return t;this.blockedArrayFormulas.has(e)||this.invalidateSpreading(e),this.spreadingRelations.isArrayFormula(e)&&this.spreadingRelations.removeNode(e);const o=this.getters.getCell(e);if(void 0===o)return dN;const s=o.id,i={format:o.format,locale:this.getters.getLocale()};try{return this.cellsBeingComputed.has(s)?hN:(this.cellsBeingComputed.add(s),o.isFormula?this.computeFormulaCell(e,o):Ir(o,i))}catch(e){return e.value=e?.value||wi.GenericError,e.message=e?.message||yS,Rr(e)}finally{this.cellsBeingComputed.delete(s)}}computeAndSave(e){const t=this.computeCell(e);return this.evaluatedCells.has(e)||this.evaluatedCells.set(e,t),t}computeFormulaCell(e,t){const o=mN(t.compiledFormula,this.compilationParams,e.sheetId,this.buildSafeGetSymbolValue(),e);if(!bi(o)){const s=Rr(pN(o),this.getters.getLocale(),t);return s.type===oi.error&&(s.errorOriginPosition=o.errorOriginPosition??e),s}this.assertSheetHasEnoughSpaceToSpreadFormulaResult(e,o);const s=o.length,i=o[0].length,n={top:e.row,bottom:e.row+i-1,left:e.col,right:e.col+s-1};return this.spreadingRelations.addRelation({resultZone:n,arrayFormulaPosition:e}),this.assertNoMergedCellsInSpreadZone(e,o),gN(s,i,this.checkCollision(e)),gN(s,i,this.spreadValues(e,o)),this.invalidatePositionsDependingOnSpread(e.sheetId,n),Rr(pN(o[0][0]),this.getters.getLocale(),t)}invalidatePositionsDependingOnSpread(e,t){const o=this.formulaDependencies().getCellsDependingOn(function(e){const{top:t,left:o,bottom:s,right:i}=e;if(1===gs(e))return[];const n={top:t+1,bottom:s,left:o,right:o};if(i===o)return[n];const r={top:t,bottom:s,left:o+1,right:i};return t===s?[r]:[n,r]}(t).map((t=>({sheetId:e,zone:t}))));o.delete({sheetId:e,col:t.left,row:t.top}),this.nextPositionsToUpdate.addMany(o)}assertSheetHasEnoughSpaceToSpreadFormulaResult({sheetId:e,col:t,row:o},s){const i=this.getters.getNumberCols(e),n=this.getters.getNumberRows(e),r=t+s.length<=i,a=o+s[0].length<=n;if(!r||!a){if(r)throw new Di(Uo("Result couldn't be automatically expanded. Please insert more rows."));if(a)throw new Di(Uo("Result couldn't be automatically expanded. Please insert more columns."));throw new Di(Uo("Result couldn't be automatically expanded. Please insert more columns and rows."))}}assertNoMergedCellsInSpreadZone({sheetId:e,col:t,row:o},s){if(0!==this.getters.getMergesInZone(e,{top:o,bottom:o+s[0].length-1,left:t,right:t+s.length-1}).length)throw new Di(Uo("Merged cells found in the spill zone. Please unmerge cells before using array formulas."))}checkCollision(e){const{sheetId:t,col:o,row:s}=e;return(i,n)=>{const r={sheetId:t,col:i+o,row:n+s},a=this.getters.getCell(r);if(a?.content||this.getters.getEvaluatedCell(r).type!==oi.empty)throw this.blockedArrayFormulas.add(e),new Di(Uo("Array result was not expanded because it would overwrite data in %s.",Ao(r.col,r.row)));this.blockedArrayFormulas.delete(e)}}spreadValues({sheetId:e,col:t,row:o},s){return(i,n)=>{const r={sheetId:e,col:i+t,row:n+o},a=this.getters.getCell(r),l=Rr(pN(s[i][n]),this.getters.getLocale(),a);l.type===oi.error&&(l.errorOriginPosition=s[i][n].errorOriginPosition??r),this.evaluatedCells.set(r,l)}}invalidateSpreading(e){const t=this.spreadingRelations.getArrayResultZone(e);if(!t)return;for(let o=t.left;o<=t.right;o++)for(let s=t.top;s<=t.bottom;s++){const t={sheetId:e.sheetId,col:o,row:s},i=this.getters.getCell(t)?.content;i||this.evaluatedCells.delete(t)}const o=e.sheetId;this.invalidatePositionsDependingOnSpread(o,t),this.nextPositionsToUpdate.addMany(this.getArrayFormulasBlockedBy(o,t))}buildSafeGetSymbolValue(e){return t=>{if(this.symbolsBeingComputed.has(t))return hN;this.symbolsBeingComputed.add(t);try{const o=e?.(t);return o||new Ei(Uo("Invalid formula"))}finally{this.symbolsBeingComputed.delete(t)}}}getDirectDependencies(e){const t=this.getters.getCell(e);return t?.isFormula?t.compiledFormula.dependencies:[]}getCellsDependingOn(e){const t=[],o=ns(e);for(const e in o)t.push(...o[e].map((t=>({sheetId:e,zone:t}))));return this.formulaDependencies().getCellsDependingOn(t)}}function gN(e,t,o){for(let s=0;s<e;++s)for(let e=0;e<t;++e)0===s&&0===e||o(s,e)}function pN(e){return null===e.value||void 0===e.value?{...e,value:0}:e}function mN(e,t,o,s,i){return t.evalContext.__originCellPosition=i,t.evalContext.__originSheetId=o,e.execute(e.dependencies,t.referenceDenormalizer,t.ensureRange,s,t.evalContext)}const fN=/"(#[0-9a-fA-F]{6})"/g;const vN={isValid:!0};const bN="0.00%";function SN(e){return class extends e{getters;cache={};rankAsc={};rankDesc={};runningTotal={};runningTotalInPercent={};constructor(e,t){super(e,t),this.getters=t.getters}init(e){this.cache={},this.rankAsc={},this.rankDesc={},this.runningTotal={},this.runningTotalInPercent={},super.init(e)}getPivotCellValueAndFormat(e,t){return this.getMeasureDisplayValue(e,t)}_getPivotCellValueAndFormat(e,t){const o=`${e}-${t.map((e=>e.field+"="+e.value)).join(",")}`;if(this.cache[o])return this.cache[o];const s=this.getMeasure(e),i=s.computedBy?this.computeMeasure(s,t):super.getPivotCellValueAndFormat(e,t);return s.format?this.cache[o]={...i,format:s.format}:this.cache[o]=i,this.cache[o]}computeMeasure(e,t){if(!e.computedBy)return{value:0};const{columns:o,rows:s}=super.definition;if(o.length+s.length!==t.length){const o=this.getValuesToAggregate(e,t),s=uc[e.aggregator];if(!s)return{value:0};try{return s([o],this.getters.getLocale())}catch(t){return bS(t,e.aggregator.toUpperCase())}}const i=this.getters.getMeasureCompiledFormula(e),n=this.getters.evaluateCompiledFormula(e.computedBy.sheetId,i,(e=>{const{columns:o,rows:s}=this.definition;if(o.find((t=>t.nameWithGranularity===e))){const{colDomain:o}=kl(this,t),s=o.findIndex((t=>t.field===e));return this.getPivotHeaderValueAndFormat(o.slice(0,s+1))}if(s.find((t=>t.nameWithGranularity===e))){const{rowDomain:o}=kl(this,t),s=o.findIndex((t=>t.field===e));return this.getPivotHeaderValueAndFormat(o.slice(0,s+1))}return this.getPivotCellValueAndFormat(e,t)}));return bi(n)?n[0][0]:n}getValuesToAggregate(e,t){const{rowDomain:o,colDomain:s}=kl(this,t),i=super.getTableStructure(),n=[];if(0===s.length&&o.length<this.definition.rows.length&&this.definition.rows.length&&this.definition.columns.length){const t=this.treeToLeafDomains(i.getColTree()),s=this.getSubTreeMatchingDomain(i.getRowTree(),o),r=this.treeToLeafDomains(s);for(const s of t)for(const t of r)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t).concat(s)));return n}if(o.length===this.definition.rows.length&&0===s.length){const t=i.getColTree(),r=this.getSubTreeMatchingDomain(t,s),a=this.treeToLeafDomains(r,s);for(const t of a)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t)));return n}if(o.length===this.definition.rows.length&&s.length&&s.length<this.definition.columns.length){const t=this.getSubTreeMatchingDomain(i.getColTree(),s),r=this.treeToLeafDomains(t,s);for(const t of r)n.push(this._getPivotCellValueAndFormat(e.id,o.concat(t)));return n}{const t=i.getRowTree(),r=this.getSubTreeMatchingDomain(t,o),a=this.treeToLeafDomains(r,o);for(const t of a)n.push(this._getPivotCellValueAndFormat(e.id,t.concat(s)));return n}}getSubTreeMatchingDomain(e,t,o=0){if(o>t.length)return[];if(t.length===o)return e;for(const s of e){const e=Cc(this.definition.getDimension(s.field),t[o]?.value);if(s.field===t[o]?.field&&s.value===e)return this.getSubTreeMatchingDomain(s.children,t,o+1)}return e}treeToLeafDomains(e,t=[]){const o=[];for(const s of e){const e=this.definition.getDimension(s.field),i=[...t,{field:s.field,value:s.value,type:e.type}];0===s.children.length?o.push(i):o.push(...this.treeToLeafDomains(s.children,i))}return o}getMeasureDisplayValue(e,t){const o=this.getMeasure(e),s=this._getPivotCellValueAndFormat(e,t);if(!o.display||"no_calculations"===o.display.type||s.message)return s;const i=o.display.fieldNameWithGranularity;if(i&&!this.isFieldInPivot(i))return{value:wi.NotAvailable,message:Uo('Field "%s" not found in pivot for measure display calculation',i)};try{const e=o.display;switch(e.type){case"%_of_grand_total":return this.asPercentOfGrandTotal(s,o);case"%_of_col_total":return this.asPercentOfColumnTotal(s,o,t);case"%_of_row_total":return this.asPercentOfRowTotal(s,o,t);case"%_of_parent_row_total":return this.asPercentOfParentRowTotal(s,o,t);case"%_of_parent_col_total":return this.asPercentOfParentColumnTotal(s,o,t);case"index":return this.asIndex(s,o,t);case"%_of_parent_total":return this.asPercentOfParentTotal(s,o,t,e);case"running_total":return this.asRunningTotal(s,o,t,e,"running_total");case"%_running_total":return this.asRunningTotal(s,o,t,e,"%_running_total");case"rank_asc":return this.asRank(s,o,t,e,"asc");case"rank_desc":return this.asRank(s,o,t,e,"desc");case"%_of":return this.asPercentOf(s,o,t,e);case"difference_from":return this.asDifferenceFrom(s,o,t,e);case"%_difference_from":return this.asDifferenceFromInPercent(s,o,t,e)}return s}catch(e){return bS(e,"COMPUTE_MEASURE_DISPLAY_VALUE")}}asPercentOfGrandTotal(e,t){const o=this.getGrandTotal(t.id);return 0===o?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/o,format:bN}}asPercentOfRowTotal(e,t,o){const s=this.getRowTotal(t.id,o);return 0===s?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/s,format:bN}}asPercentOfColumnTotal(e,t,o){const s=this.getColumnTotal(t.id,o);return 0===s?{value:wi.DivisionByZero}:{value:this.measureValueToNumber(e)/s,format:bN}}asPercentOfParentRowTotal(e,t,o){const s=function(e,t){const{colDomain:o,rowDomain:s}=kl(e,t);return[...o,...s.slice(0,s.length-1)]}(this,o),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,s));return 0===i?{value:""}:{value:this.measureValueToNumber(e)/i,format:bN}}asPercentOfParentColumnTotal(e,t,o){const s=function(e,t){const{colDomain:o,rowDomain:s}=kl(e,t);return[...o.slice(0,o.length-1),...s]}(this,o),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,s));return 0===i?{value:""}:{value:this.measureValueToNumber(e)/i,format:bN}}asPercentOfParentTotal(e,t,o,s){const{fieldNameWithGranularity:i}=s;if(!i)return e;if(!Bl(i,o))return{value:""};const n=function(e,t,o){let{rowDomain:s,colDomain:i}=kl(e,o);if("row"===zl(e,t)){const e=s.findIndex((e=>e.field===t));if(-1===e)return o;s=s.slice(0,e+1)}else{const e=i.findIndex((e=>e.field===t));if(-1===e)return o;i=i.slice(0,e+1)}return[...s,...i]}(this,i,o),r=this._getPivotCellValueAndFormat(t.id,n),a=this.measureValueToNumber(r);return 0===a?{value:""}:{value:this.measureValueToNumber(e)/a,format:bN}}asIndex(e,t,o){const s=this.measureValueToNumber(e),i=this.getRowTotal(t.id,o),n=this.getColumnTotal(t.id,o),r=this.getGrandTotal(t.id);return 0===i||0===n?{value:wi.DivisionByZero}:{value:s*r/(n*i),format:void 0}}asRunningTotal(e,t,o,s,i){const{fieldNameWithGranularity:n}=s;if(!n)return e;const r="running_total"===i?this.runningTotal:this.runningTotalInPercent;let a=r[t.id]?.[n];a||(a=this.computeRunningTotal(t,n,i),r[t.id]||(r[t.id]={}),r[t.id][n]=a);const{rowDomain:l,colDomain:c}=kl(this,o),h=$l(c),d=$l(l),u=a[h]?.[d];return{value:u??"",format:"running_total"===i?e.format:bN}}asPercentOf(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};let r=this.getComparisonValue(t,o,i,n),a=this.strictMeasureValueToNumber(e);return 0===r||"sameValue"===r&&0===a?{value:wi.DivisionByZero}:!r||"sameValue"===r&&!a?{value:""}:"sameValue"===r?{value:1,format:bN}:void 0===a?{value:wi.NullError}:{value:a/r,format:bN}}asDifferenceFrom(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};const r=this.getComparisonValue(t,o,i,n)||0;return"sameValue"===r?{value:""}:{value:this.measureValueToNumber(e)-r,format:e.format}}asDifferenceFromInPercent(e,t,o,s){const{fieldNameWithGranularity:i,value:n}=s;if(void 0===n||!i)return e;if(!Bl(i,o))return{value:""};let r=this.getComparisonValue(t,o,i,n);const a=this.strictMeasureValueToNumber(e);return 0===r?{value:wi.DivisionByZero}:r&&"sameValue"!==r?void 0===a?{value:wi.NullError}:{value:(a-r)/r,format:bN}:{value:""}}asRank(e,t,o,s,i){const{fieldNameWithGranularity:n}=s;if(!n)return e;if(!Bl(n,o))return{value:""};const r="asc"===i?this.rankAsc:this.rankDesc;let a=r[t.id]?.[n];a||(a=this.computeRank(t,n,i),r[t.id]||(r[t.id]={}),r[t.id][n]=a);const{rowDomain:l,colDomain:c}=kl(this,o),h=$l(c),d=$l(l),u=a[h]?.[d];return{value:u??""}}computeRank(e,t,o){const s={},i=zl(this,t),n="row"===i?"column":"row";let r=this.getPivotValueCells(e.id);"column"===i&&(r=rn(r));for(const a of r){const r=$l(Vl(this,n,a[0].domain)),l=a.map((t=>({...t,value:this.strictMeasureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain)),rowDomain:Vl(this,i,t.domain)}))).filter((e=>Bl(t,e.rowDomain))),c=Object.groupBy(l,(e=>Wl(e.rowDomain,t)));for(const e in c)c[e]=Pt(c[e]||[],(e=>e.value)).filter((e=>void 0!==e.value)).sort(((e,t)=>"asc"===o?e.value-t.value:t.value-e.value));s[r]={};for(const e of l){const o=$l(Vl(this,i,e.domain)),n=c[Wl(e.rowDomain,t)];if(!n)continue;const a=n.findIndex((t=>t.value===e.value));-1!==a&&(s[r][o]=a+1)}}return"row"===i?s:Nt(s)}computeRunningTotal(e,t,o){const s={},i=zl(this,t),n="row"===i?"column":"row";let r=this.getPivotValueCells(e.id);"column"===i&&(r=rn(r));for(const a of r){const r=$l(Vl(this,n,a[0].domain));s[r]={};const l={},c=a.map((t=>({...t,rowDomain:Vl(this,i,t.domain),value:this.measureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain))}))).filter((e=>Bl(t,e.rowDomain)));for(const e of c){const o=$l(e.rowDomain),i=ql(e.rowDomain,t),n=(l[i]||0)+e.value;l[i]=n,s[r][o]=n}if("%_running_total"===o)for(const e of c){const o=e.rowDomain,i=$l(o),n=ql(o,t),a=s[r][i]||0,c=l[n];s[r][i]=c?a/c:void 0}}return"row"===i?s:Nt(s)}getGrandTotal(e){const t=this._getPivotCellValueAndFormat(e,[]);return this.measureValueToNumber(t)}getRowTotal(e,t){const o=kl(this,t).rowDomain,s=this._getPivotCellValueAndFormat(e,o);return this.measureValueToNumber(s)}getColumnTotal(e,t){const o=kl(this,t).colDomain,s=this._getPivotCellValueAndFormat(e,o);return this.measureValueToNumber(s)}isFieldInPivot(e){return this.definition.columns.some((t=>t.nameWithGranularity===e))||this.definition.rows.some((t=>t.nameWithGranularity===e))}getComparisonValue(e,t,o,s){const i=s===Pl||s===Nl?function(e,t,o,s){const i=zl(e,o),n="row"===i?e.getTableStructure().getRowTree():e.getTableStructure().getColTree(),r=Hl(Vl(e,i,t),n,o),a=r?.map((e=>e.value))??[],l=function(e,t){const o=t.find((t=>t.field===e));return o?.value}(o,t);if(void 0===l)return;const c=a.indexOf(l);if(void 0===l||-1===c)return;return Ul(t,o,a[Ze(c+(s===Pl?-1:1),0,a.length-1)])}(this,t,o,s):Ul(t,o,s);if(ft(i,t))return"sameValue";if(!i||!function(e,t){const{rowDomain:o,colDomain:s}=kl(e,t);return Ll(o,e.getTableStructure().getRowTree())&&Ll(s,e.getTableStructure().getColTree())}(this,i))throw new Ai;const n=this._getPivotCellValueAndFormat(e.id,i);return this.strictMeasureValueToNumber(n)}getPivotValueCells(e){return this.getTableStructure().getPivotCells().map((t=>t.filter((t=>"VALUE"===t.type&&t.measure===e)))).filter((e=>e.length>0))}measureValueToNumber(e){if("number"==typeof e.value)return e.value;if(!e.value)return 0;throw new Error(`Value ${e.value} is not a number`)}strictMeasureValueToNumber(e){if("number"==typeof e.value)return e.value;if(e.value)throw new Error(`Value ${e.value} is not a number`)}getTableStructure(){const e=super.getTableStructure();return this.sortTableStructure(e),e}sortTableStructure(e){if(!this.definition.sortedColumn||e.isSorted)return;const t=this.definition.sortedColumn.measure;_c(this.definition.sortedColumn,this)&&e.sort(t,this.definition.sortedColumn,((e,t)=>this._getPivotCellValueAndFormat(e,t)))}}}const yN=["ADD_PIVOT","UPDATE_PIVOT"];function CN(e){return yN.includes(e.type)}class wN extends EP{static layers=[];getters;ui;selection;dispatch;canDispatch;constructor({getters:e,stateObserver:t,dispatch:o,canDispatch:s,uiActions:i,selection:n}){super(t),this.getters=e,this.ui=i,this.selection=n,this.dispatch=o,this.canDispatch=s}drawLayer(e,t){}}class xN{cells;getters;index=0;direction;constructor(e,t,o){this.cells=e,this.getters=t,this.direction=o}next(){const e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:o,tooltip:s}=KS.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:o,tooltip:s,origin:{col:e.data.col,row:e.data.row}}}}function IN(e,t){if("SPREADSHEET"!==e.pivot.type)return e;if(e.pivot.dataSet?.sheetId!==t.sheetId)return e;const o=Nc(e.pivot.dataSet.zone,t),s=o?{...e.pivot.dataSet,zone:o}:void 0;return{...e,pivot:{...e.pivot,dataSet:s}}}function EN(e,t){return{...e,definition:KR(e.definition,t)}}function RN(e,t){if(e.sheetId!==t.sheetId)return e;if(("FREEZE_COLUMNS"===e.type?"COL":"ROW")!==t.dimension)return e;let o=e.quantity;if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));for(let t of e)o>t&&o--}if("ADD_COLUMNS_ROWS"===t.type){o=o>("before"===t.position?t.base-1:t.base)?o+t.quantity:o}return o>0?{...e,quantity:o}:void 0}function TN(e,t){if(e.sheetId!==t.sheetId)return e;const o=Nc(e.zone,t);if(!o)return;const s=e.newTableRange?kc(e.newTableRange,t):void 0;return{...e,newTableRange:s,zone:o}}function AN(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let o;if("REMOVE_COLUMNS_ROWS"===t.type)o=oa(t.elements,[e.base])[0];else if("ADD_COLUMNS_ROWS"===t.type){o=ta(mt(t.position,t.base),t.quantity,[e.base])[0]}return void 0!==o?{...e,base:o}:void 0}function _N(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;const o=je(e.start,e.end+1);let s=[];if("REMOVE_COLUMNS_ROWS"===t.type)s=oa(t.elements,o);else if("ADD_COLUMNS_ROWS"===t.type){s=ta(mt(t.position,t.base),t.quantity,o)}return 0!==s.length?{...e,start:Math.min(...s),end:Math.max(...s)}:void 0}ED.addTransformation("ADD_COLUMNS_ROWS",["ADD_COLUMNS_ROWS"],AN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["ADD_COLUMNS_ROWS"],AN),ED.addTransformation("ADD_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],EN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],EN),ED.addTransformation("DELETE_SHEET",["MOVE_RANGES"],(function(e,t){const o=t.sheetId;if(e.targetSheetId===o||e.sheetId===o)return;return e})),ED.addTransformation("DELETE_FIGURE",["UPDATE_FIGURE","UPDATE_CHART"],(function(e,t){if(e.id===t.id)return;return e})),ED.addTransformation("CREATE_SHEET",["CREATE_SHEET"],(function(e,t){e.sheetId===t.sheetId&&(e={...e,sheetId:`${e.sheetId}~`});if(e.name===t.name)return{...e,name:e.name?.match(/\d+/)?e.name.replace(/\d+/,(e=>(parseInt(e)+1).toString())):`${e.name}~`,position:e.position+1};return e})),ED.addTransformation("ADD_MERGE",["ADD_MERGE","REMOVE_MERGE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;const o=[];for(const s of e.target)t.target.every((e=>!es(s,e)))&&o.push(s);if(o.length)return{...e,target:o};return})),ED.addTransformation("ADD_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],RN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],RN),ED.addTransformation("ADD_COLUMNS_ROWS",["UPDATE_TABLE"],TN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["UPDATE_TABLE"],TN),ED.addTransformation("REMOVE_TABLE_STYLE",["CREATE_TABLE","UPDATE_TABLE"],(function(e,t){if(e.config?.styleId!==t.tableStyleId)return e;return{...e,config:{...e.config,styleId:Aw.styleId}}})),ED.addTransformation("ADD_COLUMNS_ROWS",["GROUP_HEADERS","UNGROUP_HEADERS","FOLD_HEADER_GROUP","UNFOLD_HEADER_GROUP"],_N),ED.addTransformation("REMOVE_COLUMNS_ROWS",["GROUP_HEADERS","UNGROUP_HEADERS","FOLD_HEADER_GROUP","UNFOLD_HEADER_GROUP"],_N),ED.addTransformation("REMOVE_PIVOT",["RENAME_PIVOT","DUPLICATE_PIVOT","INSERT_PIVOT","UPDATE_PIVOT"],(function(e,t){if(e.pivotId===t.pivotId)return;return e})),ED.addTransformation("DELETE_SHEET",["ADD_PIVOT","UPDATE_PIVOT"],(function(e,t){if("SPREADSHEET"!==e.pivot.type)return e;if(e.pivot.dataSet?.sheetId===t.sheetId)return{...e,pivot:{...e.pivot,dataSet:void 0}};return e})),ED.addTransformation("ADD_COLUMNS_ROWS",["ADD_PIVOT","UPDATE_PIVOT"],IN),ED.addTransformation("REMOVE_COLUMNS_ROWS",["ADD_PIVOT","UPDATE_PIVOT"],IN);const DN=[{match:function(e){return"sheetId"in e},fn:MN},{match:function(e){return"target"in e&&"sheetId"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const s=[];for(const o of e.target){const e=Nc(o,t);e&&s.push(e)}if(!s.length)return"IGNORE_COMMAND";return{...e,target:s}}},{match:function(e){return"sheetId"in e&&"zone"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const s=Nc(e.zone,t);if(s)return{...e,zone:s};return"IGNORE_COMMAND"}},{match:function(e){return"col"in e&&"row"in e&&"sheetId"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type)return function(e,t){const o="COL"===t.dimension?"col":"row";let s=e[o];if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));if(e.includes(s))return"IGNORE_COMMAND";for(let t of e)s>=t&&s--}"ADD_COLUMNS_ROWS"===t.type&&(s>t.base||s===t.base&&"before"===t.position)&&(s+=t.quantity);return{...e,[o]:s}}(e,t);if("ADD_MERGE"===t.type)return function(e,t){for(const o of t.target){if(!(e.col===o.left&&e.row===o.top)&&ts(e.col,e.row,o))return"IGNORE_COMMAND"}return e}(e,t);return"SKIP_TRANSFORMATION"}},{match:function(e){return"dimension"in e&&"sheetId"in e&&"elements"in e},fn:function(e,t){const o=MN(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"!==t.type&&"REMOVE_COLUMNS_ROWS"!==t.type)return"SKIP_TRANSFORMATION";if(t.dimension!==e.dimension)return e;let s=[];if("REMOVE_COLUMNS_ROWS"===t.type)s=oa(t.elements,e.elements);else if("ADD_COLUMNS_ROWS"===t.type){s=ta(mt(t.position,t.base),t.quantity,e.elements)}if(0===s.length)return"IGNORE_COMMAND";return{...e,elements:s}}},{match:function(e){return"ranges"in e},fn:function(e,t){if(!("sheetId"in t))return e;const o=e.ranges.map((e=>kc(e,t))).filter(lt);if(!o.length)return"IGNORE_COMMAND";return{...e,ranges:o}}}];function ON(e,t){const o=ED.getTransformation(e.type,t.type);return o?o(e,t):function(e,t){for(const{match:o,fn:s}of DN)if(o(e)){const o=s(e,t);if("SKIP_TRANSFORMATION"===o)continue;if("IGNORE_COMMAND"===o)return;e=o}return e}(e,t)}function FN(e,t){let o=[...e];const s=new Set(ED.getKeys());for(const e of t)s.has(e.type)&&(o=o.reduce(((t,o)=>{const s=ON(o,e);return s&&t.push(s),t}),[]));return o}function MN(e,t){if(!("sheetId"in t))return e;const o="DELETE_SHEET"===t.type&&t.sheetId;return e.sheetId===o?"IGNORE_COMMAND":"CREATE_SHEET"===e.type||"CREATE_SHEET"===t.type||e.sheetId!==t.sheetId?e:"SKIP_TRANSFORMATION"}class PN{rootCommand;timestamp;id;clientId;_commands=[];_changes=[];constructor(e,t,o,s,i,n){this.rootCommand=s,this.timestamp=n,this.id=e,this.clientId=t,this._commands=[...o],this._changes=i?[...i]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}}class NN extends Error{}class kN extends Vc{revisions;transportService;serverRevisionId;clients={};clientId="local";debouncedMove;pendingMessages=[];waitingAck=!1;waitingUndoRedoAck=!1;isReplayingInitialRevisions=!1;processedRevisions=new Set;lastRevisionMessage=void 0;uuidGenerator=new xa;lastLocalOperation;constructor(e,t,o=ye){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=o,this.debouncedMove=dt(this._move.bind(this),200)}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t,o){if(!t.length||!o.length||!this.canApplyOptimisticUpdate())return;const s=new PN(this.uuidGenerator.uuidv4(),this.clientId,t,e,o,Date.now());this.revisions.append(s.id,s),"REQUEST_REDO"!==e.type&&(this.lastLocalOperation=s),this.trigger("new-local-state-update",{id:s.id}),this.sendUpdateMessage({type:"REMOTE_REVISION",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:s.id,clientId:s.clientId,commands:s.commands})}undo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_UNDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),undoneRevisionId:e})}redo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_REDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),redoneRevisionId:e})}move(e){this.debouncedMove(e)}join(e){e?(this.clients[e.id]=e,this.clientId=e.id):(this.clients.local={id:"local",name:"local"},this.clientId="local"),this.transportService.onNewMessage(this.clientId,this.onMessageReceived.bind(this))}loadInitialMessages(e){const t=performance.now(),o=e.reduce(((e,t)=>e+("REMOTE_REVISION"===t.type?t.commands.length:1)),0);this.isReplayingInitialRevisions=!0;for(const t of e)this.onMessageReceived(t);this.isReplayingInitialRevisions=!1,console.debug("Replayed",o,"commands in",performance.now()-t,"ms")}async leave(e){e&&1===Object.keys(this.clients).length&&this.lastRevisionMessage&&"SNAPSHOT_CREATED"!==this.lastRevisionMessage?.type&&await this.snapshot(e()),delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.transportService.sendMessage({type:"CLIENT_LEFT",clientId:this.clientId,version:1})}async snapshot(e){if(0!==this.pendingMessages.length)return;const t=this.uuidGenerator.uuidv4();await this.transportService.sendMessage({type:"SNAPSHOT",nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getClient(){const e=this.clients[this.clientId];if(!e)throw new NN("The client left the session");return e}getConnectedClients(){return new Set(Object.values(this.clients).filter(lt))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return 0===this.pendingMessages.length}getLastLocalNonEmptyRevision(){return this.lastLocalOperation}_move(e){if(!this.clients[this.clientId])return;const t=this.clients[this.clientId]?.position;if(t?.col===e.col&&t.row===e.row&&t.sheetId===e.sheetId)return;const o=t?"CLIENT_MOVED":"CLIENT_JOINED",s=this.getClient();this.clients[this.clientId]={...s,position:e},this.transportService.sendMessage({type:o,version:1,client:{...s,position:e}})}onMessageReceived(e){if(!this.isAlreadyProcessed(e))if(this.isWrongServerRevisionId(e))this.trigger("unexpected-revision-id");else{switch(e.type){case"CLIENT_MOVED":this.onClientMoved(e);break;case"CLIENT_JOINED":this.onClientJoined(e);break;case"CLIENT_LEFT":this.onClientLeft(e);break;case"REVISION_REDONE":this.revisions.redo(e.redoneRevisionId,e.nextRevisionId,e.serverRevisionId),this.trigger("revision-redone",{revisionId:e.redoneRevisionId,commands:this.revisions.get(e.redoneRevisionId).commands});break;case"REVISION_UNDONE":this.revisions.undo(e.undoneRevisionId,e.nextRevisionId,e.serverRevisionId),this.trigger("revision-undone",{revisionId:e.undoneRevisionId,commands:this.revisions.get(e.undoneRevisionId).commands});break;case"REMOTE_REVISION":const{clientId:t,commands:o,timestamp:s}=e,i=new PN(e.nextRevisionId,t,o,void 0,void 0,s);if(i.clientId!==this.clientId){this.revisions.insert(i.id,i,e.serverRevisionId);const t=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.commands)).flat();this.trigger("remote-revision-received",{commands:FN(o,t)})}break;case"SNAPSHOT_CREATED":{const t=new PN(e.nextRevisionId,"server",[],void 0,void 0,Date.now());this.revisions.insert(t.id,t,e.serverRevisionId),this.dropPendingHistoryMessages(),this.trigger("snapshot"),this.lastLocalOperation=void 0;break}}this.acknowledge(e),this.trigger("collaborative-event-received")}}onClientMoved(e){e.client.id!==this.clientId&&(this.clients[e.client.id]=e.client)}onClientJoined(e){if(e.client.id!==this.clientId){this.clients[e.client.id]=e.client;const t=this.clients[this.clientId];if(t){const{position:e}=t;e&&this.transportService.sendMessage({type:"CLIENT_MOVED",version:1,client:{...t,position:e}})}}}onClientLeft(e){e.clientId!==this.clientId&&delete this.clients[e.clientId]}sendUpdateMessage(e){this.pendingMessages.push(e),this.waitingAck||this.sendPendingMessage()}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if("REMOTE_REVISION"===e.type){let t=this.revisions.get(e.nextRevisionId);0===t.commands.length&&(this.revisions.rebase(t.id),t=this.revisions.get(e.nextRevisionId)),e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.\n ${JSON.stringify(e)}`);this.waitingAck=!0,this.transportService.sendMessage({...e,serverRevisionId:this.serverRevisionId})}}acknowledge(e){switch("REVISION_UNDONE"!==e.type&&"REVISION_REDONE"!==e.type||(this.waitingUndoRedoAck=!1),e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"SNAPSHOT_CREATED":this.waitingAck=!1,this.pendingMessages=this.pendingMessages.filter((t=>t.nextRevisionId!==e.nextRevisionId)),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.lastRevisionMessage=e,this.sendPendingMessage();break;case"REVISION_UNDONE":{this.waitingAck=!1,this.pendingMessages=this.pendingMessages.filter((t=>t.nextRevisionId!==e.nextRevisionId));const t=this.pendingMessages.findIndex((e=>"REMOTE_REVISION"===e.type));-1!==t&&this.revisions.rebase(this.pendingMessages[t].nextRevisionId),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.sendPendingMessage();break}}}isAlreadyProcessed(e){if("CLIENT_MOVED"===e.type&&e.client.id===this.clientId)return!0;switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":case"SNAPSHOT_CREATED":return this.processedRevisions.has(e.nextRevisionId);default:return!1}}isWrongServerRevisionId(e){switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":case"SNAPSHOT_CREATED":return e.serverRevisionId!==this.serverRevisionId;default:return!1}}dropPendingHistoryMessages(){this.waitingUndoRedoAck=!1,this.pendingMessages=this.pendingMessages.filter((({type:e})=>"REVISION_REDONE"!==e&&"REVISION_UNDONE"!==e))}}const VN=new Set(["HIDE_COLUMNS_ROWS","UNHIDE_COLUMNS_ROWS","UNFOLD_HEADER_GROUP","UNGROUP_HEADERS","FOLD_HEADER_GROUP","FOLD_ALL_HEADER_GROUPS","UNFOLD_ALL_HEADER_GROUPS","FOLD_HEADER_GROUPS_IN_ZONE","UNFOLD_HEADER_GROUPS_IN_ZONE","CREATE_TABLE","UPDATE_TABLE","UPDATE_FILTER","REMOVE_TABLE","RESIZE_TABLE","CREATE_TABLE_STYLE","REMOVE_TABLE_STYLE"]);function LN(e){return VN.has(e.type)}const HN=[UN,function(e,t){return"target"in t&&Array.isArray(t.target)?{...ze(t),target:e.getSelectedZones()}:t},function(e,t){if(!("row"in t)||!("col"in t))return t;const{col:o,row:s}=e.getActivePosition();return{...ze(t),col:o,row:s}},function(e,t){return"ranges"in t?{...ze(t),ranges:e.getSelectedZones().map((t=>e.getRangeDataFromZone(e.getActiveSheetId(),t)))}:t}];function UN(e,t){return"sheetId"in t?{...ze(t),sheetId:e.getActiveSheetId()}:t}function BN(e,t){return"zone"in t?{...ze(t),zone:e.getSelectedZone()}:t}const zN=new xa;function $N(e,t){const o=e.getSelectedZone();return{...UN(e,t),elements:"COL"===t.dimension?je(o.left,o.right+1):je(o.top,o.bottom+1)}}function GN(e,t){const o=e.getSelectedZone();return{...ze(t),zone:o}}function WN(e,t){const o=ze(t),s=e.getSelectedZone(),{top:i,bottom:n,left:r,right:a}=s;return"cols"in o?o.cols=je(r,a+1):"rows"in o&&(o.rows=je(i,n+1)),o}function qN(e,t){const o=e.getSelectedZone();return{...UN(e,t),start:"COL"===t.dimension?o.left:o.top,end:"COL"===t.dimension?o.right:o.bottom}}const ZN=new n;ZN.add("UPDATE_CELL",YN),ZN.add("CLEAR_CELL",YN),ZN.add("CLEAR_CELLS",YN),ZN.add("DELETE_CONTENT",YN),ZN.add("ADD_MERGE",YN),ZN.add("REMOVE_MERGE",YN),ZN.add("SET_FORMATTING",YN),ZN.add("CLEAR_FORMATTING",YN),ZN.add("SET_BORDER",YN),ZN.add("CREATE_TABLE",YN),ZN.add("REMOVE_TABLE",YN),ZN.add("HIDE_SHEET",YN),ZN.add("ADD_COLUMNS_ROWS",(function(e,t){const o=e.getActivePosition();return{...UN(e,t),base:"COL"===t.dimension?o.col:o.row}})),ZN.add("REMOVE_COLUMNS_ROWS",$N),ZN.add("HIDE_COLUMNS_ROWS",$N),ZN.add("RESIZE_COLUMNS_ROWS",$N),ZN.add("CREATE_SHEET",(function(e,t){const o=ze(t);o.sheetId=zN.smallUuid();const s=t.name||e.getSheet(e.getActiveSheetId()).name,i=s.match(/(.+?)\d*$/)?.[1]||s;return o.name=e.getNextSheetName(i),o})),ZN.add("CREATE_FIGURE",(function(e,t){const o=UN(e,t);return o.figure.id=zN.smallUuid(),o})),ZN.add("CREATE_CHART",(function(e,t){return{...UN(e,t),id:zN.smallUuid()}})),ZN.add("CREATE_IMAGE",(function(e,t){return{...UN(e,t),figureId:zN.smallUuid()}})),ZN.add("GROUP_HEADERS",qN),ZN.add("UNGROUP_HEADERS",qN),ZN.add("UNGROUP_HEADERS",qN),ZN.add("UNFOLD_HEADER_GROUPS_IN_ZONE",BN),ZN.add("FOLD_HEADER_GROUPS_IN_ZONE",BN);const jN=new n;function YN(e,t){let o=ze(t);for(const t of HN)o=t(e,o);return o}function XN(e,t){if(e.rootCommand&&"object"==typeof e.rootCommand)return di(e.rootCommand)?function(e,t){if(!t)return;if(!ZN.contains(t.type))return;return ZN.get(t.type)(e,t)}(t,e.rootCommand):function(e,t,o){if(!jN.contains(t.type))return;return jN.get(t.type)(e,t,o)}(t,e.rootCommand,e.commands)}jN.add("PASTE",(function(e,t){return{type:"REPEAT_PASTE",pasteOption:ze(t.pasteOption),target:e.getSelectedZones()}})),jN.add("INSERT_CELL",GN),jN.add("DELETE_CELL",GN),jN.add("AUTORESIZE_COLUMNS",WN),jN.add("AUTORESIZE_ROWS",WN),jN.add("SORT_CELLS",(function(e,t){const o=e.getSelectedZone();return{...UN(e,t),col:o.left,row:o.top,zone:o}})),jN.add("SUM_SELECTION",YN),jN.add("SET_DECIMAL",YN);class KN{trackedValues=new Set;domainToArray(e){return e.flatMap((e=>[e.field,Gi(e.value)]))}isValuePresent(e,t){const o=JSON.stringify({measure:e,domain:this.domainToArray(t)});return this.trackedValues.has(o)}isHeaderPresent(e){const t=JSON.stringify({domain:this.domainToArray(e)});return this.trackedValues.has(t)}trackValue(e,t){const o=JSON.stringify({measure:e,domain:this.domainToArray(t)});this.trackedValues.add(o)}trackHeader(e){const t=JSON.stringify({domain:this.domainToArray(e)});this.trackedValues.add(t)}}class JN{getters;sheetId;boundaries;top;bottom;left;right;offsetX;offsetY;canScrollVertically;canScrollHorizontally;viewportWidth;viewportHeight;offsetCorrectionX;offsetCorrectionY;constructor(e,t,o,s,i,n){if(this.getters=e,this.sheetId=t,this.boundaries=o,s.width<0||s.height<0)throw new Error("Viewport size cannot be negative");this.viewportWidth=s.height&&s.width,this.viewportHeight=s.width&&s.height,this.top=o.top,this.bottom=o.bottom,this.left=o.left,this.right=o.right,this.offsetX=n.x,this.offsetY=n.y,this.canScrollVertically=i.canScrollVertically,this.canScrollHorizontally=i.canScrollHorizontally,this.offsetCorrectionX=this.getters.getColDimensions(this.sheetId,this.boundaries.left).start,this.offsetCorrectionY=this.getters.getRowDimensions(this.sheetId,this.boundaries.top).start,this.adjustViewportOffsetX(),this.adjustViewportOffsetY()}getMaxSize(){const e=this.getters.findLastVisibleColRowIndex(this.sheetId,"COL",{first:this.boundaries.left,last:this.boundaries.right}),t=this.getters.findLastVisibleColRowIndex(this.sheetId,"ROW",{first:this.boundaries.top,last:this.boundaries.bottom}),{end:o}=this.getters.getColDimensions(this.sheetId,e),{end:s}=this.getters.getRowDimensions(this.sheetId,t);let i=o-this.offsetCorrectionX;this.canScrollHorizontally&&(i=Math.max(i,this.viewportWidth));let n=s-this.offsetCorrectionY;return this.canScrollVertically&&(n=Math.max(n,this.viewportHeight),s+he>n&&!this.getters.isReadonly()&&(n+=he)),{width:i,height:n}}getColIndex(e){return e<this.offsetCorrectionX||e>this.offsetCorrectionX+this.viewportWidth?-1:this.searchHeaderIndex("COL",e-this.offsetCorrectionX+this.snapCorrection.x,this.left)}getRowIndex(e){return e<this.offsetCorrectionY||e>this.offsetCorrectionY+this.viewportHeight?-1:this.searchHeaderIndex("ROW",e-this.offsetCorrectionY+this.snapCorrection.y,this.top)}adjustPosition(e){const t=this.sheetId,o=this.getters.getMainCellPosition({sheetId:t,...e}),{col:s,row:i}=this.getters.getNextVisibleCellPosition(o);ts(s,this.boundaries.top,this.boundaries)&&this.adjustPositionX(s),ts(this.boundaries.left,i,this.boundaries)&&this.adjustPositionY(i)}adjustPositionX(e){const t=this.sheetId,{start:o,end:s}=this.getters.getColDimensions(t,e);this.offsetX+this.viewportWidth+this.offsetCorrectionX<s?this.offsetX=s-this.viewportWidth:this.offsetX+this.offsetCorrectionX>o&&(this.offsetX=o-this.offsetCorrectionX),this.adjustViewportZoneX()}adjustPositionY(e){const t=this.sheetId,{start:o,end:s}=this.getters.getRowDimensions(t,e);this.offsetY+this.viewportHeight+this.offsetCorrectionY<s?this.offsetY=s-this.viewportHeight:this.offsetY+this.offsetCorrectionY>o&&(this.offsetY=o-this.offsetCorrectionY),this.adjustViewportZoneY()}willNewOffsetScrollViewport(e,t){return this.canScrollHorizontally&&this.offsetX!==e||this.canScrollVertically&&this.offsetY!==t}setViewportOffset(e,t){this.setViewportOffsetX(e),this.setViewportOffsetY(t)}adjustViewportZone(){this.adjustViewportZoneX(),this.adjustViewportZoneY()}getVisibleRect(e){const t=Jo(e,this),o=this.snapCorrection.x,s=this.snapCorrection.y;if(t){return{x:this.getters.getColRowOffset("COL",this.left,t.left)+this.offsetCorrectionX-(this.left!==t.left?o:0),y:this.getters.getColRowOffset("ROW",this.top,t.top)+this.offsetCorrectionY-(this.top!==t.top?s:0),width:Math.min(this.getters.getColRowOffset("COL",t.left,t.right+1)-(this.left===t.left?o:0),this.viewportWidth),height:Math.min(this.getters.getColRowOffset("ROW",t.top,t.bottom+1)-(this.top===t.top?s:0),this.viewportHeight)}}}getFullRect(e){const t=Jo(e,this.boundaries),o=this.snapCorrection.x,s=this.snapCorrection.y;if(t){return{x:this.getters.getColRowOffset("COL",this.left,e.left)+this.offsetCorrectionX-o,y:this.getters.getColRowOffset("ROW",this.top,e.top)+this.offsetCorrectionY-s,width:this.getters.getColRowOffset("COL",e.left,e.right+1),height:this.getters.getColRowOffset("ROW",e.top,e.bottom+1)}}}isVisible(e,t){return t<=this.bottom&&t>=this.top&&e>=this.left&&e<=this.right&&!this.getters.isColHidden(this.sheetId,e)&&!this.getters.isRowHidden(this.sheetId,t)}searchHeaderIndex(e,t,o=0){if(this.viewportWidth<=0||this.viewportHeight<=0)return-1;const s=this.sheetId,i=this.getters.getNumberHeaders(s,e);let n=o,r=i;for(;n<=r&&n!==i&&-1!==r;){const i=Math.floor((n+r)/2),a=this.getters.getColRowOffset(e,o,i),l=this.getters.getHeaderSize(s,e,i);if(t>=a&&t<a+l)return i;t>=a+l?n=i+1:r=i-1}return-1}setViewportOffsetX(e){this.canScrollHorizontally&&(this.offsetX=e,this.adjustViewportZoneX())}setViewportOffsetY(e){this.canScrollVertically&&(this.offsetY=e,this.adjustViewportZoneY())}adjustViewportOffsetX(){if(this.canScrollHorizontally){const{width:e}=this.getMaxSize();this.viewportWidth+this.offsetX>e&&(this.offsetX=Math.max(0,e-this.viewportWidth))}this.adjustViewportZoneX()}adjustViewportOffsetY(){if(this.canScrollVertically){const{height:e}=this.getMaxSize();this.viewportHeight+this.offsetY>e&&(this.offsetY=Math.max(0,e-this.viewportHeight))}this.adjustViewportZoneY()}adjustViewportZoneX(){this.left=this.searchHeaderIndex("COL",this.offsetX,this.boundaries.left),this.right=Math.min(this.boundaries.right,this.searchHeaderIndex("COL",Math.max(this.viewportWidth+this.snapCorrection.x-.1),this.left)),this.viewportWidth&&(-1===this.left&&(this.left=this.boundaries.left),-1===this.right&&(this.right=this.boundaries.right))}adjustViewportZoneY(){this.top=this.searchHeaderIndex("ROW",this.offsetY,this.boundaries.top),this.bottom=Math.min(this.boundaries.bottom,this.searchHeaderIndex("ROW",Math.max(this.viewportHeight+this.snapCorrection.y-.1,0),this.top)),this.viewportHeight&&(-1===this.top&&(this.top=this.boundaries.top),-1===this.bottom&&(this.bottom=this.boundaries.bottom))}get snapCorrection(){return{x:Math.abs(this.offsetX-this.getters.getColRowOffset("COL",this.boundaries.left,Math.max(0,this.left))),y:Math.abs(this.offsetY-this.getters.getColRowOffset("ROW",this.boundaries.top,Math.max(0,this.top)))}}}const QN=(new n).add("settings",class extends RP{static getters=["getLocale"];locale=fi;allowDispatch(e){return"UPDATE_LOCALE"===e.type?ja(e.locale)?"Success":"InvalidLocale":"Success"}handle(e){if("UPDATE_LOCALE"===e.type){const t=this.locale,o=e.locale;this.history.update("locale",o),this.changeCellsDateFormatWithLocale(t,o)}}getLocale(){return this.locale}changeCellsDateFormatWithLocale(e,t){for(const o of this.getters.getSheetIds())for(const[s,i]of Object.entries(this.getters.getCells(o))){let o;if(i.format===e.dateFormat&&(o=t.dateFormat),i.format===e.timeFormat&&(o=t.timeFormat),i.format===ll(e)&&(o=ll(t)),o){const{col:e,row:t,sheetId:i}=this.getters.getCellPosition(s);this.dispatch("UPDATE_CELL",{col:e,row:t,sheetId:i,format:o})}}}import(e){this.locale=e.settings?.locale??fi}export(e){e.settings={locale:this.locale}}}).add("sheet",class extends RP{static getters=["getSheetName","tryGetSheetName","getSheet","tryGetSheet","getSheetIdByName","getSheetIds","getVisibleSheetIds","isSheetVisible","doesHeaderExist","doesHeadersExist","getCell","getCellPosition","getColsZone","getRowCells","getRowsZone","getNumberCols","getNumberRows","getNumberHeaders","getGridLinesVisibility","getNextSheetName","getSheetSize","getSheetZone","getPaneDivisions","checkZonesExistInSheet","getCommandZones","getUnboundedZone","checkElementsIncludeAllNonFrozenHeaders","getDuplicateSheetName"];sheetIdsMapName={};orderedSheetIds=[];sheets={};cellPosition={};allowDispatch(e){const t=this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e);if("Success"!==t)return t;switch(e.type){case"HIDE_SHEET":return 1===this.getVisibleSheetIds().length?"NotEnoughSheets":"Success";case"CREATE_SHEET":return this.checkValidations(e,this.checkSheetName,this.checkSheetPosition);case"DUPLICATE_SHEET":return this.sheets[e.sheetIdTo]?"DuplicatedSheetId":this.orderedSheetIds.map(this.getSheetName.bind(this)).includes(e.sheetNameTo)?"DuplicatedSheetName":"Success";case"MOVE_SHEET":try{const t=this.orderedSheetIds.findIndex((t=>t===e.sheetId));return this.findIndexOfTargetSheet(t,e.delta),"Success"}catch(e){return"WrongSheetMove"}case"RENAME_SHEET":return this.isRenameAllowed(e);case"COLOR_SHEET":return!e.color||$t(e.color)?"Success":"InvalidColor";case"DELETE_SHEET":return this.getVisibleSheetIds().length>1?"Success":"NotEnoughSheets";case"ADD_COLUMNS_ROWS":return this.doesHeaderExist(e.sheetId,e.dimension,e.base)?e.quantity<=0?"InvalidQuantity":"Success":"InvalidHeaderIndex";case"REMOVE_COLUMNS_ROWS":{const t=Ft(e.elements),o=Ot(e.elements);return t<0||!this.doesHeaderExist(e.sheetId,e.dimension,o)?"InvalidHeaderIndex":this.checkElementsIncludeAllNonFrozenHeaders(e.sheetId,e.dimension,e.elements)?"NotEnoughElements":"Success"}case"FREEZE_ROWS":return this.checkValidations(e,this.checkRowFreezeQuantity,this.checkRowFreezeOverlapMerge);case"FREEZE_COLUMNS":return this.checkValidations(e,this.checkColFreezeQuantity,this.checkColFreezeOverlapMerge);default:return"Success"}}handle(e){switch(e.type){case"SET_GRID_LINES_VISIBILITY":this.setGridLinesVisibility(e.sheetId,e.areGridLinesVisible);break;case"CREATE_SHEET":const t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update("sheetIdsMapName",t.name,t.id);break;case"MOVE_SHEET":this.moveSheet(e.sheetId,e.delta);break;case"RENAME_SHEET":this.renameSheet(this.sheets[e.sheetId],e.name);break;case"COLOR_SHEET":this.history.update("sheets",e.sheetId,"color",e.color);break;case"HIDE_SHEET":this.hideSheet(e.sheetId);break;case"SHOW_SHEET":this.showSheet(e.sheetId);break;case"DUPLICATE_SHEET":this.duplicateSheet(e.sheetId,e.sheetIdTo,e.sheetNameTo);break;case"DELETE_SHEET":this.deleteSheet(this.sheets[e.sheetId]);break;case"REMOVE_COLUMNS_ROWS":"COL"===e.dimension?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.addColumns(this.sheets[e.sheetId],e.base,e.position,e.quantity):this.addRows(this.sheets[e.sheetId],e.base,e.position,e.quantity);break;case"UPDATE_CELL_POSITION":this.updateCellPosition(e);break;case"FREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,e.quantity,"COL");break;case"FREEZE_ROWS":this.setPaneDivisions(e.sheetId,e.quantity,"ROW");break;case"UNFREEZE_ROWS":this.setPaneDivisions(e.sheetId,0,"ROW");break;case"UNFREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,0,"COL");break;case"UNFREEZE_COLUMNS_ROWS":this.setPaneDivisions(e.sheetId,0,"COL"),this.setPaneDivisions(e.sheetId,0,"ROW")}}import(e){for(let t of e.sheets)this.sheetIdsMapName[t.name]=t.id;for(let t of e.sheets){const e=t.name||"Sheet"+(Object.keys(this.sheets).length+1),{colNumber:o,rowNumber:s}=this.getImportedSheetSize(t),i={id:t.id,name:e,numberOfCols:o,rows:ea(s),areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible,panes:{xSplit:t.panes?.xSplit||0,ySplit:t.panes?.ySplit||0},color:t.color};this.orderedSheetIds.push(i.id),this.sheets[i.id]=i}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(lt).map((e=>{const t=this.sheets[e],o={id:t.id,name:t.name,colNumber:t.numberOfCols,rowNumber:this.getters.getNumberRows(t.id),rows:{},cols:{},merges:[],cells:{},styles:{},formats:{},borders:{},conditionalFormats:[],dataValidationRules:[],figures:[],tables:[],areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible,color:t.color};return(t.panes.xSplit||t.panes.ySplit)&&(o.panes=t.panes),o}))}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}tryGetSheet(e){return this.sheets[e]}getSheet(e){const t=this.sheets[e];if(!t)throw new Error(`Sheet ${e} not found.`);return t}isSheetVisible(e){return this.getSheet(e).isVisible}getSheetName(e){return this.getSheet(e).name}tryGetSheetName(e){return this.tryGetSheet(e)?.name}getSheetIdByName(e){if(e){const t=$e(e);for(const e in this.sheetIdsMapName)if(na(e,t))return this.sheetIdsMapName[e]}}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}doesHeaderExist(e,t,o){return"COL"===t?o>=0&&o<this.getNumberCols(e):o>=0&&o<this.getNumberRows(e)}doesHeadersExist(e,t,o){return o.every((o=>this.doesHeaderExist(e,t,o)))}getCell({sheetId:e,col:t,row:o}){const s=this.tryGetSheet(e),i=s?.rows[o]?.cells[t];if(void 0!==i)return this.getters.getCellById(i)}getColsZone(e,t,o){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:o}}getRowCells(e,t){return Object.values(this.getSheet(e).rows[t]?.cells).filter(lt)}getRowsZone(e,t,o){return{top:t,bottom:o,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){const t=this.cellPosition[e];if(!t)throw new Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return"COL"===t?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e="Sheet"){return sa(this.orderedSheetIds.map(this.getSheetName.bind(this)),e)}getSheetSize(e){return{numberOfRows:this.getNumberRows(e),numberOfCols:this.getNumberCols(e)}}getSheetZone(e){return{top:0,left:0,bottom:this.getNumberRows(e)-1,right:this.getNumberCols(e)-1}}getUnboundedZone(e,t){if(void 0===t.bottom||void 0===t.right)return t;const o=0===t.left&&t.right===this.getNumberCols(e)-1,s=0===t.top&&t.bottom===this.getNumberRows(e)-1;return{...t,bottom:s?void 0:t.bottom,right:o&&!s?void 0:t.right}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,o){const s={...this.getPaneDivisions(e)};"COL"===o?s.xSplit=t:"ROW"===o&&(s.ySplit=t),this.history.update("sheets",e,"panes",s)}checkElementsIncludeAllNonFrozenHeaders(e,t,o){const s=this.getters.getPaneDivisions(e),i="ROW"===t?s.ySplit:s.xSplit,n=this.getters.getNumberHeaders(e,t);if(!i)return!1;return bt(o,je(i,n))}getCommandZones(e){const t=[];return"zone"in e&&t.push(e.zone),"target"in e&&t.push(...e.target),"ranges"in e&&t.push(...e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone))),"col"in e&&"row"in e&&t.push({top:e.row,left:e.col,bottom:e.row,right:e.col}),t}checkZonesExistInSheet(e,t){if(!t.every(Go))return"InvalidRange";if(t.length){const o=this.getSheetZone(e);return t.every((e=>os(e,o)))?"Success":"TargetOutOfSheet"}return"Success"}updateCellPosition(e){const{sheetId:t,cellId:o,col:s,row:i}=e;o?this.setNewPosition(o,t,s,i):this.clearPosition(t,s,i)}setNewPosition(e,t,o,s){const i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update("cellPosition",e,{row:s,col:o,sheetId:t}),this.history.update("sheets",t,"rows",s,"cells",o,e)}clearPosition(e,t,o){const s=this.sheets[e]?.rows[o].cells[t];s&&(this.history.update("cellPosition",s,void 0),this.history.update("sheets",e,"rows",o,"cells",t,void 0))}setGridLinesVisibility(e,t){this.history.update("sheets",e,"areGridLinesVisible",t)}createSheet(e,t,o,s,i){const n={id:e,name:t,numberOfCols:o,rows:ea(s),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0}},r=this.orderedSheetIds.slice();r.splice(i,0,n.id);const a=this.sheets;return this.history.update("orderedSheetIds",r),this.history.update("sheets",Object.assign({},a,{[n.id]:n})),n}moveSheet(e,t){const o=this.orderedSheetIds.slice(),s=o.findIndex((t=>t===e)),i=o.splice(s,1);let n=this.findIndexOfTargetSheet(s,t);o.splice(n,0,i[0]),this.history.update("orderedSheetIds",o)}findIndexOfTargetSheet(e,t){for(;0!=t&&0<=e&&e<=this.orderedSheetIds.length;)t>0?(e++,this.isSheetVisible(this.orderedSheetIds[e])&&t--):t<0&&(e--,this.isSheetVisible(this.orderedSheetIds[e])&&t++);if(0===t)return e;throw new Error(Uo("There is not enough visible sheets"))}checkSheetName(e){const t=this.getters.tryGetSheetName(e.sheetId);if(void 0!==t&&e.name===t)return"UnchangedSheetName";const{orderedSheetIds:o,sheets:s}=this,i=e.name&&e.name.trim().toLowerCase();return o.find((t=>na(s[t]?.name,i)&&t!==e.sheetId))?"DuplicatedSheetName":De.test(i)?"ForbiddenCharactersInSheetName":"Success"}checkSheetPosition(e){const{orderedSheetIds:t}=this;return e.position>t.length||e.position<0?"WrongSheetPosition":"Success"}checkRowFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberRows(e.sheetId)?"Success":"InvalidFreezeQuantity"}checkColFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberCols(e.sheetId)?"Success":"InvalidFreezeQuantity"}checkRowFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.top<e.quantity&&e.quantity<=o.bottom)return"MergeOverlap";return"Success"}checkColFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.left<e.quantity&&e.quantity<=o.right)return"MergeOverlap";return"Success"}isRenameAllowed(e){return e.name&&e.name.trim().toLowerCase()?this.checkSheetName(e):"MissingSheetName"}renameSheet(e,t){const o=e.name;this.history.update("sheets",e.id,"name",t.trim());const s=Object.assign({},this.sheetIdsMapName);delete s[o],s[t]=e.id,this.history.update("sheetIdsMapName",s)}hideSheet(e){this.history.update("sheets",e,"isVisible",!1)}showSheet(e){this.history.update("sheets",e,"isVisible",!0)}duplicateSheet(e,t,o){const s=ze(this.getSheet(e));s.id=t,s.name=o;for(let e=0;e<=s.numberOfCols;e++)for(let t=0;t<=s.rows.length;t++)s.rows[t]&&(s.rows[t].cells[e]=void 0);const i=this.orderedSheetIds.slice(),n=i.indexOf(e);i.splice(n+1,0,s.id),this.history.update("orderedSheetIds",i),this.history.update("sheets",Object.assign({},this.sheets,{[s.id]:s}));for(const t of Object.values(this.getters.getCells(e))){const{col:e,row:o}=this.getCellPosition(t.id);this.dispatch("UPDATE_CELL",{sheetId:s.id,col:e,row:o,content:t.content,format:t.format,style:t.style})}const r=Object.assign({},this.sheetIdsMapName);r[s.name]=s.id,this.history.update("sheetIdsMapName",r)}getDuplicateSheetName(e){return ia(e,this.orderedSheetIds.map(this.getSheetName.bind(this)))}deleteSheet(e){const t=e.name,o=Object.assign({},this.sheets);delete o[e.id],this.history.update("sheets",o);const s=this.orderedSheetIds.slice(),i=s.indexOf(e.id);s.splice(i,1),this.history.update("orderedSheetIds",s);const n=Object.assign({},this.sheetIdsMapName);delete n[t],this.history.update("sheetIdsMapName",n)}removeColumns(e,t){t.sort(((e,t)=>t-e));for(let o of t)this.moveCellOnColumnsDeletion(e,o);const o=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",o-t.length);const s=t.filter((t=>t<e.panes.xSplit)).length;s&&this.setPaneDivisions(e.id,e.panes.xSplit-s,"COL")}removeRows(e,t){t.sort(((e,t)=>t-e));for(let o of Ye(t)){const t=o[o.length-1],s=o[0];this.moveCellOnRowsDeletion(e,t,s),this.updateRowsStructureOnDeletion(e,t,s)}const o=t.filter((t=>t<e.panes.ySplit)).length;o&&this.setPaneDivisions(e.id,e.panes.ySplit-o,"ROW")}addColumns(e,t,o,s){const i="before"===o?t:t+1;this.moveCellsOnAddition(e,i,s,"columns");const n=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",n+s),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+s,"COL")}addRows(e,t,o,s){const i="before"===o?t:t+1;this.addEmptyRows(e,s),this.moveCellsOnAddition(e,i,s,"rows"),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+s,"ROW")}moveCellOnColumnsDeletion(e,t){this.dispatch("CLEAR_CELLS",{sheetId:e.id,target:[{left:t,top:0,right:t,bottom:e.rows.length-1}]});for(let o=0;o<e.rows.length;o++){const s=e.rows[o];for(let i in s.cells){const n=Number(i),r=s.cells[i];r&&n>t&&this.setNewPosition(r,e.id,n-1,o)}}}moveCellsOnAddition(e,t,o,s){const i=[];for(let n=0;n<e.rows.length;n++){const r=e.rows[n];if("rows"!==s||n>=t)for(let a in r.cells){const l=Number(a),c=r.cells[a];c&&("rows"===s||l>=t)&&i.push({sheetId:e.id,cellId:c,col:l+("columns"===s?o:0),row:n+("rows"===s?o:0),type:"UPDATE_CELL_POSITION"})}}for(let e of i.reverse())this.updateCellPosition(e)}moveCellOnRowsDeletion(e,t,o){this.dispatch("CLEAR_CELLS",{sheetId:e.id,target:[{left:0,top:t,right:this.getters.getNumberCols(e.id),bottom:o}]});const s=o-t+1;for(let t=0;t<e.rows.length;t++){const i=e.rows[t];if(t>o)for(let o in i.cells){const n=Number(o),r=i.cells[o];r&&this.setNewPosition(r,e.id,n,t-s)}}}updateRowsStructureOnDeletion(e,t,o){const s=[],i=e.rows.map((e=>e.cells)).reverse();for(let n in e.rows){const e=Number(n);e>=t&&e<=o||s.push({cells:i.pop()})}this.history.update("sheets",e.id,"rows",s)}addEmptyRows(e,t){const o=e.rows.slice();for(let e=0;e<t;e++)o.push({cells:{}});this.history.update("sheets",e.id,"rows",o)}getImportedSheetSize(e){const t=Object.keys(e.cells).map(To);let o=e.rowNumber,s=e.colNumber;for(let{col:e,row:i}of t)o=Math.max(o,i+1),s=Math.max(s,e+1);return{rowNumber:o,colNumber:s}}checkSheetExists(e){return"CREATE_SHEET"!==e.type&&"sheetId"in e&&void 0===this.sheets[e.sheetId]?"InvalidSheetId":"CREATE_SHEET"===e.type&&void 0!==this.sheets[e.sheetId]?"DuplicatedSheetId":"Success"}checkZonesAreInSheet(e){return"sheetId"in e?"ranges"in e&&e.ranges.some((e=>""!==e._sheetId&&!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkZonesExistInSheet(e.sheetId,this.getCommandZones(e)):"Success"}}).add("header grouping",class extends RP{static getters=["getHeaderGroups","getGroupsLayers","getVisibleGroupLayers","getHeaderGroup","getHeaderGroupsInZone","isGroupFolded","isRowFolded","isColFolded"];groups={};allowDispatch(e){switch(e.type){case"GROUP_HEADERS":{const{start:t,end:o,sheetId:s}=e;if(!this.getters.tryGetSheet(s))return"InvalidSheetId";if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,o]))return"InvalidHeaderGroupStartEnd";if(t>o)return"InvalidHeaderGroupStartEnd";if(this.findGroupWithStartEnd(e.sheetId,e.dimension,t,o))return"HeaderGroupAlreadyExists";break}case"UNGROUP_HEADERS":{const{start:t,end:o,sheetId:s}=e;if(!this.getters.tryGetSheet(s))return"InvalidSheetId";if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,o]))return"InvalidHeaderGroupStartEnd";if(t>o)return"InvalidHeaderGroupStartEnd";break}case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUP":if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);if(!t)return"UnknownHeaderGroup";if(je(0,this.getters.getNumberHeaders(e.sheetId,e.dimension)).every((o=>o>=t.start&&o<=t.end||this.getters.isHeaderHiddenByUser(e.sheetId,e.dimension,o))))return"NotEnoughElements"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("groups",e.sheetId,{ROW:[],COL:[]});break;case"GROUP_HEADERS":this.groupHeaders(e.sheetId,e.dimension,e.start,e.end);break;case"UNGROUP_HEADERS":this.unGroupHeaders(e.sheetId,e.dimension,e.start,e.end);break;case"DUPLICATE_SHEET":{const t=ze(this.groups[e.sheetId]);this.history.update("groups",e.sheetIdTo,t);break}case"DELETE_SHEET":{const t={...this.groups};delete t[e.sheetId],this.history.update("groups",t);break}case"ADD_COLUMNS_ROWS":const t=mt(e.position,e.base);this.moveGroupsOnHeaderInsertion(e.sheetId,e.dimension,t,e.quantity);break;case"REMOVE_COLUMNS_ROWS":this.moveGroupsOnHeaderDeletion(e.sheetId,e.dimension,e.elements);break;case"UNFOLD_HEADER_GROUP":{const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.unfoldHeaderGroup(e.sheetId,e.dimension,t);break}case"FOLD_HEADER_GROUP":{const t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.foldHeaderGroup(e.sheetId,e.dimension,t);break}case"UNFOLD_ALL_HEADER_GROUPS":{const t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(const o of t)this.unfoldHeaderGroup(e.sheetId,e.dimension,o);break}case"FOLD_ALL_HEADER_GROUPS":{const t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(const o of t)this.foldHeaderGroup(e.sheetId,e.dimension,o);break}case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":{const t="UNFOLD_HEADER_GROUPS_IN_ZONE"===e.type?"unfold":"fold",o=this.getGroupsLayers(e.sheetId,e.dimension);"fold"===t&&o.reverse();const s=o.flat(),i="ROW"===e.dimension?e.zone.top:e.zone.left,n="ROW"===e.dimension?e.zone.bottom:e.zone.right,r=new Set;for(let e=i;e<=n;e++){const o=s.filter((t=>t.start-1<=e&&e<=t.end));for(const e of o)if(!("fold"===t&&e.isFolded||"unfold"===t&&!e.isFolded)){r.add(e);break}}for(const o of r)"unfold"===t?this.unfoldHeaderGroup(e.sheetId,e.dimension,o):this.foldHeaderGroup(e.sheetId,e.dimension,o);break}}}getHeaderGroups(e,t){return this.groups[e][t]}getHeaderGroup(e,t,o,s){return this.getHeaderGroups(e,t).find((e=>e.start===o&&e.end===s))}getHeaderGroupsInZone(e,t,o){return this.getHeaderGroups(e,t).filter((e=>{const s="ROW"===t?o.top:o.left,i="ROW"===t?o.bottom:o.right;return this.doGroupOverlap(e,s,i)}))}getGroupsLayers(e,t){const o=this.getHeaderGroups(e,t);return this.bricksFallingAlgorithm(o,0,0)}getVisibleGroupLayers(e,t){const o=this.getGroupsLayers(e,t);for(const s of o)for(let o=s.length-1;o>=0;o--){const i=s[o];if(0===i.start)continue;je(i.start-1,i.end+1).every((o=>this.getters.isHeaderHiddenByUser(e,t,o)))&&s.splice(o,1)}return o.filter((e=>e.length>0))}isGroupFolded(e,t,o,s){return this.getHeaderGroup(e,t,o,s)?.isFolded||!1}isRowFolded(e,t){return this.getters.getHeaderGroups(e,"ROW").some((e=>e.start<=t&&t<=e.end&&e.isFolded))}isColFolded(e,t){return this.getters.getHeaderGroups(e,"COL").some((e=>e.start<=t&&t<=e.end&&e.isFolded))}getGroupId(e){return`${e.start}-${e.end}}`}bricksFallingAlgorithm(e,t,o,s=0){const i={};for(const t of e)i[this.getGroupId(t)]=t.isFolded;const n={};for(const t of e)for(let e=t.start;e<=t.end;e++)n[e]=n[e]?n[e]+1:1;for(let e=t;e<=o;e++)n[e]=n[e]?n[e]+s:s;const r=Math.max(...Object.values(n),0),a=Array.from({length:r},(()=>[])),l=Math.max(o,...e.map((e=>e.end)));for(let o=Math.min(t,...e.map((e=>e.start)));o<=l;o++){const e=n[o]||0;for(let t=0;t<e;t++){const e=a[t].at(-1);if(e&&It([e.end,o]))e.end++;else{const e={start:o,end:o};a[t].push(e)}}}for(const e of a)for(const t of e)t.isFolded=i[this.getGroupId(t)];return a}groupHeaders(e,t,o,s){const i=this.getHeaderGroups(e,t),n=this.bricksFallingAlgorithm(i,o,s,1).flat();this.history.update("groups",e,t,this.removeDuplicateGroups(n))}unGroupHeaders(e,t,o,s){const i=this.getHeaderGroups(e,t),n=this.bricksFallingAlgorithm(i,o,s,-1).flat();this.history.update("groups",e,t,this.removeDuplicateGroups(n))}moveGroupsOnHeaderInsertion(e,t,o,s){const i=this.groups[e][t];for(let n=0;n<i.length;n++){const r=i[n],[a,l]=ta(o,s,[r.start,r.end]);a===r.start&&l===r.end||this.history.update("groups",e,t,n,{...r,start:a,end:l})}}moveGroupsOnHeaderDeletion(e,t,o){const s=this.getHeaderGroups(e,t),i=[];for(const e of s){const t=oa(o,je(e.start,e.end+1));0!==t.length&&i.push({...e,start:Math.min(...t),end:Math.max(...t)})}this.history.update("groups",e,t,this.bricksFallingAlgorithm(i,0,0).flat())}doGroupOverlap(e,t,o){return e.start<=o&&e.end>=t}removeDuplicateGroups(e){const t={};for(const o of e)t[this.getGroupId(o)]=o;return Object.values(t)}findGroupWithStartEnd(e,t,o,s){return this.getHeaderGroups(e,t).find((e=>e.start===o&&e.end===s))}foldHeaderGroup(e,t,o){const s=this.getGroupIndex(e,t,o.start,o.end);if(void 0===s)return;this.history.update("groups",e,t,s,"isFolded",!0);const i=this.getters.getHeaderGroups(e,t);for(let s=0;s<i.length;s++){const n=i[s];n.start===o.start&&n.end<=o.end&&this.history.update("groups",e,t,s,"isFolded",!0)}}unfoldHeaderGroup(e,t,o){const s=this.getGroupIndex(e,t,o.start,o.end);if(void 0===s)return;this.history.update("groups",e,t,s,"isFolded",!1);const i=this.getters.getHeaderGroups(e,t);for(let s=0;s<i.length;s++){const n=i[s];n.start===o.start&&n.end>=o.end&&this.history.update("groups",e,t,s,"isFolded",!1)}}getGroupIndex(e,t,o,s){const i=this.groups[e][t].findIndex((e=>e.start===o&&e.end===s));return-1===i?void 0:i}import(e){for(const t of e.sheets)if(this.groups[t.id]={ROW:[],COL:[]},t.headerGroups)for(const e of["ROW","COL"])for(const o of t.headerGroups[e]||[])this.groups[t.id][e].push({...o})}export(e){for(const t of e.sheets)t.headerGroups=this.groups[t.id]}exportForExcel(e){for(const t of e.sheets)for(const e of["ROW","COL"]){const o=this.getGroupsLayers(t.id,e);for(let s=0;s<o.length;s++){const i=o[s];for(const o of i){for(let i=o.start;i<=o.end;i++){const n=TC(t,e,i);n.outlineLevel=s+1,o.isFolded&&(n.isHidden=!0)}if(o.isFolded){TC(t,e,o.end+1).collapsed=!0}}}}}}).add("header visibility",class extends RP{static getters=["checkElementsIncludeAllVisibleHeaders","getHiddenColsGroups","getHiddenRowsGroups","isHeaderHiddenByUser","isRowHiddenByUser","isColHiddenByUser"];hiddenHeaders={};allowDispatch(e){switch(e.type){case"HIDE_COLUMNS_ROWS":{if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";const t="COL"===e.dimension?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),o="COL"===e.dimension?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return new Set((t||[]).flat().concat(e.elements)).size>=o?"TooManyHiddenElements":Ft(e.elements)<0||Ot(e.elements)>o?"InvalidHeaderIndex":"Success"}case"REMOVE_COLUMNS_ROWS":return this.getters.tryGetSheet(e.sheetId)?this.checkElementsIncludeAllVisibleHeaders(e.sheetId,e.dimension,e.elements)?"NotEnoughElements":"Success":"InvalidSheetId"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":const t={COL:Array(this.getters.getNumberCols(e.sheetId)).fill(!1),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(!1)};this.history.update("hiddenHeaders",e.sheetId,t);break;case"DUPLICATE_SHEET":this.history.update("hiddenHeaders",e.sheetIdTo,ze(this.hiddenHeaders[e.sheetId]));break;case"DELETE_SHEET":this.history.update("hiddenHeaders",e.sheetId,void 0);break;case"REMOVE_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]],o=mt(e.position,e.base);t.splice(o,0,...Array(e.quantity).fill(!1)),this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"HIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!0);break;case"UNHIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!1)}}checkElementsIncludeAllVisibleHeaders(e,t,o){return bt(o,this.getAllVisibleHeaders(e,t))}isHeaderHiddenByUser(e,t,o){return"COL"===t?this.isColHiddenByUser(e,o):this.isRowHiddenByUser(e,o)}isRowHiddenByUser(e,t){return this.hiddenHeaders[e].ROW[t]||this.getters.isRowFolded(e,t)}isColHiddenByUser(e,t){return this.hiddenHeaders[e].COL[t]||this.getters.isColFolded(e,t)}getHiddenColsGroups(e){const t=[[]],o=this.hiddenHeaders[e].COL;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getHiddenRowsGroups(e){const t=[[]],o=this.hiddenHeaders[e].ROW;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getAllVisibleHeaders(e,t){const o=je(0,this.getters.getNumberHeaders(e,t)),s=[];return this.getters.getHeaderGroups(e,t).forEach((e=>{e.isFolded&&s.push(...je(e.start,e.end+1))})),o.filter((o=>!this.hiddenHeaders[e][t][o]&&!s.includes(o)))}import(e){for(let t of e.sheets){this.hiddenHeaders[t.id]={COL:[],ROW:[]};for(let e=0;e<t.rowNumber;e++)this.hiddenHeaders[t.id].ROW[e]=Boolean(t.rows[e]?.isHidden);for(let e=0;e<t.colNumber;e++)this.hiddenHeaders[t.id].COL[e]=Boolean(t.cols[e]?.isHidden)}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(let e=0;e<this.getters.getNumberRows(o.id);e++)(t||this.hiddenHeaders[o.id].ROW[e])&&(void 0===o.rows[e]&&(o.rows[e]={}),o.rows[e].isHidden||=this.hiddenHeaders[o.id].ROW[e]);void 0===o.cols&&(o.cols={});for(let e=0;e<this.getters.getNumberCols(o.id);e++)(t||this.hiddenHeaders[o.id].COL[e])&&(void 0===o.cols[e]&&(o.cols[e]={}),o.cols[e].isHidden||=this.hiddenHeaders[o.id].COL[e])}}}).add("tables",class extends RP{static getters=["getCoreTable","getCoreTables","getCoreTableMatchingTopLeft"];tables={};nextTableId=1;adaptRanges(e,t){const o=t?[t]:this.getters.getSheetIds();for(const t of o)for(const o of this.getCoreTables(t))this.applyRangeChangeOnTable(t,o,e)}allowDispatch(e){switch(e.type){case"CREATE_TABLE":if(e.ranges.some((t=>!this.getters.tryGetSheet(t._sheetId)||t._sheetId!==e.sheetId)))return"InvalidSheetId";const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone));return ps(t)?this.checkValidations(e,(e=>this.getTablesOverlappingZones(e.sheetId,t).length?"TableOverlap":"Success"),(e=>this.checkTableConfigUpdateIsValid(e.config))):"NonContinuousTargets";case"UPDATE_TABLE":return this.getCoreTableMatchingTopLeft(e.sheetId,e.zone)?this.checkValidations(e,this.checkUpdatedTableZoneIsValid,(e=>this.checkTableConfigUpdateIsValid(e.config))):"TableNotFound";case"ADD_MERGE":for(const t of this.getCoreTables(e.sheetId)){const o=t.range.zone;for(const t of e.target)if(es(o,t))return"MergeInTable"}}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("tables",e.sheetId,{});break;case"DELETE_SHEET":{const t={...this.tables};delete t[e.sheetId],this.history.update("tables",t);break}case"DUPLICATE_SHEET":{const t={};for(const o of this.getCoreTables(e.sheetId))t[o.id]="dynamic"===o.type?this.copyDynamicTableForSheet(e.sheetIdTo,o):this.copyStaticTableForSheet(e.sheetIdTo,o);this.history.update("tables",e.sheetIdTo,t);break}case"CREATE_TABLE":{const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e))),o=this.getters.getRangesUnion(t),s=this.getters.getMergesInZone(e.sheetId,o.zone);s.length&&this.dispatch("REMOVE_MERGE",{sheetId:e.sheetId,target:s});const i=this.consumeNextId(),n=e.config||Aw,r="dynamic"===e.tableType?this.createDynamicTable(i,o,n):this.createStaticTable(i,e.tableType,o,n);this.history.update("tables",e.sheetId,r.id,r);break}case"REMOVE_TABLE":{const t={};for(const o of this.getCoreTables(e.sheetId))e.target.every((e=>!Jo(o.range.zone,e)))&&(t[o.id]=o);this.history.update("tables",e.sheetId,t);break}case"UPDATE_TABLE":this.updateTable(e);break;case"UPDATE_CELL":{const t=e.sheetId;for(const o of this.getCoreTables(t)){if("dynamic"===o.type)continue;const s=this.canUpdateCellCmdExtendTable(e,o);"down"===s?this.extendTableDown(t,o):"right"===s&&this.extendTableRight(t,o)}break}case"DELETE_CONTENT":{const t={...this.tables[e.sheetId]};for(const o in t){const s=t[o];s&&e.target.some((e=>os(s.range.zone,e)))&&this.dispatch("REMOVE_TABLE",{sheetId:e.sheetId,target:[s.range.zone]})}break}}}getCoreTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(lt):[]}getCoreTable({sheetId:e,col:t,row:o}){return this.getCoreTables(e).find((e=>ts(t,o,e.range.zone)))}getTablesOverlappingZones(e,t){return this.getCoreTables(e).filter((e=>t.some((t=>es(e.range.zone,t)))))}extendTableDown(e,t){const o=this.getters.extendRange(t.range,"ROW",1);this.history.update("tables",e,t.id,this.updateStaticTable(t,o))}extendTableRight(e,t){const o=this.getters.extendRange(t.range,"COL",1);this.history.update("tables",e,t.id,this.updateStaticTable(t,o))}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:o,row:s},i){if(!e)return"none";const n=i.range.zone;let r="none";if(n.bottom+1===s&&o>=n.left&&o<=n.right?r="down":n.right+1===o&&s>=n.top&&s<=n.bottom&&(r="right"),"none"===r)return"none";const a="down"===r?{...n,bottom:n.bottom+1,top:n.bottom+1}:{...n,right:n.right+1,left:n.right+1};for(let e=a.top;e<=a.bottom;e++)for(let o=a.left;o<=a.right;o++){const s={sheetId:t,col:o,row:e},i=this.getters.getCell(s)?.content;if(i||this.getters.isInMerge(s)||this.getTablesOverlappingZones(t,[hs(s)]).length)return"none"}return r}getCoreTableMatchingTopLeft(e,t){for(const o of this.getCoreTables(e)){const e=o.range.zone;if(e.left===t.left&&e.top===t.top)return o}}checkUpdatedTableZoneIsValid(e){if(!e.newTableRange)return"Success";const t=this.getters.getRangeFromRangeData(e.newTableRange).zone,o=this.getters.checkZonesExistInSheet(e.sheetId,[t]);if("Success"!==o)return o;const s=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!s)return"TableNotFound";return this.getTablesOverlappingZones(e.sheetId,[t]).filter((e=>e.id!==s.id)).length?"TableOverlap":"Success"}checkTableConfigUpdateIsValid(e){return e&&(void 0!==e.numberOfHeaders&&e.numberOfHeaders<0||e.hasFilters&&0===e.numberOfHeaders)?"InvalidTableConfig":"Success"}createStaticTable(e,t,o,s,i){const n=o.zone;if(!i){i=[];for(const e of je(n.left,n.right+1)){const t={...n,left:e,right:e},r=this.consumeNextId();i.push(this.createFilterFromZone(r,o.sheetId,t,s))}}return{id:e,range:o,filters:i,config:s,type:t}}createDynamicTable(e,t,o){const s=ds(t.zone);return{id:e,range:this.getters.getRangeFromZone(t.sheetId,s),config:o,type:"dynamic"}}updateTable(e){const t=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return;const o=e.newTableRange?this.getters.getRangeFromRangeData(e.newTableRange):void 0;if(o){const t=this.getters.getMergesInZone(e.sheetId,o.zone);this.dispatch("REMOVE_MERGE",{sheetId:e.sheetId,target:t})}const s=o||t.range,i=this.updateTableConfig(e.config,t.config),n=e.tableType??t.type;if("dynamic"===n&&"dynamic"!==t.type||"dynamic"!==n&&"dynamic"===t.type){const o="dynamic"===n?this.createDynamicTable(t.id,s,i):this.createStaticTable(t.id,n,s,i);this.history.update("tables",e.sheetId,t.id,o)}else{const o="dynamic"===t.type?this.updateDynamicTable(t,s,i):this.updateStaticTable(t,s,i,n);this.history.update("tables",e.sheetId,t.id,o)}}updateStaticTable(e,t,o,s=e.type){if("dynamic"===s)throw new Error("Cannot use updateStaticTable to update a dynamic table");const i=t||e.range,n=i.zone,r=this.updateTableConfig(o,e.config),a=r||e.config,l=[];if(t||r&&"numberOfHeaders"in r)for(const t of je(n.left,n.right+1)){const o=n.top===e.range.zone.top?e.filters.find((e=>e.col===t)):void 0,s={...n,left:t,right:t},r=o?.id||this.consumeNextId();l.push(this.createFilterFromZone(r,i.sheetId,s,a))}return{...e,range:i,config:a,filters:l.length?l:e.filters,type:s}}updateDynamicTable(e,t,o){const s=t?this.getters.getRangeFromZone(t.sheetId,ds(t.zone)):e.range,i=o||e.config;return{...e,range:s,config:i}}updateTableConfig(e,t){if(!e)return t;const o={...t,...e};return 0===e.numberOfHeaders?o.hasFilters=!1:!0===e.hasFilters&&(o.numberOfHeaders||=1),o}createFilterFromZone(e,t,o,s){return iM(e,this.getters.getRangeFromZone(t,o),s,this.getters.getRangeFromZone)}copyStaticTableForSheet(e,t){const o=this.getters.getRangeFromZone(e,t.range.zone),s=t.filters.map((o=>{const s=this.getters.getRangeFromZone(e,o.rangeWithHeaders.zone);return iM(o.id,s,t.config,this.getters.getRangeFromZone)}));return{id:t.id,range:o,filters:s,config:ze(t.config),type:t.type}}copyDynamicTableForSheet(e,t){const o=this.getters.getRangeFromZone(e,t.range.zone);return{id:t.id,range:o,config:ze(t.config),type:"dynamic"}}applyRangeChangeOnTable(e,t,o){const s=o(t.range);let i;switch(s.changeType){case"REMOVE":return void this.history.update("tables",e,t.id,void 0);case"NONE":return;default:i=s.range}if("dynamic"===t.type){const o=this.updateDynamicTable(t,i);return void this.history.update("tables",e,t.id,o)}const n=[];for(const e of t.filters){const s=o(e.rangeWithHeaders);switch(s.changeType){case"REMOVE":continue;case"NONE":n.push(e);break;default:const o=s.range,i=iM(e.id,o,t.config,this.getters.getRangeFromZone);n.push(i)}}const r=i.zone;if(n.length<ss(r).numberOfCols){for(let o=r.left;o<=r.right;o++)if(!n.find((e=>e.col===o))){const s=this.consumeNextId(),i={...r,left:o,right:o};n.push(this.createFilterFromZone(s,e,i,t.config))}n.sort(((e,t)=>e.col-t.col))}const a=this.createStaticTable(t.id,t.type,i,t.config,n);this.history.update("tables",e,t.id,a)}consumeNextId(){const e=`${this.nextTableId}`;return this.history.update("nextTableId",this.nextTableId+1),e}import(e){for(const t of e.sheets)for(const e of t.tables||[]){const o=this.consumeNextId(),s=e.config||Aw,i=this.getters.getRangeFromSheetXC(t.id,e.range),n=e.type||"static",r="dynamic"===n?this.createDynamicTable(o,i,s):this.createStaticTable(o,n,i,s);this.history.update("tables",t.id,r.id,r)}}export(e){for(const t of e.sheets)for(const e of this.getCoreTables(t.id)){const o={range:qo(e.range.zone),type:e.type};ft(e.config,Aw)||(o.config=e.config),t.tables.push(o)}}exportForExcel(e){for(const t of e.sheets)for(const e of this.getCoreTables(t.id)){const o=qo(e.range.zone);t.tables.push({range:o,filters:[],config:e.config})}}}).add("dataValidation",class extends RP{static getters=["cellHasListDataValidationIcon","getDataValidationRule","getDataValidationRules","getValidationRuleForCell"];rules={};adaptRanges(e,t){const o=t?[t]:Object.keys(this.rules);for(const t of o)this.loopThroughRangesOfSheet(t,e)}loopThroughRangesOfSheet(e,t){for(let o=this.rules[e].length-1;o>=0;o--){const s=this.rules[e][o];for(let i=s.ranges.length-1;i>=0;i--){const n=t(s.ranges[i]);switch(n.changeType){case"REMOVE":if(1===s.ranges.length)this.removeDataValidationRule(e,s.id);else{const t=s.ranges.slice();t.splice(i,1),this.history.update("rules",e,o,"ranges",t)}break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("rules",e,o,"ranges",i,n.range)}}}}allowDispatch(e){switch(e.type){case"ADD_DATA_VALIDATION_RULE":return this.getters.tryGetSheet(e.sheetId)?e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkValidations(e,this.chainValidations(this.checkEmptyRange,this.checkValidRange,this.checkCriterionTypeIsValid,this.checkCriterionHasValidNumberOfValues,this.checkCriterionValuesAreValid)):"InvalidSheetId";case"REMOVE_DATA_VALIDATION_RULE":if(!this.getters.tryGetSheet(e.sheetId))return"InvalidSheetId";if(!this.rules[e.sheetId].find((t=>t.id===e.id)))return"UnknownDataValidationRule"}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("rules",e.sheetId,[]);break;case"DUPLICATE_SHEET":{const t=ze(this.rules[e.sheetId]).map((t=>({...t,ranges:t.ranges.map((t=>Yr(e.sheetId,e.sheetIdTo,t)))})));this.history.update("rules",e.sheetIdTo,t);break}case"DELETE_SHEET":{const t={...this.rules};delete t[e.sheetId],this.history.update("rules",t);break}case"REMOVE_DATA_VALIDATION_RULE":this.removeDataValidationRule(e.sheetId,e.id);break;case"ADD_DATA_VALIDATION_RULE":{const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e)));this.addDataValidationRule(e.sheetId,{...e.rule,ranges:t});break}case"DELETE_CONTENT":{const t=_o(e.target),o=e.sheetId;for(const e of t)for(let t=e.top;t<=e.bottom;t++)for(let s=e.left;s<=e.right;s++){const e=this.getValidationRuleForCell({sheetId:o,col:s,row:t});if(e&&("isBoolean"===e.criterion.type||"isValueInList"===e.criterion.type&&!this.getters.getCell({sheetId:o,col:s,row:t})?.content)){const e=this.rules[o],i=[this.getters.getRangeFromSheetXC(o,Ao(s,t))],n=this.removeRangesFromRules(o,i,e);this.history.update("rules",o,n)}}}}}getDataValidationRules(e){return this.rules[e]}getDataValidationRule(e,t){return this.rules[e].find((e=>e.id===t))}getValidationRuleForCell({sheetId:e,col:t,row:o}){if(this.rules[e])for(const s of this.rules[e])for(const e of s.ranges)if(ts(t,o,e.zone))return s}cellHasListDataValidationIcon(e){const t=this.getValidationRuleForCell(e);return!!t&&(("isValueInList"===t.criterion.type||"isValueInRange"===t.criterion.type)&&"arrow"===t.criterion.displayStyle)}addDataValidationRule(e,t){const o=this.rules[e];"isBoolean"===t.criterion.type?this.setCenterStyleToBooleanCells(t):"isValueInList"===t.criterion.type&&(t.criterion.values=Array.from(new Set(t.criterion.values)));const s=this.removeRangesFromRules(e,t.ranges,o),i=s.findIndex((e=>e.id===t.id));-1!==i?(s[i]=t,this.history.update("rules",e,s)):this.history.update("rules",e,[...s,t])}removeRangesFromRules(e,t,o){o=ze(o);for(const e of o)e.ranges=this.getters.recomputeRanges(e.ranges,t);return o.filter((e=>e.ranges.length>0))}removeDataValidationRule(e,t){const o=this.rules[e].filter((e=>e.id!==t));this.history.update("rules",e,o)}setCenterStyleToBooleanCells(e){for(const t of Jr(e.ranges)){const e=this.getters.getCell(t),o={...e?.style,align:e?.style?.align??"center",verticalAlign:e?.style?.verticalAlign??"middle"};this.dispatch("UPDATE_CELL",{...t,style:o})}}checkEmptyRange(e){return e.ranges.length?"Success":"EmptyRange"}import(e){for(const t of e.sheets)if(this.rules[t.id]=[],t.dataValidationRules)for(const e of t.dataValidationRules)this.rules[t.id].push({...e,ranges:e.ranges.map((e=>this.getters.getRangeFromSheetXC(t.id,e)))})}export(e){if(e.sheets)for(const t of e.sheets){t.dataValidationRules=[];for(const e of this.rules[t.id])t.dataValidationRules.push({...e,ranges:e.ranges.map((e=>this.getters.getRangeString(e,t.id)))})}}exportForExcel(e){if(e.sheets)for(const t of e.sheets){t.dataValidationRules=[];for(const e of this.rules[t.id]){const o={...ze(e),ranges:e.ranges.map((e=>this.getters.getRangeString(e,t.id,{useBoundedReference:!0})))};"isValueInRange"===e.criterion.type&&(o.criterion.values=e.criterion.values.map((e=>{const o=this.getters.getRangeFromSheetXC(t.id,e);return this.getters.getRangeString(o,t.id,{useBoundedReference:!0,useFixedReference:!0})}))),t.dataValidationRules.push(o)}}}checkCriterionTypeIsValid(e){return ZO.contains(e.rule.criterion.type)?"Success":"UnknownDataValidationCriterionType"}checkCriterionHasValidNumberOfValues(e){const t=e.rule.criterion,o=ZO.get(t.type).numberOfValues(t);return void 0!==o&&t.values.length!==o?"InvalidNumberOfCriterionValues":"Success"}checkCriterionValuesAreValid(e){const t=e.rule.criterion,o=ZO.get(t.type);return t.values.some((e=>"onlyFormulas"===o.allowedValues&&!e.startsWith("=")||(e.startsWith("=")?"onlyLiterals"===o.allowedValues||VS(e).isBadExpression:!o.isCriterionValueValid(e))))?"InvalidDataValidationCriterionValue":"Success"}checkValidRange(e){const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e))),o=t.map((t=>this.getters.getRangeString(t,e.sheetId)));return o.some((e=>!this.getters.isRangeValid(e)))?"InvalidRange":"Success"}}).add("cell",class extends RP{static getters=["zoneToXC","getCells","getTranslatedCellFormula","getCellStyle","getCellById","getFormulaString","getFormulaMovedInSheet"];nextId=1;cells={};adaptRanges(e,t){for(const o of Object.keys(this.cells))for(const s of Object.values(this.cells[o]||{}))if(s.isFormula)for(const i of s.compiledFormula.dependencies)if(!t||i.sheetId===t){const t=e(i);"NONE"!==t.changeType&&this.history.update("cells",o,s.id,"compiledFormula","dependencies",s.compiledFormula.dependencies.indexOf(i),t.range)}}allowDispatch(e){switch(e.type){case"UPDATE_CELL":return this.checkValidations(e,this.checkCellOutOfSheet,this.checkUselessUpdateCell);case"CLEAR_CELL":return this.checkValidations(e,this.checkCellOutOfSheet,this.checkUselessClearCell);case"UPDATE_CELL_POSITION":return!e.cellId||this.cells[e.sheetId]?.[e.cellId]?"Success":"InvalidCellId";default:return"Success"}}handle(e){switch(e.type){case"SET_FORMATTING":"style"in e&&this.setStyle(e.sheetId,e.target,e.style),"format"in e&&void 0!==e.format&&this.setFormatter(e.sheetId,e.target,e.format);break;case"CLEAR_FORMATTING":this.clearFormatting(e.sheetId,e.target);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumnsRows(e,this.copyColumnStyle.bind(this)):this.handleAddColumnsRows(e,this.copyRowStyle.bind(this));break;case"UPDATE_CELL":this.updateCell(e.sheetId,e.col,e.row,e);break;case"CLEAR_CELL":this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col,row:e.row,content:"",style:null,format:""});break;case"CLEAR_CELLS":this.clearCells(e.sheetId,e.target);break;case"DELETE_CONTENT":this.clearZones(e.sheetId,e.target);break;case"DELETE_SHEET":this.history.update("cells",e.sheetId,void 0)}}clearZones(e,t){for(let o of _o(t))for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++){const o=this.getters.getCell({sheetId:e,col:t,row:s});(o?.isFormula||o?.content)&&this.dispatch("UPDATE_CELL",{sheetId:e,content:"",col:t,row:s})}}setFormatter(e,t,o){for(let s of _o(t))for(let t=s.top;t<=s.bottom;t++)for(let i=s.left;i<=s.right;i++)this.dispatch("UPDATE_CELL",{sheetId:e,col:i,row:t,format:o})}clearFormatting(e,t){for(let o of _o(t))for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,style:null,format:""})}clearCells(e,t){for(const o of t)for(let t=o.left;t<=o.right;t++)for(let s=o.top;s<=o.bottom;s++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,content:"",style:null,format:""})}handleAddColumnsRows(e,t){let o,s;"before"===e.position?(o=je(e.base,e.base+e.quantity),s=e.base+e.quantity):(o=je(e.base+1,e.base+e.quantity+1),s=e.base),t(e.sheetId,s,o)}import(e){for(let t of e.sheets){const o=t.id,s=new $_;for(const e in t.cells)if(t.cells[e]){const{col:o,row:i}=To(e),n={sheetId:t.id,col:o,row:i};s.set(n,{content:t.cells[e]})}for(const[e,o]of[["style",t.styles],["format",t.formats]])for(const[i,n]of ys(t.id,o)){const t=s.get(i);t?t[e]=n:s.set(i,{[e]:n})}for(const i of s.keysForSheet(o)){const o=s.get(i);if(o?.content||o?.format||o?.style){const s=this.importCell(t.id,o?.content,o?.style?e.styles[o?.style]:void 0,o?.format?e.formats[o?.format]:void 0);this.history.update("cells",t.id,s.id,s),this.dispatch("UPDATE_CELL_POSITION",{cellId:s.id,...i})}}}}export(e){const t={},o={};for(let s of e.sheets){const e=[],i=[],n={},r=Object.keys(this.cells[s.id]||{}).map((e=>this.getters.getCellPosition(e))).sort(((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col));for(const s of r){const r=this.getters.getCell(s),a=Ao(s.col,s.row),l=this.removeDefaultStyleValues(r.style);if(Object.keys(l).length){const o=bs(l,t);e[o]??=[],e[o].push(s)}if(r.format){const e=bs(r.format,o);i[e]??=[],i[e].push(s)}r.content&&(n[a]=r.content)}s.styles=Ss(e),s.formats=Ss(i),s.cells=n}e.styles=t,e.formats=o}importCell(e,t,o,s){const i=this.getNextUid();return this.createCell(i,t||"",s,o,e)}exportForExcel(e){this.export(e);const t=[];for(const o in e.formats||[])wr(e.formats[o])||(t.push(Number(o)),delete e.formats[o]);if(t.length)for(const o of e.sheets)for(const e in o.formats){const s=o.formats[e];s&&t.includes(s)&&delete o.formats[e]}}removeDefaultStyleValues(e){const t={...e};for(const e in ue)t[e]===ue[e]&&delete t[e];return t}getCells(e){return this.cells[e]||{}}getCellById(e){const t=this.getters.getCellPosition(e);return this.cells[t.sheetId][e]}getFormulaString(e,t,o,s=!1){if(!o.length)return ut(t.map((e=>e.value)));let i=0;return ut(t.map((t=>{if("REFERENCE"===t.type){const t=o[i++];return this.getters.getRangeString(t,e,{useBoundedReference:s})}return t.value})))}getTranslatedCellFormula(e,t,o,s){const i=this.getters.createAdaptedRanges(LS(s).dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t))),t,o,e);return this.getFormulaString(e,s,i)}getFormulaMovedInSheet(e,t,o){const s=LS(o).dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t))),i=this.getters.removeRangesSheetPrefix(t,s);return this.getFormulaString(t,o,i)}getCellStyle(e){return this.getters.getCell(e)?.style||{}}zoneToXC(e,t,o=[{colFixed:!1,rowFixed:!1}]){const s=Ao((t=this.getters.expandZone(e,t)).left,t.top,o[0]),i=Ao(t.right,t.bottom,o.length>1?o[1]:o[0]),n=this.getters.getMainCellPosition({sheetId:e,col:t.left,row:t.top}),r=this.getters.getMainCellPosition({sheetId:e,col:t.right,row:t.bottom}),a=n.col===r.col&&n.row===r.row;return s==i||a?s:s+":"+i}setStyle(e,t,o){for(let s of _o(t))for(let t=s.left;t<=s.right;t++)for(let i=s.top;i<=s.bottom;i++){const s=this.getters.getCell({sheetId:e,col:t,row:i});this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:i,style:o?{...s?.style,...o}:void 0})}}copyColumnStyle(e,t,o){for(let s=0;s<this.getters.getNumberRows(e);s++){const i=this.getFormat(e,t,s);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,...i})}}copyRowStyle(e,t,o){for(let s=0;s<this.getters.getNumberCols(e);s++){const i=this.getFormat(e,s,t);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:s,row:t,...i})}}getFormat(e,t,o){const s={},i=this.getters.getMainCellPosition({sheetId:e,col:t,row:o}),n=this.getters.getCell(i);return n&&(n.style&&(s.style=n.style),n.format&&(s.format=n.format)),s}getNextUid(){const e=this.nextId.toString();return this.history.update("nextId",this.nextId+1),e}updateCell(e,t,o,s){const i=this.getters.getCell({sheetId:e,col:t,row:o}),n="content"in s||"formula"in s,r=n?xt(s?.content):i?.content||"";let a;a=void 0!==s.style?s.style||void 0:i?i.style:void 0;const l="format"in s?s.format:i&&i.format;if((n&&!r&&!s.formula||!n&&(!i||""===i.content))&&!a&&!l)return void(i&&(this.history.update("cells",e,i.id,void 0),this.dispatch("UPDATE_CELL_POSITION",{cellId:void 0,col:t,row:o,sheetId:e})));const c=i?.id||this.getNextUid(),h=this.createCell(c,r,l,a,e);this.history.update("cells",e,h.id,h),this.dispatch("UPDATE_CELL_POSITION",{cellId:h.id,col:t,row:o,sheetId:e})}createCell(e,t,o,s,i){return t.startsWith("=")?this.createFormulaCell(e,t,o,s,i):this.createLiteralCell(e,t,o,s)}createLiteralCell(e,t,o,s){const i=this.getters.getLocale(),n=Er(t,i);return xr(o=o||("number"==typeof n?cr(t,i)||hr(t):void 0))||Pi(t)||(t=Gi(n)),{id:e,content:t,style:s,format:o,isFormula:!1,parsedValue:n}}createFormulaCell(e,t,o,s,i){const n=VS(t);return n.dependencies.length?this.createFormulaCellWithDependencies(e,n,o,s,i):{id:e,content:t,style:s,format:o,isFormula:!0,compiledFormula:{...n,dependencies:[]}}}createFormulaCellWithDependencies(e,t,o,s,i){const n=[];for(const e of t.dependencies)n.push(this.getters.getRangeFromSheetXC(i,e));return new TP(e,t,o,s,n,i,this.getters.getRangeString)}checkCellOutOfSheet(e){const{sheetId:t,col:o,row:s}=e;if(!this.getters.tryGetSheet(t))return"InvalidSheetId";return ts(o,s,this.getters.getSheetZone(t))?"Success":"TargetOutOfSheet"}checkUselessClearCell(e){const t=this.getters.getCell(e);return t&&(t.content||t.style||t.format)?"Success":"NoChanges"}checkUselessUpdateCell(e){const t=this.getters.getCell(e),o="style"in e,s="format"in e;return("content"in e||"formula"in e)&&t?.content!==e.content||o&&!ft(t?.style,e.style)||s&&t?.format!==e.format?"Success":"NoChanges"}}).add("merge",class extends RP{static getters=["isInMerge","isInSameMerge","isMergeHidden","getMainCellPosition","expandZone","doesIntersectMerge","doesColumnsHaveCommonMerges","doesRowsHaveCommonMerges","getMerges","getMerge","getMergesInZone","isSingleCellOrMerge","getSelectionRangeString","isMainCellPosition"];nextId=1;merges={};mergeCellMap={};allowDispatch(e){const t="force"in e&&!!e.force;switch(e.type){case"ADD_MERGE":return t?this.checkValidations(e,this.checkFrozenPanes):this.checkValidations(e,this.checkDestructiveMerge,this.checkOverlap,this.checkFrozenPanes);case"UPDATE_CELL":return this.checkMergedContentUpdate(e);case"REMOVE_MERGE":return this.checkMergeExists(e);default:return"Success"}}handle(e){switch(e.type){case"CREATE_SHEET":case"DELETE_SHEET":this.history.update("merges",e.sheetId,{}),this.history.update("mergeCellMap",e.sheetId,{});break;case"DUPLICATE_SHEET":const t=this.merges[e.sheetId];if(!t)break;for(const o of Object.values(t).filter(lt))this.addMerge(e.sheetIdTo,o.zone);break;case"ADD_MERGE":for(const t of e.target)this.addMerge(e.sheetId,t);break;case"REMOVE_MERGE":for(const t of e.target)this.removeMerge(e.sheetId,t)}}adaptRanges(e,t){const o=t?[t]:Object.keys(this.merges);for(const t of o)this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map((t=>this.getMergeById(e,parseInt(t,10)))).filter(lt)}getMerge({sheetId:e,col:t,row:o}){const s=this.mergeCellMap[e],i=s?t in s&&s[t]?.[o]:void 0;return i?this.getMergeById(e,i):void 0}getMergesInZone(e,t){const o=this.mergeCellMap[e];if(!o)return[];const s=new Set;for(let e=t.left;e<=t.right;e++)for(let i=t.top;i<=t.bottom;i++){const t=o[e]?.[i];t&&s.add(t)}return Array.from(s).map((t=>this.getMergeById(e,t))).filter(lt)}getSelectionRangeString(e,t){const o=jr.fromRange(e,this.getters),s=this.getters.expandZone(o.sheetId,o.zone),i=o.clone({zone:{...s,bottom:o.isFullCol?void 0:s.bottom,right:o.isFullRow?void 0:s.right}}),n=this.getters.getRangeString(i,t);if(this.isSingleCellOrMerge(o.sheetId,o.zone)){const{sheetName:e,xc:t}=qr(n);return Zr(e,t.split(":")[0])}return n}doesIntersectMerge(e,t){for(const o of this.getMerges(e))if(es(t,o))return!0;return!1}doesColumnsHaveCommonMerges(e,t,o){const s=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(s.id,t,i,o,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,o){const s=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(s.id,i,t,i,o))return!0;return!1}expandZone(e,t){let{left:o,right:s,top:i,bottom:n}=t,r={left:o,right:s,top:i,bottom:n};for(let t in this.merges[e]){const o=this.getMergeById(e,parseInt(t));o&&es(o,r)&&(r=Ko(o,r))}return Qo(r,t)?r:this.expandZone(e,r)}isInSameMerge(e,t,o,s,i){const n=this.getMerge({sheetId:e,col:t,row:o}),r=this.getMerge({sheetId:e,col:s,row:i});return!(!n||!r)&&Qo(n,r)}isInMerge({sheetId:e,col:t,row:o}){const s=this.mergeCellMap[e];return!!s&&(t in s&&Boolean(s[t]?.[o]))}getMainCellPosition(e){const t=this.getMerge(e);return t?{sheetId:e.sheetId,col:t.left,row:t.top}:e}isMergeHidden(e,t){const o=this.getters.getHiddenColsGroups(e),s=this.getters.getHiddenRowsGroups(e);for(let e of o)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of s)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){const o=this.getMerge({sheetId:e,col:t.left,row:t.top});if(o)return Qo(t,o);const{numberOfCols:s,numberOfRows:i}=ss(t);return 1===s&&1===i}isMainCellPosition(e){return ft(this.getMainCellPosition(e),e)}isMergeDestructive(e,t){let{left:o,right:s,top:i,bottom:n}=t;s=Ze(s,0,this.getters.getNumberCols(e)-1),n=Ze(n,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=n;t++)for(let n=o;n<=s;n++)if(n!==o||t!==i){const o=this.getters.getCell({sheetId:e,col:n,row:t});if(o&&""!==o.content)return!0}return!1}getMergeById(e,t){const o=this.merges[e]?.[t];return void 0!==o?OP(t,o):void 0}checkDestructiveMerge({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return"Success";return t.some((t=>this.isMergeDestructive(e,t)))?"MergeIsDestructive":"Success"}checkOverlap({target:e}){for(const t of e)for(const o of e)if(t!==o&&es(t,o))return"MergeOverlap";return"Success"}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return"Success";const{xSplit:o,ySplit:s}=this.getters.getPaneDivisions(e);for(const e of t)if(e.left<o&&e.right>=o||e.top<s&&e.bottom>=s)return"FrozenPaneOverlap";return"Success"}checkMergedContentUpdate(e){const{col:t,row:o,content:s}=e;if(void 0===s)return"Success";const{col:i,row:n}=this.getMainCellPosition(e);return i===t&&n===o?"Success":"CellIsMerged"}checkMergeExists(e){const{sheetId:t,target:o}=e;for(const e of o){const{left:o,top:s}=e,i=this.getMerge({sheetId:t,col:o,row:s});if(void 0===i||!Qo(e,i))return"InvalidTarget"}return"Success"}addMerge(e,t){let{left:o,right:s,top:i,bottom:n}=t;s=Ze(s,0,this.getters.getNumberCols(e)-1),n=Ze(n,0,this.getters.getNumberRows(e)-1);if(Ao(o,i)===Ao(s,n))return;const r=this.getters.getCell({sheetId:e,col:o,row:i});let a=this.nextId++;this.history.update("merges",e,a,this.getters.getRangeFromSheetXC(e,qo({left:o,top:i,right:s,bottom:n})));let l=new Set;for(let t=i;t<=n;t++)for(let n=o;n<=s;n++){n===o&&t===i||this.dispatch("UPDATE_CELL",{sheetId:e,col:n,row:t,style:r?r.style:null,content:""});const s=this.getMerge({sheetId:e,col:n,row:t});s&&l.add(s.id),this.history.update("mergeCellMap",e,n,t,a)}for(let t of l){const{top:o,bottom:s,left:i,right:n}=this.getMergeById(e,t);for(let t=o;t<=s;t++)for(let o=i;o<=n;o++){const s={sheetId:e,col:o,row:t},i=this.getMerge(s);i&&i.id===a||(this.history.update("mergeCellMap",e,o,t,void 0),this.dispatch("CLEAR_CELL",s))}this.history.update("merges",e,t,void 0)}}removeMerge(e,t){const{left:o,top:s,bottom:i,right:n}=t,r=this.getMerge({sheetId:e,col:o,row:s});if(void 0!==r&&Qo(t,r)){this.history.update("merges",e,r.id,void 0);for(let t=s;t<=i;t++)for(let s=o;s<=n;s++)this.history.update("mergeCellMap",e,s,t,void 0)}}applyRangeChangeOnSheet(e,t){const o=Object.entries(this.merges[e]||{});for(const[s,i]of o)if(i){const o=i.zone,n=t(i);switch(n.changeType){case"NONE":break;case"REMOVE":this.removeMerge(e,o);break;default:const{numberOfCols:t,numberOfRows:i}=ss(n.range.zone);1===t&&1===i?this.removeMerge(e,o):this.history.update("merges",e,parseInt(s,10),n.range)}}this.history.update("mergeCellMap",e,{});for(const t of this.getMerges(e))for(const{col:o,row:s}of rs(t))this.history.update("mergeCellMap",e,o,s,t.id)}import(e){const t=e.sheets||[];for(let e of t)this.history.update("merges",e.id,{}),this.history.update("mergeCellMap",e.id,{}),e.merges&&this.importMerges(e.id,e.merges)}importMerges(e,t){for(let o of t)this.addMerge(e,$o(o))}export(e){for(let t of e.sheets){const e=this.merges[t.id];e&&t.merges.push(...DP(e))}}exportForExcel(e){this.export(e)}}).add("headerSize",class extends RP{static getters=["getUserRowSize","getColSize"];sizes={};handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("sizes",e.sheetId,{COL:Array(this.getters.getNumberCols(e.sheetId)).fill(void 0),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(void 0)});break;case"DUPLICATE_SHEET":this.history.update("sizes",e.sheetIdTo,ze(this.sizes[e.sheetId]));break;case"DELETE_SHEET":const t={...this.sizes};delete t[e.sheetId],this.history.update("sizes",t);break;case"REMOVE_COLUMNS_ROWS":{const t=Rt(this.sizes[e.sheetId][e.dimension],e.elements);this.history.update("sizes",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];const o=mt(e.position,e.base),s=t[e.base];t.splice(o,0,...Array(e.quantity).fill(s)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"RESIZE_COLUMNS_ROWS":if("ROW"===e.dimension)for(const t of e.elements)this.history.update("sizes",e.sheetId,e.dimension,t,e.size||void 0);else for(const t of e.elements)this.history.update("sizes",e.sheetId,e.dimension,t,e.size||void 0)}}getColSize(e,t){return Math.round(this.sizes[e]?.COL[t]||oe)}getUserRowSize(e,t){const o=this.sizes[e]?.ROW[t];return o?Math.round(o):void 0}import(e){for(let t of e.sheets){const e={COL:Array(t.colNumber).fill(void 0),ROW:Array(t.rowNumber).fill(void 0)};for(let[o,s]of Object.entries(t.rows))s.size&&(e.ROW[o]=s.size);for(let[o,s]of Object.entries(t.cols))s.size&&(e.COL[o]=s.size);this.sizes[t.id]=e}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(const e of je(0,this.getters.getNumberRows(o.id)))(t||this.sizes[o.id].ROW[e])&&(o.rows[e]={...o.rows[e],size:this.getUserRowSize(o.id,e)??se});void 0===o.cols&&(o.cols={});for(let e of je(0,this.getters.getNumberCols(o.id)))(t||this.sizes[o.id].COL[e])&&(o.cols[e]={...o.cols[e],size:this.getColSize(o.id,e)})}}}).add("borders",class extends RP{static getters=["getCellBorder","getBordersColors"];borders={};allowDispatch(e){return"SET_BORDER"===e.type?this.checkBordersUnchanged(e):"Success"}handle(e){switch(e.type){case"ADD_MERGE":for(const t of e.target)this.addBordersToMerge(e.sheetId,t);break;case"DUPLICATE_SHEET":const t=this.borders[e.sheetId];if(t){const o=t.slice().map((e=>e?.slice().map((e=>ze(e)))));this.history.update("borders",e.sheetIdTo,o)}break;case"DELETE_SHEET":const o={...this.borders};delete o[e.sheetId],this.history.update("borders",o);break;case"SET_BORDER":this.setBorder(e.sheetId,e.col,e.row,e.border);break;case"SET_BORDERS_ON_TARGET":for(const t of e.target)for(let o=t.top;o<=t.bottom;o++)for(let s=t.left;s<=t.right;s++)this.setBorder(e.sheetId,s,o,e.border);break;case"SET_ZONE_BORDERS":if(e.border){const t=e.target.map((t=>this.getters.expandZone(e.sheetId,t)));this.setBorders(e.sheetId,t,e.border.position,""===e.border.color?void 0:{style:e.border.style||be,color:e.border.color||Se})}break;case"CLEAR_FORMATTING":this.clearBorders(e.sheetId,e.target);break;case"REMOVE_COLUMNS_ROWS":const s=[...e.elements].sort(((e,t)=>t-e));for(const t of Ye(s))if("COL"===e.dimension){const o=this.getters.getColsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[o]),this.shiftBordersHorizontally(e.sheetId,t[0]+1,-t.length)}else{const o=this.getters.getRowsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[o]),this.shiftBordersVertically(e.sheetId,t[0]+1,-t.length)}break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumns(e):this.handleAddRows(e)}}handleAddColumns(e){let t,o;"before"===e.position?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity),t=e.base,o=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,o)}handleAddRows(e){let t,o;"before"===e.position?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity),t=e.base,o=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,o)}getCellBorder({sheetId:e,col:t,row:o}){const s=this.borders[e]?.[t]?.[o];return s?.top||s?.bottom||s?.left||s?.right?ze(s):null}getBordersColors(e){const t=[],o=this.borders[e];if(o)for(const e of o.filter(lt))for(const o of e)if(o)for(const e of["top","bottom","left","right"]){const s=o[e]?.color;s&&t.push(s)}return t}ensureColumnBorderContinuity(e,t,o){const s=je(t+1,o);for(let i=0;i<this.getters.getNumberRows(e);i++){const n=this.getCellBorder({sheetId:e,col:t,row:i}),r=this.getCellBorder({sheetId:e,col:o,row:i});if(n&&r){const t=this.getCommonSides(n,r);for(let o of s)this.addBorder(e,o,i,t)}}}ensureRowBorderContinuity(e,t,o){const s=je(t+1,o);for(let i=0;i<this.getters.getNumberCols(e);i++){const n=this.getCellBorder({sheetId:e,col:i,row:t}),r=this.getCellBorder({sheetId:e,col:i,row:o});if(n&&r){const t=this.getCommonSides(n,r);for(let o of s)this.addBorder(e,i,o,t)}}}getCommonSides(e,t){const o={};for(let s of["top","bottom","left","right"])e[s]&&ft(e[s],t[s])&&(o[s]=e[s]);return o}getColumnsWithBorders(e){const t=this.borders[e];return t?Object.keys(t).map((e=>parseInt(e,10))):[]}getRowsWithBorders(e){const t=this.borders[e]?.filter(lt);if(!t)return[];const o=new Set;for(const e of t)for(const t in e)o.add(parseInt(t,10));return Array.from(o)}getRowsRange(e){return this.borders[e]?je(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,o){this.borders[e]&&this.getColumnsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((t=>{this.moveBordersOfColumn(e,t,o)}))}shiftBordersVertically(e,t,o){this.borders[e]&&(o<0&&this.moveBordersOfRow(e,t,o,{destructive:!1}),this.getRowsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((t=>{this.moveBordersOfRow(e,t,o)})))}moveBordersOfRow(e,t,o,{destructive:s}={destructive:!0}){const i=this.borders[e];i&&this.getColumnsWithBorders(e).forEach((n=>{const r=i[n]?.[t+o],a=i[n]?.[t];this.history.update("borders",e,n,t+o,s?a:a||r),this.history.update("borders",e,n,t,void 0)}))}moveBordersOfColumn(e,t,o,{destructive:s}={destructive:!0}){const i=this.borders[e];i&&this.getRowsRange(e).forEach((n=>{const r=i[t+o]?.[n],a=i[t]?.[n];this.history.update("borders",e,t+o,n,s?a:a||r),s&&this.history.update("borders",e,t,n,void 0)}))}setBorder(e,t,o,s,i=!0){const n=this.getters.getNumberCols(e)-1,r=this.getters.getNumberRows(e)-1;!i&&this.borders[e]?.[t]?.[o]?.left||(this.history.update("borders",e,t,o,"left",s?.left),s?.left&&t>0&&!ft(this.getCellBorder({sheetId:e,col:t-1,row:o})?.right,s?.left)&&this.history.update("borders",e,t-1,o,"right",void 0)),!i&&this.borders[e]?.[t]?.[o]?.top||(this.history.update("borders",e,t,o,"top",s?.top),s?.top&&o>0&&!ft(this.getCellBorder({sheetId:e,col:t,row:o-1})?.bottom,s?.top)&&this.history.update("borders",e,t,o-1,"bottom",void 0)),!i&&this.borders[e]?.[t]?.[o]?.right||(this.history.update("borders",e,t,o,"right",s?.right),s?.right&&t<n&&!ft(this.getCellBorder({sheetId:e,col:t+1,row:o})?.left,s?.right)&&this.history.update("borders",e,t+1,o,"left",void 0)),!i&&this.borders[e]?.[t]?.[o]?.bottom||(this.history.update("borders",e,t,o,"bottom",s?.bottom),s?.bottom&&o<r&&!ft(this.getCellBorder({sheetId:e,col:t,row:o+1})?.top,s?.bottom)&&this.history.update("borders",e,t,o+1,"top",void 0))}clearBorders(e,t,o=!1){const s=this.getters.getNumberCols(e)-1,i=this.getters.getNumberRows(e)-1;for(let n of _o(t))for(let t=n.top;t<=n.bottom;t++){o&&(n.left>0&&this.history.update("borders",e,n.left-1,t,"right",void 0),n.right<s&&this.history.update("borders",e,n.right+1,t,"left",void 0));for(let s=n.left;s<=n.right;s++)this.history.update("borders",e,s,t,void 0),o&&(n.top>0&&this.history.update("borders",e,s,n.top-1,"bottom",void 0),n.bottom<i&&this.history.update("borders",e,s,n.bottom+1,"top",void 0))}}clearInsideBorders(e,t){for(let o of t)for(let t=o.top;t<=o.bottom;t++)for(let s=o.left;s<=o.right;s++)this.history.update("borders",e,s,t,void 0)}addBorder(e,t,o,s){this.setBorder(e,t,o,{...this.getCellBorder({sheetId:e,col:t,row:o}),...s})}setBorders(e,t,o,s){if("clear"===o)return this.clearBorders(e,t,!0);for(let i of _o(t)){if("all"===o)for(let t=i.top;t<=i.bottom;t++)for(let o=i.left;o<=i.right;o++)this.addBorder(e,o,t,{top:s,right:s,bottom:s,left:s});if("h"===o||"hv"===o){if(i.top===i.bottom)continue;for(let t=i.left;t<=i.right;t++){this.addBorder(e,t,i.top,{bottom:s});for(let o=i.top+1;o<i.bottom;o++)this.addBorder(e,t,o,{top:s,bottom:s});this.addBorder(e,t,i.bottom,{top:s})}}if("v"===o||"hv"===o){if(i.left===i.right)continue;for(let t=i.top;t<=i.bottom;t++){this.addBorder(e,i.left,t,{right:s});for(let o=i.left+1;o<i.right;o++)this.addBorder(e,o,t,{left:s,right:s});this.addBorder(e,i.right,t,{left:s})}}if("left"===o||"external"===o)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.left,t,{left:s});if("right"===o||"external"===o)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.right,t,{right:s});if("top"===o||"external"===o)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.top,{top:s});if("bottom"===o||"external"===o)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.bottom,{bottom:s})}}addBordersToMerge(e,t){const{left:o,right:s,top:i,bottom:n}=t,r=this.getCellBorder({sheetId:e,col:o,row:i}),a=this.getCellBorder({sheetId:e,col:s,row:n});this.clearBorders(e,[t]),r?.top&&this.setBorders(e,[{...t,bottom:i}],"top",r.top),r?.left&&this.setBorders(e,[{...t,right:o}],"left",r.left),a?.bottom?this.setBorders(e,[{...t,top:n}],"bottom",a.bottom):r?.bottom&&this.setBorders(e,[{...t,top:n}],"bottom",r.bottom),a?.right?this.setBorders(e,[{...t,left:s}],"right",a.right):r?.right&&this.setBorders(e,[{...t,left:s}],"right",r.right)}checkBordersUnchanged(e){const t=this.getCellBorder(e),o=!(e.border?.bottom||e.border?.left||e.border?.right||e.border?.top);return!t&&o||ft(t,e.border)?"NoChanges":"Success"}import(e){if(Object.keys(e.borders||{}).length)for(const t of e.sheets)for(const[o,s]of ys(t.id,t.borders)){const{sheetId:t,col:i,row:n}=o,r=e.borders[s];this.setBorder(t,i,n,r,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,$o(e))}export(e){const t={};for(let o of e.sheets){const e={};for(let s=0;s<o.colNumber;s++)for(let i=0;i<o.rowNumber;i++){const n=this.getCellBorder({sheetId:o.id,col:s,row:i});if(n){const r=bs(n,t),a={sheetId:o.id,col:s,row:i};e[r]??=[],e[r].push(a)}}o.borders=Ss(e)}e.borders=t}exportForExcel(e){this.export(e)}}).add("conditional formatting",class extends RP{static getters=["getConditionalFormats","getRulesSelection","getRulesByCell","getAdaptedCfRanges"];cfRules={};loopThroughRangesOfSheet(e,t){for(const o of this.cfRules[e]){if("DataBarRule"===o.rule.type&&o.rule.rangeValues){const s=t(o.rule.rangeValues);switch(s.changeType){case"REMOVE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"rule","rangeValues",void 0);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"rule","rangeValues",s.range)}}for(const s of o.ranges){const i=t(s);switch(i.changeType){case"REMOVE":let t=o.ranges.slice();t.splice(o.ranges.indexOf(s),1),t.length>=1?this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",t):this.removeConditionalFormatting(o.id,e);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",o.ranges.indexOf(s),i.range)}}}}adaptRanges(e,t){if(t)this.loopThroughRangesOfSheet(t,e);else for(const t of Object.keys(this.cfRules))this.loopThroughRangesOfSheet(t,e)}allowDispatch(e){switch(e.type){case"ADD_CONDITIONAL_FORMAT":return e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId)))?"InvalidSheetId":this.checkValidations(e,this.checkCFRule,this.checkEmptyRange,this.checkCFHasChanged);case"CHANGE_CONDITIONAL_FORMAT_PRIORITY":return this.checkValidPriorityChange(e.cfId,e.delta,e.sheetId)}return"Success"}handle(e){switch(e.type){case"CREATE_SHEET":this.cfRules[e.sheetId]=[];break;case"DUPLICATE_SHEET":this.history.update("cfRules",e.sheetIdTo,[]);for(const t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case"DELETE_SHEET":const t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update("cfRules",t);break;case"ADD_CONDITIONAL_FORMAT":const o={...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))};this.addConditionalFormatting(o,e.sheetId);break;case"REMOVE_CONDITIONAL_FORMAT":this.removeConditionalFormatting(e.id,e.sheetId);break;case"CHANGE_CONDITIONAL_FORMAT_PRIORITY":this.changeCFPriority(e.cfId,e.delta,e.sheetId)}}import(e){for(let t of e.sheets)this.cfRules[t.id]=t.conditionalFormats.map((e=>this.mapToConditionalFormatInternal(t.id,e)))}export(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e))))}exportForExcel(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e,{useBoundedReference:!0}))))}getConditionalFormats(e){return this.cfRules[e]?.map((t=>this.mapToConditionalFormat(e,t)))||[]}getRulesSelection(e,t){const o=new Set;return t.forEach((t=>{this.getRulesByZone(e,t).forEach((e=>{o.add(e)}))})),Array.from(o)}getRulesByZone(e,t){const o=new Set;for(let s=t.top;s<=t.bottom;s++)for(let i=t.left;i<=t.right;i++){this.getRulesByCell(e,i,s).forEach((e=>{o.add(e.id)}))}return o}getRulesByCell(e,t,o){const s=[];for(let i of this.cfRules[e])for(let e of i.ranges)ts(t,o,e.zone)&&s.push(i);return new Set(s.map((t=>this.mapToConditionalFormat(e,t))))}getAdaptedCfRanges(e,t,o,s){if(0===o.length&&0===s.length)return;const i=this.getters.getConditionalFormats(e),n=i.findIndex((e=>e.id===t.id));let r=[];n>-1&&(r=i[n].ranges.map(zo));const a=_o(r,s);return _o([...o,...a],[]).map((t=>this.getters.getRangeDataFromZone(e,t)))}mapToConditionalFormat(e,t,{useBoundedReference:o}={useBoundedReference:!1}){const s=t.ranges.map((t=>this.getters.getRangeString(t,e,{useBoundedReference:o})));return"DataBarRule"!==t.rule.type?{...t,rule:{...t.rule},ranges:s}:{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues&&this.getters.getRangeString(t.rule.rangeValues,e,{useBoundedReference:o})},ranges:s}}mapToConditionalFormatInternal(e,t){const o=t.ranges.map((t=>this.getters.getRangeFromSheetXC(e,t)));return"DataBarRule"!==t.rule.type?{...t,rule:{...t.rule},ranges:o}:{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues?this.getters.getRangeFromSheetXC(e,t.rule.rangeValues):void 0},ranges:o}}addConditionalFormatting(e,t){const o=this.cfRules[t].slice(),s=o.findIndex((t=>t.id===e.id)),i=this.mapToConditionalFormatInternal(t,e);s>-1?o.splice(s,1,i):o.push(i),this.history.update("cfRules",t,o)}checkValidPriorityChange(e,t,o){if(!this.cfRules[o])return"InvalidSheetId";const s=this.cfRules[o].findIndex((t=>t.id===e));if(-1===s)return"InvalidConditionalFormatId";const i=s-t;return i<0||i>=this.cfRules[o].length?"InvalidConditionalFormatId":"Success"}checkEmptyRange(e){return e.ranges.length?"Success":"EmptyRange"}checkCFRule(e){const t=e.cf.rule;switch(t.type){case"CellIsRule":return this.checkValidations(t,this.checkOperatorArgsNumber(2,["Between","NotBetween"]),this.checkOperatorArgsNumber(1,["BeginsWith","ContainsText","EndsWith","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","NotContains","Equal","NotEqual"]),this.checkOperatorArgsNumber(0,["IsEmpty","IsNotEmpty"]),this.checkCFValues);case"ColorScaleRule":return this.checkValidations(t,this.chainValidations(this.checkThresholds(this.checkFormulaCompilation)),this.chainValidations(this.checkThresholds(this.checkNaN),this.batchValidations(this.checkMinBiggerThanMax,this.checkMinBiggerThanMid,this.checkMidBiggerThanMax)));case"IconSetRule":return this.checkValidations(t,this.chainValidations(this.checkInflectionPoints(this.checkNaN),this.checkLowerBiggerThanUpper),this.chainValidations(this.checkInflectionPoints(this.checkFormulaCompilation)))}return"Success"}checkCFHasChanged(e){const t=this.mapToConditionalFormatInternal(e.sheetId,{...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))}),o=this.cfRules[e.sheetId]?.find((t=>t.id===e.cf.id));return o&&ft(t,o)?"NoChanges":"Success"}checkOperatorArgsNumber(e,t){if(e>2)throw new Error("Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.");return o=>{if(t.includes(o.operator)){const t=[],s=e=>void 0===e||""===e;return e>=1&&s(o.values[0])&&t.push("FirstArgMissing"),e>=2&&s(o.values[1])&&t.push("SecondArgMissing"),t.length?t:"Success"}return"Success"}}checkNaN(e,t){if(["number","percentage","percentile"].includes(e.type)&&(""===e.value||isNaN(e.value)))switch(t){case"min":return"MinNaN";case"max":return"MaxNaN";case"mid":return"MidNaN";case"upperInflectionPoint":return"ValueUpperInflectionNaN";case"lowerInflectionPoint":return"ValueLowerInflectionNaN"}return"Success"}checkFormulaCompilation(e,t){if("formula"!==e.type)return"Success";if(VS(e.value||"").isBadExpression)switch(t){case"min":return"MinInvalidFormula";case"max":return"MaxInvalidFormula";case"mid":return"MidInvalidFormula";case"upperInflectionPoint":return"ValueUpperInvalidFormula";case"lowerInflectionPoint":return"ValueLowerInvalidFormula"}return"Success"}checkThresholds(e){return this.batchValidations((t=>e(t.minimum,"min")),(t=>e(t.maximum,"max")),(t=>t.midpoint?e(t.midpoint,"mid"):"Success"))}checkInflectionPoints(e){return this.batchValidations((t=>e(t.lowerInflectionPoint,"lowerInflectionPoint")),(t=>e(t.upperInflectionPoint,"upperInflectionPoint")))}checkLowerBiggerThanUpper(e){const t=e.lowerInflectionPoint.value,o=e.upperInflectionPoint.value;return["number","percentage","percentile"].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(o)?"LowerBiggerThanUpper":"Success"}checkMinBiggerThanMax(e){const t=e.minimum.value,o=e.maximum.value;return["number","percentage","percentile"].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&_P(t)>=_P(o)?"MinBiggerThanMax":"Success"}checkMidBiggerThanMax(e){const t=e.midpoint?.value,o=e.maximum.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&_P(t)>=_P(o)?"MidBiggerThanMax":"Success"}checkMinBiggerThanMid(e){const t=e.minimum.value,o=e.midpoint?.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&_P(t)>=_P(o)?"MinBiggerThanMid":"Success"}checkCFValues(e){for(const t of e.values){if(!t.startsWith("="))continue;if(VS(t||"").isBadExpression)return"ValueCellIsInvalidFormula"}return"Success"}removeConditionalFormatting(e,t){const o=this.cfRules[t].findIndex((t=>t.id===e));if(-1!==o){const e=this.cfRules[t].slice();e.splice(o,1),this.history.update("cfRules",t,e)}}changeCFPriority(e,t,o){const s=this.cfRules[o].findIndex((t=>t.id===e)),i=this.cfRules[o][s],n=s-t,r=[...this.cfRules[o]];r.splice(s,1),r.splice(n,0,i),this.history.update("cfRules",o,r)}}).add("figures",class extends RP{static getters=["getFigures","getFigure","getFigureSheetId"];figures={};insertionOrders=[];allowDispatch(e){switch(e.type){case"CREATE_FIGURE":return this.checkFigureDuplicate(e.figure.id);case"UPDATE_FIGURE":case"DELETE_FIGURE":return this.checkFigureExists(e.sheetId,e.id);default:return"Success"}}beforeHandle(e){if("DELETE_SHEET"===e.type)this.getters.getFigures(e.sheetId).forEach((t=>{this.dispatch("DELETE_FIGURE",{id:t.id,sheetId:e.sheetId})}))}handle(e){switch(e.type){case"CREATE_SHEET":this.figures[e.sheetId]={};break;case"DELETE_SHEET":this.deleteSheet(e.sheetId);break;case"CREATE_FIGURE":this.addFigure(e.figure,e.sheetId);break;case"UPDATE_FIGURE":const{type:t,sheetId:o,...s}=e,i=s;this.updateFigure(o,i);break;case"DELETE_FIGURE":this.removeFigure(e.id,e.sheetId);break;case"REMOVE_COLUMNS_ROWS":this.onRowColDelete(e.sheetId,e.dimension)}}onRowColDelete(e,t){"ROW"===t?this.onRowDeletion(e):this.onColDeletion(e)}onRowDeletion(e){const t=this.getters.getNumberRows(e);let o=0;for(let s=0;s<t;s++)o+=this.getters.getUserRowSize(e,s)||se;const s=this.getters.getFigures(e);for(const t of s){const s=Math.min(t.y,o-t.height);s!==t.y&&this.dispatch("UPDATE_FIGURE",{sheetId:e,id:t.id,y:s})}}onColDeletion(e){const t=this.getters.getNumberCols(e);let o=0;for(let s=0;s<t;s++)o+=this.getters.getColSize(e,s);const s=this.getters.getFigures(e);for(const t of s){const s=Math.min(t.x,o-t.width);s!==t.x&&this.dispatch("UPDATE_FIGURE",{sheetId:e,id:t.id,x:s})}}updateFigure(e,t){if("id"in t)for(const[o,s]of Object.entries(t))switch(o){case"x":case"y":void 0!==s&&this.history.update("figures",e,t.id,o,Math.max(s,0));break;case"width":case"height":void 0!==s&&this.history.update("figures",e,t.id,o,s)}}addFigure(e,t){this.history.update("figures",t,e.id,e),this.history.update("insertionOrders",this.insertionOrders.length,e.id)}deleteSheet(e){this.history.update("insertionOrders",this.insertionOrders.filter((t=>!this.figures[e]?.[t]))),this.history.update("figures",e,void 0)}removeFigure(e,t){this.history.update("insertionOrders",this.insertionOrders.filter((t=>t!==e))),this.history.update("figures",t,e,void 0)}checkFigureExists(e,t){return void 0===this.figures[e]?.[t]?"FigureDoesNotExist":"Success"}checkFigureDuplicate(e){return Object.values(this.figures).find((t=>t?.[e]))?"DuplicatedFigureId":"Success"}getFigures(e){const t=[];for(const o of this.insertionOrders){const s=this.figures[e]?.[o];s&&t.push(s)}return t}getFigure(e,t){return this.figures[e]?.[t]}getFigureSheetId(e){return Object.keys(this.figures).find((t=>void 0!==this.figures[t]?.[e]))}import(e){for(let t of e.sheets)for(const e of t.figures)this.addFigure(e,t.id)}export(e){for(const t of e.sheets)for(const e of this.getFigures(t.id)){const o=void 0;t.figures.push({...e,data:o})}}exportForExcel(e){this.export(e)}}).add("chart",class extends RP{static getters=["isChartDefined","getChartDefinition","getChartType","getChartIds","getChart","getContextCreationChart"];charts={};createChart=jR(this.getters);validateChartDefinition=e=>XR(this,e.definition);adaptRanges(e){for(const[t,o]of Object.entries(this.charts))this.history.update("charts",t,o?.updateRanges(e))}allowDispatch(e){switch(e.type){case"CREATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartDuplicate));case"UPDATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartExists,this.checkChartChanged));default:return"Success"}}handle(e){switch(e.type){case"CREATE_CHART":this.addFigure(e.id,e.sheetId,e.position,e.size),this.addChart(e.id,e.definition);break;case"UPDATE_CHART":this.addChart(e.id,e.definition);break;case"DUPLICATE_SHEET":{const t=this.getters.getFigures(e.sheetId);for(const o of t)if("chart"===o.tag){const t=o.id.split(xe).pop(),s=`${e.sheetIdTo}${xe}${t}`,i=this.charts[o.id]?.duplicateInDuplicatedSheet(e.sheetIdTo);i&&this.dispatch("CREATE_CHART",{id:s,position:{x:o.x,y:o.y},size:{width:o.width,height:o.height},definition:i.getDefinition(),sheetId:e.sheetIdTo})}break}case"DELETE_FIGURE":this.history.update("charts",e.id,void 0);break;case"DELETE_SHEET":for(let t of this.getChartIds(e.sheetId))this.history.update("charts",t,void 0)}}getContextCreationChart(e){return this.charts[e]?.getContextCreation()}getChart(e){return this.charts[e]}getChartType(e){const t=this.charts[e]?.type;if(!t)throw new Error("Chart not defined.");return t}isChartDefined(e){return e in this.charts&&void 0!==this.charts}getChartIds(e){return Object.entries(this.charts).filter((([,t])=>t?.sheetId===e)).map((([e])=>e))}getChartDefinition(e){const t=this.charts[e]?.getDefinition();if(!t)throw new Error(`There is no chart with the given figureId: ${e}`);return t}import(e){for(let t of e.sheets)if(t.figures)for(let e of t.figures)"chart"===e.tag&&(this.charts[e.id]=this.createChart(e.id,e.data,t.id))}export(e){if(e.sheets)for(let t of e.sheets){const e=this.getters.getFigures(t.id),o=[];for(let t of e){const e=t;if(e&&"chart"===e.tag){const t=this.charts[e.id]?.getDefinition();t&&(e.data=t,o.push(e))}else o.push(e)}t.figures=o}}addFigure(e,t,o={x:0,y:0},s={width:536,height:335}){if(this.getters.getFigure(t,e))return;const i={id:e,x:o.x,y:o.y,width:s.width,height:s.height,tag:"chart"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}addChart(e,t){const o=this.getters.getFigureSheetId(e);o&&this.history.update("charts",e,this.createChart(e,t,o))}checkChartDuplicate(e){return this.getters.getFigureSheetId(e.id)?"DuplicatedChartId":"Success"}checkChartExists(e){return this.isChartDefined(e.id)?"Success":"ChartDoesNotExist"}checkChartChanged(e){return ft(this.getChartDefinition(e.id),e.definition)?"NoChanges":"Success"}}).add("image",class extends RP{static getters=["getImage","getImagePath","getImageSize"];fileStore;images={};syncedImages=new Set;constructor(e){super(e),this.fileStore=e.external.fileStore}allowDispatch(e){return"CREATE_IMAGE"===e.type&&this.getters.getFigure(e.sheetId,e.figureId)?"InvalidFigureId":"Success"}handle(e){switch(e.type){case"CREATE_IMAGE":this.addImage(e.figureId,e.sheetId,e.position,e.size),this.history.update("images",e.sheetId,e.figureId,e.definition),this.syncedImages.add(e.definition.path);break;case"DUPLICATE_SHEET":{const t=this.getters.getFigures(e.sheetId);for(const o of t)if("image"===o.tag){const t=o.id.split(xe).pop(),s=`${e.sheetIdTo}${xe}${t}`,i=this.getImage(o.id);if(i){const t={width:o.width,height:o.height};this.dispatch("CREATE_IMAGE",{sheetId:e.sheetIdTo,figureId:s,position:{x:o.x,y:o.y},size:t,definition:ze(i)})}}break}case"DELETE_FIGURE":this.history.update("images",e.sheetId,e.id,void 0);break;case"DELETE_SHEET":this.history.update("images",e.sheetId,void 0)}}garbageCollectExternalResources(){const e=new Set(this.getAllImages().map((e=>e.path)));for(const t of this.syncedImages)e.has(t)||this.fileStore?.delete(t)}getImage(e){for(const t of Object.values(this.images))if(t&&t[e])return t[e];throw new Error(`There is no image with the given figureId: ${e}`)}getImagePath(e){return this.getImage(e).path}getImageSize(e){return this.getImage(e).size}addImage(e,t,o,s){const i={id:e,x:o.x,y:o.y,width:s.width,height:s.height,tag:"image"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}import(e){for(const t of e.sheets){const e=(t.figures||[]).filter((e=>"image"===e.tag));for(const o of e)this.history.update("images",t.id,o.id,o.data),this.syncedImages.add(o.data.path)}}export(e){for(const t of e.sheets){const e=t.figures.filter((e=>"image"===e.tag));for(const o of e)o.data=this.images[t.id]?.[o.id]}}exportForExcel(e){for(const t of e.sheets){t.images||(t.images=[]);const e=this.getters.getFigures(t.id),o=[];for(const t of e)if("image"===t?.tag){const e=this.getImage(t.id);e&&o.push({...t,data:ze(e)})}t.images=[...t.images,...o]}}getAllImages(){const e=[];for(const t in this.images)e.push(...Object.values(this.images[t]||{}).filter(lt));return e}}).add("pivot_core",class extends RP{static getters=["getPivotCoreDefinition","getPivotDisplayName","getPivotId","getPivotFormulaId","getPivotIds","getMeasureCompiledFormula","getPivotName","isExistingPivot"];nextFormulaId=1;pivots={};formulaIds={};compiledMeasureFormulas={};allowDispatch(e){switch(e.type){case"ADD_PIVOT":return this.checkDuplicatedMeasureIds(e.pivot);case"UPDATE_PIVOT":return e.pivotId in this.pivots?ft(e.pivot,this.pivots[e.pivotId]?.definition)?"NoChanges":""===e.pivot.name?"EmptyName":this.checkDuplicatedMeasureIds(e.pivot):"PivotIdNotFound";case"RENAME_PIVOT":if(!(e.pivotId in this.pivots))return"PivotIdNotFound";if(""===e.name)return"EmptyName";break;case"REMOVE_PIVOT":case"DUPLICATE_PIVOT":case"INSERT_PIVOT":case"DUPLICATE_PIVOT":if(!(e.pivotId in this.pivots))return"PivotIdNotFound"}return"Success"}handle(e){switch(e.type){case"ADD_PIVOT":{const{pivotId:t,pivot:o}=e;this.addPivot(t,o);break}case"INSERT_PIVOT":{const{sheetId:t,col:o,row:s,pivotId:i,table:n}=e,r={sheetId:t,col:o,row:s},{cols:a,rows:l,measures:c,fieldsType:h}=n,d=new MF(a,l,c,h||{}),u=this.getPivotFormulaId(i);this.insertPivot(r,u,d);break}case"RENAME_PIVOT":this.history.update("pivots",e.pivotId,"definition","name",e.name);break;case"REMOVE_PIVOT":{const t={...this.pivots};delete t[e.pivotId];const o=this.getPivotFormulaId(e.pivotId);this.history.update("formulaIds",o,void 0),this.history.update("pivots",t);break}case"DUPLICATE_PIVOT":{const{pivotId:t,newPivotId:o}=e,s=ze(this.getPivotCore(t).definition);s.name=e.duplicatedPivotName??s.name+" (copy)",this.addPivot(o,s);break}case"UPDATE_PIVOT":this.history.update("pivots",e.pivotId,"definition",this.repairSortedColumn(ze(e.pivot))),this.compileCalculatedMeasures(e.pivot.measures)}}adaptRanges(e){for(const t in this.compiledMeasureFormulas)for(const o in this.compiledMeasureFormulas[t]){const s=this.compiledMeasureFormulas[t][o],i=[];for(const t of s.dependencies){const o=e(t);"NONE"===o.changeType?i.push(t):i.push(o.range)}const n=this.getters.getFormulaString(t,s.tokens,i);n!==o&&this.replaceMeasureFormula(t,o,n)}}getPivotDisplayName(e){return`(#${this.getPivotFormulaId(e)}) ${this.getPivotName(e)}`}getPivotName(e){return this.getPivotCore(e).definition.name}getPivotCoreDefinition(e){return this.getPivotCore(e).definition}getPivotId(e){return this.formulaIds[e]}getPivotFormulaId(e){return this.getPivotCore(e).formulaId}getPivotIds(){return Object.keys(this.pivots)}isExistingPivot(e){return e in this.pivots}getMeasureCompiledFormula(e){if(!e.computedBy)throw new Error(`Measure ${e.fieldName} is not computed by formula`);const t=e.computedBy.sheetId;return this.compiledMeasureFormulas[t][e.computedBy.formula]}addPivot(e,t,o=this.nextFormulaId.toString()){this.history.update("pivots",e,{definition:this.repairSortedColumn(ze(t)),formulaId:o}),this.compileCalculatedMeasures(t.measures),this.history.update("formulaIds",o,e),this.history.update("nextFormulaId",this.nextFormulaId+1)}compileCalculatedMeasures(e){for(const t of e)if(t.computedBy){const e=t.computedBy.sheetId,o=this.compileMeasureFormula(t.computedBy.sheetId,t.computedBy.formula);this.history.update("compiledMeasureFormulas",e,t.computedBy.formula,o)}}insertPivot(e,t,o){this.resizeSheet(e.sheetId,e,o);const s=o.getPivotCells();for(let o=0;o<s.length;o++)for(let i=0;i<s[o].length;i++){const n=s[o][i];this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col+o,row:e.row+i,content:yc(t,n)})}}resizeSheet(e,{col:t,row:o},s){const i=s.getNumberOfDataColumns()+1,n=this.getters.getNumberCols(e),r=n-t;r<i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:n-1,sheetId:e,quantity:i-r,position:"after"});const a=s.columns.length+s.rows.length,l=this.getters.getNumberRows(e),c=l-o;c<a&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:l-1,sheetId:e,quantity:a-c,position:"after"})}getPivotCore(e){const t=this.pivots[e];if(!t)throw new Error(`Pivot with id ${e} not found`);return t}compileMeasureFormula(e,t){const o=VS(t),s=o.dependencies.map((t=>this.getters.getRangeFromSheetXC(e,t)));return{...o,dependencies:s}}replaceMeasureFormula(e,t,o){this.history.update("compiledMeasureFormulas",e,t,void 0),this.history.update("compiledMeasureFormulas",e,o,this.compileMeasureFormula(e,o));for(const s in this.pivots){const i=this.pivots[s];if(i)for(const n of i.definition.measures)if(n.computedBy?.formula===t){const t=i.definition.measures.indexOf(n);this.history.update("pivots",s,"definition","measures",t,"computedBy",{formula:o,sheetId:e})}}}checkDuplicatedMeasureIds(e){const t=new Set(e.measures.map((e=>e.id)));return e.measures.length!==t.size?"InvalidDefinition":"Success"}repairSortedColumn(e){if(e.sortedColumn){const t=e.measures.find((t=>t.fieldName===e.sortedColumn?.measure));if(t)return{...e,sortedColumn:{...e.sortedColumn,measure:t.id}}}return e}import(e){if(e.pivots)for(const[t,o]of Object.entries(e.pivots))this.addPivot(t,o,o.formulaId);this.history.update("nextFormulaId",e.pivotNextId||gc(this.pivots)+1)}export(e){e.pivots={};for(const t in this.pivots)e.pivots[t]={...this.getPivotCoreDefinition(t),formulaId:this.getPivotFormulaId(t)};e.pivotNextId=this.nextFormulaId}}).add("spreadsheet_pivot_core",class extends RP{allowDispatch(e){switch(e.type){case"ADD_PIVOT":case"UPDATE_PIVOT":const t=e.pivot;return this.checkDataSetValidity(t)}return"Success"}adaptRanges(e){for(const t of this.getters.getPivotIds()){const o=this.getters.getPivotCoreDefinition(t);if("SPREADSHEET"===o.type&&o.dataSet){const{sheetId:s,zone:i}=o.dataSet,n=MP(this.getters.getRangeFromZone(s,i),e),r=n&&{sheetId:n.sheetId,zone:n.zone};this.dispatch("UPDATE_PIVOT",{pivotId:t,pivot:{...o,dataSet:r}})}}}checkDataSetValidity(e){if("SPREADSHEET"===e.type&&e.dataSet){const{zone:t,sheetId:o}=e.dataSet;return o&&this.getters.tryGetSheet(o)&&t&&Go(t)?this.getters.checkZonesExistInSheet(o,[t]):"InvalidDataSet"}return"Success"}}).add("tableStyle",class extends RP{static getters=["getNewCustomTableStyleName","getTableStyle","getTableStyles","isTableStyleEditable"];styles={};allowDispatch(e){switch(e.type){case"CREATE_TABLE":case"UPDATE_TABLE":if(e.config?.styleId&&!this.styles[e.config.styleId])return"InvalidTableConfig";break;case"CREATE_TABLE_STYLE":if(!Ww[e.templateName])return"InvalidTableStyle";try{zt(e.primaryColor)}catch(e){return"InvalidTableStyle"}}return"Success"}handle(e){switch(e.type){case"CREATE_TABLE_STYLE":const t=qw(e.tableStyleName,e.templateName,e.primaryColor);this.history.update("styles",e.tableStyleId,t);break;case"REMOVE_TABLE_STYLE":const o={...this.styles};delete o[e.tableStyleId],this.history.update("styles",o);for(const t of this.getters.getSheetIds())for(const o of this.getters.getCoreTables(t))o.config.styleId===e.tableStyleId&&this.dispatch("UPDATE_TABLE",{sheetId:t,zone:o.range.zone,config:{styleId:Aw.styleId}})}}getTableStyle(e){if(!this.styles[e])throw new Error(`Table style ${e} does not exist`);return this.styles[e]}getTableStyles(){return this.styles}getNewCustomTableStyleName(){return kt(Uo("Custom Table Style"),Object.values(this.styles).map((e=>e.displayName)),{compute:(e,t)=>`${e} ${t}`,start:2})}isTableStyleEditable(e){return!Gw[e]}import(e){for(const e in Gw)this.styles[e]=Gw[e];for(const t in e.customTableStyles){const o=e.customTableStyles[t];this.styles[t]=qw(o.displayName,o.templateName,o.primaryColor)}}export(e){const t={};for(const e in this.styles)Gw[e]||(t[e]={displayName:this.styles[e].displayName,templateName:this.styles[e].templateName,primaryColor:this.styles[e].primaryColor});e.customTableStyles=t}}),ek=(new n).add("ui_sheet",class extends wN{static getters=["doesCellHaveGridIcon","getCellWidth","getCellIconSrc","getTextWidth","getCellText","getCellMultiLineText","getContiguousZone"];ctx=document.createElement("canvas").getContext("2d");allowDispatch(e){return this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e)}handle(e){switch(e.type){case"AUTORESIZE_COLUMNS":for(let t of e.cols){const o=this.getColMaxWidth(e.sheetId,t);0!==o&&this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"COL",size:o,sheetId:e.sheetId})}break;case"AUTORESIZE_ROWS":this.autoResizeRows(e.sheetId,e.rows)}}getCellWidth(e){const t=this.getters.getCellComputedStyle(e);let o=0;const s=this.getters.getEvaluatedCell(e).formattedValue;if(s){const e=ba(this.ctx,s,t,void 0);o+=Math.max(...e.map((e=>ha(this.ctx,e,t))))}if(this.getters.getCellIconSrc(e)&&(o+=function(e){return fa(e)+8}(t)),this.getters.doesCellHaveGridIcon(e)&&(o+=20),0===o)return 0;if(o+=2*ae,"wrap"===t.wrapping){const t=this.getters.getColSize(this.getters.getActiveSheetId(),e.col);return Math.min(t,o)}return o}getCellIconSrc(e){const t=qy.getAll();for(const o of t){const t=o(this.getters,e);if(t)return t}}getTextWidth(e,t){return ha(this.ctx,e,t)}getCellText(e,t){const o=this.getters.getCell(e),s=this.getters.getLocale();if(t?.showFormula&&o?.isFormula)return el(o.content,s);if(t?.showFormula&&!o?.content)return"";{const i=this.getters.getEvaluatedCell(e),n=t?.availableWidth?{availableWidth:t.availableWidth,measureText:e=>ha(this.ctx,e,o?.style||{})}:void 0;return Kn(i.value,{format:i.format,locale:s,formatWidth:n})}}getCellMultiLineText(e,t){const o=this.getters.getCellStyle(e),s=this.getters.getCellText(e,{showFormula:this.getters.shouldShowFormulas(),availableWidth:t.maxWidth});return ba(this.ctx,s,o,t.wrapText?t.maxWidth:void 0)}doesCellHaveGridIcon(e){const t=this.getters.isFilterHeader(e),o=!this.getters.isReadonly()&&this.getters.cellHasListDataValidationIcon(e);return t||o}getContiguousZone(e,t){const o=t=>{for(const o of je(t.left,t.right+1)){if(!this.isCellEmpty({sheetId:e,col:o,row:t.top-1}))return{...t,top:t.top-1};if(!this.isCellEmpty({sheetId:e,col:o,row:t.bottom+1}))return{...t,bottom:t.bottom+1}}for(const o of je(t.top,t.bottom+1)){if(!this.isCellEmpty({sheetId:e,col:t.left-1,row:o}))return{...t,left:t.left-1};if(!this.isCellEmpty({sheetId:e,col:t.right+1,row:o}))return{...t,right:t.right+1}}return t};let s=!1,i=t;do{s=!1;const e=o(i);Qo(i,e)||(s=!0,i=e)}while(s);return i}isCellEmpty(e){const t=this.getters.getMainCellPosition(e);return this.getters.getEvaluatedCell(t).type===oi.empty}getColMaxWidth(e,t){const o=rs(this.getters.getColsZone(e,t,t)).map((t=>this.getCellWidth({sheetId:e,...t})));return Math.max(0,Ot(o))}checkSheetExists(e){return"sheetId"in e&&void 0===this.getters.tryGetSheet(e.sheetId)?"InvalidSheetId":"Success"}checkZonesAreInSheet(e){const t="sheetId"in e?e.sheetId:this.getters.tryGetActiveSheetId();if("ranges"in e&&e.ranges.some((e=>!this.getters.tryGetSheet(e._sheetId))))return"InvalidSheetId";const o=this.getters.getCommandZones(e);return!t&&o.length>0?"NoActiveSheet":t&&o.length>0?this.getters.checkZonesExistInSheet(t,o):"Success"}autoResizeRows(e,t){const o=[];for(const s of t){let t=0;for(const o of this.getters.getRowCells(e,s)){const s=this.getters.getCellById(o);if(!s)continue;const i=this.getters.getCellPosition(s.id),n=this.getters.getColSize(e,i.col);if(s.isFormula||this.getters.getArrayFormulaSpreadingOn(i)){const e=this.getters.getEvaluatedCell(i).formattedValue,o=aa(this.ctx,e,s?.style,n);o>t&&o>se&&(t=o)}else{const e=s.content,o=aa(this.ctx,e,s?.style,n);o>=t&&o>se&&(t=0)}}o.push(t||null)}const s=new Map(o.map((e=>[e,[]])));for(let e=0;e<o.length;e++)s.get(o[e])?.push(t[e]);for(const[t,o]of s)this.dispatch("RESIZE_COLUMNS_ROWS",{elements:o,dimension:"ROW",size:t,sheetId:e})}}).add("ui_options",class extends wN{static getters=["shouldShowFormulas"];showFormulas=!1;handle(e){if("SET_FORMULA_VISIBILITY"===e.type)this.showFormulas=e.show}shouldShowFormulas(){return this.showFormulas}}).add("autofill",class extends wN{static layers=["Autofill"];static getters=["getAutofillTooltip"];autofillZone;steps;lastCellSelected={};direction;tooltip;allowDispatch(e){if("AUTOFILL_SELECT"===e.type){const t=this.getters.getActiveSheetId();return this.lastCellSelected.col=-1===e.col?this.lastCellSelected.col:Ze(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=-1===e.row?this.lastCellSelected.row:Ze(e.row,0,this.getters.getNumberRows(t)),void 0!==this.lastCellSelected.col&&void 0!==this.lastCellSelected.row?"Success":"InvalidAutofillSelection"}return"Success"}handle(e){switch(e.type){case"AUTOFILL":this.autofill(!0);break;case"AUTOFILL_SELECT":this.select(e.col,e.row);break;case"AUTOFILL_AUTO":this.autofillAuto()}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||void 0===this.direction)return void(this.tooltip=void 0);const t=this.getters.getSelectedZone(),o=this.autofillZone,s=[];switch(this.direction){case"down":for(let e=t.left;e<=t.right;e++){const i=[];for(let o=t.top;o<=t.bottom;o++)i.push(Ao(e,o));const n=this.createGenerator(i);for(let t=o.top;t<=o.bottom;t++)s.push(this.computeNewCell(n,e,t))}break;case"up":for(let e=t.left;e<=t.right;e++){const i=[];for(let o=t.bottom;o>=t.top;o--)i.push(Ao(e,o));const n=this.createGenerator(i);for(let t=o.bottom;t>=o.top;t--)s.push(this.computeNewCell(n,e,t))}break;case"left":for(let e=t.top;e<=t.bottom;e++){const i=[];for(let o=t.right;o>=t.left;o--)i.push(Ao(o,e));const n=this.createGenerator(i);for(let t=o.right;t>=o.left;t--)s.push(this.computeNewCell(n,t,e))}break;case"right":for(let e=t.top;e<=t.bottom;e++){const i=[];for(let o=t.left;o<=t.right;o++)i.push(Ao(o,e));const n=this.createGenerator(i);for(let t=o.left;t<=o.right;t++)s.push(this.computeNewCell(n,t,e))}}if(e){const e={},t={},o={},i=this.getters.getActiveSheetId();for(const n of s)this.collectBordersData(n,e),this.autofillMerge(i,n),this.autofillCell(i,n),this.collectConditionalFormatsData(i,n,t),this.collectDataValidationsData(i,n,o);this.autofillBorders(i,e),this.autofillConditionalFormats(i,t),this.autofillDataValidations(i,o),this.autofillZone=void 0,this.selection.resizeAnchorZone(this.direction,this.steps),this.lastCellSelected={},this.direction=void 0,this.steps=0,this.tooltip=void 0}}collectBordersData(e,t){const o=JSON.stringify(e.border);o in t||(t[o]=[]),t[o].push(hs({col:e.col,row:e.row}))}collectConditionalFormatsData(e,t,o){const{originCol:s,originRow:i,col:n,row:r}=t,a=this.getters.getRulesByCell(e,s,i),l=Ao(n,r);for(const e of a)e.id in o||(o[e.id]=[]),o[e.id].push(l)}collectDataValidationsData(e,t,o){const{originCol:s,originRow:i,col:n,row:r}=t,a={sheetId:e,col:s,row:i},l=this.getters.getValidationRuleForCell(a);l&&(l.id in o||(o[l.id]=[]),o[l.id].push(hs({col:n,row:r})))}autofillCell(e,t){this.dispatch("UPDATE_CELL",{sheetId:e,col:t.col,row:t.row,content:t.content||"",style:t.style||null,format:t.format||""}),this.dispatch("AUTOFILL_CELL",t)}autofillBorders(e,t){for(const o in t){const s="undefined"===o?void 0:JSON.parse(o);this.dispatch("SET_BORDERS_ON_TARGET",{sheetId:e,border:s,target:_o(t[o])})}}autofillConditionalFormats(e,t){for(const o in t){const s=t[o],i=this.getters.getConditionalFormats(e).find((e=>e.id===o));if(!i)continue;const n=this.getters.getAdaptedCfRanges(e,i,s.map($o),[]);n&&this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:i.id,rule:i.rule,stopIfTrue:i.stopIfTrue},ranges:n,sheetId:e})}}autofillDataValidations(e,t){for(const o in t){const s=t[o],i=this.getters.getDataValidationRule(e,o);if(!i)continue;const n=i.ranges.map((e=>e.zone)),r=_o(n.concat(s),[]);this.dispatch("ADD_DATA_VALIDATION_RULE",{rule:i,ranges:r.map((t=>this.getters.getRangeDataFromZone(e,t))),sheetId:e})}}select(e,t){const o=this.getters.getSelectedZone();if(ts(e,t,o))this.autofillZone=void 0;else{switch(this.direction=this.getDirection(e,t),this.direction){case"up":this.saveZone(t,o.top-1,o.left,o.right),this.steps=o.top-t;break;case"down":this.saveZone(o.bottom+1,t,o.left,o.right),this.steps=t-o.bottom;break;case"left":this.saveZone(o.top,o.bottom,e,o.left-1),this.steps=o.left-e;break;case"right":this.saveZone(o.top,o.bottom,o.right+1,e),this.steps=e-o.right}this.autofill(!1)}}autofillAuto(){const e=this.getters.getActivePosition(),t=this.getters.getTable(e);let o=t?t.range.zone.bottom:this.getAutofillAutoLastRow();const s=this.getters.getSelectedZone();for(let t=s.bottom+1;t<=o;t++)if(this.getters.getEvaluatedCell({...e,row:t}).type!==oi.empty){o=t-1;break}o>s.bottom&&(this.select(e.col,o),this.autofill(!0))}getAutofillAutoLastRow(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();let o=e.left,s=e.bottom;if(o>0){let e={sheetId:t,col:o-1,row:s};for(;this.getters.getEvaluatedCell(e).type!==oi.empty;)s+=1,e={sheetId:t,col:o-1,row:s}}if(s===e.bottom&&(o=e.right,o<=this.getters.getNumberCols(t))){let e={sheetId:t,col:o+1,row:s};for(;this.getters.getEvaluatedCell(e).type!==oi.empty;)s+=1,e={sheetId:t,col:o+1,row:s}}return s-1}computeNewCell(e,t,o){const{cellData:s,tooltip:i,origin:n}=e.next(),{content:r,style:a,border:l,format:c}=s;return this.tooltip=i,{originCol:n.col,originRow:n.row,col:t,row:o,content:r,style:a,border:l,format:c}}getRule(e,t){const o=JS.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((o=>o.condition(e,t)));return o&&this.direction&&o.generateRule(e,t,this.direction)}createGenerator(e){const t=[],o=[],s=this.getters.getActiveSheetId();for(let t of e){const{col:e,row:i}=To(t),n=this.getters.getCell({sheetId:s,col:e,row:i});o.push({col:e,row:i,cell:n,sheetId:s})}const i=o.map((e=>e.cell));for(let e of o){let o={type:"COPY_MODIFIER"};if(e&&e.cell){o=this.getRule(e.cell,i)||o}const s=this.getters.getCellBorder(e)||void 0;t.push({data:{...e,border:s},rule:o})}return new xN(t,this.getters,this.direction)}saveZone(e,t,o,s){this.autofillZone={top:e,bottom:t,left:o,right:s}}getDirection(e,t){const o=this.getters.getSelectedZone(),s={up:{number:o.top-t,value:"up"},down:{number:t-o.bottom,value:"down"},left:{number:o.left-e,value:"left"},right:{number:e-o.right,value:"right"}};if(1===Object.values(s).map((e=>e.number>0?1:0)).reduce(((e,t)=>e+t)))return Object.values(s).find((e=>e.number>0?1:0)).value;const i=s.up.number>0?"up":"down",n=s.left.number>0?"left":"right";return Math.abs(s[i].number)>=Math.abs(s[n].number)?s[i].value:s[n].value}autofillMerge(e,t){const{originCol:o,originRow:s,col:i,row:n}=t,r={sheetId:e,col:i,row:n},a={sheetId:e,col:o,row:s};if(this.getters.isInMerge(r)&&!this.getters.isInMerge(a)){const t=this.getters.getMerge(r);t&&this.dispatch("REMOVE_MERGE",{sheetId:e,target:[t]})}const l=this.getters.getMerge(a);l?.left===o&&l?.top===s&&this.dispatch("ADD_MERGE",{sheetId:e,target:[{top:n,bottom:n+l.bottom-l.top,left:i,right:i+l.right-l.left}]})}drawLayer(e){if(!this.autofillZone)return;const{ctx:t,thinLineWidth:o}=e,{x:s,y:i,width:n,height:r}=this.getters.getVisibleRect(this.autofillZone);n>0&&r>0&&(t.strokeStyle="black",t.lineWidth=o,t.setLineDash([3]),t.strokeRect(s,i,n,r),t.setLineDash([]))}}).add("sort",class extends wN{allowDispatch(e){return"SORT_CELLS"===e.type?ts(e.col,e.row,e.zone)?this.checkValidations(e,this.checkMerge,this.checkMergeSizes,this.checkArrayFormulaInSortZone):"InvalidSortAnchor":"Success"}handle(e){if("SORT_CELLS"===e.type)this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{})}checkMerge({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return"Success";return rs(t).some((({col:t,row:o})=>!this.getters.isInMerge({sheetId:e,col:t,row:o})))?"InvalidSortZone":"Success"}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return"Success";const o=this.getters.getMerges(e).filter((e=>es(e,t))),s=ss(o[0]);let[i,n]=[s.numberOfCols,s.numberOfRows];return o.every((e=>{let[t,o]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&o===n}))?"Success":"InvalidSortZone"}checkArrayFormulaInSortZone({sheetId:e,zone:t}){return rs(t).some((({col:t,row:o})=>this.getters.getArrayFormulaSpreadingOn({sheetId:e,col:t,row:o})))?"SortZoneWithArrayFormulas":"Success"}hasHeader(e,t){if(1===t[0].length)return!1;let o=t.map((t=>t.map((({col:t,row:o})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:o}).type))));return o[0][0]===oi.empty&&(o=o.slice(1)),!o.some((e=>e[0]===oi.empty))&&!!o.some((e=>e[1]!==oi.empty&&e[0]!==e[1]))}sortZone(e,t,o,s,i){const[n,r]=this.mainCellsSteps(e,o);let a=this.getters.getMainCellPosition({sheetId:e,col:t.col,row:t.row}).col,l=Object.assign({},o),c=this.mainCells(e,o);!i.sortHeaders&&this.hasHeader(e,c)&&(l.top+=r),c=this.mainCells(e,l);const h=function(e,t,o){const s=e.map(((e,t)=>({index:t,type:e.type,value:e.value})));return(o?s.map((e=>e.type===oi.empty?{...e,type:oi.number,value:0}:e)):s).sort(em(t))}(c[a-l.left].map((e=>this.getters.getEvaluatedCell(e))),s,Boolean(i.emptyCellAsZero)),d=h.map((e=>e.index)),[u,g]=[c.length,c[0].length],p=[];for(let e=0;e<u;e++)for(let t=0;t<g;t++){let{col:o,row:s,sheetId:i}=c[e][d[t]];const a=this.getters.getCell({sheetId:i,col:o,row:s});let h=l.left+e*n,u=l.top+t*r,g={sheetId:i,col:h,row:u,content:""};if(a){let e=a.content;if(a.isFormula){const t=this.getters.getCellPosition(a.id);e=this.getters.getTranslatedCellFormula(i,0,u-t.row,a.compiledFormula.tokens)}g.style=a.style,g.content=e,g.format=a.format}p.push(g)}p.forEach((e=>this.dispatch("UPDATE_CELL",e)))}mainCellsSteps(e,t){const o=this.getters.getMerge({sheetId:e,col:t.left,row:t.top});return[o?o.right-o.left+1:1,o?o.bottom-o.top+1:1]}mainCells(e,t){const[o,s]=this.mainCellsSteps(e,t),i=[],n=je(t.left,t.right+1,o),r=je(t.top,t.bottom+1,s);for(const t of n){const o=[];i.push(o);for(const s of r)o.push({sheetId:e,col:t,row:s})}return i}}).add("automatic_sum",class extends wN{static getters=["getAutomaticSums"];handle(e){if("SUM_SELECTION"===e.type){const e=this.getters.getActiveSheetId(),{zones:t,anchor:o}=this.getters.getSelection();for(const s of t){const t=this.getAutomaticSums(e,s,o.cell);this.dispatchCellUpdates(e,t)}}}getAutomaticSums(e,t,o){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,o):this.sumData(e,t)}sumData(e,t){const o=this.dimensionsToSum(e,t),s=this.sumDimensions(e,t,o).filter((({zone:t})=>!this.getters.isEmpty(e,t)));return o.has("ROW")&&o.has("COL")&&s.push(this.sumTotal(t)),s}sumAdjacentData(e,t,o){const{col:s,row:i}=ts(o.col,o.row,t)?o:{col:t.left,row:t.top},n=this.findAdjacentData(e,s,i);return n?this.getters.isSingleCellOrMerge(e,t)||is(Ko(n,t))?[{position:{col:s,row:i},zone:n}]:this.sumDimensions(e,Ko(n,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,o){const s=this.getters.getSheet(e),i=this.getters.getMainCellPosition({sheetId:e,col:t,row:o}),n=this.findSuitableZoneToSum(s,i.col,i.row);if(n)return this.getters.expandZone(e,n)}findSuitableZoneToSum(e,t,o){const s=this.getters.getEvaluatedCell({sheetId:e.id,col:t,row:o-1}),i=this.getters.getEvaluatedCell({sheetId:e.id,col:t-1,row:o});if(this.isNumber(i)&&!this.isNumber(s))return this.findHorizontalZone(e,t,o);const n=this.findVerticalZone(e,t,o);if(this.isZoneValid(n))return n;const r=this.findHorizontalZone(e,t,o);return this.isZoneValid(r)?r:void 0}findVerticalZone(e,t,o){const s={top:0,bottom:o-1,left:t,right:t},i=this.reduceZoneStart(e,s,s.bottom);return{...s,top:i}}findHorizontalZone(e,t,o){const s={top:o,bottom:o,left:0,right:t-1},i=this.reduceZoneStart(e,s,s.right);return{...s,left:i}}reduceZoneStart(e,t,o){const s=this.getters.getEvaluatedCellsInZone(e.id,t),i=je(o,-1,-1),n=Ot(i.filter((e=>s[e]&&!s[e].isAutoSummable))),r=Ye(i.filter((e=>this.isNumber(s[e]))))[0]||[];return Ot(r)<n?1/0:Ft(r)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){return e.type===oi.number&&!(e.format&&nr(e.format))}isZoneValid(e){return e.bottom>=e.top&&e.right>=e.left}lastColIsEmpty(e,t){return this.getters.isEmpty(e,{...t,left:t.right})}lastRowIsEmpty(e,t){return this.getters.isEmpty(e,{...t,top:t.bottom})}dimensionsToSum(e,t){const o=new Set;return is(t)?(o.add(1===ss(t).numberOfCols?"COL":"ROW"),o):(this.lastColIsEmpty(e,t)&&o.add("ROW"),this.lastRowIsEmpty(e,t)&&o.add("COL"),0===o.size&&o.add("COL"),o)}sumDimensions(e,t,o){return[...o.has("COL")?this.sumColumns(t,e):[],...o.has("ROW")?this.sumRows(t,e):[]]}sumTotal(e){const{bottom:t,right:o}=e;return{position:{col:o,row:t},zone:{...e,top:t,right:o-1}}}sumColumns(e,t){const o=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,o.bottom-1)},rs(o).map((t=>({position:t,zone:{...e,right:t.col,left:t.col}})))}sumRows(e,t){const o=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,o.right-1)},rs(o).map((t=>({position:t,zone:{...e,top:t.row,bottom:t.row}})))}dispatchCellUpdates(e,t){for(const o of t){const{col:t,row:s}=o.position;this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:s,content:`=SUM(${this.getters.zoneToXC(e,o.zone)})`})}}nextEmptyRow(e,t){let o=t.bottom+1;const{left:s,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:o,top:o,left:s,right:i});)o++;return{...t,top:o,bottom:o}}nextEmptyCol(e,t){let o=t.right+1;const{top:s,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:o,right:o,top:s,bottom:i});)o++;return{...t,left:o,right:o}}transpose(e){return new Set([...e.values()].map((e=>"COL"===e?"ROW":"COL")))}}).add("format",class extends wN{handle(e){switch(e.type){case"SET_DECIMAL":this.setDecimal(e.sheetId,e.target,e.step);break;case"SET_FORMATTING_WITH_PIVOT":this.setContextualFormat(e.sheetId,e.target,e.format)}}setContextualFormat(e,t,o){const s=[],i={};for(const o of _o(t))for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++){const o={sheetId:e,col:t,row:n},r=this.getters.getPivotCellFromPosition(o);if(this.isSpilledPivotValueFormula(o,r)){s.push(o);const e=this.getters.getPivotIdFromPosition(o)||"";i[e]??=new Set,i[e].add(r.measure)}}const n=_o(s.map(hs));for(const e in i){const t=i[e],s=this.getters.getPivotCoreDefinition(e);this.dispatch("UPDATE_PIVOT",{pivotId:e,pivot:{...s,measures:s.measures.map((e=>t.has(e.id)?{...e,format:o}:e))}})}this.dispatch("SET_FORMATTING",{sheetId:e,target:n,format:""}),this.dispatch("SET_FORMATTING",{sheetId:e,target:_o(t,n),format:o})}isSpilledPivotValueFormula(e,t){const o=this.getters.getCell(e);return"VALUE"===t.type&&!o?.isFormula}setDecimal(e,t,o){const s={};for(const i of _o(t))for(const t of rs(i)){const i=this.getCellNumberFormat({sheetId:e,...t});if(void 0!==i){const e=yr(i,o);s[e]=s[e]||[],s[e].push(t)}}for(const t in s){const o=_o(s[t].map((e=>hs(e))));this.setContextualFormat(e,o,t)}}getCellNumberFormat(e){for(const t of[e]){const e=this.getters.getEvaluatedCell(t);if(!(e.type!==oi.number||e.format&&nr(e.format)))return e.format||lr(e.value)}}}).add("insert_pivot",class extends wN{static getters=[];allowDispatch(e){if("DUPLICATE_PIVOT_IN_NEW_SHEET"===e.type){if(!this.getters.isExistingPivot(e.pivotId))return"PivotIdNotFound";if(!this.getters.getPivot(e.pivotId).isValid())return"PivotInError"}return"Success"}handle(e){switch(e.type){case"INSERT_NEW_PIVOT":this.insertNewPivot(e.pivotId,e.newSheetId);break;case"DUPLICATE_PIVOT_IN_NEW_SHEET":this.duplicatePivotInNewSheet(e.pivotId,e.newPivotId,e.newSheetId);break;case"INSERT_PIVOT_WITH_TABLE":this.insertPivotWithTable(e.sheetId,e.col,e.row,e.pivotId,e.table,e.pivotMode);break;case"SPLIT_PIVOT_FORMULA":this.splitPivotFormula(e.sheetId,e.col,e.row,e.pivotId)}}insertNewPivot(e,t){1===gs(this.getters.getSelectedZone())&&this.selection.selectTableAroundSelection();const o=this.getters.getActiveSheetId();this.dispatch("ADD_PIVOT",{pivotId:e,pivot:{dataSet:{zone:this.getters.getSelectedZone(),sheetId:o},columns:[],rows:[],measures:[],name:Uo("New pivot"),type:"SPREADSHEET"}});const s=this.getters.getSheetIds().findIndex((e=>e===o))+1,i=this.getters.getPivotFormulaId(e);this.dispatch("CREATE_SHEET",{sheetId:t,name:Uo("Pivot #%(formulaId)s",{formulaId:i}),position:s}),this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:o,sheetIdTo:t});const n=this.getters.getPivot(e);this.insertPivotWithTable(t,0,0,e,n.getTableStructure().export(),"dynamic")}duplicatePivotInNewSheet(e,t,o){this.dispatch("DUPLICATE_PIVOT",{pivotId:e,newPivotId:t,duplicatedPivotName:Uo("%s (copy)",this.getters.getPivotCoreDefinition(e).name)});const s=this.getters.getActiveSheetId(),i=this.getters.getSheetIds().indexOf(s)+1,n=this.getters.getPivotFormulaId(t),r=this.getters.getPivotName(t);if(this.dispatch("CREATE_SHEET",{sheetId:o,name:this.getPivotDuplicateSheetName(Uo("%(newPivotName)s (Pivot #%(formulaId)s)",{newPivotName:r,formulaId:n})),position:i}).isSuccessful){this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:s,sheetIdTo:o});const i=this.getters.getPivot(e);this.insertPivotWithTable(o,0,0,t,i.getTableStructure().export(),"dynamic")}}getPivotDuplicateSheetName(e){const t=this.getters.getSheetIds().map((e=>this.getters.getSheetName(e)));return kt(qe(e),t)}insertPivotWithTable(e,t,o,s,i,n){const{cols:r,rows:a,measures:l,fieldsType:c}=i,h=new MF(r,a,l,c||{}),d=h.columns.length-1;this.resizeSheet(e,t,o,h);const u=this.getters.getPivotFormulaId(s);let g;"dynamic"===n?(this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:o,content:`=PIVOT(${u})`}),g={left:t,right:t,top:o,bottom:o}):(this.dispatch("INSERT_PIVOT",{sheetId:e,col:t,row:o,pivotId:s,table:h.export()}),g={left:t,right:t+h.getNumberOfDataColumns(),top:o,bottom:o+d+h.rows.length}),this.dispatch("CREATE_TABLE",{tableType:n,sheetId:e,ranges:[this.getters.getRangeDataFromZone(e,g)],config:{...Ve,numberOfHeaders:d}})}resizeSheet(e,t,o,s){const i=s.getNumberOfDataColumns()+1,n=this.getters.getNumberCols(e),r=n-t;r<i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:n-1,sheetId:e,quantity:i-r,position:"after"});const a=s.columns.length+s.rows.length,l=this.getters.getNumberRows(e),c=l-o;c<a&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:l-1,sheetId:e,quantity:a-c,position:"after"})}splitPivotFormula(e,t,o,s){const i=this.getters.getSpreadZone({sheetId:e,col:t,row:o});if(!i)return;const n=this.getters.getPivotFormulaId(s),r=new Map;for(let t=i.left;t<=i.right;t++)for(let o=i.top;o<=i.bottom;o++){const s={sheetId:e,col:t,row:o};r.set(s,this.getters.getPivotCellFromPosition(s))}for(const[e,t]of r)this.dispatch("UPDATE_CELL",{...e,content:yc(n,t)});const a=this.getters.getCoreTable({sheetId:e,col:t,row:o});if("dynamic"===a?.type){const s=hs({col:t,row:o}),n=this.getters.getRangeDataFromZone(e,i);this.dispatch("UPDATE_TABLE",{sheetId:e,zone:s,newTableRange:n,tableType:"static"})}}}).add("pivot_presence",class extends wN{static getters=["getPivotPresenceTracker"];trackPresencePivotId;tracker;handle(e){switch(e.type){case"PIVOT_START_PRESENCE_TRACKING":this.tracker=new KN,this.trackPresencePivotId=e.pivotId;break;case"PIVOT_STOP_PRESENCE_TRACKING":this.trackPresencePivotId=void 0}}getPivotPresenceTracker(e){if(this.trackPresencePivotId===e){if(!this.tracker)throw new Error("Tracker not initialized");return this.tracker}}}).add("split_to_columns",class extends wN{static getters=["getAutomaticSeparator"];allowDispatch(e){return"SPLIT_TEXT_INTO_COLUMNS"===e.type?this.chainValidations(this.batchValidations(this.checkSingleColSelected,this.checkNonEmptySelector),this.batchValidations(this.checkNotOverwritingContent,this.checkSeparatorInSelection))(e):"Success"}handle(e){if("SPLIT_TEXT_INTO_COLUMNS"===e.type)this.splitIntoColumns(e)}getAutomaticSeparator(){const e=this.getters.getSelectedCells();for(const t of e)if(t.value&&t.type===oi.text){const e=this.getAutoSeparatorForString(t.value);if(e)return e}return" "}getAutoSeparatorForString(e){const t=[Ne,";",","," ","."];for(const o of t)if(e.includes(o))return o}splitIntoColumns({separator:e,addNewColumns:t}){const o=this.getters.getSelectedZone(),s=this.getters.getActiveSheetId(),i=this.getSplittedCols(o,e);t&&this.addColsToAvoidCollisions(o,i),this.removeMergesInSplitZone(o,i),this.addColumnsToNotOverflowSheet(o,i);for(let e=0;e<i.length;e++){const t=o.top+e,n=i[e],r=o.left,a=this.getters.getCell({sheetId:s,col:r,row:t});if(1!==n.length||n[0]!==a?.content)for(const[e,o]of n.entries())this.dispatch("UPDATE_CELL",{sheetId:s,col:r+e,row:t,content:Ya(o,this.getters.getLocale()),format:"",style:a?.style||null})}}getSplittedCols(e,t){if(!t)throw new Error("Separator cannot be empty");const o=this.getters.getActiveSheetId(),s=[];for(const i of je(e.top,e.bottom+1)){const n=this.getters.getEvaluatedCell({sheetId:o,col:e.left,row:i}).formattedValue;s.push(this.splitAndRemoveTrailingEmpty(n,t))}return s}splitAndRemoveTrailingEmpty(e,t){const o=e.split(t);for(;o.length>1&&""===o[o.length-1];)o.pop();return o}willSplittedColsOverwriteContent(e,t){const o=this.getters.getActiveSheetId();for(const s of je(e.top,e.bottom+1)){const i=t[s-e.top];for(let t=1;t<i.length;t++){const i=this.getters.getCell({sheetId:o,col:e.left+t,row:s});if(i&&i.content)return!0}}return!1}removeMergesInSplitZone(e,t){const o=this.getters.getActiveSheetId(),s=Math.max(...t.map((e=>e.length))),i={...e,right:e.left+s-1},n=this.getters.getMergesInZone(o,i);this.dispatch("REMOVE_MERGE",{sheetId:o,target:n})}addColsToAvoidCollisions(e,t){const o=this.getters.getActiveSheetId();let s=0;for(const i of je(e.top,e.bottom+1)){const n={sheetId:o,col:e.left,row:i},r=t[i-e.top],a=this.getColsToAddToAvoidCollision(n,r);s=Math.max(s,a)}s&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:e.left,sheetId:o,quantity:s,position:"after"})}getColsToAddToAvoidCollision(e,t){const o=t.length;for(let t=1;t<o;t++){const s=e.col+t,i=this.getters.getCell({...e,col:s});if(i&&i.content)return o-t}return 0}addColumnsToNotOverflowSheet(e,t){const o=this.getters.getActiveSheetId(),s=Math.max(...t.map((e=>e.length-1))),i=this.getters.getNumberCols(o)-1;e.left+s>i&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:i,sheetId:o,quantity:e.left+s-i,position:"after"})}checkSingleColSelected(){return this.getters.isSingleColSelected()?"Success":"MoreThanOneColumnSelected"}checkNonEmptySelector(e){return""===e.separator?"EmptySplitSeparator":"Success"}checkNotOverwritingContent(e){if(e.addNewColumns||e.force)return"Success";const t=this.getters.getSelectedZones()[0],o=this.getSplittedCols(t,e.separator);return this.willSplittedColsOverwriteContent(t,o)?"SplitWillOverwriteContent":"Success"}checkSeparatorInSelection({separator:e}){const t=this.getters.getSelectedCells();for(const o of t)if(o.formattedValue.includes(e))return"Success";return"NoSplitSeparatorInSelection"}}).add("collaborative",class extends wN{static getters=["getClientsToDisplay","getClient","getConnectedClients","isFullySynchronized"];static layers=["Selection"];availableColors=new go(12);colors={};session;constructor(e){super(e),this.session=e.session}isPositionValid(e){return e.row<this.getters.getNumberRows(e.sheetId)&&e.col<this.getters.getNumberCols(e.sheetId)}getClient(){return this.session.getClient()}getConnectedClients(){return this.session.getConnectedClients()}isFullySynchronized(){return this.session.isFullySynchronized()}getClientsToDisplay(){try{this.getters.getClient()}catch(e){if(e instanceof NN)return[];throw e}const e=this.getters.getActiveSheetId(),t=[];for(const o of this.getters.getConnectedClients())if(o.id!==this.getters.getClient().id&&o.position&&o.position.sheetId===e&&this.isPositionValid(o.position)){const e=o.position;this.colors[o.id]||(this.colors[o.id]=this.availableColors.next());const s=this.colors[o.id];t.push({...o,position:e,color:s})}return t}drawLayer(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,s=this.getters.getActiveSheetId();for(const e of this.getClientsToDisplay()){const{row:i,col:n}=e.position,r=this.getters.expandZone(s,{top:i,bottom:i,left:n,right:n}),{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(r);if(c<=0||h<=0)continue;const d=e.color;t.fillStyle=`${d}10`,t.lineWidth=4*o,t.strokeStyle=d,t.globalCompositeOperation="multiply",t.fillRect(a,l,c,h),t.globalCompositeOperation="source-over",t.strokeRect(a,l,c,h),t.font=`bold ${fe+1}px ${ve}`}}}).add("history",class extends wN{static getters=["canUndo","canRedo"];undoStack=[];redoStack=[];session;constructor(e){super(e),this.session=e.session,this.session.on("new-local-state-update",this,this.onNewLocalStateUpdate),this.session.on("snapshot",this,(()=>{this.undoStack=[],this.redoStack=[]}))}allowDispatch(e){switch(e.type){case"REQUEST_UNDO":if(!this.canUndo())return"EmptyUndoStack";break;case"REQUEST_REDO":if(!this.canRedo())return"EmptyRedoStack"}return"Success"}handle(e){switch(e.type){case"REQUEST_UNDO":case"REQUEST_REDO":this.requestHistoryChange("REQUEST_UNDO"===e.type?"UNDO":"REDO")}}finalize(){}requestHistoryChange(e){const t="UNDO"===e?this.undoStack.pop():this.redoStack.pop();if(t)"UNDO"===e?(this.session.undo(t),this.redoStack.push(t)):(this.session.redo(t),this.undoStack.push(t));else{const e=this.getPossibleRevisionToRepeat();if(!e)return;const t=XN(e,this.getters);if(!t)return;if(!Array.isArray(t))return void this.dispatch(t.type,t);for(const e of t)this.dispatch(e.type,e)}}canUndo(){return this.undoStack.length>0}canRedo(){if(this.redoStack.length>0)return!0;const e=this.getPossibleRevisionToRepeat();return!(!(t=e)||!t.rootCommand||"object"!=typeof t.rootCommand)&&(di(t.rootCommand)?ZN.contains(t.rootCommand.type):jN.contains(t.rootCommand.type));var t}onNewLocalStateUpdate({id:e}){this.undoStack.push(e),this.redoStack=[],this.undoStack.length>99&&this.undoStack.shift()}getPossibleRevisionToRepeat(){return this.session.getLastLocalNonEmptyRevision()}}).add("data_cleanup",class extends wN{allowDispatch(e){return"REMOVE_DUPLICATES"===e.type?this.checkValidations(e,this.chainValidations(this.checkSingleRangeSelected,this.checkNoMergeInZone,this.checkRangeContainsValues,this.checkColumnsIncludedInZone),this.chainValidations(this.checkNoColumnProvided,this.checkColumnsAreUnique)):"Success"}handle(e){switch(e.type){case"REMOVE_DUPLICATES":this.removeDuplicates(e.columns,e.hasHeader);break;case"TRIM_WHITESPACE":this.trimWhitespace()}}removeDuplicates(e,t){const o=this.getters.getActiveSheetId(),s=this.getters.getSelectedZone();t&&(s.top+=1);const i=this.getUniqueRowsIndexes(o,s.top,s.bottom,e),n=i.length;if(n===ss(s).numberOfRows)return void this.notifyRowsRemovedAndRemaining(0,n);const r=i.map((e=>({left:s.left,top:e,right:s.right,bottom:e}))),a=new Dc(this.getters,this.dispatch),l=a.copy(Ia(o,r));if(!l)return;this.dispatch("CLEAR_CELLS",{target:[s],sheetId:o});const c={left:s.left,top:s.top,right:s.left,bottom:s.top};a.paste({zones:[c],sheetId:o},l,{isCutOperation:!1});const h={left:s.left,top:s.top-(t?1:0),right:s.right,bottom:s.top+n-1};this.selection.selectZone({cell:{col:h.left,row:h.top},zone:h});const d=s.bottom-s.top+1-n;this.notifyRowsRemovedAndRemaining(d,n)}getUniqueRowsIndexes(e,t,o,s){const i=new Map;for(const n of je(t,o+1)){const t=s.map((t=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}).value));!Object.values(i).some((e=>ft(e,t)))&&(i[n]=t)}return Object.keys(i).map((e=>parseInt(e)))}notifyRowsRemovedAndRemaining(e,t){this.ui.notifyUI({type:"info",text:Uo("%s duplicate rows found and removed.\n%s unique rows remain.",e.toString(),t.toString()),sticky:!1})}checkSingleRangeSelected(){return 1!==this.getters.getSelectedZones().length?"MoreThanOneRangeSelected":"Success"}checkNoMergeInZone(){const e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZone();return this.getters.getMergesInZone(e,t).length>0?"WillRemoveExistingMerge":"Success"}checkRangeContainsValues(e){const t=this.getters.getActiveSheetId(),o=this.getters.getSelectedZone();e.hasHeader&&(o.top+=1);return this.getters.getEvaluatedCellsInZone(t,o).every((e=>"empty"===e.type))?"EmptyTarget":"Success"}checkNoColumnProvided(e){return 0===e.columns.length?"NoColumnsProvided":"Success"}checkColumnsIncludedInZone(e){const t=this.getters.getSelectedZone();return e.columns.some((e=>e<t.left||e>t.right))?"ColumnsNotIncludedInZone":"Success"}checkColumnsAreUnique(e){return e.columns.length!==new Set(e.columns).size?"DuplicatesColumnsSelected":"Success"}trimWhitespace(){const e=_o(this.getters.getSelectedZones()),t=this.getters.getActiveSheetId();let o=0;for(const{col:s,row:i}of e.map(rs).flat()){const e=this.getters.getCell({col:s,row:i,sheetId:t});if(!e)continue;const n=At(e.content);n!==e.content&&(o+=1,this.dispatch("UPDATE_CELL",{sheetId:t,col:s,row:i,content:n}))}const s=o?Uo("Trimmed whitespace from %s cells.",o):Uo("No selected cells had whitespace trimmed.");this.ui.notifyUI({type:"info",text:s,sticky:!1})}}).add("table_autofill",class extends wN{handle(e){if("AUTOFILL_TABLE_COLUMN"===e.type){const t=this.getters.getCoreTable(e),o=this.getters.getCell(e);if(!t?.config.automaticAutofill||"dynamic"===t.type||!o?.isFormula)return;const{col:s,row:i}=e,n=function(e,t){const o=t.numberOfHeaders,s={...e,top:e.top+o};return s.top<=s.bottom?s:void 0}(t.range.zone,t.config);if(n&&ts(s,i,n)){const t=e.autofillRowStart??n.top,o=e.autofillRowEnd??n.bottom,s={...n,top:t,bottom:o};this.autofillTableZone(e,s)}}}autofillTableZone(e,t){if(t.top===t.bottom)return;const{col:o,row:s,sheetId:i}=e;for(let e=t.top;e<=t.bottom;e++)if(e!==s&&this.getters.getEvaluatedCell({col:o,row:e,sheetId:i}).type!==oi.empty)return;const n={zone:this.getters.getSelectedZone(),cell:this.getters.getActivePosition()};this.selection.selectCell(o,s),this.dispatch("AUTOFILL_SELECT",{col:o,row:t.bottom}),this.dispatch("AUTOFILL"),this.selection.selectCell(o,s),this.dispatch("AUTOFILL_SELECT",{col:o,row:t.top}),this.dispatch("AUTOFILL"),this.selection.selectZone(n)}}).add("table_ui_resize",class extends wN{allowDispatch(e){if("RESIZE_TABLE"===e.type){const t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return"TableNotFound";const o=t.range.zone,s=this.getters.getRangeFromRangeData(e.newTableRange).zone;return s.top!==o.top||s.left!==o.left?"InvalidTableResize":this.canDispatch("UPDATE_TABLE",{...e}).reasons}return"Success"}handle(e){switch(e.type){case"RESIZE_TABLE":{const t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(this.dispatch("UPDATE_TABLE",{...e}),!t)return;const o=this.getters.getRangeFromRangeData(e.newTableRange).zone;if(this.selection.selectCell(o.right,o.bottom),!t.config.automaticAutofill)return;const s=t.range.zone;if(o.bottom>=s.bottom){for(let t=o.left;t<=o.right;t++){const i={col:t,row:s.bottom,sheetId:e.sheetId};this.getters.getCell(i)?.content.startsWith("=")&&this.dispatch("AUTOFILL_TABLE_COLUMN",{...i,autofillRowStart:s.bottom,autofillRowEnd:o.bottom})}break}}}}}).add("datavalidation_insert",class extends wN{handle(e){if("ADD_DATA_VALIDATION_RULE"===e.type)if("isBoolean"===e.rule.criterion.type){const t=e.ranges.map((e=>this.getters.getRangeFromRangeData(e)));for(const e of Jr(t)){const t=this.getters.getCell(e),o=this.getters.getEvaluatedCell(e);if(t?.content)if(t?.content&&o.type===oi.empty){let o;if(t.content.startsWith("=")){const s=this.getters.evaluateFormula(e.sheetId,t.content);o=(bi(s)?s[0][0]:s)?.toString()}else o=t.content;o&&Ke(o)||this.dispatch("UPDATE_CELL",{...e,content:"FALSE"})}else o.type!==oi.boolean&&this.dispatch("UPDATE_CELL",{...e,content:"FALSE"});else this.dispatch("UPDATE_CELL",{...e,content:"FALSE"})}}}}).add("geo_features",class extends wN{static getters=["getGeoJsonFeatures","geoFeatureNameToId","getGeoChartAvailableRegions"];geoJsonService;geoJsonCache={};constructor(e){super(e),this.geoJsonService=e.external.geoJsonService}getGeoChartAvailableRegions(){return this.geoJsonService?this.geoJsonService.getAvailableRegions()||[]:(console.error("No geoJsonService provided to the model"),[])}getGeoJsonFeatures(e){if(!this.geoJsonService)return void console.error("No geoJsonService provided to the model");const t=this.geoJsonCache[e];return t instanceof Promise?void 0:void 0!==t?t??void 0:void(this.geoJsonCache[e]=new Promise((async t=>{const o=await(this.geoJsonService?.getTopoJson(e));this.geoJsonCache[e]=this.convertToGeoJson(o),this.dispatch("EVALUATE_CHARTS"),t()})))}geoFeatureNameToId(e,t){if(this.geoJsonService)return this.geoJsonService.geoFeatureNameToId(e,t);console.error("No geoJsonService provided to the model")}convertToGeoJson(e){if(!e)return null;if("Topology"===e.type){const t=window.ChartGeo.topojson.feature(e,Object.values(e.objects)[0]);return"FeatureCollection"===t.type?t.features:[t]}if("FeatureCollection"===e.type)return e.features;throw new Error("Invalid TopoJSON")}}),tk=(new n).add("selection",class extends wN{static layers=["Selection"];static getters=["getActiveSheet","getActiveSheetId","getActiveCell","getActiveCols","getActiveRows","getCurrentStyle","getSelectedZones","getSelectedZone","getSelectedCells","getSelectedFigureId","getSelection","getActivePosition","getSheetPosition","isSingleColSelected","getElementsFromSelection","tryGetActiveSheetId","isGridSelectionActive"];gridSelection={anchor:{cell:{col:0,row:0},zone:{top:0,left:0,bottom:0,right:0}},zones:[{top:0,left:0,bottom:0,right:0}]};selectedFigureId=null;sheetsData={};moveClient;activeSheet=null;constructor(e){super(e),this.moveClient=e.moveClient}allowDispatch(e){switch(e.type){case"ACTIVATE_SHEET":try{if(!this.getters.getSheet(e.sheetIdTo).isVisible)return"SheetIsHidden";break}catch(e){return"InvalidSheetId"}case"MOVE_COLUMNS_ROWS":return this.isMoveElementAllowed(e)}return"Success"}handleEvent(e){const t=e.anchor;let o=[];switch(e.mode){case"overrideSelection":o=[t.zone];break;case"updateAnchor":o=[...this.gridSelection.zones];const s=o.findIndex((t=>Qo(t,e.previousAnchor.zone)));s>=0&&(o[s]=t.zone);break;case"newAnchor":o=[...this.gridSelection.zones,t.zone]}this.setSelectionMixin(e.anchor,o),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor));const{col:s,row:i}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:s,row:i}),this.selectedFigureId=null}handle(e){switch(e.type){case"ACTIVATE_SHEET":this.selectedFigureId=null;break;case"DELETE_FIGURE":this.selectedFigureId===e.id&&(this.selectedFigureId=null);break;case"DELETE_SHEET":this.selectedFigureId&&this.getters.getFigure(e.sheetId,this.selectedFigureId)&&(this.selectedFigureId=null)}switch(e.type){case"START":const t=this.getters.getVisibleSheetIds()[0];this.activateSheet(t,t);const{col:o,row:s}=this.getters.getNextVisibleCellPosition({sheetId:t,col:0,row:0});this.selectCell(o,s),this.selection.registerAsDefault(this,this.gridSelection.anchor,{handleEvent:this.handleEvent.bind(this)}),this.moveClient({sheetId:t,col:0,row:0});break;case"ACTIVATE_SHEET":this.activateSheet(e.sheetIdFrom,e.sheetIdTo);break;case"REMOVE_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){"COL"===e.dimension?this.onColumnsRemoved(e):this.onRowsRemoved(e);const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:s})}break}case"ADD_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){this.onAddElements(e);const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:s})}break}case"MOVE_COLUMNS_ROWS":e.sheetId===this.getActiveSheetId()&&this.onMoveElements(e);break;case"SELECT_FIGURE":this.selectedFigureId=e.id;break;case"ACTIVATE_NEXT_SHEET":this.activateNextSheet("right");break;case"ACTIVATE_PREVIOUS_SHEET":this.activateNextSheet("left");break;case"HIDE_SHEET":e.sheetId===this.getActiveSheetId()&&this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e.sheetId,sheetIdTo:this.getters.getVisibleSheetIds()[0]});break;case"UNDO":case"REDO":case"DELETE_SHEET":const i=Object.keys(this.sheetsData).filter((e=>!this.getters.tryGetSheet(e)));for(const e of i)delete this.sheetsData[e];for(const e in this.sheetsData){const t=this.clipSelection(e,this.sheetsData[e].gridSelection);this.sheetsData[e]={gridSelection:ze(t)}}this.fallbackToVisibleSheet();const n=this.getters.getActiveSheetId();this.gridSelection.zones=this.gridSelection.zones.map((e=>this.getters.expandZone(n,e))),this.gridSelection.anchor.zone=this.getters.expandZone(n,this.gridSelection.anchor.zone),this.setSelectionMixin(this.gridSelection.anchor,this.gridSelection.zones),this.selectedFigureId=null}}finalize(){this.fallbackToVisibleSheet(),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor))}isGridSelectionActive(){return this.selection.isListening(this)}getActiveSheet(){return this.activeSheet}getActiveSheetId(){return this.activeSheet.id}tryGetActiveSheetId(){return this.activeSheet?.id}getActiveCell(){return this.getters.getEvaluatedCell(this.getActivePosition())}getActiveCols(){const e=new Set;for(let t of this.gridSelection.zones)if(0===t.top&&t.bottom===this.getters.getNumberRows(this.getters.getActiveSheetId())-1)for(let o=t.left;o<=t.right;o++)e.add(o);return e}getActiveRows(){const e=new Set,t=this.getters.getActiveSheetId();for(let o of this.gridSelection.zones)if(0===o.left&&o.right===this.getters.getNumberCols(t)-1)for(let t=o.top;t<=o.bottom;t++)e.add(t);return e}getCurrentStyle(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();return this.getters.getCellStyle({sheetId:t,col:e.left,row:e.top})}getSelectedZones(){return ze(this.gridSelection.zones)}getSelectedZone(){return ze(this.gridSelection.anchor.zone)}getSelection(){return ze(this.gridSelection)}getSelectedCells(){const e=this.getters.getActiveSheetId(),t=[];for(const o of this.gridSelection.zones)t.push(...this.getters.getEvaluatedCellsInZone(e,o));return t}getSelectedFigureId(){return this.selectedFigureId}getActivePosition(){return this.getters.getMainCellPosition({sheetId:this.getActiveSheetId(),col:this.gridSelection.anchor.cell.col,row:this.gridSelection.anchor.cell.row})}getSheetPosition(e){if(e===this.getters.getActiveSheetId())return this.getActivePosition();{const t=this.sheetsData[e];return t?{sheetId:e,col:t.gridSelection.anchor.cell.col,row:t.gridSelection.anchor.cell.row}:this.getters.getNextVisibleCellPosition({sheetId:e,col:0,row:0})}}isSingleColSelected(){const e=this.getters.getSelectedZones();return 1===e.length&&e[0].left===e[0].right}getElementsFromSelection(e){if("COL"===e&&0===this.getters.getActiveCols().size)return[];if("ROW"===e&&0===this.getters.getActiveRows().size)return[];const t=this.getters.getSelectedZones();let o=[];const s="COL"===e?"left":"top",i="COL"===e?"right":"bottom";for(const e of t){const t=Array.from({length:e[i]-e[s]+1},((t,o)=>e[s]+o));o=o.concat(t)}return[...new Set(o)].sort()}activateSheet(e,t){if(this.setActiveSheet(t),this.sheetsData[e]={gridSelection:ze(this.gridSelection)},t in this.sheetsData)Object.assign(this,this.sheetsData[t]),this.selection.resetDefaultAnchor(this,ze(this.gridSelection.anchor));else{const{col:e,row:o}=this.getters.getNextVisibleCellPosition({sheetId:t,col:0,row:0});this.selectCell(e,o)}const{col:o,row:s}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.activeSheet.id,col:o,row:s})}setSelectionMixin(e,t){const{anchor:o,zones:s}=this.clipSelection(this.getters.getActiveSheetId(),{anchor:e,zones:t});this.gridSelection.anchor=o,this.gridSelection.zones=function(e){return e.reverse().filter(((e,t,o)=>t===o.findIndex((t=>t.top===e.top&&t.bottom===e.bottom&&t.left===e.left&&t.right===e.right)))).reverse()}(s)}selectCell(e,t){const o=this.getters.getActiveSheetId(),s=this.getters.expandZone(o,{left:e,right:e,top:t,bottom:t});this.setSelectionMixin({zone:s,cell:{col:e,row:t}},[s])}setActiveSheet(e){this.activeSheet=this.getters.getSheet(e)}activateNextSheet(e){const t=this.getters.getSheetIds(),o=(t.findIndex((e=>e===this.activeSheet.id))+("left"===e?t.length-1:1))%t.length;this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:this.getActiveSheetId(),sheetIdTo:t[o]})}onColumnsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,s=Yo(o,"left",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Yo(i,"left",[...e.elements]);const n={cell:{col:i.left,row:i.top},zone:s},r=this.gridSelection.zones.map((t=>Yo(t,"left",[...e.elements])));this.setSelectionMixin(n,r)}onRowsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,s=Yo(o,"top",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Yo(i,"top",[...e.elements]);const n={cell:{col:i.left,row:i.top},zone:s},r=this.gridSelection.zones.map((t=>Yo(t,"top",[...e.elements])));this.setSelectionMixin(n,r)}onAddElements(e){const t="COL"===e.dimension?"left":"top",o=jo(this.gridSelection.anchor.zone,t,e.base,e.position,e.quantity),s=this.gridSelection.zones.map((o=>jo(o,t,e.base,e.position,e.quantity))),i={cell:{col:o.left,row:o.top},zone:o};this.setSelectionMixin(i,s)}onMoveElements(e){const t=e.elements.length;this.dispatch("ADD_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,base:e.base,quantity:t,position:e.position});const o="COL"===e.dimension,s=e.elements[0],i=e.elements[t-1],n=e.base<s,r=n&&o?t:0,a=n&&!o?t:0,l=[{left:o?s+r:0,right:o?i+r:this.getters.getNumberCols(e.sheetId)-1,top:o?0:s+a,bottom:o?this.getters.getNumberRows(e.sheetId)-1:i+a}],c=this.getActiveSheetId(),h=n?e.base:e.base+1,d=[{left:o?h:0,right:o?h+t-1:this.getters.getNumberCols(e.sheetId)-1,top:o?0:h,bottom:o?this.getters.getNumberRows(e.sheetId)-1:h+t-1}];for(const e of Pc.cellHandlers.getAll()){const t=new e(this.getters,this.dispatch),o=t.copy(Ia(c,l));o&&t.paste({zones:d,sheetId:c},o,{isCutOperation:!0})}const u=d[0],g=u.left,p=u.top;this.setSelectionMixin({zone:u,cell:{col:g,row:p}},[u]);const m=n?e.elements.map((e=>e+t)):e.elements;let f=n?e.base:e.base+1;const v={};for(const t of m){const o=this.getters.getHeaderSize(e.sheetId,e.dimension,t);o!=this.getters.getHeaderSize(e.sheetId,e.dimension,f)&&(v[o]??=[],v[o].push(f),f+=1)}for(const t in v)this.dispatch("RESIZE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,size:parseInt(t,10),elements:v[t]});this.dispatch("REMOVE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,elements:m})}isMoveElementAllowed(e){const t="COL"===e.dimension,o=e.elements[0],s=e.elements[e.elements.length-1],i=e.sheetId,n=t?this.getters.doesColumnsHaveCommonMerges:this.getters.doesRowsHaveCommonMerges;if(n(i,o-1,o)||n(i,s,s+1)||n(i,e.base-1,e.base))return"WillRemoveExistingMerge";const r=[e.base,...e.elements],a=t?this.getters.getNumberCols(i):this.getters.getNumberRows(i);return r.some((e=>e<0||e>=a))?"InvalidHeaderIndex":"Success"}fallbackToVisibleSheet(){if(!this.getters.tryGetSheet(this.getters.getActiveSheetId())){const e=this.getters.getVisibleSheetIds();if(this.activeSheet=this.getters.getSheet(e[0]),this.activeSheet.id in this.sheetsData){const{anchor:e}=this.clipSelection(this.activeSheet.id,this.sheetsData[this.activeSheet.id].gridSelection);this.selectCell(e.cell.col,e.cell.row)}else this.selectCell(0,0);const{col:t,row:o}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:t,row:o})}}clipSelection(e,t){const o=this.getters.getNumberCols(e)-1,s=this.getters.getNumberRows(e)-1;return{zones:t.zones.map((e=>({left:Ze(e.left,0,o),right:Ze(e.right,0,o),top:Ze(e.top,0,s),bottom:Ze(e.bottom,0,s)}))),anchor:{cell:{col:Ze(t.anchor.cell.col,0,o),row:Ze(t.anchor.cell.row,0,s)},zone:{left:Ze(t.anchor.zone.left,0,o),right:Ze(t.anchor.zone.right,0,o),top:Ze(t.anchor.zone.top,0,s),bottom:Ze(t.anchor.zone.bottom,0,s)}}}}drawLayer(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,s=this.getSelectedZones();t.fillStyle="#f3f7fe";const i=1===s.length&&s[0].left===s[0].right&&s[0].top===s[0].bottom;t.fillStyle=i?"#f3f7fe":"#e9f0ff",t.strokeStyle=p,t.lineWidth=1.5*o;for(const e of s){const{x:o,y:s,width:i,height:n}=this.getters.getVisibleRect(e);t.globalCompositeOperation="multiply",t.fillRect(o,s,i,n),t.globalCompositeOperation="source-over",t.strokeRect(o,s,i,n)}t.globalCompositeOperation="source-over";const n=this.getActivePosition();let r;t.strokeStyle=p,t.lineWidth=3*o,r=this.getters.isInMerge(n)?this.getters.getMerge(n):hs(n);const{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(r);c>0&&h>0&&t.strokeRect(a,l,c,h)}}).add("evaluation_filter",class extends wN{static getters=["getFilterHiddenValues","getFirstTableInSelection","isRowFiltered","isFilterActive"];filterValues={};hiddenRows={};isEvaluationDirty=!1;allowDispatch(e){if("UPDATE_FILTER"===e.type)if(!this.getters.getFilterId(e))return"FilterNotFound";return"Success"}handle(e){switch(e.type){case"UNDO":case"REDO":case"UPDATE_CELL":case"EVALUATE_CELLS":case"ACTIVATE_SHEET":case"REMOVE_TABLE":case"ADD_COLUMNS_ROWS":case"REMOVE_COLUMNS_ROWS":case"UPDATE_TABLE":this.isEvaluationDirty=!0;break;case"START":for(const e of this.getters.getSheetIds())this.filterValues[e]={};break;case"CREATE_SHEET":this.filterValues[e.sheetId]={};break;case"HIDE_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"GROUP_HEADERS":case"UNGROUP_HEADERS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_ALL_HEADER_GROUPS":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":this.updateHiddenRows(e.sheetId);break;case"UPDATE_FILTER":this.updateFilter(e),this.updateHiddenRows(e.sheetId);break;case"DUPLICATE_SHEET":this.filterValues[e.sheetIdTo]=ze(this.filterValues[e.sheetId])}}finalize(){if(this.isEvaluationDirty){for(const e of this.getters.getSheetIds())this.updateHiddenRows(e);this.isEvaluationDirty=!1}}isRowFiltered(e,t){return!!this.hiddenRows[e]?.has(t)}getFilterHiddenValues(e){const t=this.getters.getFilterId(e),o=e.sheetId;return t&&this.filterValues[o]&&this.filterValues[o][t]||[]}isFilterActive(e){const t=this.getters.getFilterId(e),o=e.sheetId;return Boolean(t&&this.filterValues[o]?.[t]?.length)}getFirstTableInSelection(){const e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZones();return this.getters.getTablesOverlappingZones(e,t)[0]}updateFilter({col:e,row:t,hiddenValues:o,sheetId:s}){const i=this.getters.getFilterId({sheetId:s,col:e,row:t});i&&(this.filterValues[s]||(this.filterValues[s]={}),this.filterValues[s][i]=o)}updateHiddenRows(e){const t=this.getters.getFilters(e).sort(((e,t)=>e.rangeWithHeaders.zone.top-t.rangeWithHeaders.zone.top)),o=new Set;for(let s of t){if(o.has(s.rangeWithHeaders.zone.top)||this.getters.isRowHiddenByUser(e,s.rangeWithHeaders.zone.top))continue;const t=this.filterValues[e]?.[s.id]?.map(Sa),i=s.filteredRange?.zone;if(!t||!i)continue;const n=new Set(t);for(let t=i.top;t<=i.bottom;t++){const i=this.getCellValueAsString(e,s.col,t);n.has(i)&&o.add(t)}}this.hiddenRows[e]=o}getCellValueAsString(e,t,o){return this.getters.getEvaluatedCell({sheetId:e,col:t,row:o}).formattedValue.toLowerCase()}exportForExcel(e){for(const t of e.sheets){const e=t.id;for(const o of t.tables){const s=$o(o.range),i=[],n=[];for(const o of je(0,ss(s).numberOfCols)){const r={sheetId:t.id,col:s.left+o,row:s.top},a=this.getFilterHiddenValues(r),l=this.getters.getFilter(r),c=l?.filteredRange?rs(l.filteredRange.zone).map((t=>this.getters.getEvaluatedCell({sheetId:e,...t}).formattedValue)):[];if(a.length){const e=c.filter((e=>e)).filter((e=>!a.includes(e)));i.push({colId:o,displayedValues:[...new Set(e)],displayBlanks:!a.includes("")&&c.some((e=>!e))})}const h=this.getters.getEvaluatedCell(r).formattedValue,d=this.getUniqueColNameForExcel(o,h,n);n.push(d);const u=Ao(r.col,r.row);t.cells[u]=d,t.cellValues[u]=d}o.filters=i}}}getUniqueColNameForExcel(e,t,o){return t||(t=`Column${e}`),kt(t,o,{compute:(e,o)=>t+String(o),start:2})}}).add("header_visibility_ui",class extends wN{static getters=["getNextVisibleCellPosition","findVisibleHeader","findLastVisibleColRowIndex","findFirstVisibleColRowIndex","isRowHidden","isColHidden","isHeaderHidden"];isRowHidden(e,t){return this.getters.isRowHiddenByUser(e,t)||this.getters.isRowFiltered(e,t)}isColHidden(e,t){return this.getters.isColHiddenByUser(e,t)}isHeaderHidden(e,t,o){return"COL"===t?this.isColHidden(e,o):this.isRowHidden(e,o)}getNextVisibleCellPosition({sheetId:e,col:t,row:o}){return{sheetId:e,col:this.findVisibleHeader(e,"COL",t,this.getters.getNumberCols(e)-1),row:this.findVisibleHeader(e,"ROW",o,this.getters.getNumberRows(e)-1)}}findVisibleHeader(e,t,o,s){if(o<=s)for(let i=o;i<=s;i++)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i;if(o>s)for(let i=o;i>=s;i--)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}findLastVisibleColRowIndex(e,t,{last:o,first:s}){return je(o,s,-1).find((o=>!this.isHeaderHidden(e,t,o)))||s}findFirstVisibleColRowIndex(e,t){const o=this.getters.getNumberHeaders(e,t);for(let s=0;s<o;s++){if("COL"===t&&!this.isColHidden(e,s))return s;if("ROW"===t&&!this.isRowHidden(e,s))return s}}exportForExcel(e){for(const t of e.sheets)for(const[e,o]of Object.entries(t.rows))o.isHidden=this.isRowHidden(t.id,Number(e))}}).add("cell_computed_style",class extends wN{static getters=["getCellComputedBorder","getCellComputedStyle"];styles={};borders={};handle(e){if(ii.has(e.type)||"UPDATE_CELL"===e.type||"SET_FORMATTING"===e.type||"EVALUATE_CELLS"===e.type)return this.styles={},void(this.borders={});LN(e)?"sheetId"in e?(delete this.styles[e.sheetId],delete this.borders[e.sheetId]):(this.styles={},this.borders={}):ai.has(e.type)?this.styles={}:li.has(e.type)&&(this.borders={})}getCellComputedBorder(e){const{sheetId:t,row:o,col:s}=e;return void 0!==this.borders[t]?.[o]?.[s]||(this.borders[t]||(this.borders[t]={}),this.borders[t][o]||(this.borders[t][o]={}),this.borders[t][o][s]||(this.borders[t][o][s]=this.computeCellBorder(e))),this.borders[t][o][s]}getCellComputedStyle(e){const{sheetId:t,row:o,col:s}=e;return void 0!==this.styles[t]?.[o]?.[s]||(this.styles[t]||(this.styles[t]={}),this.styles[t][o]||(this.styles[t][o]={}),this.styles[t][o][s]||(this.styles[t][o][s]=this.computeCellStyle(e))),this.styles[t][o][s]}computeCellBorder(e){const t=this.getters.getCellBorder(e)||{},o={...St(this.getters.getCellTableBorder(e)||{}),...St(t)};return ht(o)?null:o}computeCellStyle(e){const t=this.getters.getCell(e),o=this.getters.getCellConditionalFormatStyle(e),s={...St(this.getters.getCellTableStyle(e)),...St(t?.style),...St(o)};return this.getters.getEvaluatedCell(e).link&&!s.textColor&&(s.textColor=b),s}}).add("table_computed_style",class extends wN{static getters=["getCellTableStyle","getCellTableBorder"];tableStyles={};handle(e){ii.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e)||"EVALUATE_CELLS"===e.type?this.tableStyles={}:LN(e)&&("sheetId"in e?delete this.tableStyles[e.sheetId]:this.tableStyles={})}finalize(){for(const e of this.getters.getSheetIds()){this.tableStyles[e]||(this.tableStyles[e]={});for(const t of this.getters.getTables(e))this.tableStyles[e][t.id]||(this.tableStyles[e][t.id]=this.computeTableStyle(e,t))}}getCellTableStyle(e){const t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().styles[e.col]?.[e.row]}getCellTableBorder(e){const t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().borders[e.col]?.[e.row]}computeTableStyle(e,t){return gt((()=>{const{config:o,numberOfCols:s,numberOfRows:i}=this.getTableRuntimeConfig(e,t),n=rM(o,this.getters.getTableStyle(t.config.styleId),s,i),r=this.getTableMapping(e,t),a={borders:{},styles:{}};for(let e=0;e<s;e++){const t=r.colMapping[e];a.borders[t]={},a.styles[t]={};for(let o=0;o<i;o++){const s=r.rowMapping[o];a.borders[t][s]=n.borders[e][o],a.styles[t][s]=n.styles[e][o]}}return a}))}getTableRuntimeConfig(e,t){const o=t.range.zone,s={...t.config};let i=o.right-o.left+1,n=o.bottom-o.top+1;for(let i=o.top;i<=o.bottom;i++)this.getters.isRowHidden(e,i)&&(n--,i-o.top<t.config.numberOfHeaders&&(s.numberOfHeaders--,s.numberOfHeaders<0&&(s.numberOfHeaders=0)),i===o.bottom&&(s.totalRow=!1));for(let t=o.left;t<=o.right;t++)this.getters.isColHidden(e,t)&&(i--,t===o.left&&(s.firstColumn=!1),t===o.right&&(s.lastColumn=!1));return{config:s,numberOfCols:i,numberOfRows:n}}getTableMapping(e,t){const o={},s={};let i=0,n=0;const r=t.range.zone;for(let t=r.left;t<=r.right;t++)if(!this.getters.isColHidden(e,t)){o[i]=t,i++;for(let t=r.top;t<=r.bottom;t++)this.getters.isRowHidden(e,t)||(s[n]=t,n++)}return{colMapping:o,rowMapping:s}}}).add("header_positions",class extends wN{static getters=["getColDimensions","getRowDimensions","getColRowOffset"];headerPositions={};isDirty=!0;handle(e){switch(ii.has(e.type)&&(this.headerPositions={},this.isDirty=!0),e.type){case"START":for(const e of this.getters.getSheetIds())this.headerPositions[e]=this.computeHeaderPositionsOfSheet(e);break;case"UPDATE_CELL":case"UPDATE_FILTER":case"UPDATE_TABLE":case"REMOVE_TABLE":this.headerPositions={},this.isDirty=!0;break;case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_ALL_HEADER_GROUPS":case"UNGROUP_HEADERS":case"GROUP_HEADERS":case"CREATE_SHEET":this.getters.tryGetSheet(e.sheetId)&&(this.headerPositions[e.sheetId]=this.computeHeaderPositionsOfSheet(e.sheetId));break;case"DUPLICATE_SHEET":this.headerPositions[e.sheetIdTo]=ze(this.headerPositions[e.sheetId])}}finalize(){for(const e of this.getters.getSheetIds())!this.isDirty&&this.headerPositions[e]||(this.headerPositions[e]=this.computeHeaderPositionsOfSheet(e));this.isDirty=!1}getColDimensions(e,t){const o=this.headerPositions[e].COL[t],s=this.getters.getColSize(e,t);return{start:o,size:s,end:o+(this.getters.isColHidden(e,t)?0:s)}}getRowDimensions(e,t){const o=this.headerPositions[e].ROW[t],s=this.getters.getRowSize(e,t);return{start:o,size:s,end:o+(this.getters.isRowHidden(e,t)?0:s)}}getColRowOffset(e,t,o,s=this.getters.getActiveSheetId()){const i=this.headerPositions[s][e][t];return this.headerPositions[s][e][o]-i}computeHeaderPositionsOfSheet(e){return{COL:this.computePositions(e,"COL"),ROW:this.computePositions(e,"ROW")}}computePositions(e,t){const o={};let s=0;for(let i=0;i<this.getters.getNumberHeaders(e,t)+1;i++)o[i]=s,this.getters.isHeaderHidden(e,t,i)||(s+=this.getters.getHeaderSize(e,t,i));return o}}).add("viewport",class extends wN{static getters=["getColIndex","getRowIndex","getActiveMainViewport","getSheetViewDimension","getSheetViewDimensionWithHeaders","getMainViewportRect","isVisibleInViewport","getEdgeScrollCol","getEdgeScrollRow","getVisibleFigures","getVisibleRect","getVisibleRectWithoutHeaders","getVisibleCellPositions","getColRowOffsetInViewport","getMainViewportCoordinates","getActiveSheetScrollInfo","getSheetViewVisibleCols","getSheetViewVisibleRows","getFrozenSheetViewRatio","isPixelPositionVisible","getColDimensionsInViewport","getRowDimensionsInViewport","getAllActiveViewportsZonesAndRect","getRect"];viewports={};sheetViewWidth=Pe();sheetViewHeight=Pe();gridOffsetX=0;gridOffsetY=0;sheetsWithDirtyViewports=new Set;shouldAdjustViewports=!1;allowDispatch(e){switch(e.type){case"SET_VIEWPORT_OFFSET":return this.chainValidations(this.checkScrollingDirection,this.checkIfViewportsWillChange)(e);case"RESIZE_SHEETVIEW":return this.chainValidations(this.checkValuesAreDifferent,this.checkPositiveDimension)(e);default:return"Success"}}handleEvent(e){const t=this.getters.getActiveSheetId();if(e.options.scrollIntoView){let{col:o,row:s}=cs(e.previousAnchor.zone,e.anchor.zone);if("updateAnchor"===e.mode){const i=e.previousAnchor.zone,n=e.anchor.zone,{top:r,bottom:a,left:l,right:c}=this.getMainInternalViewport(t);i.left===n.left&&i.right===n.right&&(o=l>o||o>c?l:o),i.top===n.top&&i.bottom===n.bottom&&(s=r>s||s>a?r:s)}o=Math.min(o,this.getters.getNumberCols(t)-1),s=Math.min(s,this.getters.getNumberRows(t)-1),this.sheetsWithDirtyViewports.has(t)||this.refreshViewport(this.getters.getActiveSheetId(),{col:o,row:s})}}handle(e){if(ii.has(e.type))for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);switch(e.type){case"START":this.selection.observe(this,{handleEvent:this.handleEvent.bind(this)}),this.resetViewports(this.getters.getActiveSheetId());break;case"UNDO":case"REDO":this.cleanViewports();for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);this.shouldAdjustViewports=!0;break;case"RESIZE_SHEETVIEW":this.resizeSheetView(e.height,e.width,e.gridOffsetX,e.gridOffsetY);break;case"SET_VIEWPORT_OFFSET":this.setSheetViewOffset(e.offsetX,e.offsetY);break;case"SHIFT_VIEWPORT_DOWN":const t=this.getters.getActiveSheetId(),{top:o,viewportHeight:s,offsetCorrectionY:i}=this.getMainInternalViewport(t),n=this.getters.getRowDimensions(t,o);this.shiftVertically(n.start+s-i);break;case"SHIFT_VIEWPORT_UP":{const e=this.getters.getActiveSheetId(),{top:t,viewportHeight:o,offsetCorrectionY:s}=this.getMainInternalViewport(e),i=this.getters.getRowDimensions(e,t);this.shiftVertically(i.end-s-o);break}case"REMOVE_TABLE":case"UPDATE_TABLE":case"UPDATE_FILTER":case"UNFREEZE_ROWS":case"UNFREEZE_COLUMNS":case"FREEZE_COLUMNS":case"FREEZE_ROWS":case"UNFREEZE_COLUMNS_ROWS":case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"UNGROUP_HEADERS":case"GROUP_HEADERS":case"FOLD_HEADER_GROUP":case"UNFOLD_HEADER_GROUP":case"FOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_HEADER_GROUPS_IN_ZONE":case"UNFOLD_ALL_HEADER_GROUPS":case"FOLD_ALL_HEADER_GROUPS":this.sheetsWithDirtyViewports.add(e.sheetId);break;case"UPDATE_CELL":if("content"in e||"format"in e||void 0!==e.style?.fontSize)for(const e of this.getters.getSheetIds())this.sheetsWithDirtyViewports.add(e);break;case"DELETE_SHEET":this.cleanViewports(),this.sheetsWithDirtyViewports.delete(e.sheetId);break;case"ACTIVATE_SHEET":this.sheetsWithDirtyViewports.add(e.sheetIdTo);break;case"SCROLL_TO_CELL":this.refreshViewport(this.getters.getActiveSheetId(),{col:e.col,row:e.row})}}finalize(){for(const e of this.sheetsWithDirtyViewports)if(this.resetViewports(e),this.shouldAdjustViewports){const t=this.getters.getSheetPosition(e);this.getSubViewports(e).forEach((e=>{e.adjustPosition(t)}))}this.sheetsWithDirtyViewports=new Set,this.shouldAdjustViewports=!1,this.setViewports()}setViewports(){const e=this.getters.getSheetIds();for(const t of e)this.viewports[t]?.bottomRight||this.resetViewports(t)}getColIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getColIndex(e))))}getRowIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getRowIndex(e))))}getSheetViewDimensionWithHeaders(){return{width:this.sheetViewWidth+this.gridOffsetX,height:this.sheetViewHeight+this.gridOffsetY}}getSheetViewDimension(){return{width:this.sheetViewWidth,height:this.sheetViewHeight}}getActiveMainViewport(){const e=this.getters.getActiveSheetId();return this.getMainViewport(e)}getActiveSheetScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetX,scrollY:t.offsetY}}getSheetViewVisibleCols(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>je(e.left,e.right+1))).flat())].filter((t=>t>=0&&!this.getters.isHeaderHidden(e,"COL",t)))}getSheetViewVisibleRows(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>je(e.top,e.bottom+1))).flat())].filter((t=>t>=0&&!this.getters.isHeaderHidden(e,"ROW",t)))}getVisibleCellPositions(){const e=this.getSheetViewVisibleCols(),t=this.getSheetViewVisibleRows(),o=this.getters.getActiveSheetId(),s=[];for(const i of e)for(const e of t){const t={sheetId:o,col:i,row:e},n=this.getters.getMainCellPosition(t);n.row===e&&n.col===i&&s.push(t)}return s}getMainViewportRect(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e),{xSplit:o,ySplit:s}=this.getters.getPaneDivisions(e);let{width:i,height:n}=t.getMaxSize();return{x:this.getters.getColDimensions(e,o).start,y:this.getters.getRowDimensions(e,s).start,width:i,height:n}}getMaximumSheetOffset(){const e=this.getters.getActiveSheetId(),{width:t,height:o}=this.getMainViewportRect(),s=this.getMainInternalViewport(e);return{maxOffsetX:Math.max(0,t-s.viewportWidth),maxOffsetY:Math.max(0,o-s.viewportHeight)}}getColRowOffsetInViewport(e,t,o){if(o<t)return-this.getColRowOffsetInViewport(e,o,t);const s=this.getters.getActiveSheetId(),i="COL"===e?this.getters.getSheetViewVisibleCols():this.getters.getSheetViewVisibleRows(),n=i.findIndex((e=>t>=e));let r=i.findIndex((e=>o<=e));r=-1===r?i.length:r;const a=i.slice(n,r);let l=0;for(const t of a)l+=this.getters.getHeaderSize(s,e,t);return l}isVisibleInViewport({sheetId:e,col:t,row:o}){return this.getSubViewports(e).some((e=>e.isVisible(t,o)))}getEdgeScrollCol(e,t,o){let s=!1,i=0,n=0;const{xSplit:r}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{width:a}=this.getSheetViewDimension(),{x:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollX;return e>a?(s=!0,n=Pr(e-a),i=1):e<l&&o>=l&&c>0?(s=!0,n=Pr(l-e),i=-1):r&&t<l&&e>l&&(s=!0,n=Pr(e),i="reset"),{canEdgeScroll:s,direction:i,delay:n}}getEdgeScrollRow(e,t,o){let s=!1,i=0,n=0;const{ySplit:r}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{height:a}=this.getSheetViewDimension(),{y:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollY;return e>a?(s=!0,n=Pr(e-a),i=1):e<l&&o>=l&&c>0?(s=!0,n=Pr(l-e),i=-1):r&&t<l&&e>l&&(s=!0,n=Pr(e),i="reset"),{canEdgeScroll:s,direction:i,delay:n}}getVisibleRect(e){const t=this.getVisibleRectWithoutHeaders(e);return{...t,x:t.x+this.gridOffsetX,y:t.y+this.gridOffsetY}}getVisibleRectWithoutHeaders(e){const t=this.getters.getActiveSheetId();return this.mapViewportsToRect(t,(t=>t.getVisibleRect(e)))}getRect(e){const t=this.getters.getActiveSheetId(),o=this.mapViewportsToRect(t,(t=>t.getFullRect(e)));return{...o,x:o.x+this.gridOffsetX,y:o.y+this.gridOffsetY}}getMainViewportCoordinates(){const e=this.getters.getActiveSheetId(),{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e);return{x:this.getters.getColDimensions(e,t).start,y:this.getters.getRowDimensions(e,o).start}}getColDimensionsInViewport(e,t){const{top:o}=this.getMainInternalViewport(e),s={left:t,right:t,top:o,bottom:o},{x:i,width:n}=this.getVisibleRect(s),r=i-this.gridOffsetX;return{start:r,size:n,end:r+n}}getRowDimensionsInViewport(e,t){const{left:o}=this.getMainInternalViewport(e),s={left:0,right:o,top:t,bottom:t},{y:i,height:n}=this.getVisibleRect(s),r=i-this.gridOffsetY;return{start:r,size:n,end:r+n}}getAllActiveViewportsZonesAndRect(){const e=this.getters.getActiveSheetId();return this.getSubViewports(e).map((e=>({zone:e,rect:{x:e.offsetCorrectionX+this.gridOffsetX,y:e.offsetCorrectionY+this.gridOffsetY,...e.getMaxSize()}})))}ensureMainViewportExist(e){this.viewports[e]||this.resetViewports(e)}getSubViewports(e){return this.ensureMainViewportExist(e),Object.values(this.viewports[e]).filter(lt)}checkPositiveDimension(e){return e.width<0||e.height<0?"InvalidViewportSize":"Success"}checkValuesAreDifferent(e){const{height:t,width:o}=this.getSheetViewDimension();return e.gridOffsetX===this.gridOffsetX&&e.gridOffsetY===this.gridOffsetY&&e.width===o&&e.height===t?"ValuesNotChanged":"Success"}checkScrollingDirection({offsetX:e,offsetY:t}){const o=this.getMainInternalViewport(this.getters.getActiveSheetId());return!o.canScrollHorizontally&&e>0||!o.canScrollVertically&&t>0?"InvalidScrollingDirection":"Success"}checkIfViewportsWillChange({offsetX:e,offsetY:t}){const o=this.getters.getActiveSheetId(),{maxOffsetX:s,maxOffsetY:i}=this.getMaximumSheetOffset();return this.getSubViewports(o).some((o=>o.willNewOffsetScrollViewport(Ze(e,0,s),Ze(t,0,i))))?"Success":"ViewportScrollLimitsReached"}getMainViewport(e){const t=this.getMainInternalViewport(e);return{top:t.top,left:t.left,bottom:t.bottom,right:t.right}}getMainInternalViewport(e){return this.ensureMainViewportExist(e),this.viewports[e].bottomRight}cleanViewports(){const e={};for(const t of this.getters.getSheetIds())e[t]=this.viewports[t];this.viewports=e}resizeSheetView(e,t,o=0,s=0){this.sheetViewHeight=e,this.sheetViewWidth=t,this.gridOffsetX=o,this.gridOffsetY=s,this.recomputeViewports()}recomputeViewports(){for(const e of this.getters.getSheetIds())this.resetViewports(e)}setSheetViewOffset(e,t){const o=this.getters.getActiveSheetId(),{maxOffsetX:s,maxOffsetY:i}=this.getMaximumSheetOffset();this.getSubViewports(o).forEach((o=>o.setViewportOffset(Ze(e,0,s),Ze(t,0,i))))}getViewportOffset(e){return{x:this.viewports[e]?.bottomRight.offsetX||0,y:this.viewports[e]?.bottomRight.offsetY||0}}resetViewports(e){if(!this.getters.tryGetSheet(e))return;const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),s=this.getters.getNumberCols(e),i=this.getters.getNumberRows(e),n=Math.min(this.getters.getColRowOffset("COL",0,t,e),this.sheetViewWidth),r=Math.min(this.getters.getColRowOffset("ROW",0,o,e),this.sheetViewHeight),a=Math.max(this.sheetViewWidth-n,0),l=Math.max(this.sheetViewHeight-r,0),{xRatio:c,yRatio:h}=this.getFrozenSheetViewRatio(e),d=c<1,u=h<1,g=this.getViewportOffset(e),p={topLeft:o&&t&&new JN(this.getters,e,{left:0,right:t-1,top:0,bottom:o-1},{width:n,height:r},{canScrollHorizontally:!1,canScrollVertically:!1},{x:0,y:0})||void 0,topRight:o&&new JN(this.getters,e,{left:t,right:s-1,top:0,bottom:o-1},{width:a,height:r},{canScrollHorizontally:d,canScrollVertically:!1},{x:d?g.x:0,y:0})||void 0,bottomLeft:t&&new JN(this.getters,e,{left:0,right:t-1,top:o,bottom:i-1},{width:n,height:l},{canScrollHorizontally:!1,canScrollVertically:u},{x:0,y:u?g.y:0})||void 0,bottomRight:new JN(this.getters,e,{left:t,right:s-1,top:o,bottom:i-1},{width:a,height:l},{canScrollHorizontally:d,canScrollVertically:u},{x:d?g.x:0,y:u?g.y:0})};this.viewports[e]=p}refreshViewport(e,t){this.getSubViewports(e).forEach((e=>{e.adjustViewportZone(),e.adjustPosition(t)}))}shiftVertically(e){const t=this.getters.getActiveSheetId(),{top:o}=this.getMainInternalViewport(t),{scrollX:s}=this.getActiveSheetScrollInfo();this.setSheetViewOffset(s,e);const{anchor:i}=this.getters.getSelection();if(i.cell.row>=this.getters.getPaneDivisions(t).ySplit){const e=this.getMainInternalViewport(t).top-o;this.selection.selectCell(i.cell.col,i.cell.row+e)}}getVisibleFigures(){const e=this.getters.getActiveSheetId(),t=[],o=this.getters.getFigures(e),{scrollX:s,scrollY:i}=this.getActiveSheetScrollInfo(),{x:n,y:r}=this.getters.getMainViewportCoordinates(),{width:a,height:l}=this.getters.getSheetViewDimensionWithHeaders();for(const e of o)e.x>=n&&(e.x+e.width<=n+s||e.x>=a+s+n)||e.y>=r&&(e.y+e.height<=r+i||e.y>=l+i+r)||t.push(e);return t}isPixelPositionVisible(e){const{scrollX:t,scrollY:o}=this.getters.getActiveSheetScrollInfo(),{x:s,y:i}=this.getters.getMainViewportCoordinates(),{width:n,height:r}=this.getters.getSheetViewDimension();return!(e.x>=s&&(e.x<s+t||e.x>n+t+s))&&!(e.y>=i&&(e.y<i+o||e.y>r+o+i))}getFrozenSheetViewRatio(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),s=this.getters.getColDimensions(e,t).start,i=this.getters.getRowDimensions(e,o).start;return{xRatio:s/(this.sheetViewWidth+this.gridOffsetX),yRatio:i/(this.sheetViewHeight+this.gridOffsetY)}}mapViewportsToRect(e,t){let o=1/0,s=1/0,i=0,n=0,r=!1;for(const a of this.getSubViewports(e)){const e=t(a);e&&(r=!0,o=Math.min(o,e.x),s=Math.min(s,e.y),i=Math.max(i,e.x+e.width),n=Math.max(n,e.y+e.height))}return r?{x:o,y:s,width:i-o,height:n-s}:{x:0,y:0,width:0,height:0}}}).add("clipboard",class extends wN{static layers=["Clipboard"];static getters=["getClipboardContent","getClipboardId","getClipboardTextContent","isCutOperation"];status="invisible";originSheetId;copiedData;_isCutOperation=!1;clipboardId=(new xa).uuidv4();allowDispatch(e){switch(e.type){case"CUT":const t=this.getters.getSelectedZones();return this.isCutAllowedOn(t);case"PASTE_FROM_OS_CLIPBOARD":{const t=this.convertTextToClipboardData(e.clipboardContent.text??""),o=e.pasteOption;return this.isPasteAllowed(e.target,t,{pasteOption:o,isCutOperation:!1})}case"PASTE":{if(!this.copiedData)return"EmptyClipboard";const t=e.pasteOption;return this.isPasteAllowed(e.target,this.copiedData,{pasteOption:t,isCutOperation:this._isCutOperation})}case"COPY_PASTE_CELLS_ABOVE":{const e=this.getters.getSelectedZones();if(e.length>1||0===e[0].top&&0===e[0].bottom)return"InvalidCopyPasteSelection";break}case"COPY_PASTE_CELLS_ON_LEFT":{const e=this.getters.getSelectedZones();if(e.length>1||0===e[0].left&&0===e[0].right)return"InvalidCopyPasteSelection";break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);return this.isPasteAllowed(o,s,{isCutOperation:!0})}case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);return this.isPasteAllowed(o,s,{isCutOperation:!0})}}return"Success"}handle(e){switch(e.type){case"COPY":case"CUT":const t=this.getters.getSelectedZones();this.status="visible",this.originSheetId=this.getters.getActiveSheetId(),this.copiedData=this.copy(t),this._isCutOperation="CUT"===e.type;break;case"PASTE_FROM_OS_CLIPBOARD":{this._isCutOperation=!1,this.copiedData=e.clipboardContent.data||this.convertTextToClipboardData(e.clipboardContent.text??"");const t=e.pasteOption;this.paste(e.target,this.copiedData,{pasteOption:t,selectTarget:!0,isCutOperation:!1}),this.status="invisible";break}case"PASTE":{const t=e.pasteOption;this.paste(e.target,this.copiedData,{pasteOption:t,selectTarget:!0,isCutOperation:this._isCutOperation}),this.status="invisible",this._isCutOperation&&(this.copiedData=void 0,this._isCutOperation=!1);break}case"COPY_PASTE_CELLS_ABOVE":{const e=this.getters.getSelectedZone(),t=e.top!==e.bottom,o={...e,bottom:t?e.top:e.top-1,top:t?e.top:e.top-1};this.originSheetId=this.getters.getActiveSheetId();const s=this.copy([o]);this.paste([e],s,{isCutOperation:!1,selectTarget:!0})}break;case"COPY_PASTE_CELLS_ON_LEFT":{const e=this.getters.getSelectedZone(),t=e.left!==e.right,o={...e,right:t?e.left:e.left-1,left:t?e.left:e.left-1};this.originSheetId=this.getters.getActiveSheetId();const s=this.copy([o]);this.paste([e],s,{isCutOperation:!1,selectTarget:!0})}break;case"CLEAN_CLIPBOARD_HIGHLIGHT":this.status="invisible";break;case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);if(!Go(t[0])){this.dispatch("CLEAR_CELLS",{target:[e.zone],sheetId:this.getters.getActiveSheetId()});break}const s=this.copy(t);this.paste(o,s,{isCutOperation:!0});break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension),s=this.copy(t);this.paste(o,s,{isCutOperation:!0});break}case"ADD_COLUMNS_ROWS":if(this.status="invisible",!this._isCutOperation||e.sheetId!==this.copiedData?.sheetId)return;this.isColRowDirtyingClipboard("before"===e.position?e.base:e.base+1,e.dimension)&&(this.copiedData=void 0);break;case"REMOVE_COLUMNS_ROWS":if(this.status="invisible",!this._isCutOperation||e.sheetId!==this.copiedData?.sheetId)return;for(let t of e.elements){if(this.isColRowDirtyingClipboard(t,e.dimension)){this.copiedData=void 0;break}}this.status="invisible";break;case"REPEAT_PASTE":this.paste(e.target,this.copiedData,{isCutOperation:!1,pasteOption:e.pasteOption,selectTarget:!0});break;case"DELETE_SHEET":if(!this._isCutOperation)return;this.originSheetId===e.sheetId&&(this.copiedData=void 0,this.status="invisible");break;default:di(e)&&(this.status="invisible")}}convertTextToClipboardData(e){const t=this.selectClipboardHandlers({figureId:!0}).concat(this.selectClipboardHandlers({}));let o={};for(const{handlerName:s,handler:i}of t){const t=i.convertTextToClipboardData(e);o[s]=t;const n=["sheetId","cells","zones","figureId"];for(const e of n)t&&e in t&&(o[e]=t[e])}return o}selectClipboardHandlers(e){const t="figureId"in e?Pc.figureHandlers:Pc.cellHandlers;return t.getKeys().map((e=>({handlerName:e,handler:new(t.get(e))(this.getters,this.dispatch)})))}isCutAllowedOn(e){const t=this.getClipboardData(e);for(const{handler:e}of this.selectClipboardHandlers(t)){const o=e.isCutAllowed(t);if("Success"!==o)return o}return"Success"}isPasteAllowed(e,t,o){for(const{handler:s}of this.selectClipboardHandlers(t)){const i=s.isPasteAllowed(this.getters.getActiveSheetId(),e,t,{...o});if("Success"!==i)return i}return"Success"}isColRowDirtyingClipboard(e,t){if(!this.copiedData||!this.copiedData.zones)return!1;const{zones:o}=this.copiedData;for(let s of o){if("COL"===t&&e<=s.right)return!0;if("ROW"===t&&e<=s.bottom)return!0}return!1}copy(e){let t={};const o=this.getClipboardData(e);for(const{handlerName:e,handler:s}of this.selectClipboardHandlers(o)){const i=s.copy(o);t[e]=i;const n=["sheetId","cells","zones","figureId"];for(const e of n)i&&e in i&&(t[e]=i[e])}return t}paste(e,t,o){if(!t)return;let s,i=[];const n=this.getters.getActiveSheetId();let r={sheetId:n,zones:e};const a=this.selectClipboardHandlers(t);for(const{handlerName:l,handler:c}of a){const a=t[l];if(!a)continue;const h=c.getPasteTarget(n,e,a,o);h.figureId&&(r.figureId=h.figureId);for(const e of h.zones)i.push(e),s=void 0!==s?Ko(s,e):e}if(void 0!==s&&this.addMissingDimensions(this.getters.getActiveSheetId(),s.right-s.left+1,s.bottom-s.top+1,s.left,s.top),a.forEach((({handlerName:e,handler:s})=>{const i=t[e];i&&s.paste(r,i,o)})),!o?.selectTarget)return;const l=e[0],c=l.left,h=l.top;this.selection.getBackToDefault(),this.selection.selectZone({cell:{col:c,row:h},zone:Ko(...i)},{scrollIntoView:!1})}addMissingDimensions(e,t,o,s,i){const n=o+i-this.getters.getNumberRows(e);n>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:this.getters.getNumberRows(e)-1,sheetId:e,quantity:n,position:"after"});const r=t+s-this.getters.getNumberCols(e);r>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:this.getters.getNumberCols(e)-1,sheetId:e,quantity:r,position:"after"})}getClipboardTextContent(){return this.getPlainTextContent()}getClipboardId(){return this.clipboardId}getClipboardContent(){return{[si.PlainText]:this.getPlainTextContent(),[si.Html]:this.getHTMLContent()}}getSheetData(){const e={version:_x,clipboardId:this.clipboardId};return this.copiedData&&"figureId"in this.copiedData?e:{...e,...this.copiedData}}getPlainTextContent(){return this.copiedData?.cells&&this.copiedData.cells.map((e=>e.map((e=>this.getters.shouldShowFormulas()&&e?.tokens?.length?e?.content||"":e.evaluatedCell?.formattedValue||"")).join("\t"))).join("\n")||"\t"}getHTMLContent(){let e="";const t=this.copiedData?.cells;if(t)if(1===t.length&&1===t[0].length)e=`${this.getters.getCellText(t[0][0].position)}`;else{if(!t[0][0])return"";{let o='<table border="1" style="border-collapse:collapse">';for(const e of t){o+="<tr>";for(const t of e){if(!t)continue;o+=`<td style="${ih(sh(this.getters.getCellComputedStyle(t.position)))}">`+Qw(this.getters.getCellText(t.position))+"</td>"}o+="</tr>"}o+="</table>",e=o}}else e="\t";return`<div data-osheet-clipboard='${Qw(JSON.stringify(this.getSheetData()))}'>${e}</div>`}isCutOperation(){return this._isCutOperation??!1}getDeleteCellsTargets(e,t){const o=this.getters.getActiveSheetId();let s;return s="COL"===t?{...e,left:e.right+1,right:this.getters.getNumberCols(o)-1}:{...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1},{cut:[s],paste:[e]}}getInsertCellsTargets(e,t){const o=this.getters.getActiveSheetId();let s,i;return"COL"===t?(s={...e,right:this.getters.getNumberCols(o)-1},i={...e,left:e.right+1,right:e.right+1}):(s={...e,bottom:this.getters.getNumberRows(o)-1},i={...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1}),{cut:[s],paste:[i]}}getClipboardData(e){const t=this.getters.getActiveSheetId(),o=this.getters.getSelectedFigureId();return o?{figureId:o,sheetId:t}:Ia(t,e)}drawLayer(e){if("visible"!==this.status||!this.copiedData)return;const{sheetId:t,zones:o}=this.copiedData;if(t!==this.getters.getActiveSheetId()||!o||!o.length)return;const{ctx:s,thinLineWidth:i}=e;s.setLineDash([8,5]),s.strokeStyle=p,s.lineWidth=3.3*i;for(const e of o){const{x:t,y:o,width:i,height:n}=this.getters.getVisibleRect(e);i>0&&n>0&&s.strokeRect(t,o,i,n)}}}),ok=(new n).add("evaluation",class extends PP{static getters=["evaluateFormula","evaluateFormulaResult","evaluateCompiledFormula","getCorrespondingFormulaCell","getRangeFormattedValues","getRangeValues","getRangeFormats","getEvaluatedCell","getEvaluatedCells","getEvaluatedCellsInZone","getEvaluatedCellsPositions","getSpreadZone","getArrayFormulaSpreadingOn","isEmpty"];shouldRebuildDependenciesGraph=!0;evaluator;positionsToUpdate=[];constructor(e){super(e),this.evaluator=new uN(e.custom,this.getters)}beforeHandle(e){(ii.has(e.type)||ri.has(e.type))&&(this.shouldRebuildDependenciesGraph=!0)}handle(e){switch(e.type){case"UPDATE_CELL":if(!("content"in e)&&!("format"in e)||this.shouldRebuildDependenciesGraph)return;const t={sheetId:e.sheetId,row:e.row,col:e.col};this.positionsToUpdate.push(t),"content"in e&&this.evaluator.updateDependencies(t);break;case"EVALUATE_CELLS":this.evaluator.evaluateAllCells()}}finalize(){this.shouldRebuildDependenciesGraph?(this.evaluator.buildDependencyGraph(),this.evaluator.evaluateAllCells(),this.shouldRebuildDependenciesGraph=!1):this.positionsToUpdate.length&&this.evaluator.evaluateCells(this.positionsToUpdate),this.positionsToUpdate=[]}evaluateFormula(e,t){const o=this.evaluateFormulaResult(e,t);return bi(o)?nn(o,(e=>e.value)):o.value}evaluateFormulaResult(e,t){return this.evaluator.evaluateFormulaResult(e,t)}evaluateCompiledFormula(e,t,o){return this.evaluator.evaluateCompiledFormula(e,t,o)}getRangeFormattedValues(e){return void 0===this.getters.tryGetSheet(e.sheetId)?[]:this.mapVisiblePositions(e,(e=>this.getters.getEvaluatedCell(e).formattedValue))}getRangeValues(e){return void 0===this.getters.tryGetSheet(e.sheetId)?[]:this.mapVisiblePositions(e,(e=>this.getters.getEvaluatedCell(e).value))}getRangeFormats(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getEvaluatedCellsInZone(t.id,e.zone).map((e=>e.format))}getEvaluatedCell(e){return this.evaluator.getEvaluatedCell(e)}getEvaluatedCells(e){return this.evaluator.getEvaluatedPositionsInSheet(e).map((e=>this.getEvaluatedCell(e)))}getEvaluatedCellsPositions(e){return this.evaluator.getEvaluatedPositionsInSheet(e)}getEvaluatedCellsInZone(e,t){return rs(t).map((({col:t,row:o})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:o})))}getSpreadZone(e,t={ignoreSpillError:!1}){return this.evaluator.getSpreadZone(e,t)}getArrayFormulaSpreadingOn(e){return this.evaluator.getArrayFormulaSpreadingOn(e)}isEmpty(e,t){return rs(t).map((({col:t,row:o})=>this.getEvaluatedCell({sheetId:e,col:t,row:o}))).every((e=>e.type===oi.empty))}mapVisiblePositions(e,t){const{sheetId:o,zone:s}=e;return rs(s).reduce(((e,s)=>{const{col:i,row:n}=s;return this.getters.isColHidden(o,i)||this.getters.isRowHidden(o,n)||e.push(t({sheetId:o,...s})),e}),[])}exportForExcel(e){for(const t of e.sheets)t.cellValues={},t.formulaSpillRanges={};for(const t of this.evaluator.getEvaluatedPositions()){const o=this.evaluator.getEvaluatedCell(t),s=Ao(t.col,t.row),i=o.value;let n,r=!1,a=!0;const l=e.sheets.find((e=>e.id===t.sheetId)),c=this.getCorrespondingFormulaCell(t);if(c){const h=this.getters.getCell(t);if(a=BS(c.compiledFormula.tokens),r=a&&h?.content===c.content,!a&&""!==i){n=(i??"").toString();const t=o.format;if(t){const o=bs(t,e.formats);l.formats[s]=o}}}const h=l.cells[s];let d;d=a&&r&&c instanceof TP?c.contentWithFixedReferences:a?h:n,l.cells[s]=d,l.cellValues[s]="error"!==o.type?i:void 0;const u=this.getSpreadZone(t);u&&(l.formulaSpillRanges[s]=this.getters.getRangeString(this.getters.getRangeFromZone(t.sheetId,u),t.sheetId))}}getCorrespondingFormulaCell(e){const t=this.getters.getCell(e);if(t&&t.isFormula)return t.compiledFormula.isBadExpression?void 0:t;if(t&&t.content)return;const o=this.getArrayFormulaSpreadingOn(e);if(void 0===o)return;const s=this.getters.getCell(o);return s?.isFormula?s:void 0}}).add("evaluation_chart",class extends PP{static getters=["getChartRuntime","getStyleOfSingleCellChart"];charts={};createRuntimeChart=YR(this.getters);handle(e){if(ii.has(e.type)||ai.has(e.type)||ni.has(e.type))for(const e in this.charts)this.charts[e]=void 0;switch(e.type){case"UPDATE_CHART":case"CREATE_CHART":case"DELETE_FIGURE":this.charts[e.id]=void 0;break;case"DELETE_SHEET":for(let e in this.charts)this.getters.isChartDefined(e)||(this.charts[e]=void 0)}}getChartRuntime(e){if(!this.charts[e]){const t=this.getters.getChart(e);if(!t)throw new Error(`No chart for the given id: ${e}`);this.charts[e]=this.createRuntimeChart(t)}return this.charts[e]}getStyleOfSingleCellChart(e,t){if(e)return{background:e,fontColor:bh(e)};if(!t)return{background:m,fontColor:bh(m)};const o=t.zone.left,s=t.zone.top,i=t.sheetId,n=this.getters.getCellComputedStyle({sheetId:i,col:o,row:s}),r=n.fillColor||m;return{background:r,fontColor:n.textColor||bh(r)}}exportForExcel(e){for(const t of e.sheets){t.images||(t.images=[]);const e=this.getters.getFigures(t.id),o=[];for(const s of e){if(!s||"chart"!==s.tag)continue;const e=s.id,i=this.getters.getChart(e)?.getDefinitionForExcel();if(i)o.push({...s,data:i});else{if(!this.getters.getChart(e))continue;const o=this.getters.getChartType(e),i=xy(this.getters.getChartRuntime(e),s,o);i&&t.images.push({...s,tag:"image",data:{mimetype:"image/png",path:i,size:{width:s.width,height:s.height}}})}}t.charts=o}}}).add("evaluation_cf",class extends PP{static getters=["getConditionalIcon","getCellConditionalFormatStyle","getConditionalDataBar"];isStale=!0;computedStyles={};computedIcons={};computedDataBars={};handle(e){(ii.has(e.type)||ai.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e))&&(this.isStale=!0)}finalize(){if(this.isStale){for(const e of this.getters.getSheetIds())this.computedStyles[e]=gt((()=>this.getComputedStyles(e))),this.computedIcons[e]=gt((()=>this.getComputedIcons(e))),this.computedDataBars[e]=gt((()=>this.getComputedDataBars(e)));this.isStale=!1}}getCellConditionalFormatStyle(e){const{sheetId:t,col:o,row:s}=e,i=this.computedStyles[t]();return i&&i[o]?.[s]}getConditionalIcon({sheetId:e,col:t,row:o}){const s=this.computedIcons[e]();return s&&s[t]?.[o]}getConditionalDataBar({sheetId:e,col:t,row:o}){const s=this.computedDataBars[e]();return s&&s[t]?.[o]}getComputedStyles(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())switch(o.rule.type){case"ColorScaleRule":for(let s of o.ranges)this.applyColorScale(e,s,o.rule,t);break;case"CellIsRule":const s=o.rule.values.map((e=>e.startsWith("=")?VS(e):void 0));for(let i of o.ranges){const n=this.getters.getRangeFromSheetXC(e,i).zone;for(let i=n.top;i<=n.bottom;i++)for(let r=n.left;r<=n.right;r++){const a=this.rulePredicate[o.rule.type],l={sheetId:e,col:r,row:i},c=o.rule.values.map(((t,o)=>{const a=s[o];return a?this.getters.getTranslatedCellFormula(e,r-n.left,i-n.top,a.tokens):t}));a&&a(l,{...o.rule,values:c})&&(t[r]||(t[r]=[]),t[r][i]=Object.assign(t[r]?.[i]||{},o.rule.style))}}}return t}getComputedIcons(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())if("IconSetRule"===o.rule.type)for(let s of o.ranges)this.applyIcon(e,s,o.rule,t);return t}getComputedDataBars(e){const t={};for(let o of this.getters.getConditionalFormats(e).reverse())if("DataBarRule"===o.rule.type)for(let s of o.ranges)this.applyDataBar(e,s,o.rule,t);return t}parsePoint(e,t,o,s){const i=this.getters.getEvaluatedCellsInZone(e,this.getters.getRangeFromSheetXC(e,t).zone).filter((e=>e.type===oi.number)).map((e=>e.value));switch(o.type){case"value":return"max"===s?Ot(i):Ft(i);case"number":return Number(o.value);case"percentage":const t=Ft(i);return t+(Ot(i)-t)*Number(o.value)/100;case"percentile":return ti(i,Number(o.value)/100,!0);case"formula":const n=o.value&&this.getters.evaluateFormula(e,o.value);return"number"==typeof n?n:null;default:return null}}applyIcon(e,t,o,s){const i=this.parsePoint(e,t,o.lowerInflectionPoint),n=this.parsePoint(e,t,o.upperInflectionPoint);if(null===i||null===n||i>n)return;const r=this.getters.getRangeFromSheetXC(e,t).zone,a=[o.icons.upper,o.icons.middle,o.icons.lower];for(let t=r.top;t<=r.bottom;t++)for(let l=r.left;l<=r.right;l++){const r=this.getters.getEvaluatedCell({sheetId:e,col:l,row:t});if(r.type!==oi.number)continue;const c=this.computeIcon(r.value,n,o.upperInflectionPoint.operator,i,o.lowerInflectionPoint.operator,a);s[l]||(s[l]=[]),s[l][t]=c}}computeIcon(e,t,o,s,i,n){return"ge"===o&&e>=t||"gt"===o&&e>t?n[0]:"ge"===i&&e>=s||"gt"===i&&e>s?n[1]:n[2]}applyDataBar(e,t,o,s){const i=this.getters.getRangeFromSheetXC(e,o.rangeValues||t),n=Ot(this.getters.getEvaluatedCellsInZone(e,i.zone).filter((e=>e.type===oi.number)).map((e=>e.value)));if(n<=0)return;const r=o.color,a=this.getters.getRangeFromSheetXC(e,t).zone,l=i.zone;for(let t=a.top;t<=a.bottom;t++)for(let o=a.left;o<=a.right;o++){const i=o-a.left+l.left,c=t-a.top+l.top,h=this.getters.getEvaluatedCell({sheetId:e,col:i,row:c});!ts(i,c,l)||h.type!==oi.number||h.value<=0||(s[o]||(s[o]=[]),s[o][t]={color:Ut(r),percentage:100*h.value/n})}}applyColorScale(e,t,o,s){const i=this.parsePoint(e,t,o.minimum,"min"),n=o.midpoint?this.parsePoint(e,t,o.midpoint):null,r=this.parsePoint(e,t,o.maximum,"max");if(null===i||null===r||i>=r||n&&(i>=n||n>=r))return;const a=this.getters.getRangeFromSheetXC(e,t).zone,l=[{value:i,color:o.minimum.color}];o.midpoint&&n&&l.push({value:n,color:o.midpoint.color}),l.push({value:r,color:o.maximum.color});const c=po(l);for(let t=a.top;t<=a.bottom;t++)for(let o=a.left;o<=a.right;o++){const n=this.getters.getEvaluatedCell({sheetId:e,col:o,row:t});if(n.type===oi.number){const e=Ze(n.value,i,r);s[o]||(s[o]=[]),s[o][t]=s[o]?.[t]||{},s[o][t].fillColor=c(e)}}}rulePredicate={CellIsRule:(e,t)=>{const o=this.getters.getEvaluatedCell(e);if(o.type===oi.error)return!1;let[s,i]=t.values.map((t=>t.startsWith("=")?this.getters.evaluateFormula(e.sheetId,t)??"":Er(t,fi)));if(bi(s)||bi(i))return!1;const n=o.value??"";switch(s=s??"",i=i??"",t.operator){case"IsEmpty":return""===n.toString().trim();case"IsNotEmpty":return""!==n.toString().trim();case"BeginsWith":return""!==s&&n.toString().startsWith(s.toString());case"EndsWith":return""!==s&&n.toString().endsWith(s.toString());case"Between":return n>=s&&n<=i;case"NotBetween":return!(n>=s&&n<=i);case"ContainsText":return n.toString().indexOf(s.toString())>-1;case"NotContains":return!n||-1===n.toString().indexOf(s.toString());case"GreaterThan":return n>s;case"GreaterThanOrEqual":return n>=s;case"LessThan":return n<s;case"LessThanOrEqual":return n<=s;case"NotEqual":return""!==s&&n!==s;case"Equal":return""===s||n===s;default:console.warn(Uo("Not implemented operator %s for kind of conditional formatting: %s",t.operator,t.type))}return!1}}}).add("row_size",class extends PP{static getters=["getRowSize","getHeaderSize"];tallestCellInRow={};ctx=document.createElement("canvas").getContext("2d");handle(e){switch(e.type){case"START":for(const e of this.getters.getSheetIds())this.initializeSheet(e);break;case"CREATE_SHEET":this.initializeSheet(e.sheetId);break;case"DUPLICATE_SHEET":{const t=ze(this.tallestCellInRow[e.sheetId]);this.history.update("tallestCellInRow",e.sheetIdTo,t);break}case"DELETE_SHEET":const t={...this.tallestCellInRow};delete t[e.sheetId],this.history.update("tallestCellInRow",t);break;case"REMOVE_COLUMNS_ROWS":{if("COL"===e.dimension)return;const t=Rt(this.tallestCellInRow[e.sheetId],e.elements);this.history.update("tallestCellInRow",e.sheetId,t);break}case"ADD_COLUMNS_ROWS":{if("COL"===e.dimension)return;const t=mt(e.position,e.base),o=Array(e.quantity).fill(void 0),s=Tt(this.tallestCellInRow[e.sheetId],o,t);this.history.update("tallestCellInRow",e.sheetId,s);break}case"RESIZE_COLUMNS_ROWS":{const t=e.sheetId;if("ROW"===e.dimension)for(const o of e.elements){const e=this.getRowTallestCell(t,o);this.history.update("tallestCellInRow",t,o,e)}else for(const o of je(0,this.getters.getNumberRows(t)))for(const s of e.elements)this.updateRowSizeForCellChange(t,o,s)}break;case"UPDATE_CELL":this.updateRowSizeForCellChange(e.sheetId,e.row,e.col);break;case"ADD_MERGE":case"REMOVE_MERGE":for(const t of e.target)for(const o of rs(t))this.updateRowSizeForCellChange(e.sheetId,o.row,o.col)}}getRowSize(e,t){return Math.round(this.getters.getUserRowSize(e,t)??this.tallestCellInRow[e][t]?.size??se)}getHeaderSize(e,t,o){return this.getters.isHeaderHidden(e,t,o)?0:"ROW"===t?this.getRowSize(e,o):this.getters.getColSize(e,o)}updateRowSizeForCellChange(e,t,o){const s=this.tallestCellInRow[e]?.[t];if(s?.cell.col===o){const o=this.getRowTallestCell(e,t);this.history.update("tallestCellInRow",e,t,o)}const i=this.getCellHeight({sheetId:e,col:o,row:t});if(!(i<=se)&&(!s&&i>se||s&&i>s.size)){const s={cell:{sheetId:e,col:o,row:t},size:i};this.history.update("tallestCellInRow",e,t,s)}}initializeSheet(e){const t=[];for(let o=0;o<this.getters.getNumberRows(e);o++){const s=this.getRowTallestCell(e,o);t.push(s)}this.history.update("tallestCellInRow",e,t)}getCellHeight(e){if(this.isInMultiRowMerge(e))return se;const t=this.getters.getCell(e),o=this.getters.getColSize(e.sheetId,e.col);return function(e,t,o){return t&&(t.isFormula||t.content)?aa(e,t.isFormula?"":t.content,t.style,o):se}(this.ctx,t,o)}isInMultiRowMerge(e){const t=this.getters.getMerge(e);return!!t&&t.bottom!==t.top}getRowTallestCell(e,t){if(void 0!==this.getters.getUserRowSize(e,t))return;const o=this.getters.getRowCells(e,t);let s,i=0;for(let e=0;e<o.length;e++){const t=this.getters.getCellById(o[e]);if(!t)continue;const n=this.getters.getCellPosition(t.id),r=this.getCellHeight(n);r>i&&r>se&&(i=r,s={cell:n,size:r})}return s&&s.size>se?s:void 0}}).add("data_validation_ui",class extends PP{static getters=["getDataValidationInvalidCriterionValueMessage","getInvalidDataValidationMessage","getValidationResultForCellValue","isCellValidCheckbox","isDataValidationInvalid"];validationResults={};handle(e){if(ii.has(e.type)||"EVALUATE_CELLS"===e.type||"UPDATE_CELL"===e.type&&("content"in e||"format"in e))this.validationResults={};else switch(e.type){case"ADD_DATA_VALIDATION_RULE":case"REMOVE_DATA_VALIDATION_RULE":delete this.validationResults[e.sheetId]}}isDataValidationInvalid(e){return!this.getValidationResultForCell(e).isValid}getInvalidDataValidationMessage(e){const t=this.getValidationResultForCell(e);return t.isValid?void 0:t.error}getDataValidationInvalidCriterionValueMessage(e,t){const o=ZO.get(e);return t.startsWith("=")?"onlyLiterals"===o.allowedValues?Uo("The value must not be a formula"):this.isValidFormula(t)?void 0:jx.CriterionError.validFormula:"onlyFormulas"===o.allowedValues?Uo("The value must be a formula"):o.isCriterionValueValid(t)?void 0:o.criterionValueErrorString}isCellValidCheckbox(e){if(!this.getters.isMainCellPosition(e))return!1;const t=this.getters.getValidationRuleForCell(e);return!(!t||"isBoolean"!==t.criterion.type)&&this.getValidationResultForCell(e).isValid}getValidationResultForCellValue(e,t){const o=this.getters.getValidationRuleForCell(t);if(!o)return vN;const s=this.getRuleErrorForCellValue(e,t,o);return s?{error:s,rule:o,isValid:!1}:vN}isValidFormula(e){return!VS(e).isBadExpression}getValidationResultForCell(e){const{col:t,row:o,sheetId:s}=e;return this.validationResults[s]||(this.validationResults[s]=this.computeSheetValidationResults(s)),this.validationResults[s][t]?.[o]?.()||vN}computeSheetValidationResults(e){const t={},o=this.getters.getDataValidationRules(e).map((e=>e.ranges));for(const e of Jr(o.flat())){const{col:o,row:s}=e;t[o]||(t[o]=[]),t[o][s]=gt((()=>{const t=this.getters.getEvaluatedCell(e);return t.type===oi.empty?vN:this.getValidationResultForCellValue(t.value,e)}))}return t}getRuleErrorForCellValue(e,t,o){const{sheetId:s}=t,i=o.criterion,n=ZO.get(i.type),r=this.getCellOffsetInRule(t,o),a=this.getEvaluatedCriterionValues(s,r,i),l={...i,values:a};if(!n.isValueValid(e,l,this.getters,s))return n.getErrorString(l,this.getters,s)}getCellOffsetInRule(e,t){const o=t.ranges.find((t=>ts(e.col,e.row,t.zone)));if(!o)throw new Error("The cell is not in any range of the rule");return{col:e.col-o.zone.left,row:e.row-o.zone.top}}getEvaluatedCriterionValues(e,t,o){return o.values.map((o=>{if(!o.startsWith("="))return o;const s=VS(o),i=this.getters.getTranslatedCellFormula(e,t.col,t.row,s.tokens),n=this.getters.evaluateFormula(e,i);return n&&!bi(n)?n.toString():""}))}}).add("dynamic_tables",class extends PP{static getters=["canCreateDynamicTableOnZones","doesZonesContainFilter","getFilter","getFilters","getTable","getTables","getTablesOverlappingZones","getFilterId","getFilterHeaders","isFilterHeader"];tables={};handle(e){if(ii.has(e.type)||"UPDATE_CELL"===e.type&&("content"in e||"format"in e)||"EVALUATE_CELLS"===e.type)this.tables={};else switch(e.type){case"CREATE_TABLE":case"REMOVE_TABLE":case"UPDATE_TABLE":case"DELETE_CONTENT":this.tables={}}}finalize(){for(const e of this.getters.getSheetIds())this.tables[e]||(this.tables[e]=this.computeTables(e))}computeTables(e){const t=[],o=this.getters.getCoreTables(e);for(const e of o)"dynamic"!==e.type&&t.push(e);const s=[...t];for(const i of o){if("dynamic"!==i.type)continue;const o=this.coreTableToTable(e,i);let n=o.range.zone;for(const e of s)es(n,e.range.zone)&&(n={...n,right:e.range.zone.left-1});t.push({...o,range:this.getters.getRangeFromZone(e,n)})}return t}getFilters(e){return this.getTables(e).filter((e=>e.config.hasFilters)).map((e=>e.filters)).flat()}getTables(e){return this.tables[e]||[]}getFilter(e){const t=this.getTable(e);if(t&&t.config.hasFilters)return t.filters.find((t=>t.col===e.col))}getFilterId(e){return this.getFilter(e)?.id}getTable({sheetId:e,col:t,row:o}){return this.getTables(e).find((e=>ts(t,o,e.range.zone)))}getTablesOverlappingZones(e,t){return this.getTables(e).filter((e=>t.some((t=>es(e.range.zone,t)))))}doesZonesContainFilter(e,t){return this.getTablesOverlappingZones(e,t).some((e=>e.config.hasFilters))}getFilterHeaders(e){const t=[];for(const o of this.getTables(e)){if(!o.config.hasFilters)continue;const s=o.range.zone,i=s.top;for(let o=s.left;o<=s.right;o++)t.push({sheetId:e,col:o,row:i})}return t}isFilterHeader({sheetId:e,col:t,row:o}){return this.getFilterHeaders(e).some((e=>e.col===t&&e.row===o))}canCreateDynamicTableOnZones(e,t){if(!ps(t))return!1;const o=Ko(...t),s={col:o.left,row:o.top,sheetId:e},i=this.getters.getArrayFormulaSpreadingOn(s);if(!i)return!1;if(ft(i,s)&&1===gs(o))return!0;return ft(o,this.getters.getSpreadZone(i))}coreTableToTable(e,t){if("dynamic"!==t.type)return t;const o=t.range.zone,s={sheetId:e,col:o.left,row:o.top},i=this.getters.getSpreadZone(s)??t.range.zone,n=this.getters.getRangeFromZone(e,i),r=this.getDynamicTableFilters(e,t,i);return{id:t.id,range:n,filters:r,config:t.config}}getDynamicTableFilters(e,t,o){const s=[],{top:i,bottom:n,left:r,right:a}=o;for(let o=r;o<=a;o++){const a=o-r,l={left:o,right:o,top:i,bottom:n},c=iM(this.getDynamicTableFilterId(t.id,a),this.getters.getRangeFromZone(e,l),t.config,this.getters.getRangeFromZone);s.push(c)}return s}getDynamicTableFilterId(e,t){return e+"_"+t}exportForExcel(e){for(const t of e.sheets)for(const e of t.tables){const o=$o(e.range),s={sheetId:t.id,col:o.left,row:o.top},i=this.getters.getCoreTable(s),n=this.getTable(s);"dynamic"===i?.type&&n&&(e.range=qo(n.range.zone))}}}).add("custom_colors",class extends PP{customColors={};shouldUpdateColors=!0;static getters=["getCustomColors"];constructor(e){super(e),this.tryToAddColors(e.customColors??[])}handle(e){switch(e.type){case"START":for(const e of this.getters.getSheetIds())for(const t of this.getters.getChartIds(e))this.tryToAddColors(this.getChartColors(t));break;case"UPDATE_CHART":case"CREATE_CHART":this.tryToAddColors(this.getChartColors(e.id));break;case"UPDATE_CELL":case"ADD_CONDITIONAL_FORMAT":case"SET_BORDER":case"SET_ZONE_BORDERS":case"SET_FORMATTING":case"CREATE_TABLE":case"UPDATE_TABLE":this.history.update("shouldUpdateColors",!0)}}finalize(){this.shouldUpdateColors&&(this.history.update("shouldUpdateColors",!1),this.tryToAddColors(this.computeCustomColors()))}getCustomColors(){return function(e){const t=[{leadColor:Wt(255,0,0),colors:[]},{leadColor:Wt(255,128,0),colors:[]},{leadColor:Wt(128,128,0),colors:[]},{leadColor:Wt(128,255,0),colors:[]},{leadColor:Wt(0,255,0),colors:[]},{leadColor:Wt(0,255,128),colors:[]},{leadColor:Wt(0,255,255),colors:[]},{leadColor:Wt(0,127,255),colors:[]},{leadColor:Wt(0,0,255),colors:[]},{leadColor:Wt(127,0,255),colors:[]},{leadColor:Wt(128,0,128),colors:[]},{leadColor:Wt(255,0,128),colors:[]}];for(const o of e.map(jt)){let e=500,s=0;t.forEach(((t,i)=>{const n=(r=o,a=t.leadColor,Math.sqrt(Math.pow(r.r-a.r,2)+Math.pow(r.g-a.g,2)+Math.pow(r.b-a.b,2)));var r,a;e>n&&(e=n,s=i)})),t[s].colors.push(o)}return t.map((e=>e.colors.sort(((e,t)=>Xt(e).s-Xt(t).s)))).flat().map(Zt)}(Object.keys(this.customColors))}computeCustomColors(){let e=[];for(const t of this.getters.getSheetIds())e=e.concat(this.getColorsFromCells(t),this.getFormattingColors(t),this.getTableColors(t));return[...new Set([...e])]}getColorsFromCells(e){const t=Object.values(this.getters.getCells(e)),o=new Set;for(const e of t)e.style?.textColor&&o.add(e.style.textColor),e.style?.fillColor&&o.add(e.style.fillColor);for(const t of this.getters.getBordersColors(e))o.add(t);return[...o]}getFormattingColors(e){const t=this.getters.getConditionalFormats(e),o=[];for(const e of t){const t=e.rule;"CellIsRule"===t.type?(o.push(t.style.textColor),o.push(t.style.fillColor)):"ColorScaleRule"===t.type&&(o.push(Ut(t.minimum.color)),o.push(t.midpoint?Ut(t.midpoint.color):void 0),o.push(Ut(t.maximum.color)))}return o.filter(lt)}getChartColors(e){const t=this.getters.getChart(e);if(void 0===t)return[];return[...JSON.stringify(t.getDefinition()).matchAll(fN)].map((e=>e[1]))}getTableColors(e){return this.getters.getTables(e).flatMap((e=>{const t=e.config,o=this.getters.getTableStyle(t.styleId);return[this.getTableStyleElementColors(o.wholeTable),t.numberOfHeaders>0?this.getTableStyleElementColors(o.headerRow):[],t.totalRow?this.getTableStyleElementColors(o.totalRow):[],t.bandedColumns?this.getTableStyleElementColors(o.firstColumnStripe):[],t.bandedColumns?this.getTableStyleElementColors(o.secondColumnStripe):[],t.bandedRows?this.getTableStyleElementColors(o.firstRowStripe):[],t.bandedRows?this.getTableStyleElementColors(o.secondRowStripe):[],t.firstColumn?this.getTableStyleElementColors(o.firstColumn):[],t.lastColumn?this.getTableStyleElementColors(o.lastColumn):[]].flat()}))}getTableStyleElementColors(e){return e?[e.style?.fillColor,e.style?.textColor,e.border?.bottom?.color,e.border?.top?.color,e.border?.left?.color,e.border?.right?.color,e.border?.horizontal?.color,e.border?.vertical?.color].filter(lt):[]}tryToAddColors(e){for(const t of e){if(!$t(t))continue;const e=zt(t);t&&!Q.includes(e)&&this.history.update("customColors",e,!0)}}}).add("pivot_ui",class extends PP{static getters=["getPivot","getFirstPivotFunction","getPivotIdFromPosition","getPivotCellFromPosition","generateNewCalculatedMeasureName","isPivotUnused","isSpillPivotFormula"];pivots={};unusedPivots;custom;constructor(e){super(e),this.custom=e.custom}beforeHandle(e){if("START"===e.type)for(const e of this.getters.getPivotIds())this.setupPivot(e)}handle(e){if(ii.has(e.type))for(const e of this.getters.getPivotIds())WF.get(this.getters.getPivotCoreDefinition(e).type).externalData||this.setupPivot(e,{recreate:!0});switch(e.type){case"REFRESH_PIVOT":this.refreshPivot(e.id);break;case"ADD_PIVOT":this.setupPivot(e.pivotId);break;case"DUPLICATE_PIVOT":this.setupPivot(e.newPivotId);break;case"UPDATE_PIVOT":this.setupPivot(e.pivotId,{recreate:!0});break;case"DELETE_SHEET":case"UPDATE_CELL":this.unusedPivots=void 0;break;case"UNDO":case"REDO":{this.unusedPivots=void 0;const t=e.commands.filter(CN);for(const e of t){const t=e.pivotId;this.getters.isExistingPivot(t)&&this.setupPivot(t,{recreate:!0})}break}case"UPDATE_LOCALE":!function(){for(const e in $F)$F[e].set.clear(),$F[e].values={}}()}}getPivotIdFromPosition(e){const t=this.getters.getCorrespondingFormulaCell(e);if(t&&t.isFormula){const o=this.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);if(o){const e=o.args[0]?.toString();return e&&this.getters.getPivotId(e)}}}isSpillPivotFormula(e){const t=this.getters.getCorrespondingFormulaCell(e);if(t&&t.isFormula){const o=this.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);return"PIVOT"===o?.functionName}return!1}getFirstPivotFunction(e,t){const o=jS(t);if(!o)return;const{functionName:s,args:i}=o;return{functionName:s,args:i.map((t=>{if("EMPTY"==t.type)return;if("STRING"===t.type||"BOOLEAN"===t.type||"NUMBER"===t.type)return t.value;const o=rv(t);return this.getters.evaluateFormula(e,o)}))}}getPivotCellFromPosition(e){const t=this.getters.getCorrespondingFormulaCell(e);if(!t||!t.isFormula||0===YS(t.compiledFormula.tokens))return PF;const o=this.getters.getCellPosition(t.id),s=this.getters.getFirstPivotFunction(e.sheetId,t.compiledFormula.tokens);if(!s)return PF;const{functionName:i,args:n}=s,r=n[0];if(!r)return PF;const a=this.getters.getPivotId(r.toString());if(!a)return PF;const l=this.getPivot(a);if(!l.isValid())return PF;if("PIVOT"===i&&!t.content.replaceAll(" ","").toUpperCase().startsWith("=PIVOT"))return PF;if("PIVOT"===i){const t=vl(n[2]),s=void 0===t||Zi(t),i=vl(n[3]),r=void 0===i||Zi(i),a=l.getTableStructure().getPivotCells(s,r),c=e.col-o.col,h=e.row-o.row;return a[c][h]}try{if("PIVOT.HEADER"===i&&"measure"===n.at(-2)){return{type:"MEASURE_HEADER",domain:l.parseArgsToPivotDomain(n.slice(1,-2).map((e=>({value:e})))),measure:n.at(-1)?.toString()||""}}if("PIVOT.HEADER"===i){return{type:"HEADER",domain:l.parseArgsToPivotDomain(n.slice(1).map((e=>({value:e}))))}}const[e,...t]=n.slice(1);return{type:"VALUE",domain:l.parseArgsToPivotDomain(t.map((e=>({value:e})))),measure:e?.toString()||""}}catch(e){return PF}}generateNewCalculatedMeasureName(e){const t=e.map((e=>e.fieldName));return kt(Uo("Calculated measure 1"),t,{compute:(e,t)=>Uo("Calculated measure %s",t)})}getPivot(e){if(!this.getters.isExistingPivot(e))throw new Error(`pivot ${e} not found`);return this.pivots[e]}isPivotUnused(e){return this._getUnusedPivots().includes(e)}refreshPivot(e){this.getters.getPivot(e).init({reload:!0})}setupPivot(e,{recreate:t}={recreate:!1}){const o=this.getters.getPivotCoreDefinition(e);if(e in this.pivots)t&&this.pivots[e].onDefinitionChange(o);else{const t=SN(WF.get(o.type).ui);this.pivots[e]=new t(this.custom,{definition:o,getters:this.getters})}}_getUnusedPivots(){if(void 0!==this.unusedPivots)return this.unusedPivots;const e=new Set(this.getters.getPivotIds());for(const t of this.getters.getSheetIds())for(const o in this.getters.getCells(t)){const t=this.getters.getCellPosition(o),s=this.getPivotIdFromPosition(t);if(s&&(e.delete(s),!e.size))return this.unusedPivots=[],[]}return this.unusedPivots=[...e],this.unusedPivots}}),sk=new n;sk.add("link",{condition:(e,t)=>!!t.getEvaluatedCell(e).link,execute:(e,t)=>Rn(t.model.getters.getEvaluatedCell(e).link,t),sequence:5});class ik{fileStore;constructor(e){this.fileStore=e}async requestImage(){const e=await this.getImageFromUser(),t=await this.fileStore.upload(e);return{path:t,size:await this.getImageOriginalSize(t),mimetype:e.type}}getImageFromUser(){return new Promise(((e,t)=>{const o=document.createElement("input");o.setAttribute("type","file"),o.setAttribute("accept","image/*"),o.addEventListener("change",(async()=>{null===o.files||1!=o.files.length?t():e(o.files[0])})),o.click()}))}getImageOriginalSize(e){return new Promise(((t,o)=>{const s=new Image;s.src=e,s.addEventListener("load",(()=>{const e={width:s.width,height:s.height};t(e)})),s.addEventListener("error",o)}))}}const nk=[{transform:"scale(0)"},{transform:"scale(0.8)",offset:.33},{opacity:"0",transform:"scale(1)",offset:1}];th`
1859
1859
  .o-ripple {
1860
1860
  z-index: 1;
1861
1861
  }
@@ -3286,4 +3286,4 @@
3286
3286
  <tableParts count="${e.tables.length}">
3287
3287
  ${ix(a)}
3288
3288
  </tableParts>
3289
- `}var $V;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}($V||($V={}));function GV(e,t={}){const o=ze(t);return o.type=e,o}const WV={},qV={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:ee,HEADER_WIDTH:te,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:oe,DEFAULT_CELL_HEIGHT:se,SCROLLBAR_WIDTH:ie},ZV={autoCompleteProviders:Jh,autofillModifiersRegistry:KS,autofillRulesRegistry:JS,cellMenuRegistry:AA,colMenuRegistry:bD,errorTypes:xi,linkMenuRegistry:OR,functionRegistry:vS,featurePluginRegistry:ek,iconsOnCellRegistry:qy,statefulUIPluginRegistry:tk,coreViewsPluginRegistry:ok,corePluginRegistry:QN,rowMenuRegistry:wD,sidePanelRegistry:SM,figureRegistry:jE,chartSidePanelComponentRegistry:PO,chartComponentRegistry:BE,chartRegistry:UE,chartSubtypeRegistry:$E,topbarMenuRegistry:ID,topbarComponentRegistry:yM,clickableCellRegistry:sk,otRegistry:ED,inverseCommandRegistry:JE,urlRegistry:Cn,cellPopoverRegistry:ny,numberFormatMenuRegistry:SD,repeatLocalCommandTransformRegistry:jN,repeatCommandTransformRegistry:ZN,clipboardHandlersRegistries:Pc,pivotRegistry:WF,pivotTimeAdapterRegistry:jl,pivotSidePanelRegistry:YF,pivotNormalizationValueRegistry:Ec,supportedPivotPositionalFormulaRegistry:XS,pivotToFunctionValueRegistry:Rc,migrationStepRegistry:Tx,chartJsExtensionRegistry:nh},jV={arg:od,isEvaluationError:Pi,toBoolean:Zi,toJsDate:ji,toNumber:ki,toString:Gi,toNormalizedPivotValue:Cc,toXC:Ao,toZone:$o,toUnboundedZone:zo,toCartesian:To,numberToLetters:vo,lettersToNumber:bo,UuidGenerator:xa,formatValue:Kn,createCurrencyFormat:dr,ColorGenerator:uo,computeTextWidth:ha,createEmptyWorkbookData:Nx,createEmptySheet:Px,createEmptyExcelSheet:kx,rgbaToHex:Zt,colorToRGBA:jt,positionToZone:hs,isDefined:lt,isMatrix:bi,lazy:gt,genericRepeat:YN,createAction:i,createActions:o,transformRangeData:kc,deepEquals:ft,overlap:es,union:Ko,isInside:ts,deepCopy:ze,expandZoneOnInsertion:Zo,reduceZoneOnDeletion:Xo,unquote:Ge,getMaxObjectId:gc,getFunctionsFromTokens:zS,getFirstPivotFunction:jS,getNumberOfPivotFunctions:YS,parseDimension:fc,isDateOrDatetimeField:vc,makeFieldProposal:GS,insertTokenAfterArgSeparator:WS,insertTokenAfterLeftParenthesis:qS,mergeContiguousZones:ms,getPivotHighlights:xD,pivotTimeAdapter:Yl,UNDO_REDO_PIVOT_COMMANDS:yN,createPivotFormula:yc,areDomainArgsFieldsValid:Sc,splitReference:qr,sanitizeSheetName:qe,getUniqueText:kt,isNumber:Js,isDateTime:Ns},YV={isMarkdownLink:et,parseMarkdownLink:st,markdownLink:ot,openLink:Rn,urlRepresentation:En},XV={Checkbox:fR,Section:RD,RoundColorPicker:tO,ChartDataSeries:HD,ChartErrorSection:BD,ChartLabelRange:zD,ChartTitle:QD,ChartPanel:VO,ChartFigure:WE,ChartJsComponent:kh,Grid:xP,GridOverlay:QM,ScorecardChart:Kh,LineConfigPanel:AO,BarConfigPanel:GD,PieChartDesignPanel:_O,GenericChartConfigPanel:$D,ChartWithAxisDesignPanel:aO,GaugeChartConfigPanel:cO,GaugeChartDesignPanel:xO,ScorecardChartConfigPanel:OO,ScorecardChartDesignPanel:FO,RadarChartDesignPanel:DO,WaterfallChartDesignPanel:MO,ComboChartDesignPanel:lO,ChartTypePicker:NO,FigureComponent:CM,Menu:WR,Popover:hR,SelectionInput:LD,ValidationMessages:UD,AddDimensionButton:yF,PivotDimensionGranularity:IF,PivotDimensionOrder:EF,PivotDimension:xF,PivotLayoutConfigurator:AF,PivotHTMLRenderer:IP,PivotDeferUpdate:SF,PivotTitleSection:_F,CogWheelMenu:wF,TextInput:CF,SidePanelCollapsible:qD,RadioSelection:iO},KV={useDragAndDropListItems:_D,useHighlights:BO,useHighlightsOnHover:UO},JV={useStoreProvider:Bc,DependencyContainer:Lc,CellPopoverStore:iR,ComposerFocusStore:Jc,CellComposerStore:FM,FindAndReplaceStore:gF,HighlightStore:xS,HoveredCellStore:sR,ModelStore:Zc,NotificationStore:IS,RendererStore:Yc,SelectionInputStore:VD,SpreadsheetStore:Xc,useStore:zc,useLocalStore:$c,SidePanelStore:SP,PivotSidePanelStore:ZF,PivotMeasureDisplayPanelStore:vF};const QV={DEFAULT_LOCALE:fi,HIGHLIGHT_COLOR:a,PIVOT_TABLE_CONFIG:Ve,ChartTerms:$x},eL={...QR,...vE};e.AbstractCellClipboardHandler=Aa,e.AbstractChart=Vh,e.AbstractFigureClipboardHandler=Oc,e.CellErrorType=wi,e.CorePlugin=RP,e.CoreViewPlugin=PP,e.DispatchResult=ui,e.EvaluationError=Ii,e.Model=class extends Vc{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},o={},s=[],i=new xa,n=!1){const r=performance.now();console.debug("##### Model creation #####"),super(),Vo===No&&Lo===ko&&(Lo=()=>!0),s=Fx(e,s);const a=Ox(e,n);this.state=new $k,this.uuidGenerator=i,this.config=this.setupConfig(o),this.session=this.setupSession(a.revisionId),this.coreGetters={},this.range=new FP(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.coreGetters.recomputeRanges=this.range.recomputeRanges.bind(this.range),this.coreGetters.isRangeValid=this.range.isRangeValid.bind(this.range),this.coreGetters.extendRange=this.range.extendRange.bind(this.range),this.coreGetters.getRangesUnion=this.range.getRangesUnion.bind(this.range),this.coreGetters.removeRangesSheetPrefix=this.range.removeRangesSheetPrefix.bind(this.range),this.coreGetters.adaptFormulaStringDependencies=this.range.adaptFormulaStringDependencies.bind(this.range),this.coreGetters.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode},this.selection=new Bk(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.coreViewPluginConfig=this.setupCoreViewPluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of QN.getAll())this.setupCorePlugin(e,a);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(s);for(let e of ok.getAll()){const t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of tk.getAll()){const t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of ek.getAll()){const t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.joinSession(),o.snapshotRequested||e["[Content_Types].xml"]&&!this.getters.isReadonly()){const e=performance.now();console.debug("Snapshot requested"),this.session.snapshot(this.exportData()),this.garbageCollectExternalResources(),console.debug("Snapshot taken in",performance.now()-e,"ms")}t.markRaw(this),console.debug("Model created in",performance.now()-r,"ms"),console.debug("######")}joinSession(){this.session.join(this.config.client)}async leaveSession(){const e=this.getters.isReadonly()?void 0:gt((()=>this.exportData()));await this.session.leave(e)}setupUiPlugin(e){const t=new e(this.uiPluginConfig);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}for(const o of e.layers)this.renderers[o]||(this.renderers[o]=[]),this.renderers[o].push(t);return t}setupCoreViewPlugin(e){const t=new e(this.coreViewPluginConfig);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}return t}setupCorePlugin(e,t){const o=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in o))throw new Error(`Invalid getter name: ${t} for plugin ${o.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=o[t].bind(o)}o.import(t),this.corePlugins.push(o),this.coreHandlers.push(o),this.handlers.push(o)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new kN(Lk({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{this.checkDispatchAllowed(e).isSuccessful?(this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1):this.dispatchToHandlers(this.coreHandlers,{type:"UNDO",commands:[e]})}}),this.config.transportService,e)}setupSessionEvents(){this.session.on("remote-revision-received",this,this.onRemoteRevisionReceived),this.session.on("revision-undone",this,(({commands:e})=>{this.dispatchFromCorePlugin("UNDO",{commands:e}),this.finalize()})),this.session.on("revision-redone",this,(({commands:e})=>{this.dispatchFromCorePlugin("REDO",{commands:e}),this.finalize()})),this.session.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.session.on("collaborative-event-received",this,(()=>{this.trigger("update")}))}setupConfig(e){const t=e.client||{id:this.uuidGenerator.smallUuid(),name:Uo("Anonymous").toString()},o=e.transportService||new Dk;return{...e,mode:e.mode||"normal",custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:o,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e),raiseBlockingErrorUI:e=>this.trigger("raise-error-ui",{text:e}),customColors:e.customColors||[]}}setupExternalConfig(e){const t=e.loadLocales||(()=>Promise.resolve(mi));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,canDispatch:this.canDispatch,custom:this.config.custom,external:this.config.external}}setupCoreViewPluginConfig(){return{getters:this.getters,stateObserver:this.state,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,canDispatch:this.canDispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}checkDispatchAllowed(e){const t=di(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some((e=>"Success"!==e))?new ui(t.flat()):ui.Success}checkDispatchAllowedCoreCommand(e){const t=this.corePlugins.map((t=>t.allowDispatch(e)));return t.push(this.range.allowDispatch(e)),t}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map((t=>t.allowDispatch(e)))}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0,this.trigger("command-finalized")}canDispatch=(e,t)=>this.checkDispatchAllowed(GV(e,t));dispatch=(e,t)=>{const o=GV(e,t);let s=this.status;if(this.getters.isReadonly()&&(i=o,!ci.has(i.type)))return new ui("Readonly");var i;if(!this.session.canApplyOptimisticUpdate())return new ui("WaitingSessionConfirmation");switch(s){case 0:const t=this.checkDispatchAllowed(o);if(!t.isSuccessful)return this.trigger("update"),t;this.status=1;const{changes:s,commands:i}=this.state.recordChanges((()=>{const t=performance.now();di(o)&&this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o),this.finalize();const s=performance.now()-t;s>5&&console.debug(e,s,"ms")}));this.session.save(o,i,s),this.status=0,this.trigger("update");break;case 1:if(di(o)){const e=this.checkDispatchAllowed(o);if(!e.isSuccessful)return e;this.state.addCommand(o)}this.dispatchToHandlers(this.handlers,o);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(di(o))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,o)}return ui.Success};dispatchFromCorePlugin=(e,t)=>{const o=GV(e,t),s=this.status;this.status=2;const i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,o),this.status=s,ui.Success};dispatchToHandlers(e,t){const o=di(t);for(const s of e)!o&&s instanceof RP||s.beforeHandle(t);for(const s of e)!o&&s instanceof RP||s.handle(t);this.trigger("command-dispatched",t)}drawLayer(e,t){const o=this.renderers[t];if(o)for(const s of o)e.ctx.save(),s.drawLayer(e,t),e.ctx.restore()}exportData(){let e=Nx();for(let t of this.handlers)t instanceof RP&&t.export(e);return e.revisionId=this.session.getRevisionId()||ye,e=ze(e),e}updateMode(e){this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Nx(),sheets:[kx(Dx,"Sheet1")]};for(let t of this.handlers)t instanceof EP&&t.exportForExcel(e);return e=ze(e),BV(e)}garbageCollectExternalResources(){for(const e of this.corePlugins)e.garbageCollectExternalResources()}},e.PivotRuntimeDefinition=DF,e.Registry=n,e.Revision=PN,e.SPREADSHEET_DIMENSIONS=qV,e.Spreadsheet=_k,e.SpreadsheetPivotTable=MF,e.UIPlugin=wN,e.__info__=WV,e.addFunction=function e(t,o){return vS.add(t,o),{addFunction:(t,o)=>e(t,o)}},e.addRenderingLayer=function(e,t){if(yi[e])throw new Error(`Layer ${e} already exists`);yi[e]=t},e.astToFormula=rv,e.chartHelpers=eL,e.compile=VS,e.compileTokens=LS,e.components=XV,e.constants=QV,e.convertAstNodes=ov,e.coreTypes=hi,e.findCellInNewZone=cs,e.functionCache=kS,e.helpers=jV,e.hooks=KV,e.invalidateCFEvaluationCommands=ai,e.invalidateDependenciesCommands=ri,e.invalidateEvaluationCommands=ii,e.iterateAstNodes=sv,e.links=YV,e.load=Ox,e.parse=ev,e.parseTokens=tv,e.readonlyAllowedCommands=ci,e.registries=ZV,e.setDefaultSheetViewSize=function(e){Me=e},e.setTranslationMethod=function(e,t=(()=>!0)){Vo=e,Lo=t},e.stores=JV,e.tokenColors=TS,e.tokenize=Fa,WV.version="18.2.17",WV.date="2025-06-12T09:52:15.050Z",WV.hash="ea64209"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3289
+ `}var $V;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}($V||($V={}));function GV(e,t={}){const o=ze(t);return o.type=e,o}const WV={},qV={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:ee,HEADER_WIDTH:te,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:oe,DEFAULT_CELL_HEIGHT:se,SCROLLBAR_WIDTH:ie},ZV={autoCompleteProviders:Jh,autofillModifiersRegistry:KS,autofillRulesRegistry:JS,cellMenuRegistry:AA,colMenuRegistry:bD,errorTypes:xi,linkMenuRegistry:OR,functionRegistry:vS,featurePluginRegistry:ek,iconsOnCellRegistry:qy,statefulUIPluginRegistry:tk,coreViewsPluginRegistry:ok,corePluginRegistry:QN,rowMenuRegistry:wD,sidePanelRegistry:SM,figureRegistry:jE,chartSidePanelComponentRegistry:PO,chartComponentRegistry:BE,chartRegistry:UE,chartSubtypeRegistry:$E,topbarMenuRegistry:ID,topbarComponentRegistry:yM,clickableCellRegistry:sk,otRegistry:ED,inverseCommandRegistry:JE,urlRegistry:Cn,cellPopoverRegistry:ny,numberFormatMenuRegistry:SD,repeatLocalCommandTransformRegistry:jN,repeatCommandTransformRegistry:ZN,clipboardHandlersRegistries:Pc,pivotRegistry:WF,pivotTimeAdapterRegistry:jl,pivotSidePanelRegistry:YF,pivotNormalizationValueRegistry:Ec,supportedPivotPositionalFormulaRegistry:XS,pivotToFunctionValueRegistry:Rc,migrationStepRegistry:Tx,chartJsExtensionRegistry:nh},jV={arg:od,isEvaluationError:Pi,toBoolean:Zi,toJsDate:ji,toNumber:ki,toString:Gi,toNormalizedPivotValue:Cc,toXC:Ao,toZone:$o,toUnboundedZone:zo,toCartesian:To,numberToLetters:vo,lettersToNumber:bo,UuidGenerator:xa,formatValue:Kn,createCurrencyFormat:dr,ColorGenerator:uo,computeTextWidth:ha,createEmptyWorkbookData:Nx,createEmptySheet:Px,createEmptyExcelSheet:kx,rgbaToHex:Zt,colorToRGBA:jt,positionToZone:hs,isDefined:lt,isMatrix:bi,lazy:gt,genericRepeat:YN,createAction:i,createActions:o,transformRangeData:kc,deepEquals:ft,overlap:es,union:Ko,isInside:ts,deepCopy:ze,expandZoneOnInsertion:Zo,reduceZoneOnDeletion:Xo,unquote:Ge,getMaxObjectId:gc,getFunctionsFromTokens:zS,getFirstPivotFunction:jS,getNumberOfPivotFunctions:YS,parseDimension:fc,isDateOrDatetimeField:vc,makeFieldProposal:GS,insertTokenAfterArgSeparator:WS,insertTokenAfterLeftParenthesis:qS,mergeContiguousZones:ms,getPivotHighlights:xD,pivotTimeAdapter:Yl,UNDO_REDO_PIVOT_COMMANDS:yN,createPivotFormula:yc,areDomainArgsFieldsValid:Sc,splitReference:qr,sanitizeSheetName:qe,getUniqueText:kt,isNumber:Js,isDateTime:Ns},YV={isMarkdownLink:et,parseMarkdownLink:st,markdownLink:ot,openLink:Rn,urlRepresentation:En},XV={Checkbox:fR,Section:RD,RoundColorPicker:tO,ChartDataSeries:HD,ChartErrorSection:BD,ChartLabelRange:zD,ChartTitle:QD,ChartPanel:VO,ChartFigure:WE,ChartJsComponent:kh,Grid:xP,GridOverlay:QM,ScorecardChart:Kh,LineConfigPanel:AO,BarConfigPanel:GD,PieChartDesignPanel:_O,GenericChartConfigPanel:$D,ChartWithAxisDesignPanel:aO,GaugeChartConfigPanel:cO,GaugeChartDesignPanel:xO,ScorecardChartConfigPanel:OO,ScorecardChartDesignPanel:FO,RadarChartDesignPanel:DO,WaterfallChartDesignPanel:MO,ComboChartDesignPanel:lO,ChartTypePicker:NO,FigureComponent:CM,Menu:WR,Popover:hR,SelectionInput:LD,ValidationMessages:UD,AddDimensionButton:yF,PivotDimensionGranularity:IF,PivotDimensionOrder:EF,PivotDimension:xF,PivotLayoutConfigurator:AF,PivotHTMLRenderer:IP,PivotDeferUpdate:SF,PivotTitleSection:_F,CogWheelMenu:wF,TextInput:CF,SidePanelCollapsible:qD,RadioSelection:iO},KV={useDragAndDropListItems:_D,useHighlights:BO,useHighlightsOnHover:UO},JV={useStoreProvider:Bc,DependencyContainer:Lc,CellPopoverStore:iR,ComposerFocusStore:Jc,CellComposerStore:FM,FindAndReplaceStore:gF,HighlightStore:xS,HoveredCellStore:sR,ModelStore:Zc,NotificationStore:IS,RendererStore:Yc,SelectionInputStore:VD,SpreadsheetStore:Xc,useStore:zc,useLocalStore:$c,SidePanelStore:SP,PivotSidePanelStore:ZF,PivotMeasureDisplayPanelStore:vF};const QV={DEFAULT_LOCALE:fi,HIGHLIGHT_COLOR:a,PIVOT_TABLE_CONFIG:Ve,ChartTerms:$x},eL={...QR,...vE};e.AbstractCellClipboardHandler=Aa,e.AbstractChart=Vh,e.AbstractFigureClipboardHandler=Oc,e.CellErrorType=wi,e.CorePlugin=RP,e.CoreViewPlugin=PP,e.DispatchResult=ui,e.EvaluationError=Ii,e.Model=class extends Vc{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},o={},s=[],i=new xa,n=!1){const r=performance.now();console.debug("##### Model creation #####"),super(),Vo===No&&Lo===ko&&(Lo=()=>!0),s=Fx(e,s);const a=Ox(e,n);this.state=new $k,this.uuidGenerator=i,this.config=this.setupConfig(o),this.session=this.setupSession(a.revisionId),this.coreGetters={},this.range=new FP(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.coreGetters.recomputeRanges=this.range.recomputeRanges.bind(this.range),this.coreGetters.isRangeValid=this.range.isRangeValid.bind(this.range),this.coreGetters.extendRange=this.range.extendRange.bind(this.range),this.coreGetters.getRangesUnion=this.range.getRangesUnion.bind(this.range),this.coreGetters.removeRangesSheetPrefix=this.range.removeRangesSheetPrefix.bind(this.range),this.coreGetters.adaptFormulaStringDependencies=this.range.adaptFormulaStringDependencies.bind(this.range),this.coreGetters.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode},this.selection=new Bk(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.coreViewPluginConfig=this.setupCoreViewPluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of QN.getAll())this.setupCorePlugin(e,a);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(s);for(let e of ok.getAll()){const t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of tk.getAll()){const t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of ek.getAll()){const t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.joinSession(),o.snapshotRequested||e["[Content_Types].xml"]&&!this.getters.isReadonly()){const e=performance.now();console.debug("Snapshot requested"),this.session.snapshot(this.exportData()),this.garbageCollectExternalResources(),console.debug("Snapshot taken in",performance.now()-e,"ms")}t.markRaw(this),console.debug("Model created in",performance.now()-r,"ms"),console.debug("######")}joinSession(){this.session.join(this.config.client)}async leaveSession(){const e=this.getters.isReadonly()?void 0:gt((()=>this.exportData()));await this.session.leave(e)}setupUiPlugin(e){const t=new e(this.uiPluginConfig);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}for(const o of e.layers)this.renderers[o]||(this.renderers[o]=[]),this.renderers[o].push(t);return t}setupCoreViewPlugin(e){const t=new e(this.coreViewPluginConfig);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}return t}setupCorePlugin(e,t){const o=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in o))throw new Error(`Invalid getter name: ${t} for plugin ${o.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=o[t].bind(o)}o.import(t),this.corePlugins.push(o),this.coreHandlers.push(o),this.handlers.push(o)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new kN(Lk({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{this.checkDispatchAllowed(e).isSuccessful?(this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1):this.dispatchToHandlers(this.coreHandlers,{type:"UNDO",commands:[e]})}}),this.config.transportService,e)}setupSessionEvents(){this.session.on("remote-revision-received",this,this.onRemoteRevisionReceived),this.session.on("revision-undone",this,(({commands:e})=>{this.dispatchFromCorePlugin("UNDO",{commands:e}),this.finalize()})),this.session.on("revision-redone",this,(({commands:e})=>{this.dispatchFromCorePlugin("REDO",{commands:e}),this.finalize()})),this.session.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.session.on("collaborative-event-received",this,(()=>{this.trigger("update")}))}setupConfig(e){const t=e.client||{id:this.uuidGenerator.smallUuid(),name:Uo("Anonymous").toString()},o=e.transportService||new Dk;return{...e,mode:e.mode||"normal",custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:o,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e),raiseBlockingErrorUI:e=>this.trigger("raise-error-ui",{text:e}),customColors:e.customColors||[]}}setupExternalConfig(e){const t=e.loadLocales||(()=>Promise.resolve(mi));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,canDispatch:this.canDispatch,custom:this.config.custom,external:this.config.external}}setupCoreViewPluginConfig(){return{getters:this.getters,stateObserver:this.state,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,canDispatch:this.canDispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}checkDispatchAllowed(e){const t=di(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some((e=>"Success"!==e))?new ui(t.flat()):ui.Success}checkDispatchAllowedCoreCommand(e){const t=this.corePlugins.map((t=>t.allowDispatch(e)));return t.push(this.range.allowDispatch(e)),t}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map((t=>t.allowDispatch(e)))}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0,this.trigger("command-finalized")}canDispatch=(e,t)=>this.checkDispatchAllowed(GV(e,t));dispatch=(e,t)=>{const o=GV(e,t);let s=this.status;if(this.getters.isReadonly()&&(i=o,!ci.has(i.type)))return new ui("Readonly");var i;if(!this.session.canApplyOptimisticUpdate())return new ui("WaitingSessionConfirmation");switch(s){case 0:const t=this.checkDispatchAllowed(o);if(!t.isSuccessful)return this.trigger("update"),t;this.status=1;const{changes:s,commands:i}=this.state.recordChanges((()=>{const t=performance.now();di(o)&&this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o),this.finalize();const s=performance.now()-t;s>5&&console.debug(e,s,"ms")}));this.session.save(o,i,s),this.status=0,this.trigger("update");break;case 1:if(di(o)){const e=this.checkDispatchAllowed(o);if(!e.isSuccessful)return e;this.state.addCommand(o)}this.dispatchToHandlers(this.handlers,o);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(di(o))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,o)}return ui.Success};dispatchFromCorePlugin=(e,t)=>{const o=GV(e,t),s=this.status;this.status=2;const i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,o),this.status=s,ui.Success};dispatchToHandlers(e,t){const o=di(t);for(const s of e)!o&&s instanceof RP||s.beforeHandle(t);for(const s of e)!o&&s instanceof RP||s.handle(t);this.trigger("command-dispatched",t)}drawLayer(e,t){const o=this.renderers[t];if(o)for(const s of o)e.ctx.save(),s.drawLayer(e,t),e.ctx.restore()}exportData(){let e=Nx();for(let t of this.handlers)t instanceof RP&&t.export(e);return e.revisionId=this.session.getRevisionId()||ye,e=ze(e),e}updateMode(e){this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Nx(),sheets:[kx(Dx,"Sheet1")]};for(let t of this.handlers)t instanceof EP&&t.exportForExcel(e);return e=ze(e),BV(e)}garbageCollectExternalResources(){for(const e of this.corePlugins)e.garbageCollectExternalResources()}},e.PivotRuntimeDefinition=DF,e.Registry=n,e.Revision=PN,e.SPREADSHEET_DIMENSIONS=qV,e.Spreadsheet=_k,e.SpreadsheetPivotTable=MF,e.UIPlugin=wN,e.__info__=WV,e.addFunction=function e(t,o){return vS.add(t,o),{addFunction:(t,o)=>e(t,o)}},e.addRenderingLayer=function(e,t){if(yi[e])throw new Error(`Layer ${e} already exists`);yi[e]=t},e.astToFormula=rv,e.chartHelpers=eL,e.compile=VS,e.compileTokens=LS,e.components=XV,e.constants=QV,e.convertAstNodes=ov,e.coreTypes=hi,e.findCellInNewZone=cs,e.functionCache=kS,e.helpers=jV,e.hooks=KV,e.invalidateCFEvaluationCommands=ai,e.invalidateDependenciesCommands=ri,e.invalidateEvaluationCommands=ii,e.iterateAstNodes=sv,e.links=YV,e.load=Ox,e.parse=ev,e.parseTokens=tv,e.readonlyAllowedCommands=ci,e.registries=ZV,e.setDefaultSheetViewSize=function(e){Me=e},e.setTranslationMethod=function(e,t=(()=>!0)){Vo=e,Lo=t},e.stores=JV,e.tokenColors=TS,e.tokenize=Fa,WV.version="18.2.18",WV.date="2025-06-19T18:24:41.051Z",WV.hash="024c134"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);