@odoo/o-spreadsheet 19.2.20 → 19.2.22

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.
@@ -7,7 +7,7 @@ Did you forget to inject your store instance?
7
7
  const stores = useStoreProvider();
8
8
  stores.inject(MyMetaStore, storeInstance);
9
9
  `)}}return t}var cr=class{get;disposeCallbacks=[];constructor(e){this.get=e}onDispose(e){this.disposeCallbacks.push(e)}dispose(){this.disposeCallbacks.forEach(e=>e())}};function lr(){let e=(0,t.useEnv)();if(e.__spreadsheet_stores__ instanceof ar)return e.__spreadsheet_stores__;let n=new ar;return(0,t.useSubEnv)({__spreadsheet_stores__:n,getStore:e=>fr(n.get(e),()=>n.trigger(`store-updated`))}),(0,t.onWillUnmount)(()=>n.dispose()),n}function D(e){let n=pr((0,t.useEnv)());return dr(n,n.get(e))}function ur(e,...n){let r=pr((0,t.useEnv)()),i=r.instantiate(e,...n);return(0,t.onWillUnmount)(()=>i.dispose()),dr(r,i)}function dr(e,n){let r=(0,t.useComponent)();return fr(n,()=>{(0,t.status)(r)===`mounted`&&e.trigger(`store-updated`)})}function fr(e,t){return new Proxy(e,{get(n,r,i){let a=n,o=Reflect.get(n,r,a);return e.mutators?.includes(r)?new Proxy(o,{apply(e,n,r){Reflect.apply(e,a,r)!==`noStateChange`&&t()}}):o}})}function pr(e){let t=e.__spreadsheet_stores__;if(!(t instanceof ar))throw Error(`No store provider found. Did you forget to call useStoreProvider()?`);return t}let mr=sr(`Model`),hr={Background:0,Highlights:1,Clipboard:2,Chart:4,Autofill:5,Selection:6,Headers:100},gr=At(()=>Object.keys(hr).sort((e,t)=>hr[e]-hr[t]));function _r(e,t){if(hr[e])throw Error(`Layer ${e} already exists`);hr[e]=t}var vr=class{mutators=[`register`,`unRegister`,`draw`,`startAnimation`,`stopAnimation`];renderers={};model;context=void 0;animationFrameId=null;registeredAnimations=new Set;constructor(e){this.model=e(mr)}register(e){if(e.renderingLayers.length)for(let t of e.renderingLayers)this.renderers[t]||(this.renderers[t]=[]),this.renderers[t].push(e)}unRegister(e){for(let t of Object.keys(this.renderers))this.renderers[t]=this.renderers[t].filter(t=>t!==e)}drawLayer(e,t,n){let r=this.renderers[t];if(r)for(let i of r)e.ctx.save(),i.drawLayer(e,t,n),e.ctx.restore();return`noStateChange`}draw(e,t){if(e||=this.context,!e)throw Error(`Rendering context is not defined`);this.context=e;for(let n of gr())this.model.drawLayer(e,n),this.drawLayer(e,n,t);return`noStateChange`}startAnimation(e){if(this.registeredAnimations.add(e),!this.animationFrameId){let e=t=>{this.animationFrameId=requestAnimationFrame(e),this.draw(void 0,t)};this.animationFrameId=requestAnimationFrame(e)}return`noStateChange`}stopAnimation(e){return this.registeredAnimations.delete(e),this.registeredAnimations.size===0&&this.animationFrameId!==null&&(cancelAnimationFrame(this.animationFrameId),this.animationFrameId=null),`noStateChange`}dispose(){this.animationFrameId&&=(cancelAnimationFrame(this.animationFrameId),null)}},yr=class extends cr{model=this.get(mr);getters=this.model.getters;renderer=this.get(vr);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,n){}};let br={id:`void-composer`,get editionMode(){return`inactive`},startEdition:()=>{throw Error(`No composer is registered`)},stopEdition:()=>{throw Error(`No composer is registered`)},setCurrentContent:()=>{throw Error(`No composer is registered`)}};var xr=class extends yr{mutators=[`focusComposer`,`focusActiveComposer`];activeComposer=br;_focusMode=`inactive`;get focusMode(){return this.activeComposer.editionMode===`inactive`?`inactive`:this._focusMode}focusComposer(e,t){if(this.activeComposer=e,this.getters.isReadonly())return`noStateChange`;this._focusMode=t.focusMode||`contentFocus`,this._focusMode!==`inactive`&&this.setComposerContent(t)}focusActiveComposer(e){if(this.getters.isReadonly())return`noStateChange`;if(!this.activeComposer)throw Error(`No composer is registered`);this._focusMode=e.focusMode||`contentFocus`,this._focusMode!==`inactive`&&this.setComposerContent(e)}setComposerContent({content:e,selection:t}){this.activeComposer.editionMode===`inactive`?this.activeComposer.startEdition(e,t):e&&this.activeComposer.setCurrentContent(e,t)}};let Sr=/rgba?\(|\s+|\)/gi,Cr=/^#([A-F\d]{2}){3,4}$/,wr=/^light-dark\(\s*(rgba?\([0-9.,\s]+\)|#[a-f0-9]+)\s*,\s*(rgba?\([0-9.,\s]+\)|#[a-f0-9]+)\s*\)$/i,Tr=[`#eb6d00`,`#0074d9`,`#ad8e00`,`#169ed4`,`#b10dc9`,`#00a82d`,`#00a3a3`,`#f012be`,`#3d9970`,`#62A300`,`#ff4136`,`#949494`,`#ff5c9d`];function Er(e,t=1){let n=t===1?``:Math.round(t*255).toString(16).padStart(2,`0`);return Or(e.toString(16).padStart(6,`0`))+n}function Dr(e){return typeof e==`number`?e:Number.parseInt(Or(e).slice(1,7),16)}function Or(e){let t=e;if(e.startsWith(`light-dark`)){let t=e.match(wr);if(!t)throw Error(`Invalid light-dark color: ${e}`);return`light-dark(${Or(t[1])}, ${Or(t[2])})`}if(e.startsWith(`rgb`)?t=Pr(e):(t=e.replace(`#`,``).toUpperCase(),(t.length===3||t.length===4)&&(t=t.split(``).reduce((e,t)=>e+t+t,``)),t=`#${t}`),!Cr.test(t))throw Error(`invalid color input: ${e}`);return t}function kr(e){try{return Or(e),!0}catch{return!1}}function Ar(e){try{return zr(e),!0}catch{return!1}}let jr=e=>e>=0&&e<=255;function Mr(e,t,n,r=1){if(!jr(e)||!jr(t)||!jr(n)||r<0||r>1)throw Error(`Invalid RGBA values ${[e,t,n,r]}`);return{a:r,b:n,g:t,r:e}}function Nr(e){let{r:t,g:n,b:r}=Ir(e);t/=255,n/=255,r/=255;let i=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4,a=i(t),o=i(n),s=i(r);return .2126*a+.7152*o+.0722*s}function Pr(e){let t=e.replace(Sr,``).split(`,`),n=255;if(t.length!==3&&t.length!==4)throw Error(`invalid color`);if(t.length===4){let e=parseFloat(t.pop()||`1`);if(isNaN(e))throw Error(`invalid alpha value`);n=Math.round(e*255)}let r=t.map(e=>parseInt(e,10));return n!==255&&r.push(n),`#`+gt(r.map(e=>e.toString(16).padStart(2,`0`))).toUpperCase()}function Fr(e){let t=e.r.toString(16),n=e.g.toString(16),r=e.b.toString(16),i=Math.round(e.a*255).toString(16);return t.length===1&&(t=`0`+t),n.length===1&&(n=`0`+n),r.length===1&&(r=`0`+r),i.length===1&&(i=`0`+i),i===`ff`&&(i=``),(`#`+t+n+r+i).toUpperCase()}function Ir(e){e=Or(e);let t,n,r,i;if(e.length===7)t=parseInt(e[1]+e[2],16),n=parseInt(e[3]+e[4],16),r=parseInt(e[5]+e[6],16),i=255;else if(e.length===9)t=parseInt(e[1]+e[2],16),n=parseInt(e[3]+e[4],16),r=parseInt(e[5]+e[6],16),i=parseInt(e[7]+e[8],16);else throw Error(`Invalid color`);return i=+(i/255).toFixed(3),{a:i,r:t,g:n,b:r}}function Lr(e){e={...e},e.s/=100,e.l/=100;let t=(1-Math.abs(2*e.l-1))*e.s,n=t*(1-Math.abs(e.h/60%2-1)),r=e.l-t/2,i=0,a=0,o=0;return 0<=e.h&&e.h<60?(i=t,a=n,o=0):60<=e.h&&e.h<120?(i=n,a=t,o=0):120<=e.h&&e.h<180?(i=0,a=t,o=n):180<=e.h&&e.h<240?(i=0,a=n,o=t):240<=e.h&&e.h<300?(i=n,a=0,o=t):300<=e.h&&e.h<360&&(i=t,a=0,o=n),i=Math.round((i+r)*255),a=Math.round((a+r)*255),o=Math.round((o+r)*255),{a:e.a,r:i,g:a,b:o}}function Rr(e){let t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=a-i,s=0,c=0,l=0;return s=o===0?0:a===t?(n-r)/o%6:a===n?(r-t)/o+2:(t-n)/o+4,s=Math.round(s*60),s<0&&(s+=360),l=(a+i)/2,c=o===0?0:o/(1-Math.abs(2*l-1)),c=+(c*100).toFixed(1),l=+(l*100).toFixed(1),{a:e.a,h:s,s:c,l}}function zr(e){return Fr(Lr(e))}function Br(e){return Rr(Ir(e))}function Vr(e,t){let n=Ir(t),r=Ir(e),i=n.a+r.a*(1-n.a);return Fr({r:Math.round((n.r*n.a+r.r*r.a*(1-n.a))/i),g:Math.round((n.g*n.a+r.g*r.a*(1-n.a))/i),b:Math.round((n.b*n.a+r.b*r.a*(1-n.a))/i),a:i})}function Hr(e){return Ir(typeof e==`number`?Er(e):e)}function Ur(e,t,n=0){if(!(kr(e)&&kr(t)))return!1;let r=Ir(e),i=Ir(t);return r.a===i.a?Math.sqrt(((r.r-i.r)/255)**2+((r.g-i.g)/255)**2+((r.b-i.b)/255)**2)<=n:!1}function Wr(e,t){if(e.startsWith(`light-dark`)){let n=e.match(wr);if(!n)throw Error(`Invalid light-dark color: ${e}`);return`light-dark(${Wr(n[1],t)}, ${Wr(n[2],t)})`}return t===1?Or(e).slice(0,7):Fr({...Ir(e),a:t})}function Gr(e,t){let n=Br(e);return t===1?`#fff`:(n.l=t*(100-n.l)+n.l,zr(n))}function Kr(e,t){let n=Br(e);return t===1?`#000`:(n.s=Math.min(100,t*n.s+n.s),n.l-=t*n.l,zr(n))}function qr(e){return Nr(e)<.6?Gr(e,.9):Kr(e,.75)}let Jr=[`#4EA7F2`,`#EA6175`,`#43C5B1`,`#F4A261`,`#8481DD`,`#FFD86D`],Yr=[`#4EA7F2`,`#3188E6`,`#43C5B1`,`#00A78D`,`#EA6175`,`#CE4257`,`#F4A261`,`#F48935`,`#8481DD`,`#5752D1`,`#FFD86D`,`#FFBC2C`],Xr=[`#4EA7F2`,`#3188E6`,`#056BD9`,`#A76DBC`,`#7F4295`,`#6D2387`,`#EA6175`,`#CE4257`,`#982738`,`#43C5B1`,`#00A78D`,`#0E8270`,`#F4A261`,`#F48935`,`#BE5D10`,`#8481DD`,`#5752D1`,`#3A3580`,`#A4A8B6`,`#7E8290`,`#545B70`,`#FFD86D`,`#FFBC2C`,`#C08A16`],Zr=`#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`.split(`.`),Qr=[`#4EA7F2`,`#43C5B1`,`#EA6175`,`#F4A261`,`#8481DD`,`#FFD86D`,`#3188E6`,`#00A78D`,`#CE4257`,`#F48935`,`#5752D1`,`#FFBC2C`],$r=[`#4EA7F2`,`#A76DBC`,`#EA6175`,`#43C5B1`,`#F4A261`,`#8481DD`,`#A4A8B6`,`#FFD86D`,`#3188E6`,`#7F4295`,`#CE4257`,`#00A78D`,`#F48935`,`#5752D1`,`#7E8290`,`#FFBC2C`,`#056BD9`,`#6D2387`,`#982738`,`#0E8270`,`#BE5D10`,`#3A3580`,`#545B70`,`#C08A16`],ei=`#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`.split(`.`);function ti(e,t){return t[e%t.length]}function ni(e){return e<=6?Jr:e<=12?Yr:e<=24?Xr:Zr}function ri(e){return e<=6?Jr:e<=12?Qr:e<=24?$r:ei}var ii=class{preferredColors;currentColorIndex=0;palette;constructor(e,t=[]){this.preferredColors=t,this.palette=ni(e).filter(e=>!t.includes(e))}next(){return this.preferredColors?.[this.currentColorIndex]?this.preferredColors[this.currentColorIndex++]:ti(this.currentColorIndex++,this.palette)}},ai=class extends ii{constructor(e,t=[]){super(e,t),this.palette=ri(e).filter(e=>!t.includes(e))}},oi=class{availableColors;colors={};constructor(e=12){this.availableColors=new ai(e)}get(e){return this.colors[e]||(this.colors[e]=this.availableColors.next()),this.colors[e]}};let si={greys:[`#ffffff`,`#808080`,`#000000`],blues:[`#f7fbff`,`#6aaed6`,`#08306b`],reds:[`#fff5f0`,`#fb694a`,`#67000d`],greens:[`#f7fcf5`,`#73c476`,`#00441b`],oranges:[`#fff5eb`,`#fd8c3b`,`#7f2704`],purples:[`#fcfbfd`,`#9e9ac8`,`#3f007d`],viridis:[`#440154`,`#21918c`,`#fde725`],cividis:[`#00224e`,`#7d7c78`,`#fee838`],rainbow:[`#B41DB4`,`#FFFF00`,`#00FFFF`]},ci=Object.keys(si);function li(e){if(e.length<2)throw Error(`Color scale must have at least 2 points`);let t=[...e.sort((e,t)=>e.value-t.value)],n=[];for(let e=1;e<t.length;e++){let r=Hr(t[e-1].color).a,i=Hr(t[e].color).a,a=Dr(t[e-1].color),o=Dr(t[e].color);n.push({min:t[e-1].value,max:t[e].value,minColor:a,maxColor:o,minColorAlpha:r,maxColorAlpha:i,colorDiff:ui(t[e-1].value,t[e].value,a,o)})}return e=>{if(e<n[0].min)return Er(n[0].minColor,n[0].minColorAlpha);for(let t of n)if(e>=t.min&&e<=t.max)return Er(di(e,t.min,t.minColor,t.colorDiff),t.maxColorAlpha);return Er(n[n.length-1].maxColor,n[n.length-1].maxColorAlpha)}}function ui(e,t,n,r){let i=t-e,a=(n>>16)%256-(r>>16)%256,o=(n>>8)%256-(r>>8)%256,s=n%256-r%256;return[a/i,o/i,s/i]}function di(e,t,n,r){let[i,a,o]=r,s=Math.round((n>>16)%256-i*(e-t)),c=Math.round((n>>8)%256-a*(e-t)),l=Math.round(n%256-o*(e-t));return s<<16|c<<8|l}var O=class e{jsDate;constructor(e,t,n,r=0,i=0,a=0){this.jsDate=new Date(Date.UTC(e,t,n,r,i,a,0))}static fromTimestamp(t){let n=new Date(t);return new e(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds())}static now(){let t=new Date;return new e(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.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(){let e=new Date(this.jsDate.getTime()),t=e.getUTCDay()||7;e.setUTCDate(e.getUTCDate()+4-t);let n=new Date(Date.UTC(e.getUTCFullYear(),0,1));return Math.ceil(((e.getTime()-n.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)}};let fi=new O(1899,11,30),pi=1440*60*1e3,mi=2e3,hi=O.now().getFullYear(),gi=O.now().getMonth(),_i=O.fromTimestamp(0).getTime()-fi.getTime(),vi=/^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/,yi=/^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/,bi=Dt.join(``),xi=RegExp(`\/|-|${Dt.join(`|`)}`),Si=RegExp(`^(\\d{1,4})[\/${bi}\-](\\d{1,4})([\/${bi}\-](\\d{1,4}))?$`),Ci=/((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;function wi(e,t){switch(typeof e){case`number`:return e;case`string`:return Ti(e,t)?Di(e,t)?.value:!e||isNaN(Number(e))?void 0:Number(e);default:return}}function Ti(e,t){return Di(e,t)!==null}let Ei=new Map;function Di(e,t){return Ei.has(t)||Ei.set(t,new Map),Ei.get(t).has(e)||Ei.get(t).set(e,Oi(e,t)),Ei.get(t).get(e)}function Oi(e,t){e=e.trim();let n=null,r=e.match(Ci);if(r){if(n=Ii(r[0]),n===null)return null;e=e.replace(r[0],``).trim()}let i=null,a=ki(e,t);if(a){let t=a.dateString.match(xi)[0];if(i=ji(a,t),i===null)return null;e=e.replace(a.dateString,``).trim()}return e!==``||!(i||n)?null:i&&i.jsDate&&n&&n.jsDate?{value:i.value+n.value,format:i.format+` `+(n.format===`hhhh:mm:ss`?`hh:mm:ss`:n.format),jsDate:new O(i.jsDate.getFullYear()+n.jsDate.getFullYear()-1899,i.jsDate.getMonth()+n.jsDate.getMonth()-11,i.jsDate.getDate()+n.jsDate.getDate()-30,i.jsDate.getHours()+n.jsDate.getHours(),i.jsDate.getMinutes()+n.jsDate.getMinutes(),i.jsDate.getSeconds()+n.jsDate.getSeconds())}:i||n}function ki(e,t){let n=e.match(Si);if(!n)return null;let[,r,i,,a]=n;if(r.length>2&&a&&a.length>2)return null;if(r.length>2)return{year:r,month:i,day:a,dateString:e,type:`ymd`};let o=Ai(t);return a?a.length>2?o===`mdy`?{month:r,day:i,year:a,dateString:e,type:`mdy`}:{day:r,month:i,year:a,dateString:e,type:`dmy`}:o===`mdy`?{month:r,day:i,year:a,dateString:e,type:`mdy`}:o===`ymd`?{year:r,month:i,day:a,dateString:e,type:`ymd`}:o===`dmy`?{day:r,month:i,year:a,dateString:e,type:`dmy`}:null:i.length>2?{month:r,year:i,day:void 0,dateString:e,type:o}:o===`dmy`?{day:r,month:i,year:a,dateString:e,type:`dmy`}:{month:r,day:i,year:a,dateString:e,type:`mdy`}}function Ai(e){switch(e.dateFormat[0]){case`d`:return`dmy`;case`m`:return`mdy`;case`y`:return`ymd`}throw Error(`Invalid date format in locale`)}function ji(e,t){let{year:n,month:r,day:i}=e,a=Pi(r),o=Fi(i),s=Ni(n);if(s===null||a===null||o===null)return null;let c=r?.length===2&&a+1<10||i?.length===2&&o<10,l=n?.length!==2,u=new O(s,a,o);if(u.getMonth()!==a||u.getDate()!==o)return null;let d=u.getTime()-fi.getTime(),f=Mi(e,t,c,l);return{value:Math.round(d/pi),format:f,jsDate:u}}function Mi(e,t,n,r){let i=e.year?r?`yyyy`:`yy`:void 0,a=e.month?n?`mm`:`m`:void 0,o=e.day?n?`dd`:`d`:void 0;switch(e.type){case`mdy`:return[a,o,i].filter(C).join(t);case`ymd`:return[i,a,o].filter(C).join(t);case`dmy`:return[o,a,i].filter(C).join(t)}}function Ni(e){if(!e)return hi;let t=Number(e);switch(e.length){case 1:return mi+t;case 2:return mi+(mi+t>hi+10?-100:0)+t;case 3:case 4:return t}return null}function Pi(e){if(!e)return gi;let t=Number(e);return t>=1&&t<=12?t-1:null}function Fi(e){if(!e)return 1;let t=Number(e);return t>=0&&t<=31?t:null}function Ii(e){if(e=e.trim(),Ci.test(e)){let t=/AM/i.test(e),n=/PM/i.test(e),r=(t||n?e.substring(0,e.length-2).trim():e).split(/:/),i=r.length>=2,a=r.length===3,o=Number(r[0]),s=i?Number(r[1]):0,c=a?Number(r[2]):0,l=a?`hh:mm:ss`:`hh:mm`;if(t||n)l+=` a`;else if(!i)return null;o>=12&&t?o-=12:o<12&&n&&(o+=12),s+=Math.floor(c/60),c%=60,o+=Math.floor(s/60),s%=60,o>=24&&(l=`hhhh:mm:ss`);let u=new O(1899,11,30,o,s,c);return{value:o/24+s/1440+c/86400,format:l,jsDate:u}}return null}function Li(e){let t=Math.trunc(e),n=O.fromTimestamp(t*pi-_i),r=e-t;r=r<0?1+r:r;let i=Math.round(r*24),a=Math.round((r-i/24)*24*60),o=Math.round((r-i/24-a/24/60)*24*60*60);return n.setHours(i),n.setMinutes(a),n.setSeconds(o),n}function Ri(e){return Math.round(zi(e))}function zi(e){return(e.getTime()-fi.getTime())/pi}function Bi(e){return new O(e.getFullYear(),e.getMonth()+1,0).getDate()}function Vi(e){return Bi(e)===e.getDate()}function Hi(e,t,n){let r=e.getFullYear(),i=e.getMonth(),a=e.getDate(),o=new O(r,i+t,1);return n&&a===Bi(e)||a>Bi(o)?o.setDate(Bi(o)):o.setDate(a),o}function Ui(e){let t=Math.trunc(e);return t%4==0&&t%100!=0||t%400==0}function Wi(e,t,n){if(e===t)return 0;if(e>t){let n=t;t=e,e=n}let r=Li(e),i=Li(t),a=r.getDate(),o=i.getDate(),s=r.getMonth(),c=i.getMonth(),l=r.getFullYear(),u=i.getFullYear(),d=0,f=0;switch(n){case 0:a===31&&(a=30),a===30&&o===31&&(o=30),s===1&&a===(Ui(l)?29:28)&&(a=30,c===1&&o===(Ui(u)?29:28)&&(o=30)),d=l+(s*30+a)/360,f=u+(c*30+o)/360;break;case 1:let n=365,r=l===u,i=l+1===u;if(!r&&!i||!r&&s<c||!r&&s===c&&a<o){let e=0,t=0;for(let n=l;n<=u;n++)e++,t+=Ui(n)?366:365;n=t/e}else r?Ui(l)&&(n=366):(Ui(l)&&s<2&&(n=366),Ui(u)&&(c>1||c===1&&o===29)&&(n=366));d=e/n,f=t/n;break;case 2:d=e/360,f=t/360;break;case 3:d=e/365,f=t/365;break;case 4:a===31&&(a=30),o===31&&(o=30),d=l+(s*30+a)/360,f=u+(c*30+o)/360;break}return f-d}function Gi(e,t){let n=(t.getFullYear()-e.getFullYear())*12+t.getMonth()-e.getMonth();return e.getDate()>t.getDate()?n-1:n}function Ki(e,t){let n=e.getTime(),r=t.getTime();return Math.floor((r-n)/pi)}function qi(e,t){let n=t.getFullYear()-e.getFullYear(),r=e.getMonth(),i=t.getMonth(),a=e.getDate(),o=t.getDate();return i>r||i===r&&o>=a?n:n-1}function Ji(e,t){return Wi(e,t,1)<1}function Yi(e,t){return Math.trunc(e)===Math.trunc(t)}function Xi(e,t,n){return t>n?Xi(e,n,t):(e=Math.trunc(e),t=Math.trunc(t),n=Math.trunc(n),e>=t&&e<=n)}function Zi(e,t){return Math.trunc(e)<Math.trunc(t)}function Qi(e,t){return Math.trunc(e)<=Math.trunc(t)}function $i(e,t){return Math.trunc(e)>Math.trunc(t)}function ea(e,t){return Math.trunc(e)>=Math.trunc(t)}let ta=At(function(e){return e=qe(e),RegExp(`(?:^-?\\d+(?:${e}?\\d*(?:(E|e)(\\+|-)?\\d+)?)?|^-?${e}\\d+)(?!\\w|!)`)}),na=At(function(e){let t=qe(e.decimalSeparator),n=`(?:\\d+(?:${qe(e.thousandsSeparator||``)}\\d{3,})*(?:${t}\\d*)?)`,r=`(?:${t}\\d+)`,i=`(?:\\s*`+n+`|`+r+`)(?:(e|E)(?:\\+|-)?(?:[0-9]|[0-9][0-9]|[12][0-9]{2}|30[0-7]))?(?:\\s*%)?`,a=`^(?:(?:`+[`(?:\\s*-)?(?:\\s*[\\$€])?`+i,`(?:\\s*-)?`+i+`(?:\\s*[\\$€])?`,`(?:\\s*[\\$€])?(?:\\s*-)?`+i].join(`)|(?:`)+`))$`;return new RegExp(a,`i`)});function ra(e,t){return e?na(t).test(e.trim()):!1}let ia=At(function(e){return RegExp(`[\$€${qe(e.thousandsSeparator||``)}]`,`g`)});function aa(e,t){e=e.replace(ia(t),``),t.decimalSeparator!==`.`&&(e=e.replace(t.decimalSeparator,`.`));let n=Number(e);return isNaN(n)&&e.includes(`%`)&&(n=Number(e.split(`%`)[0]),!isNaN(n))?n/100:n}function oa(e,t,n){let r=[...e].sort((e,t)=>e-t),i=(r.length+(n?-1:1))*t;if(n||i--,Number.isInteger(i))return r[i];let a=Math.ceil(i),o=Math.floor(i);return r[a]*(i-o)+r[o]*(a-i)}let sa=e=>e,ca=()=>!1,la=sa,ua=ca;function da(e,...t){if(t.length===1&&typeof t[0]==`object`&&!(t[0]instanceof String)){let n=t[0];e=e.replace(/\%\(([^\)]+)\)s/g,(e,t)=>n[t])}else t.length>0&&(e=e.replace(/\%s/g,()=>t.shift()));return e}function fa(e,t=()=>!0){la=e,ua=t}function pa(){la===sa&&ua===ca&&(ua=()=>!0)}let k=function(e,...t){return ua()?da(la(e),...t):new ma(e,t)};var ma=class extends String{values;constructor(e,t){super(e),this.values=t}valueOf(){let e=super.valueOf();return ua()?da(la(e),...this.values):da(e,...this.values)}toString(){return this.valueOf()}};let A={NotAvailable:`#N/A`,InvalidReference:`#REF`,BadExpression:`#BAD_EXPR`,CircularDependency:`#CYCLE`,UnknownFunction:`#NAME?`,DivisionByZero:`#DIV/0!`,InvalidNumber:`#NUM!`,SpilledBlocked:`#SPILL!`,GenericError:`#ERROR`,NullError:`#NULL!`},ha=new Set(Object.values(A));var j=class{message;value;constructor(e=k(`Error`),t=A.GenericError){this.message=e,this.value=t,this.message=e.toString()}},ga=class extends j{constructor(e=k(`Invalid expression`)){super(e,A.BadExpression)}},_a=class extends j{constructor(e=k(`Circular reference`)){super(e,A.CircularDependency)}},va=class extends j{constructor(e=k(`Invalid reference`)){super(e,A.InvalidReference)}},ya=class extends j{constructor(e=k(`Data not available`)){super(e,A.NotAvailable)}},ba=class extends j{constructor(e=k(`Unknown function`)){super(e,A.UnknownFunction)}},xa=class extends j{errorOriginPosition;constructor(e=k(`Spill range is not empty`),t){super(e,A.SpilledBlocked),this.errorOriginPosition=t}},Sa=class extends j{constructor(e=k(`Division by zero`)){super(e,A.DivisionByZero)}},Ca=class extends j{constructor(e=k(`Number too large`)){super(e,A.InvalidNumber)}};let wa=[`thin`,`medium`,`thick`,`dashed`,`dotted`];function Ta(e){return Array.isArray(e)&&Array.isArray(e[0])}let Ea=[`number`,`string`,`boolean`,`undefined`];function Da(e){if(e!==void 0)return Ta(e)?e[0][0]?.format:e.format}function M(e){return typeof e==`string`&&ha.has(e)}function Oa(e){return{value:A.NotAvailable,message:k(`Did not find value '%s' in [[FUNCTION_NAME]] evaluation.`,P(e))}}let ka=e=>k(`The function [[FUNCTION_NAME]] expects a number value, but '%s' is a string, and cannot be coerced to a number.`,e),Aa=(e,t,n)=>k(`The function [[FUNCTION_NAME]] expects a number value between %s and %s inclusive, but receives %s.`,e.toString(),t.toString(),n.toString()),ja=(e,t)=>k(`The function [[FUNCTION_NAME]] has an argument with value '%s'. It should be one of: %s.`,t,e.map(e=>`'${e}'`).join(`, `));function N(e,t){let n=Ba(e);switch(typeof n){case`number`:return n;case`boolean`:return+!!n;case`string`:if(ra(n,t)||n===``)return aa(n,t);let e=Di(n,t);if(e)return e.value;throw new j(ka(n));default:return 0}}function Ma(e,t){try{return N(e,t)}catch{return}}function Na(e,t){return L(e).map(e=>e.map(e=>{if(typeof e.value!=`number`){let n=``;throw typeof e==`object`?n=k(`Function [[FUNCTION_NAME]] expects number values for %s, but got an empty value.`,t):typeof e==`string`?n=k(`Function [[FUNCTION_NAME]] expects number values for %s, but got a string.`,t):typeof e==`boolean`&&(n=k(`Function [[FUNCTION_NAME]] expects number values for %s, but got a boolean.`,t)),new j(n)}return e.value}))}function Pa(e,t){let n=Ba(e);if(n===``)throw new j(ka(n));return N(n,t)}function Fa(e,t){return Math.trunc(N(e,t))}function Ia(e,t){return Math.trunc(Pa(e,t))}function P(e){let t=Ba(e);switch(typeof t){case`string`:return t;case`number`:return t.toString();case`boolean`:return t?`TRUE`:`FALSE`;default:return``}}let La=At(function(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``)}),Ra=e=>k(`The function [[FUNCTION_NAME]] expects a boolean value, but '%s' is a text, and cannot be coerced to a boolean.`,e);function F(e){let t=Ba(e);switch(typeof t){case`boolean`:return t;case`string`:if(t){let e=t.toUpperCase();if(e===`TRUE`)return!0;if(e===`FALSE`)return!1;throw new j(Ra(t))}else return!1;case`number`:return!!t;default:return!1}}function za(e){let t=Ba(e);if(t===``)throw new j(Ra(t));return F(t)}function I(e,t){return Li(N(Ba(e),t))}function Ba(e){if(typeof e==`object`&&e&&`value`in e){if(M(e.value))throw e;return e.value}if(M(e))throw new j(``,e);return e}function Va(e,t,n){for(let r of e)if(Ta(r)){let e=r.length,n=r[0].length;for(let i=0;i<n;i++)for(let n=0;n<e;n++)t(r[n][i])}else n(r)}function Ha(e,t){Va(e,e=>{if(M(e.value))throw e;t(e)},e=>{if(M(e?.value))throw e;t(e)})}function Ua(e,t,n){Va(e,e=>{if(typeof e?.value==`number`&&t(e),M(e?.value))throw e},e=>{t({value:Pa(e,n),format:e?.format})})}function Wa(e,t,n,r,i=`rowFirst`){let a=r;for(let r of e)if(Ta(r)){let e=r.length,n=r[0].length;if(i===`rowFirst`)for(let i=0;i<n;i++)for(let n=0;n<e;n++)a=t(a,r[n][i]);else for(let i=0;i<e;i++)for(let e=0;e<n;e++)a=t(a,r[i][e])}else a=n(a,r);return a}function Ga(e,t,n,r=`rowFirst`){return Wa(e,t,t,n,r)}function Ka(e,t,n,r){return Wa(e,(e,n)=>{let r=n?.value;if(typeof r==`number`)return t(e,r);if(M(r))throw n;return e},(e,n)=>t(e,Pa(n,r)),n)}function qa(e,t,n,r){return Wa(e,(e,n)=>{let i=n?.value;if(i!=null){if(typeof i==`number`)return t(e,i);if(typeof i==`boolean`)return t(e,N(i,r));if(M(i))throw n;return t(e,0)}return e},(e,n)=>t(e,N(n,r)),n)}function Ja(e,t,n){let r=Array(e);for(let i=0;i<e;i++){r[i]=Array(t);for(let e=0;e<t;e++)r[i][e]=n(i,e)}return r}function Ya(e,t){return e.length===0?[]:Ja(e.length,e[0].length,(n,r)=>t(e[n][r]))}function Xa(e,t){let n=e.length,r=e[0]?.length??0;for(let i=0;i<n;i++)for(let n=0;n<r;n++)t(e[i][n])}function Za(e){return e.length?Ja(e[0].length,e.length,(t,n)=>e[n][t]):[]}function Qa(e,t,n=void 0){let r=1,i=1,a=1/0,o=1/0,s;for(let e=0;e<t.length;e++){let c=t[e];if(Ta(c)&&(n===void 0||n[e])){let n=c.length,l=c[0].length;n!==1||l!==1?(s??=Array(t.length),n!==1&&l!==1?(s[e]=`matrix`,r=Math.max(r,n),i=Math.max(i,l),a=Math.min(a,n),o=Math.min(o,l)):n===1?l!==1&&(s[e]=`vertical`,i=Math.max(i,l),o=Math.min(o,l)):(s[e]=`horizontal`,r=Math.max(r,n),a=Math.min(a,n))):t[e]=c[0][0]}}if(r===1&&i===1)return e(...t);let c=(e,n)=>t.map((t,r)=>{switch(s?.[r]){case`matrix`:return t[e][n];case`horizontal`:return t[e][0];case`vertical`:return t[0][n];case void 0:return t}});return Ja(r,i,(t,n)=>{if(t>a-1||n>o-1)return new ya(k(`Array arguments to [[FUNCTION_NAME]] are of different size.`));let r=e(...c(t,n));return Ta(r)?r[0][0]:r})}function $a(e,t,n){for(let r of e)if(Ta(r)){let e=r.length,n=r[0].length;for(let i=0;i<n;i++)for(let n=0;n<e;n++)if(!t(r[n][i]??void 0))return}else if(!n(r))return}function eo(e,t){return $a(e,e=>{let n=e?.value;if(typeof n==`boolean`)return t(n);if(typeof n==`number`)return t(!!n);if(M(n))throw e;return!0},e=>e!==void 0&&e.value!==null?t(za(e)):!0)}function to(e,t){let n,r,i=e.substring(0,2);return i===`<=`||i===`>=`||i===`<>`?(n=i,r=e.substring(2)):(i=e.substring(0,1),i===`<`||i===`>`||i===`=`?(n=i,r=e.substring(1)):(n=`=`,r=e)),ra(r,t)||Ti(r,t)?r=N(r,t):(r===`TRUE`||r===`FALSE`)&&(r=F(r)),{operator:n,operand:r}}let no=At(function(e){if(e===`*`)return/.+/;let t=``,n=``;for(let r of e)r===`?`&&n!==`~`?t+=`.`:r===`*`&&n!==`~`?t+=`.*`:((r===`*`||r===`?`)&&(t=t.slice(0,-1)),[`^`,`.`,`[`,`]`,`$`,`(`,`)`,`*`,`+`,`?`,`|`,`{`,`}`,`\\`].includes(r)&&(t+=`\\`),t+=r),n=r;return RegExp(`^`+t+`$`,`i`)});function ro(e=``,t,n){let{operator:r,operand:i}=t;if(i===void 0||e===null||i===null)return!1;if(typeof i==`number`&&r===`=`)return typeof e==`string`&&(ra(e,n)||Ti(e,n))?N(e,n)===i:e===i;if(r===`<>`||r===`=`){let t;return t=typeof e==typeof i?e===``&&i===``?!0:typeof e==`string`&&typeof i==`string`?no(i).test(e):e===i:!1,r===`=`?t:!t}if(typeof e==typeof i)switch(r){case`<`:return e<i;case`>`:return e>i;case`<=`:return e<=i;case`>=`:return e>=i}return!1}function io(e,t,n,r=!1){let i=e.length;if(i%2==1)throw new j(k(`Function [[FUNCTION_NAME]] expects criteria_range and criterion to be in pairs.`));let a=L(e[0]),o=a.length,s=a[0].length,c=[];for(let t=0;t<i-1;t+=2){let i=L(e[t]);if(i.length!==o||i[0].length!==s)throw new j(k(`Function [[FUNCTION_NAME]] expects criteria_range to have the same dimension`));let a=to(P(e[t+1]),n);r&&typeof a.operand==`string`&&(a.operand+=`*`),c.push(a)}for(let r=0;r<o;r++)for(let a=0;a<s;a++){let o=!0;for(let t=0;t<i-1;t+=2){let i=L(e[t])[r][a].value,s=c[t/2];if(o=ro(i??void 0,s,n),!o)break}o&&t(r,a)}}function ao(e,t,n,r,i,a){if(t===void 0||t.value===null)return-1;if(M(t.value))throw t;let o=co(t.value),s=typeof o,c,l,u=0,d=i-1,f,p,m,h,g=r===`desc`?t=>co(a(e,i-t-1)):t=>co(a(e,t));for(;d-u>=0;){for(f=Math.floor((u+d)/2),p=f,m=g(p),h=typeof m;u<p&&s!==h;)p--,m=g(p),h=typeof m;if(h!==s||m==null){u=f+1;continue}n===`strict`&&m===o?(c=m,l=p):n===`nextSmaller`&&m<=o?(c==null||c<m||c===m&&l<p)&&(c=m,l=p):n===`nextGreater`&&m>=o&&(c===void 0||c>m||c===m&&l<p)&&(c=m,l=p),m>o||n===`strict`&&m===o?d=p-1:u=f+1}return l===void 0?-1:r===`desc`?i-l-1:l}function oo(e,t,n,r,i,a,o=!1){if(t===void 0||t.value===null)return-1;if(M(t.value))throw t;let s=co(t.value),c=o?(e,t)=>co(i(e,r-t-1)):(e,t)=>co(i(e,t)),l=n!==`wildcard`||typeof s!=`string`||!(s.includes(`*`)||s.includes(`?`));if(a&&l){let t=o?`reverseSearch`:`forwardSearch`,i=a[t].get(e);if(i===void 0){i=new Map;for(let t=0;t<r;t++){let n=c(e,t)??null;i.has(n)||i.set(n,t)}a[t].set(e,i)}if(i.has(s)){let e=i.get(s);return o?r-e-1:e}if(n===`strict`||n===`wildcard`)return-1}let u=so(e,s,n,r,c);return o&&u!==-1?r-u-1:u}function so(e,t,n,r,i){let a=n=>i(e,n)===t;if(n===`wildcard`&&typeof t==`string`&&(t.includes(`*`)||t.includes(`?`))){let n=no(t);a=t=>{let r=i(e,t);return typeof r==`string`?n.test(r):!1}}let o,s=-1;n===`nextSmaller`&&(a=n=>{let r=i(e,n);return(!o&&lo(t,r)>=0||lo(t,r)>=0&&lo(r,o)>0)&&(o=r,s=n),r===t}),n===`nextGreater`&&(a=n=>{let r=i(e,n);return(!o&&lo(t,r)<=0||lo(t,r)<=0&&lo(r,o)<0)&&(o=r,s=n),r===t});for(let e=0;e<r;e++)if(a(e))return e;return s}function co(e){return typeof e==`string`?La(e):e}function lo(e,t){let n=Ea.indexOf(typeof e)-Ea.indexOf(typeof t);return n===0&&(typeof e==`string`&&typeof t==`string`?n=e.localeCompare(t):typeof e==`number`&&typeof t==`number`?n=e-t:typeof e==`boolean`&&typeof t==`boolean`&&(n=Number(e)-Number(t))),n}function L(e){return e===void 0?[[]]:Ta(e)?e:[[e]]}function uo(e,t){return Ga(e,(e,n)=>(e.push(t(n)),e),[],`rowFirst`)}function fo(e){if(e===void 0)return!1;let{value:t}=e;return!(t===null||t===``)}let po=k(`[[FUNCTION_NAME]] has no valid input data.`);function mo(e){return k(`[[FUNCTION_NAME]] expects the provided values of %(argName)s to be a non-empty matrix.`,{argName:e})}let ho=[{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:`;`}],R=ho[0];function go(e){e=e.replace(/\s/g,` `);let t=new zt(e),n=[],r=[];for(n.push(r);!t.isOver();){if(t.current===`;`){r=[],n.push(r),t.shift();continue}let e=To(t)||_o(t)||yo(t)||bo(t)||So(t)||Co(t)||wo(t)||Do(t)||xo(t)||Oo(t);if(!e)throw Error(`Unknown token at `+t.remaining());r.push(e)}return n}function _o(e){let t;if(e.current===`"`?(e.shift(),t=`"`):e.currentStartsWith(`[$`)&&(e.advanceBy(2),t=`]`),!t)return null;let n=``;for(;e.current&&e.current!==t;)n+=e.shift();if(e.current===t)e.shift();else throw Error(`Unterminated string in format`);return{type:`STRING`,value:n}}let vo=new Set(`$+-/():!^&~{}<>= `);function yo(e){if(e.current===`\\`){e.shift();let t=e.shift();if(!t)throw Error(`Unexpected end of format string`);return{type:`CHAR`,value:t}}return vo.has(e.current)?{type:`CHAR`,value:e.shift()}:null}function bo(e){return e.current===`,`?(e.shift(),{type:`THOUSANDS_SEPARATOR`,value:`,`}):null}function xo(e){return e.current===`@`?(e.shift(),{type:`TEXT_PLACEHOLDER`,value:`@`}):null}function So(e){return e.current===`.`?(e.shift(),{type:`DECIMAL_POINT`,value:`.`}):null}function Co(e){return e.current===`%`?(e.shift(),{type:`PERCENT`,value:`%`}):null}function wo(e){return e.current===`e`?(e.shift(),{type:`SCIENTIFIC`,value:`e`}):null}function To(e){if(e.current===`0`||e.current===`#`){let t=e.current;return e.shift(),{type:`DIGIT`,value:t}}return null}let Eo=new Set(`dmqyhsa`);function Do(e){if(!Eo.has(e.current))return null;let t=e.current,n=``;for(;e.current===t;)n+=e.shift();return{type:`DATE_PART`,value:n}}function Oo(e){if(e.current!==`*`)return null;e.shift();let t=e.shift();if(!t)throw Error(`Unexpected end of format string`);return{type:`REPEATED_CHAR`,value:t}}let ko={};function Ao(e){let t=ko[e];return t===void 0&&(t=jo(e),ko[e]=t),t}function jo(e){let t=go(e);for(let e of t){let t=e.filter(e=>e.type===`REPEATED_CHAR`);for(let e of t.slice(1))e.type=`CHAR`}let n=Io(t[0])||Fo(t[0])||Lo(t[0]);if(!n)throw Error(`Invalid first format part of: `+e);if(t.length>1&&n.type===`text`)throw Error(`The first format in a multi-part format must be a number format: `+e);let r=Io(t[1])||Fo(t[1]);if(t[1]?.length&&!r)throw Error(`Invalid second format part of: `+e);let i=Io(t[2])||Fo(t[2]);if(t[2]?.length&&!i)throw Error(`Invalid third format part of: `+e);let a=Lo(t[3]);if(t[3]?.length&&!a)throw Error(`Invalid fourth format part of: `+e);return{positive:n,negative:r,zero:i,text:a}}function Mo(e){return e.every(e=>e.type===`DATE_PART`||e.type===`DECIMAL_POINT`||e.type===`THOUSANDS_SEPARATOR`||e.type===`STRING`||e.type===`CHAR`||e.type===`REPEATED_CHAR`)}function No(e){return e.every(e=>e.type===`DIGIT`||e.type===`DECIMAL_POINT`||e.type===`THOUSANDS_SEPARATOR`||e.type===`PERCENT`||e.type===`SCIENTIFIC`||e.type===`STRING`||e.type===`CHAR`||e.type===`REPEATED_CHAR`)}function Po(e){return e.every(e=>e.type===`STRING`||e.type===`TEXT_PLACEHOLDER`||e.type===`CHAR`||e.type===`REPEATED_CHAR`)}function Fo(e){if(!e||!No(e))return;let t=[],n,r=t,i=0,a=!1,o=0,s=e.findLastIndex(e=>e.type===`DIGIT`),c=!1,l=0;for(let u=0;u<e.length;u++){let d=e[u];switch(d.type){case`DIGIT`:r===t?r.push(d):l<20&&(r.push(d),l++);break;case`DECIMAL_POINT`:if(r===t)n=[],r=n;else throw Error(`Multiple decimal points in a number format`);break;case`SCIENTIFIC`:a=!0;break;case`REPEATED_CHAR`:case`CHAR`:case`STRING`:r.push(d);break;case`PERCENT`:i++,r.push(d);break;case`THOUSANDS_SEPARATOR`:u-1===s?(o+=1,s++,r.push(d)):e[u+1]?.type===`DIGIT`&&e[u-1]?.type===`DIGIT`?(r===t&&(c=!0),r.push(d)):r.push({type:`CHAR`,value:`,`});break}}return{type:`number`,integerPart:t,decimalPart:n,percentSymbols:i,scientific:a,thousandsSeparator:c,magnitude:o}}function Io(e){let t=e&&Mo(e)?{type:`date`,tokens:e}:void 0;if(!(!t||!e?.some(e=>e.type===`DATE_PART`))){if(t.tokens.length&&t.tokens.every(e=>e.type===`DATE_PART`&&e.value===`a`))throw Error(`Invalid date format`);return{type:`date`,tokens:Ro(t.tokens.map(e=>e.type===`THOUSANDS_SEPARATOR`||e.type===`DECIMAL_POINT`?{type:`CHAR`,value:e.value}:e))}}}function Lo(e){return e&&Po(e)?{type:`text`,tokens:e}:void 0}function Ro(e){let t=e.filter(e=>e.type===`DATE_PART`);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}function zo(e){return[Bo(e.positive),Bo(e.negative),Bo(e.zero),Bo(e.text)].filter(C).join(`;`)}function Bo(e){if(!e)return;let t=``,n=e.type===`number`?Vo(e):e.tokens;for(let e of n)switch(e.type){case`STRING`:t+=`[$${e.value}]`;break;case`CHAR`:t+=Ho(e.value)?`\\${e.value}`:e.value;break;case`REPEATED_CHAR`:t+=`*`+e.value;break;case`DATE_PART`:t+=e.value===`MM`?`mm`:e.value;break;default:t+=e.value}return t}function Vo(e){let t=[...e.integerPart];return e.decimalPart&&(t.push({type:`DECIMAL_POINT`,value:`.`}),t.push(...e.decimalPart)),e.scientific&&t.push({type:`SCIENTIFIC`,value:`e`}),t}function Ho(e){return!vo.has(e)}let Uo=`REPEATED_CHAR_PLACEHOLDER_`,Wo={0:k(`January`),1:k(`February`),2:k(`March`),3:k(`April`),4:k(`May`),5:k(`June`),6:k(`July`),7:k(`August`),8:k(`September`),9:k(`October`),10:k(`November`),11:k(`December`)},Go={0:k(`Sunday`),1:k(`Monday`),2:k(`Tuesday`),3:k(`Wednesday`),4:k(`Thursday`),5:k(`Friday`),6:k(`Saturday`)};function Ko(e,t,n,r=!1){return r?ys({value:e,format:t},n):z(e,{format:t,locale:n})}function z(e,{format:t,locale:n,formatWidth:r}){switch(typeof e==`boolean`&&(e=e?`TRUE`:`FALSE`),typeof e){case`string`:{if(e.includes(`\\"`)&&(e=e.replaceAll(/\\"/g,`"`)),!t)return e;let n=Ao(t),i=qo(e,n).format;return!i||i.type!==`text`?e:Jo(e,i,r)}case`number`:t||=us(e);let i=Ao(t),{format:a,isNegativeFormat:o}=qo(e,i);if(!a)return e.toString();if(a.type===`text`)return Jo(e.toString(),a,r);if(o&&(e=Math.abs(e)),a.type===`date`)return Yo(ss(e,a),r);let s=e<0,c=Yo(Xo(Math.abs(e),a,n),r);return s?`-`+c:c;case`object`:return``}}function qo(e,t){let n,r=!1;switch(typeof e){case`number`:e<0&&t.negative?(n=t.negative,r=!0):n=e===0&&t.zero?t.zero:t.positive;break;case`string`:let i=t.text||t.positive;i.type===`text`&&(n=i);break}return{format:n,isNegativeFormat:r}}function Jo(e,t,n){let r=``;for(let n of t.tokens)switch(n.type){case`TEXT_PLACEHOLDER`:r+=e;break;case`CHAR`:case`STRING`:r+=n.value;break;case`REPEATED_CHAR`:r+=Uo+n.value;break}return Yo(r,n)}function Yo(e,t){let n=e.indexOf(Uo);if(n===-1)return e;let r=e.slice(0,n),i=e.slice(n+26+1),a=e[n+26];function o(){if(!t)return{timesToRepeat:0,padding:``};let e=t.measureText(r+i),n=t.measureText(a),o=t.availableWidth-e;if(o<=0)return{timesToRepeat:0,padding:``};let s=Math.floor(o/n),c=o-s*n,l=t.measureText(` `);return{timesToRepeat:s,padding:` `.repeat(Math.floor(c/l))}}let{timesToRepeat:s,padding:c}=o();return r+a.repeat(s)+c+i}function Xo(e,t,n){if(!t.integerPart.length&&!t.decimalPart?.length)return``;if(e===1/0)return`∞`+(t.percentSymbols?`%`:``);let r=Math.floor(Math.log10(Math.abs(e)));r===-1/0&&(r=0),t.scientific&&(e/=10**r);let i=t.percentSymbols*2-t.magnitude*3;e*=10**i;let a=0;t.decimalPart!==void 0&&(a=t.decimalPart.filter(e=>e.type===`DIGIT`).length);let{integerDigits:o,decimalDigits:s}=es(Math.abs(e),a),c=!!t.decimalPart?.some(e=>e.type===`DIGIT`),l=Zo(o,t,t.thousandsSeparator?n.thousandsSeparator:void 0,c);if(t.decimalPart!==void 0&&(l+=n.decimalSeparator+Qo(s||``,t)),t.scientific){let e=Math.abs(r).toString().padStart(2,`0`);l+=`e`+(r>=0?`+`:`-`)+e}return l}function Zo(e,t,n,r){let i=t.integerPart;r&&!i.some(e=>e.type===`DIGIT`)&&(i=[...i,{type:`DIGIT`,value:`#`}]),e===`0`&&(e=``);let a=``,o=i.findIndex(e=>e.type===`DIGIT`),s=e.length-1;function c(t,r){if(r===`0`&&(t||=`0`),!t)return;let i=e.length-1-s;a=n&&i>0&&i%3==0?t+n+a:t+a}for(let t=i.length-1;t>=0;t--){let n=i[t];switch(n.type){case`DIGIT`:let r=e[s];if(c(r,n.value),s--,o===t)for(;s>=0;)c(e[s],`0`),s--;break;case`THOUSANDS_SEPARATOR`:break;case`REPEATED_CHAR`:a=Uo+n.value+a;break;default:a=n.value+a;break}}return a}function Qo(e,t){if(!t.decimalPart)return``;let n=``,r=0;for(let i of t.decimalPart)switch(i.type){case`DIGIT`:let t=i.value===`#`?e[r]||``:e[r]||`0`;n+=t,r++;break;case`THOUSANDS_SEPARATOR`:break;case`REPEATED_CHAR`:n+=Uo+i.value;break;default:n+=i.value;break}return n}let $o=[];function es(e,t=20){let n=e.toString();if(n.includes(`e`))return is(e,t);if(Number.isInteger(e))return{integerDigits:n,decimalDigits:void 0};let r=n.indexOf(`.`),i=n.substring(0,r),a=n.substring(r+1);if(t===0)return Number(a[0])>=5&&(i=(Number(i)+1).toString()),{integerDigits:i,decimalDigits:void 0};if(a.length>t){let{integerDigits:e,decimalDigits:n}=rs(a,t);a=n,e!==`0`&&(i=(Number(i)+Number(e)).toString())}return{integerDigits:i,decimalDigits:ts(a||``)}}function ts(e){let t=e.length-1;for(;t>=0&&e[t]===`0`;)t--;return e.slice(0,t+1)||void 0}let ns=/^0+/;function rs(e,t){let n=`0`,r=e,i=e.slice(0,t);if(Number(e[t])<5)return{integerDigits:n,decimalDigits:i};let a=i.match(ns)?.[0]||``,o=(Number(i)+1).toString(),s=i.slice(a.length),c=o.length>s.length;return c&&!a?(n=`1`,r=void 0):r=c?a.slice(0,-1)+o:a+o,{integerDigits:n,decimalDigits:r}}function is(e,t=20){let n=$o[t];n||(n=new Intl.NumberFormat(`en-US`,{maximumFractionDigits:t,useGrouping:!1}),$o[t]=n);let[r,i]=n.format(e).split(`.`);return{integerDigits:r,decimalDigits:i}}function as(e,t){let{integerDigits:n,decimalDigits:r}=es(e,20);return r?n+t+r:n}let os=At(function(e){if(!e)return!1;try{return Ao(e).positive.type===`date`}catch{return!1}});function ss(e,t){let n=Li(e);if(isNaN(n.getTime()))return e.toString();let r=t.tokens.some(e=>e.type===`DATE_PART`&&e.value===`a`),i=``;for(let e of t.tokens)switch(e.type){case`DATE_PART`:i+=cs(n,e.value,r);break;case`REPEATED_CHAR`:i+=Uo+e.value;break;default:i+=e.value;break}return i}function cs(e,t,n){switch(t){case`d`:return e.getDate();case`dd`:return e.getDate().toString().padStart(2,`0`);case`ddd`:return Go[e.getDay()].slice(0,3);case`dddd`:return Go[e.getDay()].toString();case`m`:return e.getMonth()+1;case`mm`:return String(e.getMonth()+1).padStart(2,`0`);case`mmm`:return Wo[e.getMonth()].slice(0,3);case`mmmm`:return Wo[e.getMonth()].toString();case`mmmmm`:return Wo[e.getMonth()].slice(0,1);case`qq`:return k(`Q%(quarter)s`,{quarter:e.getQuarter()}).toString();case`qqqq`:return k(`Quarter %(quarter)s`,{quarter:e.getQuarter()}).toString();case`yy`:let r=String(e.getFullYear()).replace(`-`,``).padStart(2,`0`);return r.slice(r.length-2);case`yyyy`:return String(e.getFullYear()).replace(`-`,``).padStart(4,`0`);case`hhhh`:return Math.floor((e.getTime()-fi.getTime())/(3600*1e3)).toString();case`hh`:let i=e.getHours();return n&&(i=i===0?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 Error(`invalid date format token: ${t}`)}}let ls=At(function(e){return RegExp(`[0-9]+${qe(e.decimalSeparator)}[0-9]`)});function us(e){let{integerDigits:t,decimalDigits:n}=es(e);if(!n)return`0`;let r=t.replace(`-`,``).length;if(r+2>11)return`0`;let i=11-r-1;return{decimalDigits:n}=es(e,Math.min(i,n.length)),n?`0.`+`0`.repeat(n.length):`0`}function ds(e,t){if(Ti(e,t))return Di(e,t).format}function fs(e){let t=e.includes(`.`)?`0.00`:`0`,n=e.match(/[\$€]/);if(n){let r=e.match(/[\d]/),i=`[$`+n.values().next().value+`]`;return r.index<n.index?`#,##`+t+i:i+`#,##`+t}if(e.includes(`%`))return t+`%`}function ps(e){let t=e.decimalPlaces??2,n=e.position??`before`,r=e.code??``,i=e.symbol??``,a=`#,##0`+(t?`.`+`0`.repeat(t):``),o=`${r} ${i}`.trim();return n===`after`&&r&&(o=` `+o),gs(o,n,a)}function ms(e){let t=e.decimalPlaces??2,n=e.position??`before`,r=e.code??``,i=e.symbol??``,a=`#,##0`+(t?`.`+`0`.repeat(t):``),o=`${r} ${i}`.trim();return n===`after`&&r&&(o=` `+o),[hs(o,n,` ${a} `),hs(o,n,`(${a})`),hs(o,n,` - `)].join(`;`)}function hs(e,t,n){let r=`[$${e}]`;return t===`before`?r+`* `+n:n+`* `+r}function gs(e,t,n){let r=`[$${e}]`;return t===`before`?r+n:n+r}function _s(e){let t=Ao(e);return zo({positive:vs(t.positive),negative:t.negative?vs(t.negative):void 0,zero:t.zero?vs(t.zero):void 0,text:t.text})}function vs(e){if(e.type!==`number`||!e.decimalPart)return e;let t=e.decimalPart.filter(e=>e.type!==`DIGIT`);return{...e,decimalPart:void 0,integerPart:[...e.integerPart,...t]}}function ys({value:e,format:t},n){let r=Ma(e,n);if(r===void 0)return``;let i=t;if(Math.abs(r)<1e3){let e=r%1!=0;i=!t&&e?Math.abs(r)<.01?`0.00e`:`0.##`:t}else i=bs({value:e,format:t},void 0,n);return z(e,{format:i,locale:n})}function bs(e,t,n){let r=0;try{r=Math.abs(N(e?.value,n))}catch{return``}let i=e?.format;if(t!==void 0)switch(t?.value){case`k`:return xs(i,1,`k`);case`m`:return xs(i,2,`m`);case`b`:return xs(i,3,`b`);default:throw new j(k(`The formatting unit should be 'k', 'm' or 'b'.`))}return r<1e5?xs(i,0,``):r<1e8?xs(i,1,`k`):r<1e11?xs(i,2,`m`):r<0x5af3107a4000?xs(i,3,`b`):`0.00e`}function xs(e,t,n){let r=Ao(e||`#,##0`);return zo({positive:Ss(r.positive,t,n),negative:r.negative?Ss(r.negative,t,n):void 0,zero:r.zero?Ss(r.zero,t,n):void 0,text:r.text})}function Ss(e,t,n){if(e.type!==`number`||e.scientific)return e;let r=vs(e),i={type:`STRING`,value:n},a=[...r.integerPart],o=a.findLastIndex(e=>e.type===`DIGIT`);if(o===-1)return e;for(;a[o+1]?.type===`THOUSANDS_SEPARATOR`;)a=jt(a,[o+1]);let s=a[o+1];a=s?.type===`STRING`&&[`m`,`k`,`b`].includes(s.value)?Nt(a,i,o+1):Mt(a,[i],o+1),t>0&&(a=Mt(a,Array(t).fill({type:`THOUSANDS_SEPARATOR`,value:`,`}),o+1));let c=r.percentSymbols-a.filter(e=>e.type===`PERCENT`).length;return a.push(...Array(c).fill({type:`PERCENT`,value:`%`})),{...r,integerPart:a,magnitude:t}}function Cs(e,t){let n=Ao(e);return zo(Ao(zo({positive:ws(n.positive,t),negative:n.negative?ws(n.negative,t):void 0,zero:n.zero?ws(n.zero,t):void 0,text:n.text})))}function ws(e,t){return e.type===`number`?t>0?Es(e,t):Ts(e,Math.abs(t)):e}function Ts(e,t){let n=e.decimalPart;if(!n)return e;let r=[],i=0;for(let e=n.length-1;e>=0&&!(i>=Math.abs(t));e--)n[e].type===`DIGIT`&&(i++,r.push(e));return n=jt(n,r),n.some(e=>e.type===`DIGIT`)?{...e,decimalPart:n}:{...e,decimalPart:void 0,integerPart:[...e.integerPart,...n]}}function Es(e,t){let n=e.integerPart,r=e.decimalPart;if(!r){let e=n.findLastIndex(e=>e.type===`DIGIT`);r=n.slice(e+1),n=n.slice(0,e+1)}let i=S(0,t).map(()=>({type:`DIGIT`,value:`0`})),a=r.findLastIndex(e=>e.type===`DIGIT`);return r=a===-1?[...i,...r]:Mt(r,i,a+1),{...e,decimalPart:r,integerPart:n}}function Ds(e){let t=Ao(e);for(let e of[t.positive,t.negative,t.zero])if(e&&e.type===`date`&&e.tokens.some(e=>e.type===`DATE_PART`&&e.value.includes(`q`)))return!1;return!0}function Os(e){if(!e)return!1;try{return Ao(e).positive.type===`text`}catch{return!1}}function ks(e,t){if(!t)return!1;try{let{format:n}=qo(e,Ao(t));if(n?.type===`text`||n?.type===`date`)return n.tokens.some(e=>e.type===`REPEATED_CHAR`);if(n?.type===`number`)return n.integerPart.some(e=>e.type===`REPEATED_CHAR`)||(n.decimalPart?n.decimalPart.some(e=>e.type===`REPEATED_CHAR`):!1)}catch{}return!1}function As(e){try{return z(0,{format:e,locale:R}),!0}catch{return!1}}function js(e){return go(e).length}var B=class{content={};add(e,t){if(e in this.content)throw Error(`${e} is already present in this registry!`);return this.replace(e,t)}replace(e,t){return this.content[e]=t,this}get(e){let t=this.content[e];if(!t&&!(e in this.content))throw 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]}};function Ms(e){return`sheetId`in e}function Ns(e){return`dimension`in e&&`sheetId`in e&&`elements`in e}function Ps(e){return`target`in e&&`sheetId`in e}function Fs(e){return`ranges`in e}function Is(e){return`col`in e&&`row`in e&&`sheetId`in e}function Ls(e){return`sheetId`in e&&`zone`in e}let Rs=new Set([`RENAME_SHEET`,`DELETE_SHEET`,`CREATE_SHEET`,`DUPLICATE_SHEET`,`ADD_COLUMNS_ROWS`,`REMOVE_COLUMNS_ROWS`,`UNDO`,`REDO`,`ADD_MERGE`,`REMOVE_MERGE`,`UPDATE_LOCALE`,`ADD_PIVOT`,`UPDATE_PIVOT`,`INSERT_PIVOT`,`RENAME_PIVOT`,`REMOVE_PIVOT`,`DUPLICATE_PIVOT`]),zs=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`]),Bs=new Set([`MOVE_RANGES`]),Vs=new Set([`EVALUATE_CELLS`,`ADD_CONDITIONAL_FORMAT`,`REMOVE_CONDITIONAL_FORMAT`,`CHANGE_CONDITIONAL_FORMAT_PRIORITY`]),Hs=new Set([`AUTOFILL_CELL`,`SET_BORDER`,`SET_ZONE_BORDERS`,`SET_BORDERS_ON_TARGET`]),Us=new Set([`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`]),Ws=new Set([`START`,`ACTIVATE_SHEET`,`COPY`,`RESIZE_SHEETVIEW`,`SET_VIEWPORT_OFFSET`,`SET_ZOOM`,`EVALUATE_CELLS`,`EVALUATE_CHARTS`,`SET_FORMULA_VISIBILITY`,`UPDATE_FILTER`,`UPDATE_CHART`,`UPDATE_CAROUSEL_ACTIVE_ITEM`,`UPDATE_PIVOT`]),Gs=new Set(`LOCK_SHEET.UNLOCK_SHEET.MOVE_SHEET.DUPLICATE_SHEET.CREATE_SHEET.HIDE_SHEET.SHOW_SHEET.COPY.START.SCROLL_TO_CELL.ACTIVATE_SHEET.RESIZE_SHEETVIEW.SET_VIEWPORT_OFFSET.SET_FORMULA_VISIBILITY.SELECT_FIGURE.EVALUATE_CHARTS.EVALUATE_CELLS.REQUEST_UNDO.REQUEST_REDO.REPLACE_SEARCH.SET_ZOOM.UPDATE_CAROUSEL_ACTIVE_ITEM.DUPLICATE_PIVOT_IN_NEW_SHEET.UPDATE_FILTER.ACTIVATE_NEXT_SHEET.ACTIVATE_PREVIOUS_SHEET.SCROLL_TO_CELL.SHIFT_VIEWPORT_DOWN.SHIFT_VIEWPORT_UP`.split(`.`)),Ks=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.LOCK_SHEET.UNLOCK_SHEET.MOVE_RANGES.ADD_CONDITIONAL_FORMAT.REMOVE_CONDITIONAL_FORMAT.CHANGE_CONDITIONAL_FORMAT_PRIORITY.CREATE_FIGURE.DELETE_FIGURE.UPDATE_FIGURE.CREATE_CAROUSEL.UPDATE_CAROUSEL.SET_FORMATTING.CLEAR_FORMATTING.SET_BORDER.SET_ZONE_BORDERS.SET_BORDERS_ON_TARGET.CREATE_CHART.UPDATE_CHART.DELETE_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`.split(`.`));function qs(e){return Ks.has(e.type)}function Js(e){return Ws.has(e.type)}var Ys=class{reasons;constructor(e=[]){Array.isArray(e)||(e=[e]),e=[...new Set(e)],this.reasons=e.filter(e=>e!==`Success`)}static get Success(){return Xs}get isSuccessful(){return this.reasons.length===0}isCancelledBecause(e){return this.reasons.includes(e)}};let Xs=new Ys,Zs=function(e){return e.Success=`Success`,e.CancelledForUnknownReason=`CancelledForUnknownReason`,e.WillRemoveExistingMerge=`WillRemoveExistingMerge`,e.CannotMoveTableHeader=`CannotMoveTableHeader`,e.MergeIsDestructive=`MergeIsDestructive`,e.CellIsMerged=`CellIsMerged`,e.InvalidTarget=`InvalidTarget`,e.EmptyUndoStack=`EmptyUndoStack`,e.EmptyRedoStack=`EmptyRedoStack`,e.NotEnoughElements=`NotEnoughElements`,e.NotEnoughSheets=`NotEnoughSheets`,e.MissingSheetName=`MissingSheetName`,e.UnchangedSheetName=`UnchangedSheetName`,e.DuplicatedSheetName=`DuplicatedSheetName`,e.DuplicatedSheetId=`DuplicatedSheetId`,e.ForbiddenCharactersInSheetName=`ForbiddenCharactersInSheetName`,e.WrongSheetMove=`WrongSheetMove`,e.WrongSheetPosition=`WrongSheetPosition`,e.InvalidAnchorZone=`InvalidAnchorZone`,e.SelectionOutOfBound=`SelectionOutOfBound`,e.TargetOutOfSheet=`TargetOutOfSheet`,e.WrongCutSelection=`WrongCutSelection`,e.WrongPasteSelection=`WrongPasteSelection`,e.WrongPasteOption=`WrongPasteOption`,e.WrongFigurePasteOption=`WrongFigurePasteOption`,e.EmptyClipboard=`EmptyClipboard`,e.EmptyRange=`EmptyRange`,e.EmptyTarget=`EmptyTarget`,e.InvalidRange=`InvalidRange`,e.InvalidZones=`InvalidZones`,e.InvalidSheetId=`InvalidSheetId`,e.InvalidCellId=`InvalidCellId`,e.InvalidFigureId=`InvalidFigureId`,e.InputAlreadyFocused=`InputAlreadyFocused`,e.MaximumRangesReached=`MaximumRangesReached`,e.MinimumRangesReached=`MinimumRangesReached`,e.InvalidChartDefinition=`InvalidChartDefinition`,e.InvalidDataSet=`InvalidDataSet`,e.InvalidLabelRange=`InvalidLabelRange`,e.InvalidScorecardKeyValue=`InvalidScorecardKeyValue`,e.InvalidScorecardBaseline=`InvalidScorecardBaseline`,e.InvalidGaugeDataRange=`InvalidGaugeDataRange`,e.EmptyGaugeRangeMin=`EmptyGaugeRangeMin`,e.GaugeRangeMinNaN=`GaugeRangeMinNaN`,e.EmptyGaugeRangeMax=`EmptyGaugeRangeMax`,e.GaugeRangeMaxNaN=`GaugeRangeMaxNaN`,e.GaugeLowerInflectionPointNaN=`GaugeLowerInflectionPointNaN`,e.GaugeUpperInflectionPointNaN=`GaugeUpperInflectionPointNaN`,e.InvalidAutofillSelection=`InvalidAutofillSelection`,e.MinBiggerThanMax=`MinBiggerThanMax`,e.LowerBiggerThanUpper=`LowerBiggerThanUpper`,e.MidBiggerThanMax=`MidBiggerThanMax`,e.MinBiggerThanMid=`MinBiggerThanMid`,e.FirstArgMissing=`FirstArgMissing`,e.SecondArgMissing=`SecondArgMissing`,e.MinNaN=`MinNaN`,e.MidNaN=`MidNaN`,e.MaxNaN=`MaxNaN`,e.ValueUpperInflectionNaN=`ValueUpperInflectionNaN`,e.ValueLowerInflectionNaN=`ValueLowerInflectionNaN`,e.MinInvalidFormula=`MinInvalidFormula`,e.MidInvalidFormula=`MidInvalidFormula`,e.MaxInvalidFormula=`MaxInvalidFormula`,e.ValueUpperInvalidFormula=`ValueUpperInvalidFormula`,e.ValueLowerInvalidFormula=`ValueLowerInvalidFormula`,e.InvalidSortAnchor=`InvalidSortAnchor`,e.InvalidSortZone=`InvalidSortZone`,e.SortZoneWithArrayFormulas=`SortZoneWithArrayFormulas`,e.WaitingSessionConfirmation=`WaitingSessionConfirmation`,e.MergeOverlap=`MergeOverlap`,e.TooManyHiddenElements=`TooManyHiddenElements`,e.Readonly=`Readonly`,e.InvalidViewportSize=`InvalidViewportSize`,e.InvalidScrollingDirection=`InvalidScrollingDirection`,e.ViewportScrollLimitsReached=`ViewportScrollLimitsReached`,e.FigureDoesNotExist=`FigureDoesNotExist`,e.InvalidConditionalFormatId=`InvalidConditionalFormatId`,e.InvalidConditionalFormatType=`InvalidConditionalFormatType`,e.InvalidCellPopover=`InvalidCellPopover`,e.EmptySelectedRange=`EmptySelectedRange`,e.InvalidFreezeQuantity=`InvalidFreezeQuantity`,e.FrozenPaneOverlap=`FrozenPaneOverlap`,e.ValuesNotChanged=`ValuesNotChanged`,e.InvalidFilterZone=`InvalidFilterZone`,e.TableNotFound=`TableNotFound`,e.TableOverlap=`TableOverlap`,e.InvalidTableConfig=`InvalidTableConfig`,e.InvalidTableStyle=`InvalidTableStyle`,e.FilterNotFound=`FilterNotFound`,e.MergeInTable=`MergeInTable`,e.NonContinuousTargets=`NonContinuousTargets`,e.DuplicatedFigureId=`DuplicatedFigureId`,e.InvalidSelectionStep=`InvalidSelectionStep`,e.DuplicatedChartId=`DuplicatedChartId`,e.ChartDoesNotExist=`ChartDoesNotExist`,e.InvalidHeaderIndex=`InvalidHeaderIndex`,e.InvalidQuantity=`InvalidQuantity`,e.MoreThanOneColumnSelected=`MoreThanOneColumnSelected`,e.EmptySplitSeparator=`EmptySplitSeparator`,e.SplitWillOverwriteContent=`SplitWillOverwriteContent`,e.NoSplitSeparatorInSelection=`NoSplitSeparatorInSelection`,e.NoActiveSheet=`NoActiveSheet`,e.InvalidLocale=`InvalidLocale`,e.MoreThanOneRangeSelected=`MoreThanOneRangeSelected`,e.NoColumnsProvided=`NoColumnsProvided`,e.ColumnsNotIncludedInZone=`ColumnsNotIncludedInZone`,e.DuplicatesColumnsSelected=`DuplicatesColumnsSelected`,e.InvalidHeaderGroupStartEnd=`InvalidHeaderGroupStartEnd`,e.HeaderGroupAlreadyExists=`HeaderGroupAlreadyExists`,e.UnknownHeaderGroup=`UnknownHeaderGroup`,e.UnknownDataValidationRule=`UnknownDataValidationRule`,e.UnknownDataValidationCriterionType=`UnknownDataValidationCriterionType`,e.InvalidDataValidationCriterionValue=`InvalidDataValidationCriterionValue`,e.InvalidNumberOfCriterionValues=`InvalidNumberOfCriterionValues`,e.InvalidCopyPasteSelection=`InvalidCopyPasteSelection`,e.NoChanges=`NoChanges`,e.InvalidInputId=`InvalidInputId`,e.SheetIsHidden=`SheetIsHidden`,e.InvalidTableResize=`InvalidTableResize`,e.PivotIdNotFound=`PivotIdNotFound`,e.PivotIdTaken=`PivotIdTaken`,e.PivotInError=`PivotInError`,e.EmptyName=`EmptyName`,e.ValueCellIsInvalidFormula=`ValueCellIsInvalidFormula`,e.InvalidDefinition=`InvalidDefinition`,e.InvalidColor=`InvalidColor`,e.InvalidPivotDataSet=`InvalidPivotDataSet`,e.InvalidPivotCustomField=`InvalidPivotCustomField`,e.MissingFigureArguments=`MissingFigureArguments`,e.InvalidCarouselItem=`InvalidCarouselItem`,e.SheetLocked=`SheetLocked`,e.InvalidZoomLevel=`InvalidZoomLevel`,e.SubCommandOnly=`SubCommandOnly`,e}({});function Qs(e){return/^https?:\/\//i.test(e)?e:`https://${e}`}let $s=new B;function ec(e,t){return e=Qs(e),{url:e,label:t||e,isExternal:!0,isUrlEditable:!0}}$s.add(`sheet_URL`,{match:e=>lt(e),createLink:(e,t)=>({label:t,url:e,isExternal:!1,isUrlEditable:!1}),urlRepresentation(e,t){let n=dt(e);return t.tryGetSheetName(n)||k(`Invalid sheet`)},open(e,t){let n=dt(e);t.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:t.model.getters.getActiveSheetId(),sheetIdTo:n}).isCancelledBecause(`SheetIsHidden`)&&t.notifyUser({type:`warning`,sticky:!1,text:k(`Cannot open the link because the linked sheet is hidden.`)})},sequence:0});let tc={createLink:ec,match:e=>at(e),open:e=>window.open(e,`_blank`),urlRepresentation:e=>e,sequence:0};function nc(e){return $s.getAll().sort((e,t)=>e.sequence-t.sequence).find(t=>t.match(e))||tc}function rc(e,t){return nc(e.url).urlRepresentation(e.url,t)}function ic(e,t,n){nc(e.url).open(e.url,t,n)}function ac(e){if(typeof e==`string`){if(it(e)){let{label:t,url:n}=st(e);return nc(n).createLink(n,t)}else if(at(e))return ec(e)}}function oc(e,t,n){return cc({value:Os(t.format)&&e.parsedValue!==null?e.content:e.parsedValue,format:t.format,origin:n},t.locale)}function sc(e,t){if(e.startsWith(`=`))throw Error(`Cannot parse "${e}" because it's not a literal value. It's a formula`);if(e.startsWith(`'`))return e.slice(1);if(e===``)return null;if(e.includes(`
10
- `))return e;if(ra(e,R))return aa(e,R);let n=Di(e,t);return n?n.value:tt(e)?e.toUpperCase()===`TRUE`:e}function cc(e,t=R,n,r){let i=ac(e.value);if(!i)return gc(lc(e,t,n),e.origin??r);let a=sc(i.label,t);return gc({...lc({value:a,format:e.format||(typeof a==`number`?ds(i.label,t)||fs(i.label):void 0)},t,n),link:i},e.origin??r)}function lc(e,t,n){let{value:r,format:i,message:a,errorOriginPosition:o}=e;i=n?.format||i;let s=z(r,{format:i,locale:t});return M(r)?hc(r,a,o):r===null?fc(i):Os(i)?uc(P(r),i,s):typeof r==`number`?os(i||``)?pc(r,i,s):dc(r,i,s):typeof r==`boolean`?mc(r,i,s):uc(r,i,s)}function uc(e,t,n){return{value:e,format:t,formattedValue:n,type:`text`,isAutoSummable:!0,defaultAlign:`left`}}function dc(e,t,n){return{value:e||0,format:t,formattedValue:n,type:`number`,isAutoSummable:!0,defaultAlign:`right`}}let fc=At(function(e){return{value:null,format:e,formattedValue:``,type:`empty`,isAutoSummable:!0,defaultAlign:`left`}});function pc(e,t,n){return{value:e,format:t,formattedValue:n,type:`number`,isAutoSummable:!1,defaultAlign:`right`}}function mc(e,t,n){return{value:e,format:t,formattedValue:n,type:`boolean`,isAutoSummable:!1,defaultAlign:`center`}}function hc(e,t,n){return{value:e,formattedValue:e,message:t,type:`error`,isAutoSummable:!1,defaultAlign:`center`,errorOriginPosition:n}}function gc(e,t){return e.value===null||`origin`in e||(e.origin=t),e}function _c(e){let t=O.now();switch(e){case`today`:return Math.floor(zi(t));case`yesterday`:return t.setDate(t.getDate()-1),Math.floor(zi(t));case`tomorrow`:return t.setDate(t.getDate()+1),Math.floor(zi(t));case`lastWeek`:return t.setDate(t.getDate()-6),Math.floor(zi(t));case`lastMonth`:{let e=t.getMonth()===0?11:t.getMonth()-1,n=new O(t.getFullYear(),e,1);return t.getDate()>Bi(n)?t.setDate(1):(t.setDate(t.getDate()+1),t.setMonth(t.getMonth()-1)),Math.floor(zi(t))}case`lastYear`:return t.getMonth()===1&&t.getDate()===29?(t.setDate(28),t.setFullYear(t.getFullYear()-1)):(t.setDate(t.getDate()+1),t.setFullYear(t.getFullYear()-1)),Math.floor(zi(t))}}function vc(e,t){return`dateValue`in e&&e.dateValue!==`exactDate`?[_c(e.dateValue)]:e.values.map(e=>wi(e,t))}function yc(e,t){return e.map(e=>{if(e.startsWith(`=`))return e;let n=sc(e,t);return typeof n==`number`?z(n,{format:t.dateFormat,locale:t}):``})}let bc=new WeakMap,xc=new WeakMap;function Sc(e,t){bc.has(t)||(bc.set(t,new Map),xc.set(t,0));let n=bc.get(t),r=Tc(e);if(n.has(r)){let i=n.get(r);return t[i]=e,i}let i=xc.get(t)+1;return n.set(r,i),xc.set(t,i),t[i]=e,i}function Cc(e){let t={};for(let n in e){let r=nn(e[n].map(E));for(let e of r)t[yn(e)]=Number(n)}return t}function*wc(e,t){for(let n in t){let r=mn(n),i=t[n];for(let t=r.top;t<=r.bottom;t++)for(let n=r.left;n<=r.right;n++)yield[{sheetId:e,col:n,row:t},i]}}function Tc(e){if(e===null)return`null`;if(e===void 0)return`undefined`;if(typeof e!=`object`)return String(e);if(Array.isArray(e)){let t=e.length,n=`[`;for(let r=0;r<t;r++)r>0&&(n+=`,`),n+=Tc(e[r]);return n+`]`}let t=Object.keys(e).sort(),n=`{`;for(let r of t)e[r]!==void 0&&(n+=`"${r}":${Tc(e[r])},`);return n+=`}`,n}function Ec(e){return 20+120*Math.exp(-.035*(e-1))}let Dc=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,`i`),Oc=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,`i`),kc=new RegExp(/^\$?([A-Z]{1,3})+$/,`i`),Ac=new RegExp(/^\$?([0-9]{1,7})+$/,`i`),jc=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,`i`),Mc=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,`i`),Nc=RegExp(`^\\s*('.+'!|[^']+!)?(`+[Dc.source,`(\\$?[A-Z]{1,3})?\\$?[0-9]{1,7}\\s*:\\s*(\\$?[A-Z]{1,3})?\\$?[0-9]{1,7}\\s*`,`\\$?[A-Z]{1,3}(\\$?[0-9]{1,7})?\\s*:\\s*\\$?[A-Z]{1,3}(\\$?[0-9]{1,7})?\\s*`].join(`|`)+`)$`,`i`);function Pc(e){return jc.test(e)}function Fc(e){return Mc.test(e)}function Ic(e){return kc.test(e)}function Lc(e){return Ac.test(e)}function Rc(e){return Oc.test(e)}function zc(e){if(!e.includes(`!`))return{xc:e};let t=e.split(`!`),n=t.pop();return{sheetName:Ye(t.join(`!`))||void 0,xc:n}}function Bc(e,t){return e===void 0?t:`${Ze(e)}!${t}`}function Vc(e){if(e.type!==`REFERENCE`)return e;let{xc:t,sheetName:n}=zc(e.value),[r,i]=t.split(`:`),a=Hc(r),o=i?`:${Hc(i)}`:``;return{...e,value:Bc(n,a+o)}}function Hc(e){switch(Gc(e)){case`none`:e=Uc(e,`colrow`);break;case`colrow`:e=Uc(e,`row`);break;case`row`:e=Uc(e,`col`);break;case`col`:e=Uc(e,`none`);break}return e}function Uc(e,t){let n;({sheetName:n,xc:e}=zc(e)),n=n?Ze(n)+`!`:``,e=e.replace(/\$/g,``);let r=e.indexOf(`:`);return r>=0?`${n}${Wc(e.slice(0,r),t)}:${Wc(e.slice(r+1),t)}`:n+Wc(e,t)}function Wc(e,t){let n=e.search(/[0-9]/),r=n!==0,i=n>=0;switch(t){case`col`:return r?`$`+e:e;case`row`:return i?e.slice(0,n)+`$`+e.slice(n):e;case`colrow`:return!i||!r?`$`+e:`$`+e.slice(0,n)+`$`+e.slice(n);case`none`:return e}}function Gc(e){return Jc(e)?`colrow`:Kc(e)?`col`:qc(e)?`row`:`none`}function Kc(e){return e.startsWith(`$`)}function qc(e){return e.includes(`$`,1)}function Jc(e){return e.startsWith(`$`)&&e.length>1&&e.slice(1).includes(`$`)}function Yc(e,t){let n=e.zone,r=Jn(n,t(e.sheetId)),i=e.parts;return e.parts.length===1&&Gn(r)>1?i=[e.parts[0],e.parts[0]]:e.parts.length===2&&Gn(r)===1&&(i=[e.parts[0]]),{unboundedZone:n,zone:r,parts:i,prefixSheet:e.prefixSheet,invalidSheetName:e.invalidSheetName,sheetId:e.sheetId}}function Xc(e,t){let n=e.xc,{xc:r,sheetName:i}=zc(n),a=pn(r);return Yc({zone:a,parts:il(r,a),sheetId:e.sheetId,prefixSheet:!!i,invalidSheetName:e.invalidSheetName},t)}function Zc(e){let t={left:-1,top:-1,right:-1,bottom:-1};return{sheetId:``,zone:t,unboundedZone:t,parts:[],invalidXc:e,prefixSheet:!1}}function Qc(e){return Wn(e.unboundedZone)}function $c(e){return Un(e.unboundedZone)}function el(e,t,n,r={useBoundedReference:!1,useFixedReference:!1}){if(e.invalidXc)return e.invalidXc;if(e.zone.bottom-e.zone.top<0||e.zone.right-e.zone.left<0||e.zone.left<0||e.zone.top<0)return A.InvalidReference;let i=e.sheetId!==t||e.invalidSheetName||e.prefixSheet,a=``;if(i&&(a=e.invalidSheetName?Ze(e.invalidSheetName):Ze(n(e.sheetId))),i&&!a)return A.InvalidReference;let o=hl(e,0,r);return e.parts&&e.parts.length===2&&(e.zone.top!==e.zone.bottom||e.zone.left!==e.zone.right||e.parts[0].rowFixed||e.parts[0].colFixed||e.parts[1].rowFixed||e.parts[1].colFixed)&&(o+=`:`,o+=hl(e,1,r)),`${i?a+`!`:``}${o}`}function tl(e,t,n){let r=n.sheetId===e?t:n.sheetId;return{...n,sheetId:r}}function nl(e,t,n){if(!n)return;let r=e.getRangeFromSheetXC(t,n);return r.invalidSheetName||r.invalidXc?void 0:r}function rl(e){let t=[];for(let n of e)for(let e of Fn(n.zone))t.push({...e,sheetId:n.sheetId});return t}function il(e,t){let n=e.split(`:`).map(e=>{let t=Fc(e);return{colFixed:t?!1:e.startsWith(`$`),rowFixed:t?e.startsWith(`$`):e.includes(`$`,1)}}),r=t.bottom===void 0,i=t.right===void 0;return r&&(n[0].rowFixed=n[0].rowFixed||n[1].rowFixed,n[1].rowFixed=n[0].rowFixed||n[1].rowFixed),i&&(n[0].colFixed=n[0].colFixed||n[1].colFixed,n[1].colFixed=n[0].colFixed||n[1].colFixed),n}function al(e){let t={left:e.col,top:e.row,right:e.col,bottom:e.row};return{sheetId:e.sheetId,zone:t}}function ol(e){if(vn(e.zone))return e;let t={...e.unboundedZone},n={...e.zone},r=e.parts;if(t.right!==void 0&&t.right<t.left){let e=t.right;t.right=t.left,t.left=e,n.right=n.left,n.left=e,r=[{colFixed:r[1]?.colFixed||!1,rowFixed:r[0]?.rowFixed||!1},{colFixed:r[0]?.colFixed||!1,rowFixed:r[1]?.rowFixed||!1}]}if(t.bottom!==void 0&&t.bottom<t.top){let e=t.bottom;t.bottom=t.top,t.top=e,n.bottom=n.top,n.top=e,r=[{colFixed:r[0]?.colFixed||!1,rowFixed:r[1]?.rowFixed||!1},{colFixed:r[1]?.colFixed||!1,rowFixed:r[0]?.rowFixed||!1}]}return{unboundedZone:t,zone:n,parts:r,invalidXc:e.invalidXc,prefixSheet:e.prefixSheet,invalidSheetName:e.invalidSheetName,sheetId:e.sheetId}}function sl(e){return cl.get(e.type)?.(e)}let cl=new class extends B{add(e,t){return super.add(e,t),this}get(e){return this.content[e]}};cl.add(`REMOVE_COLUMNS_ROWS`,e=>({applyChange:ll(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`ADD_COLUMNS_ROWS`,e=>({applyChange:ul(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`DELETE_SHEET`,e=>({applyChange:dl(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`RENAME_SHEET`,e=>({applyChange:fl(e),sheetId:e.sheetId,sheetName:{old:e.oldName,current:e.newName}})).add(`MOVE_RANGES`,e=>({applyChange:pl(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}}));function ll(e){let t=e.dimension===`COL`?`left`:`top`,n=e.dimension===`COL`?`right`:`bottom`,r=e.dimension===`COL`?`columns`:`rows`,i=[...e.elements];i.sort((e,t)=>t-e);let a=$e(i);return i=>{if(i.sheetId!==e.sheetId)return{changeType:`NONE`,range:i};let o=i,s=`NONE`;for(let e of a){let a=Rt(e),c=Lt(e);if(i.zone[t]<=a&&a<=i.zone[n]){let e=Math.min(i.zone[n],c)-a+1;s=`RESIZE`,o=ml(o,r,s,-e)}else if(i.zone[t]>=a&&i.zone[n]<=c)s=`REMOVE`,o=Zc(A.InvalidReference);else if(i.zone[t]<=c&&i.zone[n]>=c){let e=c-i.zone[t]+1;s=`RESIZE`,o=ml(o,r,s,-e),o=ml(o,r,`MOVE`,-(i.zone[t]-a))}else a<i.zone[t]&&(s=`MOVE`,o=ml(o,r,s,-(c-a+1)))}return{changeType:s,range:o}}}function ul(e){let t=e.dimension===`COL`?`left`:`top`,n=e.dimension===`COL`?`right`:`bottom`,r=e.dimension===`COL`?`columns`:`rows`;return i=>{if(i.sheetId!==e.sheetId)return{changeType:`NONE`,range:i};let a=i.unboundedZone[n]===void 0;if(a&&!i.unboundedZone.hasHeader)return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.position===`after`){if(i.zone[t]<=e.base&&(e.base<i.zone[n]||a))return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.base<i.zone[t])return{changeType:`MOVE`,range:ml(i,r,`MOVE`,e.quantity)}}else{if(i.zone[t]<e.base&&e.base<=i.zone[n])return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.base<=i.zone[t])return{changeType:`MOVE`,range:ml(i,r,`MOVE`,e.quantity)}}return{changeType:`NONE`,range:i}}}function dl(e){return t=>{if(t.sheetId!==e.sheetId&&t.invalidSheetName!==e.sheetName)return{changeType:`NONE`,range:t};let n=e.sheetName;return t={...Zc(A.InvalidReference),invalidSheetName:n},{changeType:`REMOVE`,range:t}}}function fl(e){return t=>{if(t.sheetId===e.sheetId)return{changeType:`CHANGE`,range:t};if(e.newName&&t.invalidSheetName===e.newName){let n=e.sheetId;return{changeType:`CHANGE`,range:{...t,sheetId:n,invalidSheetName:void 0}}}if(e.oldName&&t.invalidSheetName===e.oldName){let n=e.sheetId;return{changeType:`CHANGE`,range:{...t,sheetId:n,invalidSheetName:void 0}}}return{changeType:`NONE`,range:t}}}function pl(e){let t=e.target[0];return n=>{if(n.sheetId!==e.sheetId||!jn(n.zone,t))return{changeType:`NONE`,range:n};let r=e.targetSheetId,i=ml(n,`both`,`MOVE`,[e.col-t.left,e.row-t.top]),a=e.sheetId===r?i.prefixSheet:!0;return{changeType:`MOVE`,range:{...i,sheetId:r,prefixSheet:a}}}}function ml(e,t,n,r){return{...e,unboundedZone:Rn(e.unboundedZone,t,n,r),zone:Rn(e.zone,t,n,r)}}function hl(e,t,n={useBoundedReference:!1,useFixedReference:!1}){let r=e.parts[t]?.colFixed||n.useFixedReference?`$`:``,i=Kt(t===0?e.zone.left:e.zone.right),a=e.parts[t]?.rowFixed||n.useFixedReference?`$`:``,o=String(t===0?e.zone.top+1:e.zone.bottom+1),s=``;return s=Wn(e.unboundedZone)&&!n.useBoundedReference?t===0&&e.unboundedZone.hasHeader?r+i+a+o:r+i:Un(e.unboundedZone)&&!n.useBoundedReference?t===0&&e.unboundedZone.hasHeader?r+i+a+o:a+o:r+i+a+o,s}function gl(e,t){e=e.toLocaleLowerCase(),t=t.toLocaleLowerCase();let n=0,r=0,i=t.length,a=0;for(let o=0;o<i;o++)t[o]===e[a]?(a++,r+=100+r-o/200):r=0,n+=r;return a===e.length?n:0}function _l(e,t,n){let r=[];return t.forEach(t=>{let i=gl(e,n(t));i>0&&r.push({score:i,elem:t})}),r.sort((e,t)=>t.score-e.score),r.map(e=>e.elem)}function vl(e){let t=[];for(let n=0;n<e;n++)t.push({cells:{}});return t}function yl(e,t,n){return n.map(n=>n>=e?n+t:n)}function bl(e,t){return e=[...e].sort((e,t)=>t-e),t.map(t=>{for(let n of e)if(t>n)t--;else if(t===n)return;return t}).filter(C)}function xl(e,t=`Sheet`){let n=1,r=`${t}${n}`;for(;e.includes(r);)r=`${t}${n}`,n++;return r}function Sl(e,t){let n=1,r=k(`Copy of %s`,e),i=r.toString();for(;t.includes(i);)i=`${r} (${n})`,n++;return i}let Cl=At(function(e){return Ye(e.trim().toUpperCase())});function wl(e,t){return e===void 0||t===void 0?!1:Cl(e)===Cl(t)}function Tl(e){if(typeof e==`string`)return{};if(typeof e==`number`)return[];throw Error(`Cannot create new node`)}function El(e,t=1){return t*(e+4)-4}function Dl(e=100,t=100){return new OffscreenCanvas(e,t).getContext(`2d`)}function Ol(e,t,n,r){if(!t||!t.isFormula&&!t.content)return 23;let i=``;try{if(!t.isFormula){let e={format:t.format,locale:n};i=z(sc(t.content,n),e)}}catch{i=A.GenericError}return kl(e,i,t.style,r)}function kl(e,t,n,r){return jl(e,Vl(e,t,n,n?.wrapping===`wrap`?r-8:void 0),n).height+6}function Al(e,t=!1,n=!1){return`${n?`italic`:``} ${t?`bold`:``} ${e}px ${Te}`}function jl(e,t,n={},r=`pt`){if(!t.length)return{width:0,height:0};let i=Rl(n,r),a=t.map(t=>Il(e,t,i)),o=El(a[0].height,t.length),s=Math.max(...a.map(e=>e.width));if(!n.rotation)return{height:o,width:s};let c=Math.abs(Math.cos(n.rotation)),l=Math.abs(Math.sin(n.rotation));return{width:s*c+o*l,height:l*s+c*o}}function Ml(e,t,n={},r=`pt`){return Nl(e,t,Rl(n,r),n.rotation)}function Nl(e,t,n,r){let i=Il(e,t,n);if(!r)return i.width;let a=Math.abs(Math.cos(r)),o=Math.abs(Math.sin(r));return i.width*a+i.height*o}let Pl={};function Fl(e,t,n,r=`pt`){let i=Il(e,t,Rl(n,r));if(!n.rotation)return i;let a=Math.abs(Math.cos(n.rotation)),o=Math.abs(Math.sin(n.rotation));return{width:i.width*a+i.height*o,height:i.height*a+i.width*o}}function Il(e,t,n){if(Pl[n]||(Pl[n]={}),Pl[n][t]===void 0){e.save(),e.font=n;let r=e.measureText(t);e.restore();let i=r.width,a=r.fontBoundingBoxAscent+r.fontBoundingBoxDescent;Pl[n][t]={width:i,height:a}}return Pl[n][t]}function Ll(e){return Math.round(e*96/72)}function Rl(e,t=`pt`){return`${e.italic?`italic `:``}${e.bold?`bold`:`400`} ${(t===`pt`?zl(e):e.fontSize)??we}px ${Te}`}function zl(e){return Ll(e?.fontSize||we)}function Bl(e,t,n,r){if(Ml(e,t,r)<=n)return[t];let i=[],a=``;for(let o of t)Ml(e,a+o,r)>n?(i.push(a),a=o):a+=o;return i.push(a),i}function Vl(e,t,n,r){n||={},it(t)&&(t=st(t).label);let i=[],a=t.includes(`
10
+ `))return e;if(ra(e,R))return aa(e,R);let n=Di(e,t);return n?n.value:tt(e)?e.toUpperCase()===`TRUE`:e}function cc(e,t=R,n,r){let i=ac(e.value);if(!i)return gc(lc(e,t,n),e.origin??r);let a=sc(i.label,t);return gc({...lc({value:a,format:e.format||(typeof a==`number`?ds(i.label,t)||fs(i.label):void 0)},t,n),link:i},e.origin??r)}function lc(e,t,n){let{value:r,format:i,message:a,errorOriginPosition:o}=e;i=n?.format||i;let s=z(r,{format:i,locale:t});return M(r)?hc(r,a,o):r===null?fc(i):Os(i)?uc(P(r),i,s):typeof r==`number`?os(i||``)?pc(r,i,s):dc(r,i,s):typeof r==`boolean`?mc(r,i,s):uc(r,i,s)}function uc(e,t,n){return{value:e,format:t,formattedValue:n,type:`text`,isAutoSummable:!0,defaultAlign:`left`}}function dc(e,t,n){return{value:e||0,format:t,formattedValue:n,type:`number`,isAutoSummable:!0,defaultAlign:`right`}}let fc=At(function(e){return{value:null,format:e,formattedValue:``,type:`empty`,isAutoSummable:!0,defaultAlign:`left`}});function pc(e,t,n){return{value:e,format:t,formattedValue:n,type:`number`,isAutoSummable:!1,defaultAlign:`right`}}function mc(e,t,n){return{value:e,format:t,formattedValue:n,type:`boolean`,isAutoSummable:!1,defaultAlign:`center`}}function hc(e,t,n){return{value:e,formattedValue:e,message:t,type:`error`,isAutoSummable:!1,defaultAlign:`center`,errorOriginPosition:n}}function gc(e,t){return e.value===null||`origin`in e||(e.origin=t),e}function _c(e){let t=O.now();switch(e){case`today`:return Math.floor(zi(t));case`yesterday`:return t.setDate(t.getDate()-1),Math.floor(zi(t));case`tomorrow`:return t.setDate(t.getDate()+1),Math.floor(zi(t));case`lastWeek`:return t.setDate(t.getDate()-6),Math.floor(zi(t));case`lastMonth`:{let e=t.getMonth()===0?11:t.getMonth()-1,n=new O(t.getFullYear(),e,1);return t.getDate()>Bi(n)?t.setDate(1):(t.setDate(t.getDate()+1),t.setMonth(t.getMonth()-1)),Math.floor(zi(t))}case`lastYear`:return t.getMonth()===1&&t.getDate()===29?(t.setDate(28),t.setFullYear(t.getFullYear()-1)):(t.setDate(t.getDate()+1),t.setFullYear(t.getFullYear()-1)),Math.floor(zi(t))}}function vc(e,t){return`dateValue`in e&&e.dateValue!==`exactDate`?[_c(e.dateValue)]:e.values.map(e=>wi(e,t))}function yc(e,t){return e.map(e=>{if(e.startsWith(`=`))return e;let n=sc(e,t);return typeof n==`number`?z(n,{format:t.dateFormat,locale:t}):``})}let bc=new WeakMap,xc=new WeakMap;function Sc(e,t){bc.has(t)||(bc.set(t,new Map),xc.set(t,0));let n=bc.get(t),r=Tc(e);if(n.has(r)){let i=n.get(r);return t[i]=e,i}let i=xc.get(t)+1;return n.set(r,i),xc.set(t,i),t[i]=e,i}function Cc(e){let t={};for(let n in e){let r=nn(e[n].map(E));for(let e of r)t[yn(e)]=Number(n)}return t}function*wc(e,t){for(let n in t){let r=mn(n),i=t[n];for(let t=r.top;t<=r.bottom;t++)for(let n=r.left;n<=r.right;n++)yield[{sheetId:e,col:n,row:t},i]}}function Tc(e){if(e===null)return`null`;if(e===void 0)return`undefined`;if(typeof e!=`object`)return String(e);if(Array.isArray(e)){let t=e.length,n=`[`;for(let r=0;r<t;r++)r>0&&(n+=`,`),n+=Tc(e[r]);return n+`]`}let t=Object.keys(e).sort(),n=`{`;for(let r of t)e[r]!==void 0&&(n+=`"${r}":${Tc(e[r])},`);return n+=`}`,n}function Ec(e){return 20+120*Math.exp(-.035*(e-1))}let Dc=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,`i`),Oc=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,`i`),kc=new RegExp(/^\$?([A-Z]{1,3})+$/,`i`),Ac=new RegExp(/^\$?([0-9]{1,7})+$/,`i`),jc=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,`i`),Mc=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,`i`),Nc=RegExp(`^\\s*('.+'!|[^']+!)?(`+[Dc.source,`(\\$?[A-Z]{1,3})?\\$?[0-9]{1,7}\\s*:\\s*(\\$?[A-Z]{1,3})?\\$?[0-9]{1,7}\\s*`,`\\$?[A-Z]{1,3}(\\$?[0-9]{1,7})?\\s*:\\s*\\$?[A-Z]{1,3}(\\$?[0-9]{1,7})?\\s*`].join(`|`)+`)$`,`i`);function Pc(e){return jc.test(e)}function Fc(e){return Mc.test(e)}function Ic(e){return kc.test(e)}function Lc(e){return Ac.test(e)}function Rc(e){return Oc.test(e)}function zc(e){if(!e.includes(`!`))return{xc:e};let t=e.split(`!`),n=t.pop();return{sheetName:Ye(t.join(`!`))||void 0,xc:n}}function Bc(e,t){return e===void 0?t:`${Ze(e)}!${t}`}function Vc(e){if(e.type!==`REFERENCE`)return e;let{xc:t,sheetName:n}=zc(e.value),[r,i]=t.split(`:`),a=Hc(r),o=i?`:${Hc(i)}`:``;return{...e,value:Bc(n,a+o)}}function Hc(e){switch(Gc(e)){case`none`:e=Uc(e,`colrow`);break;case`colrow`:e=Uc(e,`row`);break;case`row`:e=Uc(e,`col`);break;case`col`:e=Uc(e,`none`);break}return e}function Uc(e,t){let n;({sheetName:n,xc:e}=zc(e)),n=n?Ze(n)+`!`:``,e=e.replace(/\$/g,``);let r=e.indexOf(`:`);return r>=0?`${n}${Wc(e.slice(0,r),t)}:${Wc(e.slice(r+1),t)}`:n+Wc(e,t)}function Wc(e,t){let n=e.search(/[0-9]/),r=n!==0,i=n>=0;switch(t){case`col`:return r?`$`+e:e;case`row`:return i?e.slice(0,n)+`$`+e.slice(n):e;case`colrow`:return!i||!r?`$`+e:`$`+e.slice(0,n)+`$`+e.slice(n);case`none`:return e}}function Gc(e){return Jc(e)?`colrow`:Kc(e)?`col`:qc(e)?`row`:`none`}function Kc(e){return e.startsWith(`$`)}function qc(e){return e.includes(`$`,1)}function Jc(e){return e.startsWith(`$`)&&e.length>1&&e.slice(1).includes(`$`)}function Yc(e,t){let n=e.zone,r=Jn(n,t(e.sheetId)),i=e.parts;return e.parts.length===1&&Gn(r)>1?i=[e.parts[0],e.parts[0]]:e.parts.length===2&&Gn(r)===1&&(i=[e.parts[0]]),{unboundedZone:n,zone:r,parts:i,prefixSheet:e.prefixSheet,invalidSheetName:e.invalidSheetName,sheetId:e.sheetId}}function Xc(e,t){let n=e.xc,{xc:r,sheetName:i}=zc(n),a=pn(r);return Yc({zone:a,parts:il(r,a),sheetId:e.sheetId,prefixSheet:!!i,invalidSheetName:e.invalidSheetName},t)}function Zc(e){let t={left:-1,top:-1,right:-1,bottom:-1};return{sheetId:``,zone:t,unboundedZone:t,parts:[],invalidXc:e,prefixSheet:!1}}function Qc(e){return Wn(e.unboundedZone)}function $c(e){return Un(e.unboundedZone)}function el(e,t,n,r={useBoundedReference:!1,useFixedReference:!1}){if(e.invalidXc)return e.invalidXc;if(e.zone.bottom-e.zone.top<0||e.zone.right-e.zone.left<0||e.zone.left<0||e.zone.top<0)return A.InvalidReference;let i=e.sheetId!==t||e.invalidSheetName||e.prefixSheet,a=``;if(i&&(a=e.invalidSheetName?Ze(e.invalidSheetName):Ze(n(e.sheetId))),i&&!a)return A.InvalidReference;let o=hl(e,0,r);return e.parts&&e.parts.length===2&&(e.zone.top!==e.zone.bottom||e.zone.left!==e.zone.right||e.parts[0].rowFixed||e.parts[0].colFixed||e.parts[1].rowFixed||e.parts[1].colFixed||r.doNotSimplifyRange)&&(o+=`:`,o+=hl(e,1,r)),`${i?a+`!`:``}${o}`}function tl(e,t,n){let r=n.sheetId===e?t:n.sheetId;return{...n,sheetId:r}}function nl(e,t,n){if(!n)return;let r=e.getRangeFromSheetXC(t,n);return r.invalidSheetName||r.invalidXc?void 0:r}function rl(e){let t=[];for(let n of e)for(let e of Fn(n.zone))t.push({...e,sheetId:n.sheetId});return t}function il(e,t){let n=e.split(`:`).map(e=>{let t=Fc(e);return{colFixed:t?!1:e.startsWith(`$`),rowFixed:t?e.startsWith(`$`):e.includes(`$`,1)}}),r=t.bottom===void 0,i=t.right===void 0;return r&&(n[0].rowFixed=n[0].rowFixed||n[1].rowFixed,n[1].rowFixed=n[0].rowFixed||n[1].rowFixed),i&&(n[0].colFixed=n[0].colFixed||n[1].colFixed,n[1].colFixed=n[0].colFixed||n[1].colFixed),n}function al(e){let t={left:e.col,top:e.row,right:e.col,bottom:e.row};return{sheetId:e.sheetId,zone:t}}function ol(e){if(vn(e.zone))return e;let t={...e.unboundedZone},n={...e.zone},r=e.parts;if(t.right!==void 0&&t.right<t.left){let e=t.right;t.right=t.left,t.left=e,n.right=n.left,n.left=e,r=[{colFixed:r[1]?.colFixed||!1,rowFixed:r[0]?.rowFixed||!1},{colFixed:r[0]?.colFixed||!1,rowFixed:r[1]?.rowFixed||!1}]}if(t.bottom!==void 0&&t.bottom<t.top){let e=t.bottom;t.bottom=t.top,t.top=e,n.bottom=n.top,n.top=e,r=[{colFixed:r[0]?.colFixed||!1,rowFixed:r[1]?.rowFixed||!1},{colFixed:r[1]?.colFixed||!1,rowFixed:r[0]?.rowFixed||!1}]}return{unboundedZone:t,zone:n,parts:r,invalidXc:e.invalidXc,prefixSheet:e.prefixSheet,invalidSheetName:e.invalidSheetName,sheetId:e.sheetId}}function sl(e){return cl.get(e.type)?.(e)}let cl=new class extends B{add(e,t){return super.add(e,t),this}get(e){return this.content[e]}};cl.add(`REMOVE_COLUMNS_ROWS`,e=>({applyChange:ll(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`ADD_COLUMNS_ROWS`,e=>({applyChange:ul(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`DELETE_SHEET`,e=>({applyChange:dl(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}})).add(`RENAME_SHEET`,e=>({applyChange:fl(e),sheetId:e.sheetId,sheetName:{old:e.oldName,current:e.newName}})).add(`MOVE_RANGES`,e=>({applyChange:pl(e),sheetId:e.sheetId,sheetName:{old:e.sheetName,current:e.sheetName}}));function ll(e){let t=e.dimension===`COL`?`left`:`top`,n=e.dimension===`COL`?`right`:`bottom`,r=e.dimension===`COL`?`columns`:`rows`,i=[...e.elements];i.sort((e,t)=>t-e);let a=$e(i);return i=>{if(i.sheetId!==e.sheetId)return{changeType:`NONE`,range:i};let o=i,s=`NONE`;for(let e of a){let a=Rt(e),c=Lt(e);if(i.zone[t]<=a&&a<=i.zone[n]){let e=Math.min(i.zone[n],c)-a+1;s=`RESIZE`,o=ml(o,r,s,-e)}else if(i.zone[t]>=a&&i.zone[n]<=c)s=`REMOVE`,o=Zc(A.InvalidReference);else if(i.zone[t]<=c&&i.zone[n]>=c){let e=c-i.zone[t]+1;s=`RESIZE`,o=ml(o,r,s,-e),o=ml(o,r,`MOVE`,-(i.zone[t]-a))}else a<i.zone[t]&&(s=`MOVE`,o=ml(o,r,s,-(c-a+1)))}return{changeType:s,range:o}}}function ul(e){let t=e.dimension===`COL`?`left`:`top`,n=e.dimension===`COL`?`right`:`bottom`,r=e.dimension===`COL`?`columns`:`rows`;return i=>{if(i.sheetId!==e.sheetId)return{changeType:`NONE`,range:i};let a=i.unboundedZone[n]===void 0;if(a&&!i.unboundedZone.hasHeader)return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.position===`after`){if(i.zone[t]<=e.base&&(e.base<i.zone[n]||a))return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.base<i.zone[t])return{changeType:`MOVE`,range:ml(i,r,`MOVE`,e.quantity)}}else{if(i.zone[t]<e.base&&e.base<=i.zone[n])return{changeType:`RESIZE`,range:ml(i,r,`RESIZE`,e.quantity)};if(e.base<=i.zone[t])return{changeType:`MOVE`,range:ml(i,r,`MOVE`,e.quantity)}}return{changeType:`NONE`,range:i}}}function dl(e){return t=>{if(t.sheetId!==e.sheetId&&t.invalidSheetName!==e.sheetName)return{changeType:`NONE`,range:t};let n=e.sheetName;return t={...Zc(A.InvalidReference),invalidSheetName:n},{changeType:`REMOVE`,range:t}}}function fl(e){return t=>{if(t.sheetId===e.sheetId)return{changeType:`CHANGE`,range:t};if(e.newName&&t.invalidSheetName===e.newName){let n=e.sheetId;return{changeType:`CHANGE`,range:{...t,sheetId:n,invalidSheetName:void 0}}}if(e.oldName&&t.invalidSheetName===e.oldName){let n=e.sheetId;return{changeType:`CHANGE`,range:{...t,sheetId:n,invalidSheetName:void 0}}}return{changeType:`NONE`,range:t}}}function pl(e){let t=e.target[0];return n=>{if(n.sheetId!==e.sheetId||!jn(n.zone,t))return{changeType:`NONE`,range:n};let r=e.targetSheetId,i=ml(n,`both`,`MOVE`,[e.col-t.left,e.row-t.top]),a=e.sheetId===r?i.prefixSheet:!0;return{changeType:`MOVE`,range:{...i,sheetId:r,prefixSheet:a}}}}function ml(e,t,n,r){return{...e,unboundedZone:Rn(e.unboundedZone,t,n,r),zone:Rn(e.zone,t,n,r)}}function hl(e,t,n={useBoundedReference:!1,useFixedReference:!1}){let r=e.parts[t]?.colFixed||n.useFixedReference?`$`:``,i=Kt(t===0?e.zone.left:e.zone.right),a=e.parts[t]?.rowFixed||n.useFixedReference?`$`:``,o=String(t===0?e.zone.top+1:e.zone.bottom+1),s=``;return s=Wn(e.unboundedZone)&&!n.useBoundedReference?t===0&&e.unboundedZone.hasHeader?r+i+a+o:r+i:Un(e.unboundedZone)&&!n.useBoundedReference?t===0&&e.unboundedZone.hasHeader?r+i+a+o:a+o:r+i+a+o,s}function gl(e,t){e=e.toLocaleLowerCase(),t=t.toLocaleLowerCase();let n=0,r=0,i=t.length,a=0;for(let o=0;o<i;o++)t[o]===e[a]?(a++,r+=100+r-o/200):r=0,n+=r;return a===e.length?n:0}function _l(e,t,n){let r=[];return t.forEach(t=>{let i=gl(e,n(t));i>0&&r.push({score:i,elem:t})}),r.sort((e,t)=>t.score-e.score),r.map(e=>e.elem)}function vl(e){let t=[];for(let n=0;n<e;n++)t.push({cells:{}});return t}function yl(e,t,n){return n.map(n=>n>=e?n+t:n)}function bl(e,t){return e=[...e].sort((e,t)=>t-e),t.map(t=>{for(let n of e)if(t>n)t--;else if(t===n)return;return t}).filter(C)}function xl(e,t=`Sheet`){let n=1,r=`${t}${n}`;for(;e.includes(r);)r=`${t}${n}`,n++;return r}function Sl(e,t){let n=1,r=k(`Copy of %s`,e),i=r.toString();for(;t.includes(i);)i=`${r} (${n})`,n++;return i}let Cl=At(function(e){return Ye(e.trim().toUpperCase())});function wl(e,t){return e===void 0||t===void 0?!1:Cl(e)===Cl(t)}function Tl(e){if(typeof e==`string`)return{};if(typeof e==`number`)return[];throw Error(`Cannot create new node`)}function El(e,t=1){return t*(e+4)-4}function Dl(e=100,t=100){return new OffscreenCanvas(e,t).getContext(`2d`)}function Ol(e,t,n,r){if(!t||!t.isFormula&&!t.content)return 23;let i=``;try{if(!t.isFormula){let e={format:t.format,locale:n};i=z(sc(t.content,n),e)}}catch{i=A.GenericError}return kl(e,i,t.style,r)}function kl(e,t,n,r){return jl(e,Vl(e,t,n,n?.wrapping===`wrap`?r-8:void 0),n).height+6}function Al(e,t=!1,n=!1){return`${n?`italic`:``} ${t?`bold`:``} ${e}px ${Te}`}function jl(e,t,n={},r=`pt`){if(!t.length)return{width:0,height:0};let i=Rl(n,r),a=t.map(t=>Il(e,t,i)),o=El(a[0].height,t.length),s=Math.max(...a.map(e=>e.width));if(!n.rotation)return{height:o,width:s};let c=Math.abs(Math.cos(n.rotation)),l=Math.abs(Math.sin(n.rotation));return{width:s*c+o*l,height:l*s+c*o}}function Ml(e,t,n={},r=`pt`){return Nl(e,t,Rl(n,r),n.rotation)}function Nl(e,t,n,r){let i=Il(e,t,n);if(!r)return i.width;let a=Math.abs(Math.cos(r)),o=Math.abs(Math.sin(r));return i.width*a+i.height*o}let Pl={};function Fl(e,t,n,r=`pt`){let i=Il(e,t,Rl(n,r));if(!n.rotation)return i;let a=Math.abs(Math.cos(n.rotation)),o=Math.abs(Math.sin(n.rotation));return{width:i.width*a+i.height*o,height:i.height*a+i.width*o}}function Il(e,t,n){if(Pl[n]||(Pl[n]={}),Pl[n][t]===void 0){e.save(),e.font=n;let r=e.measureText(t);e.restore();let i=r.width,a=r.fontBoundingBoxAscent+r.fontBoundingBoxDescent;Pl[n][t]={width:i,height:a}}return Pl[n][t]}function Ll(e){return Math.round(e*96/72)}function Rl(e,t=`pt`){return`${e.italic?`italic `:``}${e.bold?`bold`:`400`} ${(t===`pt`?zl(e):e.fontSize)??we}px ${Te}`}function zl(e){return Ll(e?.fontSize||we)}function Bl(e,t,n,r){if(Ml(e,t,r)<=n)return[t];let i=[],a=``;for(let o of t)Ml(e,a+o,r)>n?(i.push(a),a=o):a+=o;return i.push(a),i}function Vl(e,t,n,r){n||={},it(t)&&(t=st(t).label);let i=[],a=t.includes(`
11
11
  `)?t.split(`
12
12
  `):[t];for(let t of a){let a=t.includes(` `)?t.split(` `):[t];if(!r){i.push(t);continue}let o=``,s=r;for(let t of a){let a=Bl(e,t,r,n),c=a.pop(),l=Ml(e,c,n);if(a.length)o!==``&&(i.push(o),o=``,s=r),a.forEach(e=>{i.push(e)}),o=c,s=r-l;else{let t=o===``?c:` `+c,a=Ml(e,t,n);a<=s?(o+=t,s-=a):(i.push(o),o=c,s=r-l)}}o!==``&&i.push(o)}return i}function Hl(e,t,n,r=.25){let i=1;if(n(i)>e)return i;if(n(t)<e)return t;let a=(i+t)/2,o=n(a),s=0;for(;Math.abs(o-e)>r&&s<20;)o>=e?t=(i+t)/2:i=(i+t)/2,a=(i+t)/2,o=n(a),s++;return a}function Ul(e){return e?e.toLowerCase().trim():``}let Wl=/([0-9\.]*)px/;function Gl(e){return Number(e.match(Wl)?.[1])}function Kl(e,t,n){let r=Nl(e,t,e.font);if(r<=n)return t;let i=Nl(e,`…`,e.font);if(r<=i)return t;let a=t.length;for(;r>=n-i&&a-->0;)t=t.substring(0,a),r=Nl(e,t,e.font);return t+`…`}function ql(e,t,n,r=!1,i=!1,a=Gl(e.font)/10){if(e.fillText(t,n.x,n.y),!r&&!i)return;let o=e.measureText(t),s=o.width,c=o.actualBoundingBoxAscent+o.actualBoundingBoxDescent,l=o.fontBoundingBoxAscent+o.fontBoundingBoxDescent,{x:u,y:d}=n,f=d,p=d;switch(e.textAlign){case`center`:u-=s/2;break;case`right`:u-=s;break}switch(e.textBaseline){case`top`:p+=l-2*a,f+=l/2-a;break;case`middle`:p+=l/2-a;break;case`alphabetic`:p+=2*a,f-=3*a;break;case`bottom`:p=d,f-=c/2-a/2;break}r&&(e.lineWidth=a,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(u,p),e.lineTo(u+s,p),e.stroke()),i&&(e.lineWidth=a,e.strokeStyle=e.fillStyle,e.beginPath(),e.moveTo(u,f),e.lineTo(u+s,f),e.stroke())}function Jl(e,t,n,r,i=`pt`){if(Ml(e,n,r,i)<=t)return n;let a=Ml(e,`...`,r,i);if(a>=t)return``;let o=1,s=n.length,c;for(;o<=s;){let l=Math.floor((o+s)/2);c=Ml(e,n.slice(0,l),r,i),c+a>t?s=l-1:o=l+1}let l=n.slice(0,Math.max(0,o-1));return l?l+`...`:``}function Yl(e,t){if(!t.rotation||t.rotation%(Math.PI*2)==0)return e;let{x:n,y:r}=e,i=Math.cos(-t.rotation),a=Math.sin(-t.rotation),o=e.textWidth-8,s=e.textHeight,c=t.align===`center`,l=t.align===`left`==a<0,u=a*s,d=Math.abs(a*o),f=i*s;return t.verticalAlign===`top`?c?(r+=d/2,n-=u/2):l?n-=u:r+=d:!t.verticalAlign||t.verticalAlign===`bottom`?(r+=s-f,c?(r-=d/2,n-=u/2):l&&(n-=u,r-=d)):c?(n-=u/2,r-=s/2,l?r+=u:r-=u):l?(n-=u,r-=d/2):r+=d/2+f/4,{x:i*n-a*r,y:i*r+a*n}}var Xl=class{getCrypto(){if(typeof globalThis<`u`&&globalThis.crypto)return globalThis.crypto}smallUuid(){let e=this.getCrypto();return e?`10000000-1000`.replace(/[01]/g,t=>{let n=Number(t);return(n^e.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16)}):`xxxxxxxx-xxxx`.replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}uuidv4(){let e=this.getCrypto();return e?`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,t=>{let n=Number(t);return(n^e.getRandomValues(new Uint8Array(1))[0]&15>>n/4).toString(16)}):`xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)})}};let Zl=new B;function Ql(){return globalThis.Chart?!!globalThis.Chart.registry.plugins.get(`chartShowValuesPlugin`):!0}function $l(){if(!(!globalThis.Chart||Ql()))for(let e of Zl.getAll())e.register(globalThis.Chart)}function eu(){if(globalThis.Chart)for(let e of Zl.getAll())e.unregister(globalThis.Chart)}var tu=class extends yr{mutators=[`disableAnimationForChart`,`enableAnimationForChart`];animationPlayed={};disableAnimationForChart(e,t){return this.animationPlayed[e]=t,`noStateChange`}enableAnimationForChart(e){return this.animationPlayed[e]=void 0,`noStateChange`}};let nu={id:`background`,beforeDraw(e,t,n){let{ctx:r}=e;r.save(),r.globalCompositeOperation=`destination-over`,r.fillStyle=n.color||`#FFFFFF`,r.fillRect(0,0,e.width,e.height),r.restore()}};function ru(){if(!globalThis.Chart)throw Error(`Chart.js library is not loaded`);return class extends globalThis.Chart.BarController{static id=`calendar`;static defaults={...globalThis.Chart?.BarController.defaults,dataElementType:`bar`,animations:{numbers:{type:`number`,properties:[]}}};updateElements(e,t,n,r){super.updateElements(e,t,n,r);let i=this.chart.config.options?.plugins?.background?.color||`#FFFFFF`;for(let a=t;a<t+n;a++)r===`reset`&&this.updateElement(e[a],a,{options:{backgroundColor:i}},r)}}}let iu={id:`chartColorScalePlugin`,afterDatasetsDraw(e,t,n){if(!n.position||n.position===`none`||!n.colorScale.length)return;let r=e.ctx;r.save(),r.textAlign=`center`,r.textBaseline=`middle`,r.miterLimit=1;let i=(e.chartArea.bottom-e.chartArea.top)/2,a=n.position===`left`?20:r.canvas.width-70,o=e.chartArea.top,s=r.createLinearGradient(0,o+i,0,o),c=1/(n.colorScale.length-1);n.colorScale.forEach((e,t)=>{s.addColorStop(t*c,e)}),r.fillStyle=s,r.fillRect(a,o,10,i),r.fillStyle=n.fontColor??`black`,r.font=Al(12),r.textAlign=`left`;let l=Math.round(n.minValue*100)/100,u=Math.round(n.maxValue*100)/100;n.minValue===n.maxValue&&(--l,u+=1);let d=ys({value:u,format:void 0},n.locale),f=ys({value:l,format:void 0},n.locale);r.fillText(f,a+10+5,o+i-6),r.fillText(d,a+10+5,o+6),r.restore()}};function au(){if(!globalThis.Chart)throw Error(`Chart.js library is not loaded`);return class extends globalThis.Chart.BarController{static id=`funnel`;static defaults={...globalThis.Chart?.BarController.defaults,dataElementType:`funnel`,animation:{duration:e=>e.type===`data`?1e3*(e.raw[1]/Math.max(...e.dataset.data.map(e=>e[1]))):1e3}};updateElements(e,t,n,r){super.updateElements(e,t,n,r);for(let i=t;i<t+n;i++){let t=e[i];this.updateElement(t,i,{nextElement:e[i+1]},r)}}}}function ou(){if(!globalThis.Chart)throw Error(`Chart.js library is not loaded`);return class extends globalThis.Chart.BarElement{static id=`funnel`;draw(e){e.save();let{x:t,y:n,height:r,nextElement:i,base:a,options:o}=this.getProps([`x`,`y`,`width`,`height`,`nextElement`,`base`,`options`]),s=su(this),c=(s-(i?su(i):0))/2,l=Math.min(t,a),u=n-r/2;e.fillStyle=o.backgroundColor,e.beginPath(),e.moveTo(l,u),e.lineTo(l+s,u),e.lineTo(l+s-c,u+r),e.lineTo(l+c,u+r),e.closePath(),e.fill(),o.borderWidth&&(e.strokeStyle=o.borderColor,e.lineWidth=o.borderWidth,e.stroke()),e.restore()}inRange(e,t){let{x:n,y:r,height:i,nextElement:a,base:o}=this.getProps([`x`,`y`,`width`,`height`,`nextElement`,`base`,`options`]),s=su(this),c=a?su(a):0,l=Math.min(n,o),u=r-i/2;if(t<u||t>u+i)return!1;let d=(s-c)/2,f=l+d*(t-u)/i,p=l+s-d*(t-u)/i;return!(e<f||e>p)}}}function su(e){let{x:t,base:n}=e.getProps([`x`,`base`]);return Math.max(t,n)-Math.min(t,n)}let cu=function(e){if(!e.length)return{x:0,y:0};let{x:t,y:n,base:r,width:i,height:a}=e[0].element.getProps([`x`,`y`,`width`,`height`,`base`]),o=Math.min(t,r),s=n-a/2;return{x:o+i*2/3,y:s+a/2}},lu=`000000`,uu={arrows:`3Arrows`,smiley:`3Symbols`,dots:`3TrafficLights1`},du={styleSheet:`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,sst:`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,Relationships:`http://schemas.openxmlformats.org/package/2006/relationships`,Types:`http://schemas.openxmlformats.org/package/2006/content-types`,worksheet:`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,workbook:`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,drawing:`http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing`,table:`http://schemas.openxmlformats.org/spreadsheetml/2006/main`,revision:`http://schemas.microsoft.com/office/spreadsheetml/2014/revision`,revision3:`http://schemas.microsoft.com/office/spreadsheetml/2016/revision3`,markupCompatibility:`http://schemas.openxmlformats.org/markup-compatibility/2006`},fu=`http://schemas.openxmlformats.org/drawingml/2006/main`,pu=`http://schemas.openxmlformats.org/drawingml/2006/chart`,mu={workbook:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml`,macroEnabledWorkbook:`application/vnd.ms-excel.sheet.macroEnabled.main+xml`,templateWorkbook:`application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml`,macroEnabledTemplateWorkbook:`application/vnd.ms-excel.template.macroEnabled.main+xml`,excelAddInWorkbook:`application/vnd.ms-excel.addin.macroEnabled.main+xml`,sheet:`application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`,metadata:`application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml`,sharedStrings:`application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml`,styles:`application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml`,drawing:`application/vnd.openxmlformats-officedocument.drawing+xml`,chart:`application/vnd.openxmlformats-officedocument.drawingml.chart+xml`,themes:`application/vnd.openxmlformats-officedocument.theme+xml`,table:`application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml`,pivot:`application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml`,externalLink:`application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml`},hu={document:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument`,sheet:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet`,metadata:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata`,sharedStrings:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings`,styles:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles`,drawing:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing`,chart:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart`,theme:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme`,table:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/table`,hyperlink:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink`,image:`http://schemas.openxmlformats.org/officeDocument/2006/relationships/image`},gu=`http://schemas.openxmlformats.org/officeDocument/2006/relationships`,_u=.75,vu=.143,yu=8.43,bu=12.75,xu={FLOOR:[{type:`NUMBER`,value:1}],CEILING:[{type:`NUMBER`,value:1}],ROUND:[{type:`NUMBER`,value:0}],ROUNDUP:[{type:`NUMBER`,value:0}],ROUNDDOWN:[{type:`NUMBER`,value:0}],IFERROR:[{type:`NUMBER`,value:0}]},Su=`ACOT,ACOTH,AGGREGATE,ARABIC,BASE,BETA.DIST,BETA.INV,BINOM.DIST,BINOM.DIST.RANGE,BINOM.INV,BITAND,BITLSHIFT,BITOR,BITRSHIFT,BITXOR,BYCOL,BYROW,CEILING.MATH,CEILING.PRECISE,CHISQ.DIST,CHISQ.DIST.RT,CHISQ.INV,CHISQ.INV.RT,CHISQ.TEST,CHOOSECOLS,CHOOSEROWS,COMBINA,CONCAT,CONFIDENCE.NORM,CONFIDENCE.T,COT,COTH,COVARIANCE.P,COVARIANCE.S,CSC,CSCH,DAYS,DECIMAL,DROP,ERF.PRECISE,ERFC.PRECISE,EXPAND,EXPON.DIST,F.DIST,F.DIST.RT,F.INV,F.INV.RT,F.TEST,FIELDVALUE,FILTERXML,FLOOR.MATH,FLOOR.PRECISE,FORECAST.ETS,FORECAST.ETS.CONFINT,FORECAST.ETS.SEASONALITY,FORECAST.ETS.STAT,FORECAST.LINEAR,FORMULATEXT,GAMMA,GAMMA.DIST,GAMMA.INV,GAMMALN.PRECISE,GAUSS,HSTACK,HYPGEOM.DIST,IFNA,IFS,IMCOSH,IMCOT,IMCSC,IMCSCH,IMSEC,IMSECH,IMSINH,IMTAN,ISFORMULA,ISOMITTED,ISOWEEKNUM,LAMBDA,LET,LOGNORM.DIST,LOGNORM.INV,MAKEARRAY,MAP,MAXIFS,MINIFS,MODE.MULT,MODE.SNGL,MUNIT,NEGBINOM.DIST,NORM.DIST,NORM.INV,NORM.S.DIST,NORM.S.INV,NUMBERVALUE,PDURATION,PERCENTILE.EXC,PERCENTILE.INC,PERCENTRANK.EXC,PERCENTRANK.INC,PERMUTATIONA,PHI,POISSON.DIST,PQSOURCE,PYTHON_STR,PYTHON_TYPE,PYTHON_TYPENAME,QUARTILE.EXC,QUARTILE.INC,QUERYSTRING,RANDARRAY,RANK.AVG,RANK.EQ,REDUCE,RRI,SCAN,SEC,SECH,SEQUENCE,SHEET,SHEETS,SKEW.P,SORTBY,STDEV.P,STDEV.S,SWITCH,T.DIST,T.DIST.2T,T.DIST.RT,T.INV,T.INV.2T,T.TEST,TAKE,TEXTAFTER,TEXTBEFORE,TEXTJOIN,TEXTSPLIT,TOCOL,TOROW,UNICHAR,UNICODE,UNIQUE,VAR.P,VAR.S,VSTACK,WEBSERVICE,WEIBULL.DIST,WRAPCOLS,WRAPROWS,XLOOKUP,XOR,Z.TEST`.split(`,`),Cu=[`%`],wu=`+,-,*,/,:,=,<>,>=,>,<=,<,^,&,#`.split(`,`).concat(Cu);function Tu(e,t=R){e=Ot(e);let n=new zt(e),r=[],i=Tt.test(e)?Bu:Vu;for(;!n.isOver();){let e=Hu(n)||i(n)||Mu(n,t)||ju(n,t)||Au(n)||Ou(n)||Uu(n)||Nu(n)||Iu(n)||Eu(n)||Fu(n,t)||zu(n);e||={type:`UNKNOWN`,value:n.shift()},r.push(e)}return r}function Eu(e){return e.current===`?`?(e.shift(),{type:`DEBUGGER`,value:`?`}):null}let Du={"(":{type:`LEFT_PAREN`,value:`(`},")":{type:`RIGHT_PAREN`,value:`)`}};function Ou(e){return e.current===`(`||e.current===`)`?Du[e.shift()]:null}let ku={"{":{type:`LEFT_BRACE`,value:`{`},"}":{type:`RIGHT_BRACE`,value:`}`}};function Au(e){return e.current===`{`||e.current===`}`?ku[e.shift()]:null}function ju(e,t){return e.current===t.formulaArgSeparator?{type:`ARG_SEPARATOR`,value:e.shift()}:null}function Mu(e,t){let n=t.formulaArgSeparator===`;`?`\\`:`;`;return n&&e.current===n?(e.shift(),{type:`ARRAY_ROW_SEPARATOR`,value:n}):null}function Nu(e){for(let t of wu)if(e.currentStartsWith(t))return e.advanceBy(t.length),{type:`OPERATOR`,value:t};return null}let Pu=new Set(`0123456789`);function Fu(e,t){if(!Pu.has(e.current)&&e.current!==t.decimalSeparator)return null;let n=e.remaining().match(ta(t.decimalSeparator));return n?(e.advanceBy(n[0].length),{type:`NUMBER`,value:n[0]}):null}function Iu(e){if(e.current===`"`){let t=e.shift(),n=t;for(;e.current&&(e.current!==t||n[n.length-1]===`\\`);)n+=e.shift();return e.current===`"`&&(n+=e.shift()),{type:`STRING`,value:n}}return null}let Lu=/\p{L}|\p{N}|_|\.|!|\$/u,Ru=new Set(`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.!$`);function zu(e){let t=``;if(e.current===`'`){let n=e.shift();for(t+=n;e.current;)if(n=e.shift(),t+=n,n===`'`)if(e.current&&e.current===`'`)n=e.shift(),t+=n;else break;if(n!==`'`)return{type:`UNKNOWN`,value:t}}for(;e.current&&(Ru.has(e.current)||e.current.match(Lu));)t+=e.shift();if(t.length){let e=t;return Nc.test(e)?{type:`REFERENCE`,value:e}:{type:`SYMBOL`,value:e}}return null}function Bu(e){let t=``;for(;e.current===` `||e.current&&e.current.match(Tt);)t+=e.shift();return t?{type:`SPACE`,value:t}:null}function Vu(e){let t=``;for(;e.current===` `;)t+=e.shift();return t?{type:`SPACE`,value:t}:null}function Hu(e){let t=0;for(;e.current===`
13
13
  `;)t++,e.shift();return t?{type:`SPACE`,value:`
@@ -76,17 +76,17 @@ stores.inject(MyMetaStore, storeInstance);
76
76
  `),e+=i.value.textContent)}return e}};function UM(e,t){let n=(e.color?Or(e.color):``)===(t.style?.color?Or(t.style?.color):``),r=w(e.classes,[...t.classList]),i=t.textContent===e.value;return n&&r&&i}let WM=new DOMParser,GM=WM.parseFromString(`<br>`,`text/html`).body.firstChild,KM=WM.parseFromString(`<span><br></span>`,`text/html`).body.firstChild;function qM(e){if(e.childNodes.length>1)return!1;let t=e.firstChild?.cloneNode(!0);return t?t instanceof Element?(t.removeAttribute(`class`),t.removeAttribute(`style`),t.isEqualNode(GM)||t.isEqualNode(KM)||!1):!1:!0}var JM=class extends t.Component{static template=`o-spreadsheet-FunctionDescriptionProvider`;static props={functionDescription:Object,argsToFocus:Array,repeatingArgGroupIndex:{type:Number,optional:!0}};static components={Collapse:wM};state=(0,t.useState)({isCollapsed:!0});toggle(){this.state.isCollapsed=!this.state.isCollapsed}getContext(){return this.props}get formulaHeaderContent(){let{functionDescription:e,repeatingArgGroupIndex:t,argsToFocus:n}=this.props,r=this.env.model.getters.getLocale().formulaArgSeparator+` `,i=[{content:e.name+` ( `}];for(let a=0;a<e.args.length;a++){let o=e.args[a],s=o.repeating;if(a>0&&i.push({content:r}),s){let s=o.optional||(t??0)>0,c=e.args.slice(a,a+e.nbrArgRepeating).map(e=>e.name);t&&i.push({content:`... `+r}),s&&i.push({content:`[`});for(let e=0;e<c.length;e++){let o=c[e],s=a+e,l=n.includes(s);i.push({content:o+((t??0)+1),focused:l}),e<c.length-1&&i.push({content:r})}if(s&&i.push({content:`]`}),e.nbrArgRepeating<=1){i.push({content:r+`[`});for(let e=0;e<c.length;e++){let n=c[e];i.push({content:n+((t??0)+2)}),e<c.length-1&&i.push({content:r})}i.push({content:`]`})}i.push({content:r+`... `}),a+=e.nbrArgRepeating-1}else{let e=o.optional||o.default,t=n.includes(a);e&&i.push({content:`[`}),i.push({content:o.name,focused:t}),e&&i.push({content:`]`})}}return i.push({content:` )`}),i}},YM=class extends t.Component{static template=`o-spreadsheet-SpeechBubble`;static props={content:String,anchorRect:Object};static components={};spreadsheetRect=Dv();bubbleRef=(0,t.useRef)(`bubble`);setup(){(0,t.useEffect)(()=>{let e=this.bubbleRef.el;if(!e)return;let t=this.props.anchorRect,n=op(e),r=t.x+t.width/2-n.width/2-this.spreadsheetRect.x,i=t.y-n.height-7-this.spreadsheetRect.y;e.style.left=`${r}px`,e.style.top=`${i}px`})}};let XM=uO.content;var ZM=class extends t.Component{static template=`o-spreadsheet-Composer`;static props={focus:{validate:e=>[`inactive`,`cellFocus`,`contentFocus`].includes(e)},inputStyle:{type:String,optional:!0},rect:{type:Object,optional:!0},delimitation:{type:Object,optional:!0},onComposerCellFocused:{type:Function,optional:!0},onComposerContentFocused:Function,isDefaultFocus:{type:Boolean,optional:!0},onInputContextMenu:{type:Function,optional:!0},composerStore:Object,placeholder:{type:String,optional:!0},inputMode:{type:String,optional:!0},showAssistant:{type:Boolean,optional:!0}};static components={TextValueProvider:VM,FunctionDescriptionProvider:JM,SpeechBubble:YM};static defaultProps={inputStyle:``,isDefaultFocus:!1,inputMode:`text`,showAssistant:!0};DOMFocusableElementStore;composerRef=(0,t.useRef)(`o_composer`);containerRef=(0,t.useRef)(`composerContainer`);contentHelper=new HM(this.composerRef.el);composerState=(0,t.useState)({positionStart:0,positionEnd:0,hoveredRect:void 0});functionDescriptionState=(0,t.useState)({showDescription:!1,functionDescription:{},argsToFocus:[],repeatingArgGroupIndex:0});assistant=(0,t.useState)({forcedClosed:!1});compositionActive=!1;spreadsheetRect=Dv();lastHoveredTokenIndex=void 0;debouncedHover=pt((e,t)=>{let n=this.contentHelper.getCurrentSelection();if(n.start!==n.end)return;let r=this.props.composerStore.hoveredTokens;this.props.composerStore.hoverToken(e),w(r,this.props.composerStore.hoveredTokens)||(this.composerState.hoveredRect=t)},120);get assistantStyleProperties(){let e=this.composerRef.el.getBoundingClientRect(),t={};t[`min-width`]=`${Math.min(this.props.rect?.width||1/0,300)}px`;let n=this.props.composerStore.autoCompleteProposals?.some(e=>e.description);if((this.functionDescriptionState.showDescription||n)&&(t.width=`300px`),this.props.delimitation&&this.props.rect){let{x:e,y:n,height:r}=this.props.rect,i=this.props.delimitation.height-(n+r);t[`max-height`]=`${i}px`,n>i&&(t[`max-height`]=`${n-9}px`,t.top=`-3px`,t.transform=`translate(0, -100%)`),e+300>this.props.delimitation.width&&(t.right=`0px`)}else t[`max-height`]=`${this.spreadsheetRect.height-e.bottom-1}px`,e.left+300+15+9>this.spreadsheetRect.width&&(t.right=`9px`);return t}get assistantStyle(){let e=this.assistantStyleProperties;return U({"max-height":e[`max-height`],width:e.width,"min-width":e[`min-width`]})}get assistantContainerStyle(){let e=this.assistantStyleProperties;return U({top:e.top,right:e.right,transform:e.transform})}shouldProcessInputEvents=!1;tokens=[];keyMapping={Enter:e=>this.processEnterKey(e,`down`),"Shift+Enter":e=>this.processEnterKey(e,`up`),"Alt+Enter":this.processNewLineEvent,"Ctrl+Enter":this.processNewLineEvent,Escape:this.processEscapeKey,F2:e=>this.toggleEditionMode(e),F4:e=>this.processF4Key(e),Tab:e=>this.processTabKey(e,`right`),"Shift+Tab":e=>this.processTabKey(e,`left`)};keyCodeMapping={NumpadDecimal:this.processNumpadDecimal};setup(){this.DOMFocusableElementStore=D(FM),(0,t.onMounted)(()=>{let e=this.composerRef.el;this.props.isDefaultFocus&&this.DOMFocusableElementStore.setFocusableElement(e),this.contentHelper.updateEl(e)}),(0,t.onWillUnmount)(()=>{this.debouncedHover.stopDebounce()}),(0,t.useEffect)(()=>{this.processContent(),document.activeElement===this.contentHelper.el&&this.props.composerStore.editionMode===`inactive`&&!this.props.isDefaultFocus&&this.DOMFocusableElementStore.focus()}),(0,t.useEffect)(()=>{this.processTokenAtCursor()},()=>[this.props.composerStore.editionMode!==`inactive`]),(0,t.useEffect)(()=>{this.contentHelper.scrollSelectionIntoView()},()=>[this.props.composerStore.composerSelection.start,this.props.composerStore.composerSelection.end])}processArrowKeys(e){let t=this.props.composerStore.tokenAtCursor;if((this.props.composerStore.isSelectingRange||this.props.composerStore.editionMode===`inactive`)&&!([`ArrowUp`,`ArrowDown`].includes(e.key)&&this.props.composerStore.isAutoCompleteDisplayed&&t?.type!==`REFERENCE`)){this.functionDescriptionState.showDescription=!1,this.props.composerStore.hideHelp(),e.preventDefault(),e.stopPropagation(),LM(e,this.env.model.selection);return}let n=this.props.composerStore.currentContent;if(this.props.focus===`cellFocus`&&!this.props.composerStore.isAutoCompleteDisplayed&&!Ut(n)){this.props.composerStore.stopEdition();return}e.stopPropagation(),this.handleArrowKeysForAutocomplete(e)}handleArrowKeysForAutocomplete(e){[`ArrowUp`,`ArrowDown`].includes(e.key)&&this.props.composerStore.isAutoCompleteDisplayed&&(e.preventDefault(),this.props.composerStore.moveAutoCompleteSelection(e.key===`ArrowDown`?`next`:`previous`))}processTabKey(e,t){e.preventDefault(),e.stopPropagation(),this.props.composerStore.autoCompleteOrStop(t,this.assistant.forcedClosed)}processEnterKey(e,t){e.preventDefault(),e.stopPropagation(),this.props.composerStore.autoCompleteOrStop(t,this.assistant.forcedClosed)}processNewLineEvent(e){e.preventDefault(),e.stopPropagation();let t=this.contentHelper.getText(),n=this.contentHelper.getCurrentSelection(),r=Math.min(n.start,n.end),i=Math.max(n.start,n.end);this.props.composerStore.stopComposerRangeSelection(),this.props.composerStore.setCurrentContent(t.slice(0,r)+`
77
77
  `+t.slice(i),{start:r+1,end:r+1}),this.processContent()}processEscapeKey(e){this.props.composerStore.cancelEdition(),e.stopPropagation(),e.preventDefault()}processF4Key(e){e.stopPropagation(),this.props.composerStore.cycleReferences(),this.processContent()}toggleEditionMode(e){e.stopPropagation(),this.props.composerStore.toggleEditionMode(),this.processContent()}processNumpadDecimal(e){e.stopPropagation(),e.preventDefault();let t=this.env.model.getters.getLocale(),n=this.contentHelper.getCurrentSelection(),r=this.props.composerStore.currentContent,i=r.slice(0,n.start)+t.decimalSeparator+r.slice(n.end);this.props.composerStore.setCurrentContent(i,{start:n.start+1,end:n.start+1}),this.processContent()}onCompositionStart(){this.compositionActive=!0}onCompositionEnd(){this.compositionActive=!1}onKeydown(e){if(this.props.composerStore.editionMode===`inactive`)return;if(e.key.startsWith(`Arrow`)){this.processArrowKeys(e);return}let t=this.keyMapping[pp(e)]||this.keyCodeMapping[pp(e,`code`)];t?t.call(this,e):e.stopPropagation()}onPaste(e){this.props.composerStore.editionMode===`inactive`?e.preventDefault():e.stopPropagation()}onInput(e){if(!this.shouldProcessInputEvents)return;e.stopPropagation();let t;if(t=this.props.composerStore.editionMode===`inactive`?e.data||``:this.contentHelper.getText(),this.props.focus===`inactive`)return this.props.onComposerCellFocused?.(t);let n=this.contentHelper.getCurrentSelection();this.props.composerStore.stopComposerRangeSelection(),this.props.composerStore.setCurrentContent(t,n),this.processTokenAtCursor()}onKeyup(e){if(this.contentHelper.el===document.activeElement){if(this.props.composerStore.isAutoCompleteDisplayed&&[`ArrowUp`,`ArrowDown`].includes(e.key)||this.props.composerStore.isSelectingRange&&e.key?.startsWith(`Arrow`))return;let{start:t,end:n}=this.props.composerStore.composerSelection,{start:r,end:i}=this.contentHelper.getCurrentSelection();(r!==t||i!==n)&&this.props.composerStore.changeComposerCursorSelection(r,i),this.processTokenAtCursor()}}onBlur(e){if(this.props.composerStore.editionMode===`inactive`)return;let t=e.relatedTarget;if(!t||!(t instanceof HTMLElement)){this.props.composerStore.stopEdition();return}if(!this.containerRef.el?.contains(e.relatedTarget)){if(t.attributes.getNamedItem(`composerFocusableElement`)){this.contentHelper.el.focus();return}t.classList.contains(`o-composer`)||this.props.composerStore.stopEdition()}}onMousedown(e){e.button>0||this.env.isMobile()&&!xp()||(this.debouncedHover.stopDebounce(),this.contentHelper.removeSelection())}onMouseup(){if(this.env.model.getters.isReadonly())return;let e=this.contentHelper.getCurrentSelection();e.start!==e.end&&this.props.composerStore.hoverToken(void 0)}onClick(){if(this.env.model.getters.isReadonly())return;let e=this.contentHelper.getCurrentSelection(),t=this.props.composerStore.editionMode===`inactive`;this.props.onComposerContentFocused(e),t||this.props.composerStore.changeComposerCursorSelection(e.start,e.end),this.processTokenAtCursor()}onDblClick(){if(this.env.model.getters.isReadonly())return;let e=this.props.composerStore.currentContent;if(Ut(e)){let t=this.props.composerStore.currentTokens,n=this.contentHelper.getCurrentSelection();if(n.start===n.end)return;let r=e.substring(n.start,n.end),i=t.filter(e=>e.value.includes(r)&&e.start<=n.start&&e.end>=n.end)[0];if(!i)return;i.type===`REFERENCE`&&this.props.composerStore.changeComposerCursorSelection(i.start,i.end)}}onContextMenu(e){this.props.composerStore.editionMode===`inactive`&&this.props.onInputContextMenu?.(e)}closeAssistant(){this.props.composerStore.canBeToggled&&(this.assistant.forcedClosed=!0)}openAssistant(){this.props.composerStore.canBeToggled&&(this.assistant.forcedClosed=!1)}onWheel(e){this.composerRef.el&&this.composerRef.el.scrollHeight>this.composerRef.el.clientHeight&&e.stopPropagation()}processContent(){if(this.compositionActive)return;this.shouldProcessInputEvents=!1,this.props.focus!==`inactive`&&document.activeElement!==this.contentHelper.el&&this.contentHelper.el.focus();let e=this.getContentLines();if(this.contentHelper.setText(e),e.length!==0&&e.length[0]!==0&&this.props.focus!==`inactive`){let{start:e,end:t}=this.props.composerStore.composerSelection;this.contentHelper.selectRange(e,t)}this.shouldProcessInputEvents=!0}getContentLines(){let e=this.props.composerStore.currentContent,t=Ut(e);return e===``?[]:t&&this.props.focus!==`inactive`?this.splitHtmlContentIntoLines(this.getHtmlContentFromTokens()):this.splitHtmlContentIntoLines([{value:e,classes:[]}])}getHtmlContentFromTokens(){let e=this.props.composerStore.currentTokens,t=[],{end:n,start:r}=this.props.composerStore.composerSelection;for(let i=0;i<e.length;i++){let a=e[i],o=a.color||`light-dark(#000000, #ffffff)`;a.isBlurred&&(o=Wr(o,.5));let s=[];a.type===`REFERENCE`&&this.props.composerStore.tokenAtCursor===a&&this.props.composerStore.editionMode===`selecting`&&s.push(`text-decoration-underline`),n===r&&a.isParenthesisLinkedToCursor&&s.push(`highlight-parenthesis-flag`),a.isInHoverContext&&s.push(`highlight-flag`),this.props.composerStore.showSelectionIndicator&&n===r&&n===a.end&&s.push(`selector-flag`),t.push({value:a.value,color:o,classes:s,onHover:e=>this.onTokenHover(i,e),onStopHover:()=>this.onTokenHover(void 0)})}return t}onTokenHover(e,t){this.lastHoveredTokenIndex!==e&&(this.lastHoveredTokenIndex=e,this.debouncedHover(e,t))}splitHtmlContentIntoLines(e){let t=[],n=[];for(let r of e)if(r.value.includes(`
78
78
  `)){let e=r.value.split(`
79
- `),i=e.pop();for(let i of e)n.push({color:r.color,value:i}),t.push(n),n=[];n.push({...r,value:i})}else n.push(r);n.length&&t.push(n);let r=[];for(let e of t)e.every(this.isContentEmpty)?r.push([e[0]]):r.push(e.filter(e=>!this.isContentEmpty(e)));return r}isContentEmpty(e){return!(e.value||e.classes?.length)}processTokenAtCursor(){let e=this.props.composerStore;this.functionDescriptionState.showDescription=!1;let t=this.props.composerStore.tokenAtCursor;if(Ut(e.currentContent)&&t&&t.type!==`SYMBOL`){let e=t.functionContext,n=e?.parent.toUpperCase();if(e&&n&&n in XM&&t.type!==`UNKNOWN`){let r=XM[n],i=e.argPosition,a=e.args.length;this.functionDescriptionState.functionDescription=r;let o=this.props.composerStore.currentTokens.some(e=>e.type===`RIGHT_PAREN`&&e.parenthesesCode===t.parenthesesCode);this.functionDescriptionState.argsToFocus=this.getArgsToFocus(o,r,a,i),this.functionDescriptionState.showDescription=!0,this.functionDescriptionState.repeatingArgGroupIndex=this.getRepeatingArgGroupIndex(r,a,i)}}}getRepeatingArgGroupIndex(e,t,n){let{minArgRequired:r,maxArgPossible:i,nbrArgRepeating:a}=e;if(!a)return;let o=(a?Math.ceil((t-r)/a):0)*a+r;return Kv(e,Math.max(Math.min(i,o),r))(n).repeatingGroupIndex??0}getArgsToFocus(e,t,n,r){let{nbrArgRepeating:i,minArgRequired:a,nbrOptionalNonRepeatingArgs:o,maxArgPossible:s}=t;if(e){let e=Kv(t,Math.max(Math.min(s,n),a))(r)?.index;return e===void 0?[]:[e]}let c=Math.max(n,a),l=i?a+Math.ceil((c-a)/i)*i+o:s,u=[];for(let e=c;e<=l;e++){let n=Kv(t,e)(r)?.index;n!==void 0&&u.push(n)}return[...new Set(u)]}autoComplete(e){!e||this.assistant.forcedClosed&&this.props.composerStore.canBeToggled||(this.props.composerStore.insertAutoCompleteValue(e),this.processTokenAtCursor())}get displaySpeechBubble(){return!!(this.props.focus!==`inactive`&&this.composerState.hoveredRect&&this.props.composerStore.hoveredContentEvaluation)}};let QM=/[a-zA-Z0-9\_]+(\.[a-zA-Z0-9\_]+)*/,$M=[`-`,`+`],eN=[`%`,`#`];var tN=class{tokens;currentIndex=0;current;length;constructor(e){this.tokens=e,this.current=e[0],this.length=e.length}shift(){let e=this.tokens[this.currentIndex];return this.current=this.tokens[++this.currentIndex],e}get next(){return this.tokens[this.currentIndex+1]}};let nN={"#":40,"%":40,"^":30,"*":20,"/":20,"+":15,"-":15,"&":13,">":10,"<>":10,">=":10,"<":10,"<=":10,"=":10};function rN(e){let t=e.shift();if(!t)throw new ga;switch(t.type){case`DEBUGGER`:let n=cN(e,1e3);return n.debug=!0,n;case`NUMBER`:return{type:`NUMBER`,value:aa(t.value,R),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`STRING`:return{type:`STRING`,value:Xe(t.value),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`INVALID_REFERENCE`:return{type:`REFERENCE`,value:A.InvalidReference,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`REFERENCE`:if(e.current?.value===`:`&&e.next?.type===`REFERENCE`){e.shift();let n=e.shift();return{type:`REFERENCE`,value:`${t.value}:${n?.value}`,tokenStartIndex:t.tokenIndex,tokenEndIndex:n.tokenIndex}}return{type:`REFERENCE`,value:t.value,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`SYMBOL`:let r=t.value;if(e.current?.type===`LEFT_PAREN`&&QM.test(t.value)&&r===Xe(r,`'`)){let{args:n,rightParen:i}=iN(e);return{type:`FUNCALL`,value:r,args:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:i.tokenIndex}}let i=r.toUpperCase();return i===`TRUE`||i===`FALSE`?{type:`BOOLEAN`,value:i===`TRUE`,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex}:{type:`SYMBOL`,value:Xe(t.value,`'`),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`LEFT_PAREN`:let a=cN(e),o=oN(e,`RIGHT_PAREN`,k(`Missing closing parenthesis`));return{...a,tokenStartIndex:t.tokenIndex,tokenEndIndex:o.tokenIndex};case`LEFT_BRACE`:return sN(e,t);case`OPERATOR`:let s=t.value;if($M.includes(s)){let n=cN(e,nN[s]);return{type:`UNARY_OPERATION`,value:s,operand:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:n.tokenEndIndex}}throw new ga(k(`Unexpected token: %s`,t.value));default:throw new ga(k(`Unexpected token: %s`,t.value))}}function iN(e){if(oN(e,`LEFT_PAREN`,k(`Missing opening parenthesis`)),e.current?.type===`RIGHT_PAREN`)return{args:[],rightParen:oN(e,`RIGHT_PAREN`)};let t=[];for(t.push(aN(e));e.current?.type!==`RIGHT_PAREN`;)oN(e,`ARG_SEPARATOR`,k(`Wrong function call`)),t.push(aN(e));return{args:t,rightParen:oN(e,`RIGHT_PAREN`)}}function aN(e){let t=e.current;return t?.type===`ARG_SEPARATOR`||t?.type===`RIGHT_PAREN`?{type:`EMPTY`,value:``,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex}:cN(e)}function oN(e,t,n){let r=e.shift();if(!r||r.type!==t)throw new ga(n);return r}function sN(e,t){let n=[],r=[cN(e)];for(;e.current?.type!==`RIGHT_BRACE`;){let t=e.shift();if(!t)throw new ga(k(`Missing closing brace`));if(t.type===`ARG_SEPARATOR`)r.push(cN(e));else if(t.type===`ARRAY_ROW_SEPARATOR`)n.push(r),r=[cN(e)];else throw new ga(k(`Unexpected token: %s`,t.value))}let i=oN(e,`RIGHT_BRACE`,k(`Missing closing brace`));return n.push(r),{type:`ARRAY`,value:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:i.tokenIndex}}function cN(e,t=0){if(e.length===0)throw new ga;let n=rN(e);for(;e.current?.type===`OPERATOR`&&nN[e.current.value]>t;){let t=e.shift(),r=t.value;if(eN.includes(r))n={type:`UNARY_OPERATION`,value:r,operand:n,postfix:!0,tokenStartIndex:n.tokenStartIndex,tokenEndIndex:t.tokenIndex};else{let t=cN(e,nN[r]);n={type:`BIN_OPERATION`,value:r,left:n,right:t,tokenStartIndex:n.tokenStartIndex,tokenEndIndex:t.tokenEndIndex}}}return n}function lN(e){return uN(Ju(e))}function uN(e){let t=new tN(e.map((e,t)=>({type:e.type,value:e.value,tokenIndex:t})).filter(e=>e.type!==`SPACE`));t.current?.value===`=`&&t.shift();let n=cN(t);if(t.current)throw new ga;return n}function dN(e,t,n){return mN(e,e=>e.type===t?n(e):e)}function fN(e){return Array.from(pN(e))}function*pN(e){switch(yield e,e.type){case`FUNCALL`:for(let t of e.args)yield*pN(t);break;case`ARRAY`:for(let t of e.value)for(let e of t)yield*pN(e);break;case`UNARY_OPERATION`:yield*pN(e.operand);break;case`BIN_OPERATION`:yield*pN(e.left),yield*pN(e.right);break}}function mN(e,t){switch(e=t(e),e.type){case`FUNCALL`:return{...e,args:e.args.map(e=>mN(e,t))};case`ARRAY`:return{...e,value:e.value.map(e=>e.map(e=>mN(e,t)))};case`UNARY_OPERATION`:return{...e,operand:mN(e.operand,t)};case`BIN_OPERATION`:return{...e,right:mN(e.right,t),left:mN(e.left,t)};default:return e}}function hN(e){let t=0;return e.map(e=>{let n=e.value.toString().length,r=Object.assign({},e,{start:t,end:t+n,length:n});return t=r.end,r})}function gN(e){let t=[],n=0;return e.map((r,i)=>{if(r.type===`LEFT_PAREN`){t.push(n+1),n=0;for(let n=i-1;n>=0;n--){if(e[n].type===`SPACE`){e[n].parenthesesCode=t.join(`:`);continue}e[n].type===`SYMBOL`&&(e[n].parenthesesCode=t.join(`:`));break}}return r.parenthesesCode=t.join(`:`),r.type===`RIGHT_PAREN`&&t.length&&(n=t.pop()),r})}function _N(e){let t=[],n=``,r=0;function i(e){if(t.length===0)return;let n=t.at(-1);if(n&&n.argsTokens){let{argsTokens:t,argPosition:r}=n;t[r]||(t[r]=[]),t[r].push({value:e.value,type:e.type})}}return e.map(e=>{switch([`SPACE`,`LEFT_PAREN`].includes(e.type)||(n=``),e.type){case`SYMBOL`:i(e),n=e.value;break;case`LEFT_PAREN`:t.push({parent:n,argPosition:0,argsTokens:[],args:[]}),i(e),n=``;break;case`RIGHT_PAREN`:t.pop()?.argsTokens?.flat().forEach(i),i(e);break;case`LEFT_BRACE`:r++,i(e);break;case`RIGHT_BRACE`:r--,i(e);break;case`ARG_SEPARATOR`:t.length&&r===0&&t[t.length-1].argPosition++,i(e);break;default:i(e);break}if(t.length){let n=t[t.length-1];n.parent&&(e.functionContext=Object.assign({},n))}return e})}function vN(e){for(let t of e)if(t.functionContext){let{argsTokens:e,args:n}=t.functionContext;if(delete t.functionContext.argsTokens,n.length||!e)continue;e[0]?.[0]?.type===`LEFT_PAREN`&&(e[0]=e[0].slice(1));for(let t of e){let e=t;e.at(0)?.type===`ARG_SEPARATOR`&&(e=e.slice(1));try{n.push(uN(e))}catch{n.push(void 0)}}}return e}function yN(e,t){return vN(_N(gN(hN(bN(Ju(e,t))))))}function bN(e){let t=[];for(;e.length;)t.push(xN(e)||e.shift());return t}function xN(e){if(e.length<2)return null;let t=e[0],n=e[1];return t.type===`REFERENCE`&&n.type===`OPERATOR`&&n.value===`#`&&!t.value.includes(`:`)?(e.splice(0,2),{type:t.type,value:t.value+`#`}):null}var SN=class{lastId=0;add(e){this.lastId++;let t=this.lastId;return new Promise((n,r)=>{e.then(e=>{this.lastId===t&&n(e)}).catch(e=>{this.lastId===t&&r(e)})})}};function CN(e,t,n){let r=(t.startsWith(`=`)?yN(t,n):[]).filter(t=>t.start<=e.start&&t.end>=e.start||t.start>=e.start&&t.start<e.end),i=r.filter(e=>e.type===`REFERENCE`);if(i.length===0)return;let a=r.map(Vc).map(e=>e.value).join(``),o=r[0].start,s=r[r.length-1].end,c=t.slice(0,o)+a+t.slice(s),l=c.length-t.length,u={start:i[0].start,end:i[i.length-1].end+l};return i.length===1&&e.start===e.end&&(u.start=u.end),{content:c,selection:u}}let wN=new B;function TN(e,t,n){let{x:r,y:i,width:a,height:o}=n;if(a<0||o<0)return;let s=t.color||`#017E84`,{ctx:c}=e;c.save(),t.noBorder||(t.dashed&&c.setLineDash([5,3]),c.strokeStyle=s,t.thinLine?(c.lineWidth=1,c.strokeRect(r,i,a,o)):(c.lineWidth=2,c.strokeRect(r+.5,i+.5,a,o))),t.noFill||(c.fillStyle=Wr(Or(s),t.fillAlpha??.12),c.fillRect(r,i,a,o)),c.restore()}var EN=class extends yr{mutators=[`register`,`unRegister`];providers=[];constructor(e){super(e),this.onDispose(()=>{this.providers=[]})}get renderingLayers(){return[`Highlights`]}get highlights(){let e=this.getters.getActiveSheetId();return this.providers.flatMap(e=>e.highlights).filter(t=>t.range.sheetId===e).map(e=>{let{numberOfRows:t,numberOfCols:n}=Mn(e.range.zone),r=t*n===1?this.getters.expandZone(e.range.sheetId,e.range.zone):e.range.unboundedZone;return{...e,range:this.model.getters.getRangeFromZone(e.range.sheetId,r)}})}register(e){this.providers.push(e)}unRegister(e){this.providers=this.providers.filter(t=>t!==e)}drawLayer(e,t){if(t===`Highlights`)for(let t of this.highlights)TN(e,t,this.getters.getVisibleRect(t.range.zone))}},DN=class{mutators=[`notifyUser`,`raiseError`,`askConfirmation`,`updateNotificationCallbacks`];notifyUser=e=>window.alert(e.text);askConfirmation=(e,t,n)=>{window.confirm(e)?t():n?.()};raiseError=(e,t)=>{window.alert(e),t?.()};updateNotificationCallbacks(e){this.notifyUser=e.notifyUser||this.notifyUser,this.raiseError=e.raiseError||this.raiseError,this.askConfirmation=e.askConfirmation||this.askConfirmation}},ON=class extends yr{mutators=[`useProvider`,`moveSelection`,`hide`,`selectIndex`];selectedIndex=void 0;provider;get selectedProposal(){if(!(this.selectedIndex===void 0||this.provider===void 0))return this.provider.proposals[this.selectedIndex]}useProvider(e){this.provider=e,this.selectedIndex=e.autoSelectFirstProposal?0:void 0}hide(){this.provider=void 0,this.selectedIndex=void 0}selectIndex(e){this.selectedIndex=e}moveSelection(e){if(this.provider){if(this.selectedIndex===void 0){this.selectedIndex=0;return}e===`previous`?(this.selectedIndex--,this.selectedIndex<0&&(this.selectedIndex=this.provider.proposals.length-1)):this.selectedIndex=(this.selectedIndex+1)%this.provider.proposals.length}}},kN=class extends yr{mutators=[`startEdition`,`setCurrentContent`,`stopEdition`,`stopComposerRangeSelection`,`cancelEdition`,`cycleReferences`,`hideHelp`,`autoCompleteOrStop`,`insertAutoCompleteValue`,`moveAutoCompleteSelection`,`selectAutoCompleteIndex`,`toggleEditionMode`,`changeComposerCursorSelection`,`replaceComposerCursorSelection`,`hoverToken`];col=0;row=0;editionMode=`inactive`;sheetId=``;_currentContent=``;currentTokens=[];selectionStart=0;selectionEnd=0;initialContent=``;colorIndexByRange={};autoComplete=new ON(this.get);hoveredTokens=[];hoveredContentEvaluation=``;autoCompleteKeepLast=new SN;notificationStore=this.get(DN);highlightStore=this.get(EN);constructor(e){super(e),this.highlightStore.register(this),this.onDispose(()=>{this.highlightStore.unRegister(this),this._cancelEdition()})}handleEvent(e){let t=this.getters.getActiveSheetId(),n;switch(n=e.options.unbounded?this.getters.getUnboundedZone(t,e.anchor.zone):e.anchor.zone,e.mode){case`newAnchor`:this.editionMode===`selecting`&&this.insertSelectedRange(n);break;default:this.editionMode===`selecting`?this.replaceSelectedRange(n):this.updateComposerRange(e.previousAnchor.zone,n);break}}changeComposerCursorSelection(e,t){this.isSelectionValid(this._currentContent.length,e,t)&&(this.selectionStart=e,this.selectionEnd=t,this.stopComposerRangeSelection(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor(),this.updateAutoCompleteProvider())}stopComposerRangeSelection(){this.isSelectingRange&&(this.editionMode=`editing`)}startEdition(e,t){let{col:n,row:r}=this.getters.getActivePosition();this.model.dispatch(`SELECT_FIGURE`,{figureId:null}),this.model.dispatch(`SCROLL_TO_CELL`,{col:n,row:r}),this.editionMode!==`inactive`&&e?this.setContent(e,t):this._startEdition(e,t),this.updateTokenColor(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor(),this.updateAutoCompleteProvider()}cancelEdition(){this.resetContent(),this.cancelEditionAndActivateSheet()}setCurrentContent(e,t){t&&!this.isSelectionValid(e.length,t.start,t.end)||(this.setContent(e,t,!0),this.updateTokenColor(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor())}replaceComposerCursorSelection(e){this.replaceSelection(e)}handle(e){switch(e.type){case`SELECT_FIGURE`:e.figureId&&(this.resetContent(),this.cancelEditionAndActivateSheet());break;case`START_CHANGE_HIGHLIGHT`:let{left:t,top:n}=e.zone;this.isSelectingRange&&(this.editionMode=`editing`),this.model.selection.resetAnchor(this,{cell:{col:t,row:n},zone:e.zone});break}}get currentContent(){return this.editionMode===`inactive`?this.getComposerContent(this.getters.getActivePosition()).text:this._currentContent}get composerSelection(){return{start:this.selectionStart,end:this.selectionEnd}}get isSelectingRange(){return this.editionMode===`selecting`}get showSelectionIndicator(){return this.isSelectingRange&&this.canStartComposerRangeSelection()}get tokenAtCursor(){let e=Math.min(this.selectionStart,this.selectionEnd),t=Math.max(this.selectionStart,this.selectionEnd);if(!(e===t&&t===0))return this.currentTokens.find(n=>n.start<=e&&n.end>=t)}get autoCompleteProposals(){return this.autoComplete.provider?.proposals||[]}get autoCompleteSelectedIndex(){return this.autoComplete.selectedIndex}get isAutoCompleteDisplayed(){return!!this.autoComplete.provider}get canBeToggled(){return this.autoComplete.provider?.canBeToggled??!0}cycleReferences(){let e=this.getters.getLocale(),t=CN(this.composerSelection,this._currentContent,e);t!==void 0&&this.setCurrentContent(t.content,t.selection)}toggleEditionMode(){if(this.editionMode===`inactive`)return;let e=Math.min(this.selectionStart,this.selectionEnd),t=Math.max(this.selectionStart,this.selectionEnd),n=[...this.currentTokens].reverse().find(n=>n.end>=e&&t>=n.start&&n.type===`REFERENCE`);if(this.editionMode===`editing`&&n){let e=this.getters.getActiveSheetId(),{sheetName:t,xc:r}=zc(n.value),i=this.getters.getSheetIdByName(t);i&&i!==e&&this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:e,sheetIdTo:i}),this.selectionStart=this.selectionEnd=n.end;let a=this.getFullySpreadRange(this.sheetId,r).zone;this.captureSelection(a),this.editionMode=`selecting`}else this.editionMode=`editing`}hoverToken(e){this.currentTokens.forEach(e=>e.isInHoverContext=void 0);let t=[...this.currentTokens];if(e===void 0||[`ARG_SEPARATOR`,`SPACE`].includes(t[e].type)){this.hoveredContentEvaluation=``,this.hoveredTokens=[];return}let n=this.getMissingSymbols(this.currentTokens);for(let e of n){let n=e===`)`?`RIGHT_PAREN`:`RIGHT_BRACE`,r=t[t.length-1].start+1;t.push({value:e,type:n,start:r,end:r+e.length,length:1})}let r=t;if(e!==0){let n=this.getRelatedTokens(t,e),i=t.filter(e=>!n.includes(e)&&e.type!==`SPACE`);r=i.length===1&&i[0]===t[0]?t:n}r.forEach(e=>e.isInHoverContext=!0);let i=r.map(e=>e.value).join(``);Ut(i)||(i=`=${i}`);let a=TS(i,this.getters.getLocale()),o=this.evaluateCanonicalFormula(a);this.hoveredTokens=r,this.hoveredContentEvaluation=ny(o,`0`,this.getters.getLocale())}evaluateCanonicalFormula(e){return this.getters.evaluateFormulaResult(this.sheetId,e)}getRelatedTokens(e,t){try{let n=uN(e),r;for(let e of fN(n))if(t>=e.tokenStartIndex&&t<=e.tokenEndIndex)r=e;else if(t<e.tokenStartIndex)break;return r?e.slice(r.tokenStartIndex,r.tokenEndIndex+1):e}catch(t){if(t instanceof j)return e;throw t}}captureSelection(e,t,n){this.model.selection.capture(this,{cell:{col:t??e.left,row:n??e.top},zone:e},{handleEvent:this.handleEvent.bind(this),release:()=>{this._stopEdition()}})}isSelectionValid(e,t,n){return t>=0&&t<=e&&n>=0&&n<=e}startComposerRangeSelection(){if(this.sheetId===this.getters.getActiveSheetId()){let e=E({col:this.col,row:this.row});this.model.selection.resetAnchor(this,{cell:{col:this.col,row:this.row},zone:e})}this.editionMode=`selecting`}_startEdition(e,t){let n=this.getters.getActiveCell(),r=this.getters.getLocale();e&&n.format?.includes(`%`)&&ra(e,r)&&(t||={start:e.length,end:e.length},e=`${e}%`);let{col:i,row:a,sheetId:o}=this.getters.getActivePosition();this.col=i,this.sheetId=o,this.row=a,this.editionMode=`editing`;let{text:s,adjustedSelection:c}=this.getComposerContent({sheetId:o,col:i,row:a},t);this.initialContent=s,this.setContent(e||this.initialContent,c??t),this.colorIndexByRange={};let l=E({col:this.col,row:this.row});this.captureSelection(l,i,a)}_stopEdition(){if(this.editionMode!==`inactive`){this.cancelEditionAndActivateSheet();let e=this.getCurrentCanonicalContent();if(this.initialContent===e)return;if(e&&Ut(e)){let t=this.getMissingSymbols(this.currentTokens);e+=gt(t)}this.confirmEdition(e)}}getCurrentCanonicalContent(){return TS(this._currentContent,this.getters.getLocale())}cancelEditionAndActivateSheet(){this.editionMode!==`inactive`&&(this._cancelEdition(),this.getters.getActiveSheetId()!==this.sheetId&&this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:this.getters.getActiveSheetId(),sheetIdTo:this.sheetId}))}_cancelEdition(){this.editionMode!==`inactive`&&(this.editionMode=`inactive`,this.model.selection.release(this),this.colorIndexByRange={},this.hoveredTokens=[],this.hoveredContentEvaluation=``,this.hideHelp())}resetContent(){this.setContent(this.initialContent||``)}setContent(e,t,n){let r=this._currentContent!==e;if(this._currentContent=e,t?(this.selectionStart=t.start,this.selectionEnd=t.end):this.selectionStart=this.selectionEnd=e.length,r||this.editionMode!==`inactive`){let t=this.getters.getLocale();this.currentTokens=Ut(e)?yN(e,t):[],this.currentTokens.filter(e=>e.type!==`SPACE`).length>1e3&&n&&this.notificationStore.raiseError(k(`This formula has over 1000 parts. It can't be processed properly, consider splitting it into multiple cells`))}this.canStartComposerRangeSelection()&&this.startComposerRangeSelection(),this.updateAutoCompleteProvider()}getAutoCompleteProviders(){return wN.getAll()}insertSelectedRange(e){let t=Math.min(this.selectionStart,this.selectionEnd),n=this.getZoneReference(e);this.canStartComposerRangeSelection()?this.insertText(n,t):this.insertText(`,`+n,t)}replaceSelectedRange(e){let t=this.getZoneReference(e),n=this.tokenAtCursor,r=n?.type===`REFERENCE`?n.start:this.selectionStart;this.replaceText(t,r,this.selectionEnd)}updateComposerRange(e,t){let n=this.getters.getActiveSheetId(),r=this.tokenAtCursor,i=(r?[r,...this.currentTokens]:this.currentTokens).filter(e=>e.type===`REFERENCE`).find(t=>{let{xc:r,sheetName:i}=zc(t.value),a=i||this.getters.getSheetName(this.sheetId);if(!wl(this.getters.getSheetName(n),a))return!1;let o=this.getFullySpreadRange(n,r);return Dn(this.getters.expandZone(n,o.zone),e)});if(!i)return;let a=this.getFullySpreadRange(n,i.value);this.selectionStart=i.start,this.selectionEnd=this.selectionStart+i.value.length;let o=this.getters.getRangeFromZone(n,t),s=this.getRangeReference(o,a.parts);this.replaceSelection(s)}getZoneReference(e){let t=this.sheetId,n=this.getters.getActiveSheetId(),r=this.getters.getRangeFromZone(n,e);return this.getters.getSelectionRangeString(r,t,{allowSpilledReferences:!0})}getRangeReference(e,t){let n=[...t],r={...e,parts:n};return this.getters.getSelectionRangeString(r,this.sheetId,{allowSpilledReferences:!0})}replaceSelection(e){let t=Math.min(this.selectionStart,this.selectionEnd),n=Math.max(this.selectionStart,this.selectionEnd);this.replaceText(e,t,n)}replaceText(e,t,n){this._currentContent=this._currentContent.slice(0,t)+this._currentContent.slice(n,this._currentContent.length),this.insertText(e,t)}insertText(e,t){let n=this._currentContent.slice(0,t)+e+this._currentContent.slice(t),r=t+e.length;this.setCurrentContent(n,{start:r,end:r})}updateTokenColor(){this.updateRangeColor();for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].color=this.getTokenColor(this.currentTokens[e])}getTokenColor(e){if(e.type===`REFERENCE`){let{xc:t,sheetName:n}=zc(e.value);return this.rangeColor(t,n)||`light-dark(#000000, #ffffff)`}if(e.type===`SYMBOL`){let t=e.value.toUpperCase();if(t===`TRUE`||t===`FALSE`)return We.NUMBER;if(t in uO.content)return We.FUNCTION}return[`LEFT_PAREN`,`RIGHT_PAREN`].includes(e.type)&&e.parenthesesCode===``?We.ORPHAN_RIGHT_PAREN:We[e.type]||`light-dark(#000000, #ffffff)`}rangeColor(e,t){let n=t?this.model.getters.getSheetIdByName(t):this.sheetId,r=this.highlights.find(t=>{if(t.range.sheetId!==n)return!1;let r=this.getFullySpreadRange(n,e).zone;return r=Gn(r)===1?this.model.getters.expandZone(n,r):r,Dn(r,t.range.zone)});return r&&r.color?r.color:void 0}computeFormulaCursorContext(){for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].isBlurred=!1;if(this.selectionStart!==this.selectionEnd)return;let e=this.getParenthesesCodeAfterCursor(),t=[...this.currentTokens].reverse().find(t=>e.startsWith(t.parenthesesCode)&&t.type===`SYMBOL`);if(t)for(let e=0;e<this.currentTokens.length;e++)(this.currentTokens[e].parenthesesCode||``).startsWith(t.parenthesesCode||``)||(this.currentTokens[e].isBlurred=!0)}getParenthesesCodeAfterCursor(){let e=this.tokenAtCursor?.parenthesesCode||``;return this.tokenAtCursor?.type===`RIGHT_PAREN`?e.slice(0,-1)||``:e}computeParenthesisRelatedToCursor(){for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].isParenthesisLinkedToCursor=!1;let e=this.tokenAtCursor;if(!(!e||e.parenthesesCode===``||![`LEFT_PAREN`,`RIGHT_PAREN`].includes(e.type)))for(let t=0;t<this.currentTokens.length;t++){let n=this.currentTokens[t];[`LEFT_PAREN`,`RIGHT_PAREN`].includes(n.type)&&n.parenthesesCode===e.parenthesesCode&&n!==e&&(this.currentTokens[t].isParenthesisLinkedToCursor=!0,this.tokenAtCursor.isParenthesisLinkedToCursor=!0)}}updateRangeColor(){if(!Ut(this._currentContent)||this.editionMode===`inactive`)return;let e=this.sheetId,t=this.getReferencedRanges().map(t=>this.getters.getRangeString(t,e)),n={};for(let e of t)this.colorIndexByRange[e]!==void 0&&(n[e]=this.colorIndexByRange[e]);let r=new Set(Object.values(n)),i=0,a=()=>{for(;r.has(i);)i++;return r.add(i),i};for(let e of t)n[e]=e in n?n[e]:a();this.colorIndexByRange=n}get highlights(){if(!Ut(this.currentContent)||this.editionMode===`inactive`)return[];let e=this.sheetId,t=e=>Tr[this.colorIndexByRange[e]%Tr.length];return this.getReferencedRanges().map(n=>{let r=this.getters.getRangeString(n,e),{numberOfRows:i,numberOfCols:a}=Mn(n.zone),o=i*a===1?this.getters.expandZone(n.sheetId,n.zone):n.unboundedZone;return{range:this.model.getters.getRangeFromZone(n.sheetId,o),color:t(r),interactive:!0}})}getReferencedRanges(){let e=this.sheetId;return this.currentTokens.filter(e=>e.type===`REFERENCE`).map(t=>this.getFullySpreadRange(e,t.value)).filter(e=>!e.invalidSheetName&&!e.invalidXc)}getFullySpreadRange(e,t){if(!t.endsWith(`#`))return this.getters.getRangeFromSheetXC(e,t);let n=t.slice(0,-1),r=this.getters.getRangeFromSheetXC(e,n),i=this.getters.getSpreadZone({sheetId:r.sheetId,col:r.zone.left,row:r.zone.top});return i?this.getters.getRangeFromZone(e,i):r}async updateAutoCompleteProvider(){this.autoComplete.hide();let e=await this.autoCompleteKeepLast.add(this.findAutocompleteProvider());e&&(this.autoComplete.useProvider(e),this.model.trigger(`update`))}async findAutocompleteProvider(){let e=this.currentContent,t=Ut(e)?this.tokenAtCursor:{type:`STRING`,value:e};if(this.editionMode===`inactive`||!t||[`TRUE`,`FALSE`].includes(t.value.toUpperCase())||!(this.canStartComposerRangeSelection()||[`SYMBOL`,`STRING`,`UNKNOWN`].includes(t.type)))return;let n={composer:this,getters:this.getters},r=this.getAutoCompleteProviders().sort((e,t)=>(e.sequence??1/0)-(t.sequence??1/0)).map(r=>({...r,getProposals:r.getProposals.bind(n,t,e),selectProposal:r.selectProposal.bind(n,t)}));for(let e of r){let n=await e.getProposals(),r=n?.find(e=>e.text===t.value),i=t.value.replace(/[ ,\(\)]/g,``);if(this._currentContent===this.initialContent&&e.displayAllOnInitialContent&&n?.length)return{proposals:n,selectProposal:e.selectProposal,autoSelectFirstProposal:e.autoSelectFirstProposal??!1,canBeToggled:e.canBeToggled};if(r&&this._currentContent!==this.initialContent)return;if(i&&n&&![`ARG_SEPARATOR`,`LEFT_PAREN`,`OPERATOR`].includes(t.type)){let e=_l(i,n,e=>e.fuzzySearchKey||e.text);(!r||e.length)&&(n=e)}if(e.maxDisplayedProposals&&(n=n?.slice(0,e.maxDisplayedProposals)),n?.length)return{proposals:n,selectProposal:e.selectProposal,autoSelectFirstProposal:e.autoSelectFirstProposal??!1,canBeToggled:e.canBeToggled}}}hideHelp(){this.autoComplete.hide()}autoCompleteOrStop(e,t=!1){if(this.editionMode!==`inactive`){let n=this.autoComplete;if(!(t&&this.canBeToggled)&&n.provider&&n.selectedIndex!==void 0){let e=n.provider.proposals[n.selectedIndex]?.text;if(e){this.autoComplete.provider?.selectProposal(e);return}}this.stopEdition(e)}}insertAutoCompleteValue(e){this.autoComplete.provider?.selectProposal(e)}selectAutoCompleteIndex(e){this.autoComplete.selectIndex(x(0,e,10))}moveAutoCompleteSelection(e){this.autoComplete.moveSelection(e)}canStartComposerRangeSelection(){if(Ut(this._currentContent)){let e=this.tokenAtCursor;if(!e)return!1;let t=this.currentTokens.map(e=>e.start).indexOf(e.start),n=t,r=e;for(;![`ARG_SEPARATOR`,`ARRAY_ROW_SEPARATOR`,`LEFT_PAREN`,`LEFT_BRACE`,`OPERATOR`].includes(r.type)||Cu.includes(r.value);){if(r.type!==`SPACE`||n<1)return!1;n--,r=this.currentTokens[n]}for(n=t+1,r=this.currentTokens[n];r&&![`ARG_SEPARATOR`,`ARRAY_ROW_SEPARATOR`,`RIGHT_PAREN`,`RIGHT_BRACE`,`OPERATOR`].includes(r.type);){if(r.type!==`SPACE`)return!1;n++,r=this.currentTokens[n]}return!0}return!1}getMissingSymbols(e){let t=[];for(let n of e)switch(n.type){case`LEFT_PAREN`:t.push(`)`);break;case`LEFT_BRACE`:t.push(`}`);break;case`RIGHT_PAREN`:case`RIGHT_BRACE`:t.length>0&&t.at(-1)===n.value&&t.pop();break}return t.reverse(),t}},AN=class extends kN{args;constructor(e,t){super(e),this.args=t,this._currentContent=this.getComposerContent().text}getAutoCompleteProviders(){let e=super.getAutoCompleteProviders(),t=this.args().contextualAutocomplete;return t&&e.push(t),e}getZoneReference(e){let t=super.getZoneReference(e);return this.args().defaultStatic?Uc(t,`colrow`):t}getComposerContent(){let e=this.args().defaultRangeSheetId;return{text:DS(Ju(this.args().content).map(t=>{if(t.type===`REFERENCE`){let n=this.getters.getRangeFromSheetXC(e,t.value);return this.getters.getRangeString(n,this.getters.getActiveSheetId())}return t.value}).join(``),this.getters.getLocale())}}stopEdition(){this._stopEdition()}confirmEdition(e){this.args().onConfirm(e)}getTokenColor(e){if(e.type===`SYMBOL`){let t=this.args().getContextualColoredSymbolToken?.(e);if(t)return t}return super.getTokenColor(e)}hoverToken(){}},jN=class extends t.Component{static template=`o-spreadsheet-StandaloneComposer`;static props={composerContent:{type:String,optional:!0},defaultRangeSheetId:{type:String,optional:!0},defaultStatic:{type:Boolean,optional:!0},onConfirm:Function,contextualAutocomplete:{type:Object,optional:!0},placeholder:{type:String,optional:!0},title:{type:String,optional:!0},class:{type:String,optional:!0},invalid:{type:Boolean,optional:!0},autofocus:{type:Boolean,optional:!0},getContextualColoredSymbolToken:{type:Function,optional:!0}};static components={Composer:ZM};static defaultProps={composerContent:``,defaultStatic:!1};composerFocusStore;standaloneComposerStore;composerInterface;spreadsheetRect=Dv();setup(){this.composerFocusStore=D(xr);let e=ur(AN,()=>({onConfirm:this.props.onConfirm,content:this.props.composerContent,defaultStatic:this.props.defaultStatic??!1,contextualAutocomplete:this.props.contextualAutocomplete,defaultRangeSheetId:this.props.defaultRangeSheetId,getContextualColoredSymbolToken:this.props.getContextualColoredSymbolToken}));this.standaloneComposerStore=e,this.composerInterface={id:`standaloneComposer`,get editionMode(){return e.editionMode},startEdition:this.standaloneComposerStore.startEdition,setCurrentContent:this.standaloneComposerStore.setCurrentContent,stopEdition:this.standaloneComposerStore.stopEdition},(0,t.onMounted)(()=>{this.props.autofocus&&this.focus===`inactive`&&(this.composerFocusStore.focusComposer(this.composerInterface,{}),this.composerFocusStore.activeComposer.editionMode)})}get focus(){return this.composerFocusStore.activeComposer===this.composerInterface?this.composerFocusStore.focusMode:`inactive`}get composerStyle(){return this.props.invalid?U({padding:`1px 0px 0px 0px`}):U({padding:`1px 0px`})}get containerClass(){return[this.focus===`inactive`?``:`active`,this.props.invalid?`o-invalid`:``,this.props.class||``].join(` `)}onFocus(e){this.composerFocusStore.focusComposer(this.composerInterface,{selection:e})}},MN=class extends t.Component{static template=`o-spreadsheet-CriterionInput`;static props={value:{type:String,optional:!0},criterionType:String,onValueChanged:Function,onKeyDown:{type:Function,optional:!0},focused:{type:Boolean,optional:!0},onBlur:{type:Function,optional:!0},onFocus:{type:Function,optional:!0},disableFormulas:{type:Boolean,optional:!0}};static defaultProps={value:``,onKeyDown:()=>{},focused:!1,onBlur:()=>{}};static components={StandaloneComposer:jN};inputRef=(0,t.useRef)(`input`);setup(){(0,t.useEffect)(()=>{this.props.focused&&this.inputRef.el&&this.inputRef.el.focus()},()=>[this.props.focused,this.inputRef.el])}state=(0,t.useState)({shouldDisplayError:!!this.props.value});get placeholder(){return this.allowedValues===`onlyFormulas`?k(`Formula`):this.allowedValues===`onlyLiterals`?k(`Value`):k(`Value or formula`)}get allowedValues(){let e=Z.get(this.props.criterionType);if(e.allowedValues===`onlyFormulas`&&this.props.disableFormulas)throw Error(`Cannot disable formulas for criterion type ${this.props.criterionType} that accept only formulas`);return(this.props.disableFormulas?`onlyLiterals`:e.allowedValues)??`any`}onInputValueChanged(e){this.state.shouldDisplayError=!0,this.props.onValueChanged(e.target.value)}onChangeComposerValue(e){this.state.shouldDisplayError=!0,this.props.onValueChanged(e)}getDataValidationRuleInputComposerProps(){return{onConfirm:e=>this.onChangeComposerValue(e),composerContent:this.props.value,placeholder:this.placeholder,class:`o-sidePanel-composer`,defaultRangeSheetId:this.env.model.getters.getActiveSheetId(),invalid:this.state.shouldDisplayError&&!!this.errorMessage,defaultStatic:!0,autofocus:this.props.focused}}get errorMessage(){if(this.state.shouldDisplayError)return this.env.model.getters.getDataValidationInvalidCriterionValueMessage(this.props.criterionType,ES(this.props.value,this.env.model.getters.getLocale()))}};let NN={today:k(`today`),yesterday:k(`yesterday`),tomorrow:k(`tomorrow`),lastWeek:k(`in the past week`),lastMonth:k(`in the past month`),lastYear:k(`in the past year`),exactDate:k(`exact date`)};var PN=class extends DM{static template=`o-spreadsheet-DataValidationDateCriterion`;static components={CriterionInput:MN,Select:EM};get currentDateValue(){return this.props.criterion.dateValue||`exactDate`}onValueChanged(e){this.updateCriterion({values:[e],dateValue:this.currentDateValue})}onDateValueChanged(e){this.updateCriterion({dateValue:e})}get dateValues(){return Object.keys(NN).map(e=>({value:e,label:NN[e]}))}},FN=class extends DM{static template=`o-spreadsheet-DoubleInputCriterionForm`;static components={CriterionInput:MN};onFirstValueChanged(e){let t=this.props.criterion.values;this.updateCriterion({values:[e,t[1]||``]})}onSecondValueChanged(e){let t=this.props.criterion.values;this.updateCriterion({values:[t[0]||``,e]})}},IN=class extends DM{static template=`o-spreadsheet-SingleInputCriterionForm`;static components={CriterionInput:MN};onValueChanged(e){let t=b(this.props.criterion);t.values[0]=e,this.updateCriterion(t)}},LN=class extends DM{static template=`o-spreadsheet-Top10CriterionForm`;static components={CriterionInput:MN,Select:EM};onValueChanged(e){let t=b(this.props.criterion);t.values[0]=e,this.updateCriterion(t)}updateIsBottom(e){let t=b(this.props.criterion);t.isBottom=e===`bottom`,this.updateCriterion(t)}updateIsPercent(e){let t=b(this.props.criterion);t.isPercent=e===`percent`,this.updateCriterion(t)}get isBottomSelectOptions(){return[{value:`top`,label:k(`Top`)},{value:`bottom`,label:k(`Bottom`)}]}get isPercentSelectOptions(){return[{value:`values`,label:k(`Values`)},{value:`percent`,label:k(`Percent`)}]}};function RN(e,t){let n=()=>{window.removeEventListener(`pointerup`,r,{capture:!0}),window.removeEventListener(`dragstart`,i),window.removeEventListener(`pointermove`,e),window.removeEventListener(`wheel`,e)},r=e=>{t(e),n()};function i(e){e.preventDefault()}return window.addEventListener(`pointerup`,r,{capture:!0}),window.addEventListener(`dragstart`,i),window.addEventListener(`pointermove`,e),window.addEventListener(`wheel`,e,{passive:!1}),n}var zN=class extends t.Component{static template=`o-spreadsheet-ColorPicker`;static props={onColorPicked:Function,currentColor:{type:String,optional:!0},maxHeight:{type:Number,optional:!0},anchorRect:Object,disableNoColor:{type:Boolean,optional:!0}};static defaultProps={currentColor:``};static components={Popover:kv};COLORS=_e;state=(0,t.useState)({showGradient:!1,currentHslaColor:kr(this.props.currentColor)?{...Br(this.props.currentColor),a:1}:{h:0,s:100,l:100,a:1},customHexColor:kr(this.props.currentColor)?Or(this.props.currentColor):``});get colorPickerStyle(){return this.props.maxHeight!==void 0&&this.props.maxHeight<=0?U({display:`none`}):``}get popoverProps(){return{anchorRect:this.props.anchorRect,maxHeight:this.props.maxHeight,positioning:`bottom-left`,verticalOffset:0}}get gradientHueStyle(){return U({background:`hsl(${this.state.currentHslaColor?.h||0} 100% 50%)`})}get sliderStyle(){let e=this.state.currentHslaColor?.h||0;return U({"margin-left":`${x(Math.round(e/360*216),1,216)-18/2}px`})}get pointerStyle(){let{s:e,l:t}=this.state.currentHslaColor||{s:0,l:0},n=Math.round(216*x(e/100,0,1)),r=Math.round(186*x(1-2*t/(200-e),0,1));return U({left:`${-16/2+n}px`,top:`${-16/2+r}px`,background:zr(this.state.currentHslaColor)})}get colorPreviewStyle(){return U({"background-color":zr(this.state.currentHslaColor)})}get checkmarkColor(){return dd(this.props.currentColor)}get isHexColorInputValid(){return!this.state.customHexColor||kr(this.state.customHexColor)}setCustomGradient({x:e,y:t}){let n=x(e,0,216),r=x(t,0,186),i=n/216,a=r/186,o=100*i,s=100*(1-a)*(1-.5*i);this.updateColor({s:o,l:s})}setCustomHue(e){let t=Math.round(x(360*e/216,0,359));this.updateColor({h:t})}updateColor(e){this.state.currentHslaColor={...this.state.currentHslaColor,...e},this.state.customHexColor=zr(this.state.currentHslaColor)}onColorClick(e){e&&this.props.onColorPicked(Or(e))}resetColor(){this.props.onColorPicked(``)}toggleColorPicker(){this.state.showGradient=!this.state.showGradient}dragGradientPointer(e){let t={x:e.offsetX,y:e.offsetY};this.setCustomGradient(t);let n={x:e.clientX,y:e.clientY};RN(e=>{let r={x:e.clientX,y:e.clientY},i=r.x-n.x,a=r.y-n.y,o={x:t.x+i,y:t.y+a};this.setCustomGradient(o)},()=>{})}dragHuePointer(e){let t=e.offsetX,n=e.clientX;this.setCustomHue(t),RN(e=>{let r=t+(e.clientX-n);this.setCustomHue(r)},()=>{})}setHexColor(e){let t=e.target.value.replace(`##`,`#`).slice(0,7);this.state.customHexColor=t,kr(t)&&(this.state.currentHslaColor={...Br(t),a:1})}addCustomColor(e){!Ar(this.state.currentHslaColor)||!kr(this.state.customHexColor)||this.props.onColorPicked(Or(this.state.customHexColor))}isSameColor(e,t){return Ur(e,t)}},Q=class extends t.Component{static template=`o_spreadsheet.Section`;static props={class:{type:String,optional:!0},title:{type:String,optional:!0},slots:Object}},BN=class extends t.Component{static template=`o-spreadsheet.RoundColorPicker`;static components={Section:Q,ColorPicker:zN};static props={currentColor:{type:String,optional:!0},title:{type:String,optional:!0},onColorPicked:Function,disableNoColor:{type:Boolean,optional:!0}};colorPickerButtonRef=(0,t.useRef)(`colorPickerButton`);state;setup(){this.state=(0,t.useState)({pickerOpened:!1}),(0,t.useExternalListener)(window,`click`,this.closePicker)}closePicker(){this.state.pickerOpened=!1}togglePicker(){this.state.pickerOpened=!this.state.pickerOpened}onColorPicked(e){this.props.onColorPicked(e),this.state.pickerOpened=!1}get colorPickerAnchorRect(){let e=this.colorPickerButtonRef.el;return op(e)}get buttonStyle(){return U({background:this.props.currentColor})}},VN=class extends DM{static template=`o-spreadsheet-ListCriterionForm`;static components={CriterionInput:MN,RoundColorPicker:BN,Select:EM};state=(0,t.useState)({items:[],focusedValueIndex:this.props.autofocus?0:void 0});setup(){super.setup();let e=this.props.criterion.values||[],n=this.props.criterion.colors||{};this.state.items=Array.from({length:Math.max(e.length,2)},(t,r)=>{let i=e[r]??``;return{value:i,color:i?n[i]:void 0}});let r=e=>{e.criterion.displayStyle===void 0&&this.updateCriterion({displayStyle:`chip`})};(0,t.onWillUpdateProps)(r),(0,t.onWillStart)(()=>r(this.props))}syncCriterion(){let e=this.state.items.map(e=>e.value),t={};for(let{value:e,color:n}of this.state.items)e?.trim()!==``&&n&&(t[e]=n);this.updateCriterion({values:e,colors:t})}onValueChanged(e,t){this.state.items[e].value=t,this.syncCriterion()}onColorChanged(e,t){this.state.items[e].color=t,this.syncCriterion()}onAddAnotherValue(){this.state.items.push({value:``})}removeItem(e){this.state.items.splice(e,1),this.syncCriterion()}onChangedDisplayStyle(e){this.updateCriterion({displayStyle:e})}onKeyDown(e,t){(e.key===`Enter`||e.key===`Tab`)&&t===this.state.items.length-1?(this.onAddAnotherValue(),this.state.focusedValueIndex=t+1,e.preventDefault()):e.key===`Enter`&&(this.state.focusedValueIndex=t+1)}onBlurInput(){this.state.focusedValueIndex=void 0}get displayTypeOptions(){return[{value:`chip`,label:k(`Chip`)},{value:`arrow`,label:k(`Arrow`)},{value:`plainText`,label:k(`Plain text`)}]}};function HN(){let e,n=document.body.style.cursor,r=[],i=()=>{e=void 0,document.body.style.cursor=n,r.forEach(e=>e()),r=[]},a=(t,a)=>{let s=()=>{document.body.style.cursor=`move`,e&&(Object.assign(o.itemsStyle,e.getItemStyles()),a.onChange?.())};o.cancel=()=>{o.draggedItemId=void 0,o.itemsStyle={},document.body.style.cursor=n,a.onCancel?.(),i()};let c=(e,t)=>{o.draggedItemId=void 0,o.itemsStyle={},document.body.style.cursor=n,a.onDragEnd?.(e,t),i()};document.body.style.cursor=`move`,o.draggedItemId=a.draggedItemId;let l=t===`horizontal`?new KN(a.scrollableContainerEl):new GN(a.scrollableContainerEl);e=new UN({...a,container:l,onChange:s,onDragEnd:c,onCancel:o.cancel});let u=RN(e.onMouseMove.bind(e),e.onMouseUp.bind(e));r.push(u);let d=e.onScroll.bind(e);a.scrollableContainerEl.addEventListener(`scroll`,d),r.push(()=>a.scrollableContainerEl.removeEventListener(`scroll`,d)),r.push(e.destroy.bind(e))};(0,t.onWillUnmount)(()=>{i()});let o=(0,t.useState)({itemsStyle:{},draggedItemId:void 0,start:a,cancel:()=>{}});return o}var UN=class{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(){let e={};for(let t of this.items)e[t.id]=this.getItemStyle(t.id);return e}getItemStyle(e){let t=this.container.cssPositionProperty,n={};return n.position=`relative`,n[t]=(this.getItemsPositions()[e]||0)+`px`,n.transition=`${t} 0.5s`,n[`pointer-events`]=`none`,this.draggedItemId===e&&(n.transition=`${t} 0s`,n[`z-index`]=`1000`),U(n)}onScroll(){this.moveDraggedItemToPosition(this.currentMousePosition+this.scrollOffset)}onMouseMove(e){if(e.button>1){this.onCancel();return}let t=this.container.getMousePosition(e);if(this.currentMousePosition=t,t<this.container.start||t>this.container.end){this.startEdgeScroll(t<this.container.start?-1:1);return}else this.stopEdgeScroll();this.moveDraggedItemToPosition(t+this.scrollOffset)}moveDraggedItemToPosition(e){let t=this.getHoveredItemIndex(e,this.items),n=this.items.findIndex(e=>e.id===this.draggedItemId),r=this.items[n];if(this.deadZone&&this.isInZone(e,this.deadZone)){this.onChange(this.getItemsPositions());return}else this.isInZone(e,{start:r.position,end:r.position+r.size})&&(this.deadZone=void 0);if(n===t){this.onChange(this.getItemsPositions());return}let i=Math.min(n,t),a=Math.max(n,t),o=Math.sign(t-n),s=0;for(let e=i;e<=a;e++)e!==n&&(this.items[e].position-=o*r.size,s+=this.items[e].size);r.position+=o*s,this.items.sort((e,t)=>e.position-t.position),this.deadZone=o>0?{start:e,end:r.position}:{start:r.position+r.size,end:e},this.onChange(this.getItemsPositions())}onMouseUp(e){e.button!==0&&this.onCancel(),e.stopPropagation(),e.preventDefault();let t=this.items.findIndex(e=>e.id===this.draggedItemId);return this.onDragEnd(this.draggedItemId,t),this.stopEdgeScroll(),!1}startEdgeScroll(e){this.edgeScrollIntervalId||=window.setInterval(()=>{let t=e*3;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(){let e={};for(let t of this.items){if(t.id!==this.draggedItemId){e[t.id]=t.position-t.positionAtStart;continue}let n=this.currentMousePosition-this.initialMousePosition+this.scrollOffset;n=Math.max(this.minPosition-t.positionAtStart,n),n=Math.min(this.maxPosition-t.positionAtStart-t.size,n),e[t.id]=n}return e}isInZone(e,t){return e>=t.start&&e<=t.end}get scrollOffset(){return this.container.scroll-this.initialScroll}destroy(){this.stopEdgeScroll()}},WN=class{el;constructor(e){this.el=e}get containerRect(){return this.el.getBoundingClientRect()}},GN=class extends WN{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}},KN=class extends WN{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}},qN=class{mutators=[`focus`,`unfocus`];focusedElement=null;focus(e){this.focusedElement=e}unfocus(e){this.focusedElement&&this.focusedElement===e&&(this.focusedElement=null)}},JN=class extends yr{initialRanges;inputHasSingleRange;colors;disabledRanges;mutators=[`resetWithRanges`,`focusById`,`unfocus`,`addEmptyRange`,`removeRange`,`changeRange`,`reset`,`confirm`,`updateColors`,`updateDisabledRanges`,`toggleEditMode`];ranges=[];focusedRangeIndex=null;mode=`text-edit`;inputSheetId;focusStore=this.get(qN);highlightStore=this.get(EN);constructor(e,t=[],n=!1,r=[],i=[]){if(super(e),this.initialRanges=t,this.inputHasSingleRange=n,this.colors=r,this.disabledRanges=i,n&&t.length>1)throw 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(this.focusedRangeIndex===null)return;let t=this.inputSheetId,n=this.getters.getActiveSheetId(),r=e.options.unbounded?this.getters.getUnboundedZone(n,e.anchor.zone):e.anchor.zone,i=this.getters.getRangeFromZone(n,r);if(e.mode===`newAnchor`&&!this.inputHasSingleRange&&this.ranges[this.focusedRangeIndex].xc.trim()!==``){let e=this.getters.getSelectionRangeString(i,t);this.insertNewRange(this.ranges.length,[e]),this.focusLast()}else{let e=i.parts,n=this.ranges[this.focusedRangeIndex].xc.trim();n&&(e=this.getters.getRangeFromSheetXC(t,n).parts);let r={...i,parts:e},a=this.getters.getSelectionRangeString(r,t);this.setRange(this.focusedRangeIndex,[a])}this.mode=`select-range`}handle(e){switch(e.type){case`ACTIVATE_SHEET`:if(e.sheetIdFrom!==e.sheetIdTo){let{col:t,row:n}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:0,row:0}),r=this.getters.expandZone(e.sheetIdTo,E({col:t,row:n}));this.model.selection.resetAnchor(this,{cell:{col:t,row:n},zone:r})}break;case`START_CHANGE_HIGHLIGHT`:let t=this.getters.getActiveSheetId(),n=this.getters.expandZone(t,e.zone),r=this.ranges.findIndex(e=>{let{xc:r,sheetName:i}=zc(e.xc),a=i||this.getters.getSheetName(this.inputSheetId);if(this.getters.getSheetName(t)!==a)return!1;let o=this.getters.getRangeFromSheetXC(t,r);return Dn(this.getters.expandZone(t,o.zone),n)});if(r!==-1){this.focus(r);let{left:e,top:t}=n;this.model.selection.resetAnchor(this,{cell:{col:e,row:t},zone:n})}break}}changeRange(e,t){if(this.inputHasSingleRange&&t.split(`,`).length>1)return;let n=this.getIndex(e);if(n!==null&&this.focusedRangeIndex!==n&&this.focus(n),n!==null){let e=t.replace(/^,+/,``).split(`,`).map(e=>e.trim());this.setRange(n,e),this.captureSelection()}}addEmptyRange(){this.inputHasSingleRange&&this.ranges.length===1||(this.insertNewRange(this.ranges.length,[``]),this.focusLast())}removeRange(e){if(this.ranges.length===1)return;let t=this.getIndex(e);t!==null&&this.removeRangeByIndex(t)}updateColors(e){this.colors=e;let t=new ii(this.ranges.length,this.colors);this.ranges=this.ranges.map(e=>({...e,color:t.next()}))}updateDisabledRanges(e){this.disabledRanges=e}confirm(){for(let e of this.selectionInputs)e.xc===``&&this.removeRange(e.id);let 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&&this.focusedRangeIndex!==null&&this.getters.isRangeValid(e.xc)?e.color:null,isFocused:this.hasMainFocus&&this.focusedRangeIndex===t,isValidRange:e.xc===``||this.getters.isRangeValid(e.xc),disabled:this.disabledRanges?.[t]}))}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(){let e=this.focusStore.focusedElement;return!!e&&e===this}get highlights(){return this.hasMainFocus?this.ranges.map(e=>this.inputToHighlights(e)).flat():[]}focusById(e){let t=this.getIndex(e);if(this.focusedRangeIndex!==t||this.mode===`select-range`){this.focus(t),this.mode=`text-edit`;return}return`noStateChange`}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(this.focusedRangeIndex===null)return;let e=this.ranges[this.focusedRangeIndex],t=this.getters.getActiveSheetId(),n=this.getters.getRangeFromSheetXC(t,e?.xc||`A1`).zone;this.model.selection.capture(this,{cell:{col:n.left,row:n.top},zone:n},{handleEvent:this.handleEvent.bind(this),release:this.unfocus.bind(this)})}resetWithRanges(e){e.length&&e.every(e=>this.getters.isRangeValid(e))&&(this.initialRanges=e),this.ranges=[],this.insertNewRange(0,e),this.ranges.length===0&&(this.insertNewRange(this.ranges.length,[``]),this.focusLast())}setContent(e,t){this.ranges[e]={...this.ranges[e],xc:t}}insertNewRange(e,t){let n=Math.max(0,...this.ranges.map(e=>Number(e.id))),r=new ii(this.ranges.length,this.colors);for(let t=0;t<e;t++)r.next();this.ranges.splice(e,0,...t.map((e,t)=>({xc:e,id:n+t+1,color:r.next()})))}setRange(e,t){let[,...n]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,n),n.length&&this.focus(e+n.length)}removeRangeByIndex(e){this.ranges.splice(e,1),this.focusedRangeIndex!==null&&this.focusLast()}inputToHighlights({xc:e,color:t}){return this.cleanInputs([e]).filter(e=>this.getters.isRangeValid(e)).filter(e=>this.shouldBeHighlighted(this.inputSheetId,e)).map(e=>{let{sheetName:n}=zc(e),r=n&&this.getters.getSheetIdByName(n)||this.inputSheetId;return{range:this.getters.getRangeFromSheetXC(r,e),color:t,interactive:!0}})}cleanInputs(e){return e.map(e=>e.split(`,`)).flat().map(e=>e.trim()).filter(e=>e!==``)}shouldBeHighlighted(e,t){let{sheetName:n}=zc(t),r=this.getters.getSheetIdByName(n),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(r===i||r===void 0&&i===e)}getIndex(e){let t=this.ranges.findIndex(t=>t.id===e);return t>=0?t:null}toggleEditMode(){this.mode=this.mode===`select-range`?`text-edit`:`select-range`}},YN=class extends t.Component{static template=`o-spreadsheet-SelectionInput`;static props={ranges:Array,hasSingleRange:{type:Boolean,optional:!0},required:{type:Boolean,optional:!0},autofocus:{type:Boolean,optional:!0},isInvalid:{type:Boolean,optional:!0},class:{type:String,optional:!0},onSelectionChanged:{type:Function,optional:!0},onSelectionConfirmed:{type:Function,optional:!0},onSelectionReordered:{type:Function,optional:!0},onSelectionRemoved:{type:Function,optional:!0},colors:{type:Array,optional:!0,default:[]},disabledRanges:{type:Array,optional:!0,default:[]},disabledRangeTitle:{type:String,optional:!0}};state=(0,t.useState)({isMissing:!1});dragAndDrop=HN();focusedInput=(0,t.useRef)(`focusedInput`);selectionRef=(0,t.useRef)(`o-selection`);DOMFocusableElementStore;store;get ranges(){return this.store.selectionInputs}get canAddRange(){return!this.props.hasSingleRange}get isInvalid(){return this.props.isInvalid||this.state.isMissing}get isConfirmable(){return this.store.isConfirmable}get isResettable(){return this.store.isResettable}get hasDisabledRanges(){return this.store.disabledRanges.some(Boolean)}setup(){(0,t.useEffect)(()=>this.focusedInput.el?.focus(),()=>[this.focusedInput.el]),(0,t.useEffect)(()=>{(this.store.isResettable||this.store.hasFocus)&&this.selectionRef.el?.offsetParent===null&&this.reset()}),this.DOMFocusableElementStore=D(FM),this.store=ur(JN,this.props.ranges,this.props.hasSingleRange||!1,this.props.colors,this.props.disabledRanges),this.props.autofocus&&this.store.focusById(this.store.selectionInputs[0]?.id),(0,t.onWillUpdateProps)(e=>{e.ranges.join()!==this.store.selectionInputValues.join()&&this.triggerChange(),e.ranges.join()!==this.props.ranges.join()&&e.ranges.join()!==this.store.selectionInputValues.join()&&this.store.resetWithRanges(e.ranges),e.colors?.join()!==this.props.colors?.join()&&e.colors?.join()!==this.store.colors.join()&&this.store.updateColors(e.colors||[]),!w(e.disabledRanges,this.props.disabledRanges)&&!w(e.disabledRanges,this.store.disabledRanges)&&this.store.updateDisabledRanges(e.disabledRanges||[])})}startDragAndDrop(e,t){if(t.button!==0||t.target.tagName===`SELECT`)return;let n=this.getRangeElementsRects(),r=this.ranges.map(e=>e.id),i=r.map((e,t)=>({id:e.toString(),size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.toString(),initialMousePosition:t.clientY,items:i,scrollableContainerEl:this.selectionRef.el,onDragEnd:(t,n)=>{let i=r.findIndex(t=>t===e);if(i===n)return;let a=S(0,r.length);a.splice(i,1),a.splice(n,0,i),this.props.onSelectionReordered?.(a),this.props.onSelectionConfirmed?.(),this.store.confirm()}})}getRangeElementsRects(){return Array.from(this.selectionRef.el.children).map(e=>e.getBoundingClientRect())}getColor(e){let t={};return e.color&&(t.color=e.color),this.store.mode===`select-range`&&(t[`caret-color`]=`transparent`),U(t)}triggerChange(){let e=this.store.selectionInputValues;this.props.onSelectionChanged?.(e)}onKeydown(e){e.key===`F2`?(e.preventDefault(),e.stopPropagation(),this.store.toggleEditMode()):e.key.startsWith(`Arrow`)?(e.stopPropagation(),this.store.mode===`select-range`&&(e.preventDefault(),LM(e,this.env.model.selection))):e.key===`Enter`?(e.target.blur(),this.isConfirmable&&this.confirm()):e.key===`Escape`&&(this.reset(),this.DOMFocusableElementStore.focus())}extractRanges(e){return this.props.hasSingleRange?e.split(`,`)[0]:e}focus(e){this.state.isMissing=!1,this.store.focusById(e)}addEmptyInput(){this.store.addEmptyRange()}removeInput(e){let t=this.store.selectionInputs.findIndex(t=>t.id===e);this.ranges.find(t=>t.id===e)?.xc&&(this.props.onSelectionRemoved?.(t),this.props.onSelectionConfirmed?.()),this.store.removeRange(e)}onInputChanged(e,t){let n=t.target,r=this.extractRanges(n.value);this.store.changeRange(e,r),this.triggerChange()}reset(){this.store.reset(),this.triggerChange()}confirm(){this.store.confirm();let e=this.store.selectionInputs.some(e=>this.env.model.getters.isRangeValid(e.xc));this.props.required&&!e&&(this.state.isMissing=!0),this.props.onSelectionChanged?.(this.store.selectionInputValues),this.props.onSelectionConfirmed?.()}},XN=class extends DM{static template=`o-spreadsheet-ValueInRangeCriterionForm`;static components={RoundColorPicker:BN,SelectionInput:YN,Select:EM};setup(){super.setup();let e=e=>{e.criterion.displayStyle===void 0&&this.updateCriterion({displayStyle:`chip`})};(0,t.onWillUpdateProps)(e),(0,t.onWillStart)(()=>e(this.props))}onRangeChanged(e){this.updateCriterion({values:[e]})}onChangedDisplayStyle(e){this.updateCriterion({displayStyle:e})}onColorChanged(e,t){let n={...this.props.criterion.colors};n[t]=e||void 0,this.updateCriterion({colors:n})}get values(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getDataValidationRangeValues(e,this.props.criterion);return new Set(t)}get displayTypeOptions(){return[{value:`chip`,label:k(`Chip`)},{value:`arrow`,label:k(`Arrow`)},{value:`plainText`,label:k(`Plain text`)}]}};let ZN={list:10,text:20,number:30,date:40,relative:45,misc:50},$=new B;$.add(`containsText`,{type:`containsText`,component:IN,category:`text`,sequence:10}),$.add(`notContainsText`,{type:`notContainsText`,component:IN,category:`text`,sequence:20}),$.add(`beginsWithText`,{type:`beginsWithText`,component:IN,category:`text`,sequence:25}),$.add(`endsWithText`,{type:`endsWithText`,component:IN,category:`text`,sequence:26}),$.add(`isEqualText`,{type:`isEqualText`,component:IN,category:`text`,sequence:30}),$.add(`isEmail`,{type:`isEmail`,component:void 0,category:`text`,sequence:40}),$.add(`isLink`,{type:`isLink`,component:void 0,category:`text`,sequence:50}),$.add(`dateIs`,{type:`dateIs`,component:PN,category:`date`,sequence:20}),$.add(`dateIsBefore`,{type:`dateIsBefore`,component:PN,category:`date`,sequence:30}),$.add(`dateIsOnOrBefore`,{type:`dateIsOnOrBefore`,component:PN,category:`date`,sequence:40}),$.add(`dateIsAfter`,{type:`dateIsAfter`,component:PN,category:`date`,sequence:50}),$.add(`dateIsOnOrAfter`,{type:`dateIsOnOrAfter`,component:PN,category:`date`,sequence:60}),$.add(`dateIsBetween`,{type:`dateIsBetween`,component:FN,category:`date`,sequence:70}),$.add(`dateIsNotBetween`,{type:`dateIsNotBetween`,component:FN,category:`date`,sequence:80}),$.add(`dateIsValid`,{type:`dateIsValid`,component:void 0,category:`date`,sequence:10}),$.add(`isEqual`,{type:`isEqual`,component:IN,category:`number`,sequence:10}),$.add(`isNotEqual`,{type:`isNotEqual`,component:IN,category:`number`,sequence:20}),$.add(`isGreaterThan`,{type:`isGreaterThan`,component:IN,category:`number`,sequence:50}),$.add(`isGreaterOrEqualTo`,{type:`isGreaterOrEqualTo`,component:IN,category:`number`,sequence:60}),$.add(`isLessThan`,{type:`isLessThan`,component:IN,category:`number`,sequence:30}),$.add(`isLessOrEqualTo`,{type:`isLessOrEqualTo`,component:IN,category:`number`,sequence:40}),$.add(`isBetween`,{type:`isBetween`,component:FN,category:`number`,sequence:70}),$.add(`isNotBetween`,{type:`isNotBetween`,component:FN,category:`number`,sequence:80}),$.add(`isBoolean`,{type:`isBoolean`,component:void 0,category:`misc`,sequence:10}),$.add(`isValueInList`,{type:`isValueInList`,component:VN,category:`list`,sequence:10}),$.add(`isValueInRange`,{type:`isValueInRange`,component:XN,category:`list`,sequence:20}),$.add(`customFormula`,{type:`customFormula`,component:IN,category:`misc`,sequence:20}),$.add(`isEmpty`,{type:`isEmpty`,component:void 0,category:`misc`,sequence:5}),$.add(`isNotEmpty`,{type:`isNotEmpty`,component:void 0,category:`misc`,sequence:6}),$.add(`top10`,{type:`top10`,component:LN,category:`relative`,sequence:7}),$.add(`uniqueValues`,{type:`uniqueValues`,component:void 0,category:`relative`,sequence:8}),$.add(`duplicateValues`,{type:`duplicateValues`,component:void 0,category:`relative`,sequence:9});function QN(e){let t=$.getAll().filter(t=>e.has(t.type)).sort((e,t)=>e.category===t.category?e.sequence-t.sequence:ZN[e.category]-ZN[t.category]);return t.map((e,n)=>({label:Z.get(e.type).name,value:e.type,separator:e.category!==t[n+1]?.category}))}var $N=class extends t.Component{static template=`o-spreadsheet-FilterMenuCriterion`;static props={filterPosition:Object,onCriterionChanged:Function,criterionOperators:Array};static components={Select:EM};state;setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.state.criterion=this.getFilterCriterionValue(e.filterPosition))}),this.state=(0,t.useState)({criterion:this.getFilterCriterionValue(this.props.filterPosition)})}getFilterCriterionValue(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilterCriterionValue({sheetId:t,...e});return n?.filterType===`criterion`?b(n):{filterType:`criterion`,type:`none`,values:[]}}get criterionOptions(){return[{label:k(`None`),value:`none`},...QN(new Set(this.props.criterionOperators))]}get criterionComponent(){return this.state.criterion.type===`none`?void 0:$.get(this.state.criterion.type).component}onCriterionChanged(e){this.state.criterion.values=e.values,this.state.criterion.dateValue=e.dateValue,this.props.onCriterionChanged(this.state.criterion)}onCriterionTypeChange(e){this.state.criterion.type=e,this.props.onCriterionChanged(this.state.criterion)}},eP=class extends t.Component{static template=`o-spreadsheet.Checkbox`;static props={label:{type:String,optional:!0},value:{type:Boolean,optional:!0},className:{type:String,optional:!0},name:{type:String,optional:!0},title:{type:String,optional:!0},disabled:{type:Boolean,optional:!0},onChange:Function};static defaultProps={value:!1};onChange(e){let t=e.target.checked;this.props.onChange(t)}},tP=class extends t.Component{static template=`o-spreadsheet-FilterMenuValueItem`;static components={Checkbox:eP};static props={value:String,isChecked:Boolean,isSelected:Boolean,onMouseMove:Function,onClick:Function,scrolledTo:{type:String,optional:!0}};itemRef=(0,t.useRef)(`menuValueItem`);setup(){(0,t.onWillPatch)(()=>{this.props.scrolledTo&&this.scrollListToSelectedValue()})}scrollListToSelectedValue(){this.itemRef.el&&this.itemRef.el.scrollIntoView?.({block:this.props.scrolledTo===`bottom`?`end`:`start`})}},nP=class extends t.Component{static template=`o-spreadsheet-FilterMenuValueList`;static props={filterPosition:Object,onUpdateHiddenValues:Function};static components={FilterMenuValueItem:tP};state=(0,t.useState)({values:[],displayedValues:[],textFilter:``,selectedValue:void 0,numberOfDisplayedValues:50,hasMoreValues:!1});searchBar=(0,t.useRef)(`filterMenuSearchBar`);setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.state.values=this.getFilterHiddenValues(e.filterPosition),this.computeDisplayedValues())}),this.state.values=this.getFilterHiddenValues(this.props.filterPosition),this.computeDisplayedValues()}getFilterHiddenValues(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilter({sheetId:t,...e});if(!n)return[];let r=this.env.model.getters.getFilterValue({sheetId:t,...e}),i=(n.filteredRange?Fn(n.filteredRange.zone):[]).map(e=>({position:e,cellValue:this.env.model.getters.getEvaluatedCell({sheetId:t,...e}).formattedValue}));r?.filterType!==`criterion`&&(i=i.filter(e=>!this.env.model.getters.isRowHidden(t,e.position.row)));let a=i.map(e=>e.cellValue),o=r?.filterType===`values`?r.hiddenValues:[],s=new Set(o.map(Ul)),c=new Set,l=[],u=e=>{let t=Ul(e);c.has(t)||(l.push({string:e||``,checked:r?.filterType===`criterion`?!1:!s.has(t),normalizedValue:t}),c.add(t))};return a.forEach(u),o.forEach(u),l.sort((e,t)=>e.normalizedValue.localeCompare(t.normalizedValue,void 0,{numeric:!0,sensitivity:`base`}))}checkValue(e){this.state.selectedValue=e.string,e.checked=!e.checked,this.searchBar.el?.focus(),this.updateHiddenValues()}onMouseMove(e){this.state.selectedValue=e.string}getSearchedValues(){return this.state.textFilter?_l(this.state.textFilter,this.state.values,e=>e.string):this.state.values}setAllChecked(e){let t=new Set(this.getSearchedValues());for(let n of this.state.values)t.has(n)&&(n.checked=e);this.updateHiddenValues()}selectAll(){this.setAllChecked(!0)}clearAll(){this.setAllChecked(!1)}updateHiddenValues(){let e=this.state.values.filter(e=>!e.checked).map(e=>e.string);this.props.onUpdateHiddenValues(e)}updateSearch(e){let t=e.target;this.state.textFilter=t.value,this.state.selectedValue=void 0,this.computeDisplayedValues()}computeDisplayedValues(){let e=this.getSearchedValues();this.state.displayedValues=e.slice(0,this.state.numberOfDisplayedValues),this.state.hasMoreValues=e.length>this.state.numberOfDisplayedValues}loadMoreValues(){this.state.numberOfDisplayedValues+=100,this.computeDisplayedValues()}onKeyDown(e){let t=this.state.displayedValues;if(t.length===0)return;let n;if(this.state.selectedValue!==void 0){let e=t.findIndex(e=>e.string===this.state.selectedValue);n=e===-1?void 0:e}switch(e.key){case`ArrowDown`:n=n===void 0?0:Math.min(n+1,t.length-1),e.preventDefault(),e.stopPropagation();break;case`ArrowUp`:n=n===void 0?t.length-1:Math.max(n-1,0),e.preventDefault(),e.stopPropagation();break;case`Enter`:n!==void 0&&this.checkValue(t[n]),e.stopPropagation(),e.preventDefault();break}this.state.selectedValue=n===void 0?void 0:t[n].string,(e.key===`ArrowUp`||e.key===`ArrowDown`)&&this.scrollListToSelectedValue(e.key)}clearScrolledToValue(){this.state.values.forEach(e=>e.scrolledTo=void 0)}scrollListToSelectedValue(e){this.clearScrolledToValue();let t=this.state.values.find(e=>e.string===this.state.selectedValue);t&&(t.scrolledTo=e===`ArrowUp`?`top`:`bottom`)}},rP=class extends t.Component{static template=`o-spreadsheet-FilterMenu`;static props={filterPosition:Object,onClosed:{type:Function,optional:!0}};static components={FilterMenuValueList:nP,SidePanelCollapsible:TM,FilterMenuCriterion:$N};criterionCategory=`text`;updatedCriterionValue;setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.updatedCriterionValue=void 0,this.criterionCategory=this.getCriterionCategory(e.filterPosition))}),this.criterionCategory=this.getCriterionCategory(this.props.filterPosition)}get isSortable(){if(!this.table)return!1;let e=this.env.model.getters.getCoreTableMatchingTopLeft(this.table.range.sheetId,this.table.range.zone);return!this.env.model.getters.isReadonly()&&e?.type!==`dynamic`}get table(){let e=this.env.model.getters.getActiveSheetId(),t=this.props.filterPosition;return this.env.model.getters.getTable({sheetId:e,...t})}get filterValueType(){let e=this.env.model.getters.getActiveSheetId(),t=this.props.filterPosition;return this.env.model.getters.getFilterValue({sheetId:e,...t})?.filterType}getCriterionCategory(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilter({sheetId:t,...e});if(!n||!n.filteredRange)return`text`;let r={text:0,number:0,date:0},i=n.filteredRange.zone;for(let n=i.top;n<=i.bottom&&!(n>100);n++){let i=this.env.model.getters.getEvaluatedCell({sheetId:t,row:n,col:e.col});i.type===`text`||i.type===`boolean`?r.text++:i.type===`number`&&(i.format&&os(i.format)?r.date++:r.number++)}let a=Math.max(r.text,r.number,r.date);return Object.keys(r).find(e=>r[e]===a)||`text`}onUpdateHiddenValues(e){this.updatedCriterionValue={filterType:`values`,hiddenValues:e}}onCriterionChanged(e){this.updatedCriterionValue=e}confirm(){if(!this.updatedCriterionValue){this.props.onClosed?.();return}let e=this.props.filterPosition;this.env.model.dispatch(`UPDATE_FILTER`,{...e,sheetId:this.env.model.getters.getActiveSheetId(),value:this.updatedCriterionValue}),this.props.onClosed?.()}get criterionOperators(){return this.criterionCategory===`date`?Um:this.criterionCategory===`number`?Hm:Vm}cancel(){this.props.onClosed?.()}sortFilterZone(e){let t=this.props.filterPosition,n=this.table?.range.zone;if(!t||!n||n.top===n.bottom)return;let r=this.env.model.getters.getActiveSheetId(),i={...n,top:n.top+1},a={col:t.col,row:i.top};CM(this.env,r,a,i,e,{emptyCellAsZero:!0,sortHeaders:!0}),this.props.onClosed?.()}};let iP={onOpen:(e,t)=>({isOpen:!0,props:{filterPosition:e},Component:rP,cellCorner:`bottom-left`})};var aP=class extends yr{mutators=[`open`,`close`];persistentPopover;hoveredCell=this.get(Bv);handle(e){switch(e.type){case`ACTIVATE_SHEET`:this.close()}}open({col:e,row:t},n){let r=this.getters.getActiveSheetId();yM.contains(n)&&(this.persistentPopover={col:e,row:t,sheetId:r,type:n})}close(){if(!this.persistentPopover)return`noStateChange`;this.persistentPopover=void 0}get persistentCellPopover(){return this.persistentPopover&&{isOpen:!0,...this.persistentPopover}||{isOpen:!1}}get isOpen(){return this.persistentPopover!==void 0}get cellPopover(){let e=this.getters.getActiveSheetId();if(this.persistentPopover&&this.getters.isVisibleInViewport(this.persistentPopover)){let e=this.getters.getMainCellPosition(this.persistentPopover),t=yM.get(this.persistentPopover.type).onOpen?.(e,this.getters);return t?.isOpen?{...t,anchorRect:this.computePopoverAnchorRect(this.persistentPopover)}:{isOpen:!1}}let{col:t,row:n}=this.hoveredCell;if(t===void 0||n===void 0||!this.getters.isVisibleInViewport({sheetId:e,col:t,row:n}))return{isOpen:!1};let r=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),i=yM.getAll().map(e=>e.onHover?.(r,this.getters)).find(e=>e?.isOpen);return i?.isOpen?{...i,anchorRect:this.computePopoverAnchorRect(r)}:{isOpen:!1}}computePopoverAnchorRect({col:e,row:t}){let n=this.getters.getActiveSheetId(),r=this.getters.getMerge({sheetId:n,col:e,row:t});return r?this.getters.getVisibleRect(r):this.getters.getVisibleRect(E({col:e,row:t}))}},oP=class extends t.Component{static template=`o-spreadsheet-LinkDisplay`;static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};cellPopovers;setup(){this.cellPopovers=D(aP)}get cell(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t})}get link(){if(this.cell.link)return this.cell.link;let{col:e,row:t}=this.props.cellPosition;throw Error(`LinkDisplay Component can only be used with link cells. ${T(e,t)} is not a link.`)}getUrlRepresentation(e){return rc(e,this.env.model.getters)}openLink(e){ic(this.link,this.env,gp(e))}edit(){let{col:e,row:t}=this.props.cellPosition;this.env.model.selection.selectCell(e,t),this.cellPopovers.open({col:e,row:t},`LinkEditor`)}unlink(){let e=this.env.model.getters.getActiveSheetId(),{col:t,row:n}=this.props.cellPosition,r=this.env.model.getters.getCellComputedStyle({sheetId:e,col:t,row:n}),i=r?.textColor===`#017E84`?void 0:r?.textColor;this.env.model.dispatch(`UPDATE_CELL`,{col:t,row:n,sheetId:e,content:this.link.label,style:{...r,textColor:i,underline:void 0}})}};let sP={onHover:(e,t)=>{let n=t.getEvaluatedCell(e);return!t.isDashboard()&&n.link&&t.isVisibleInViewport(e)?{isOpen:!0,Component:oP,props:{cellPosition:e},cellCorner:`bottom-left`}:{isOpen:!1}}},cP={name:k(`Link sheet`),children:[e=>e.model.getters.getSheetIds().map(t=>e.model.getters.getSheet(t)).map(e=>({id:e.id,name:e.name,execute:()=>ot(e.name,ut(e.id))}))]},lP={name:k(`Delete`),isVisible:e=>e.model.getters.getVisibleSheetIds().length>1,execute:e=>e.askConfirmation(k(`Are you sure you want to delete this sheet?`),()=>{e.model.dispatch(`DELETE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName()})}),icon:`o-spreadsheet-Icon.TRASH`},uP={name:k(`Duplicate`),execute:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSheetName(t),r=e.model.uuidGenerator.smallUuid(),i=e.model.getters.getDuplicateSheetName(n);e.model.dispatch(`DUPLICATE_SHEET`,{sheetId:t,sheetIdTo:r,sheetNameTo:i}),e.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:t,sheetIdTo:r})},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.COPY`},dP=e=>({name:k(`Rename`),execute:e.renameSheetCallback,icon:`o-spreadsheet-Icon.RENAME_SHEET`}),fP=e=>({name:k(`Change color`),execute:e.openSheetColorPickerCallback,icon:`o-spreadsheet-Icon.PAINT_FORMAT`}),pP={name:k(`Move right`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getVisibleSheetIds();return n.indexOf(t)!==n.length-1},execute:e=>e.model.dispatch(`MOVE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),delta:1}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.MOVE_SHEET_RIGHT`},mP={name:k(`Move left`),isVisible:e=>{let t=e.model.getters.getActiveSheetId();return e.model.getters.getVisibleSheetIds()[0]!==t},execute:e=>e.model.dispatch(`MOVE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),delta:-1}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.MOVE_SHEET_LEFT`},hP={name:k(`Hide sheet`),isVisible:e=>e.model.getters.getVisibleSheetIds().length!==1,execute:e=>e.model.dispatch(`HIDE_SHEET`,{sheetId:e.model.getters.getActiveSheetId()}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.HIDE_SHEET`},gP={name:k(`Lock sheet`),isVisible:e=>!e.model.getters.isCurrentSheetLocked(),execute:e=>{e.model.dispatch(`LOCK_SHEET`,{sheetId:e.model.getters.getActiveSheetId()})},icon:`o-spreadsheet-Icon.LOCK`},_P={name:k(`Unlock sheet`),isVisible:e=>e.model.getters.isCurrentSheetLocked(),execute:e=>{e.model.dispatch(`UNLOCK_SHEET`,{sheetId:e.model.getters.getActiveSheetId()})},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.UNLOCK`};var vP=class extends B{replace(e,t){return t.id===void 0&&(t.id=e),this.content[e]=t,this}addChild(e,t,n){return this._replaceChild(e,t,n,{force:!1})}replaceChild(e,t,n){return this._replaceChild(e,t,n,{force:!0})}_replaceChild(e,t,n,r={force:!0}){typeof n!=`function`&&n.id===void 0&&(n.id=e);let i=t.splice(0,1)[0],a=this.content[i];if(!a)throw Error(`Path ${i+`:`+t.join(`:`)} not found`);for(let e of t){let n=a.children;if(!n||typeof n==`function`)throw Error(`${e} is either not a node or it's dynamically computed`);if(a=n.find(t=>t.id===e),!a)throw Error(`Path ${i+`:`+t.join(`:`)} not found`)}a.children||=[];let o=a.children;if(!o||typeof o==`function`)throw Error(`${t} is either not a node or it's dynamically computed`);if(`id`in n){let e=o.findIndex(e=>`id`in e&&e.id===n.id);if(e>-1){if(!r.force)throw Error(`A child with the id "${n.id}" already exists.`);return a.children.splice(e,1,n),this}}return a.children.push(n),this}getMenuItems(){return p(this.getAll())}};let yP=new vP;yP.add(`sheet`,{...cP,sequence:10});var bP=class extends t.Component{static template=`o-spreadsheet-LinkEditor`;static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};static components={MenuPopover:Nv};menuItems=yP.getMenuItems();link=(0,t.useState)(this.defaultState);menu=(0,t.useState)({isOpen:!1});linkEditorMenuButtonRef=(0,t.useRef)(`linkEditorMenuButton`);urlInput=(0,t.useRef)(`urlInput`);setup(){(0,t.onMounted)(()=>this.urlInput.el?.focus())}get defaultState(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t});return r.link?{url:r.link.url,label:r.formattedValue,isUrlEditable:r.link.isUrlEditable}:{label:r.formattedValue,url:``,isUrlEditable:!0}}get menuButtonRect(){return ap(this.linkEditorMenuButtonRef)}onSpecialLink(e){let{detail:t}=e,n=ac(t);n&&(this.link.url=n.url,this.link.label=n.label,this.link.isUrlEditable=n.isUrlEditable)}getUrlRepresentation(e){return rc(e,this.env.model.getters)}openMenu(){this.menu.isOpen=!0}removeLink(){this.link.url=``,this.link.isUrlEditable=!0}save(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getLocale(),r=this.link.label?TS(this.link.label,n):this.link.url;this.env.model.dispatch(`UPDATE_CELL`,{col:e,row:t,sheetId:this.env.model.getters.getActiveSheetId(),content:ot(r,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();break}}};yM.add(`ErrorToolTip`,xM).add(`LinkCell`,sP).add(`LinkEditor`,{onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:bP,cellCorner:`bottom-left`})}).add(`FilterMenu`,iP);let xP=[`image/avif`,`image/bmp`,`image/gif`,`image/vnd.microsoft.icon`,`image/jpeg`,`image/png`,`image/tiff`,`image/webp`];function SP(e,t){let n=new Set(t.map(e=>e.left)),r=new Set(t.map(e=>e.right)),i=new Set(t.map(e=>e.top)),a=new Set(t.map(e=>e.bottom)),o=i.size===1&&a.size===1||n.size===1&&r.size===1?Bn(t):[t[t.length-1]],s=o.map(e=>Fn(e)).flat();return{sheetId:e,zones:t,clippedZones:o,columnsIndexes:[...new Set(s.map(e=>e.col))].sort((e,t)=>e-t),rowsIndexes:[...new Set(s.map(e=>e.row))].sort((e,t)=>e-t)}}function CP(e,t,n){let r=Math.max(e.right-t+1,e.left),i=Math.max(e.bottom-n+1,e.top),a=[];for(let o=e.left;o<=r;o+=t)for(let r=e.top;r<=i;r+=n)a.push({left:o,top:r,bottom:r+n-1,right:o+t-1});return a}function wP(e,t){if(!t.length||!t[0].length)return e;let n=t[0].length,r=t.length;return e.map(e=>CP(e,n,r)).flat()}function TP(e){let t;e[`text/html`]&&(t=EP(new DOMParser().parseFromString(e[`text/html`],`text/html`)));let n=e[`text/plain`]||``,r;if(!n.trim()){for(let t of xP)if(e[t]){r=e[t];break}}return{text:n,data:t,imageBlob:r}}function EP(e){if([...e.documentElement.attributes].some(e=>e.value.includes(`microsoft`)))return;let t=e.querySelector(`div`)?.getAttribute(`data-osheet-clipboard`);return t&&JSON.parse(t)}let DP=(e,t,n,r)=>{e.forEach(({handlerName:e,handler:i})=>{let a=t[e];a&&i.paste(n,a,r)})};function OP(e,t,n,r,i){let a,o=[],s={sheetId:e,zones:t};for(let{handlerName:c,handler:l}of r){let r=n[c];if(!r)continue;let u=l.getPasteTarget(e,t,r,i);u.figureId&&(s.figureId=u.figureId);for(let e of u.zones){if(o.push(e),a===void 0){a=e;continue}a=wn(a,e)}}return{target:s,zone:a,selectedZones:o}}let kP=(e,t,n)=>{let r={col:t[0].left,row:t[0].top};e.getBackToDefault(),e.selectZone({cell:r,zone:wn(...n)},{scrollIntoView:!1})},AP={type:`bar`,title:{},dataSets:[],legendPosition:`none`,dataSetsHaveTitle:!1,stacked:!1},jP={type:`line`,title:{},dataSets:[],legendPosition:`none`,dataSetsHaveTitle:!1,stacked:!1,cumulative:!1,labelsAsText:!1};function MP(e,t){return yn(e.getUnboundedZone(e.getActiveSheetId(),t))}function NP(e){if(!e.length)return`empty`;let t={number:0,text:0,date:0,percentage:0},n=0,r=`empty`;for(let i of e){let e=null;if(i.type===`number`?e=i.format&&os(i.format)?`date`:i.format?.includes(`%`)?`percentage`:`number`:i.type===`text`&&(e=`text`),e){let i=++t[e];i>n&&(n=i,r=e)}}return r}function PP(e,t){let n=[];for(let r of Zn(e)){let e=t.getEvaluatedCellsInZone(t.getActiveSheetId(),r);n.push({zone:r,type:NP(e)})}return n}function FP(e,t){let n=e.getEvaluatedCellsInZone(e.getActiveSheetId(),t).map(e=>e.value?.toString().trim()||``).filter(e=>e);return{uniqueCount:new Set(n).size,totalCount:n.length}}function IP(e,t){let n=e.getEvaluatedCell({sheetId:e.getActiveSheetId(),col:t.zone.left,row:t.zone.top});return![`number`,`empty`].includes(n.type)}function LP(e,t){let{type:n,zone:r}=e,i=t.getActiveSheetId(),a=IP(t,e),o=MP(t,r),s=t.getEvaluatedCell({sheetId:i,col:r.left,row:r.top});if(Gn(r)===1)return BP(r,t);switch(n){case`percentage`:return{type:`pie`,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],legendPosition:`none`,dataSetsHaveTitle:a};case`text`:let e=t.getEvaluatedCellsInZone(i,r).reduce((e,t)=>t.value===s.value?e+1:e,0),n=s.value!==null&&e===1;return{type:`pie`,title:n?{text:String(s.value)}:{},dataSets:[{dataRange:o}],labelRange:o,dataSetsHaveTitle:n,aggregated:!0,legendPosition:`top`};case`date`:return{...jP,type:`line`,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],dataSetsHaveTitle:a}}return{...AP,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],dataSetsHaveTitle:a}}function RP(e,t){if(e.length!==2)throw Error(`buildTwoColumnChart expects exactly two columns`);if(e[1].type===`percentage`)return{type:`pie`,title:{},dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1]),aggregated:!0,legendPosition:`none`};if(e[0].type===`number`&&e[1].type===`number`)return{type:`scatter`,title:{},dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1]),labelsAsText:!1,legendPosition:`none`};if(e[0].type===`date`&&e[1].type===`number`)return{...jP,type:`line`,dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[0])};if(e[0].type===`text`&&e[1].type===`number`){let n=e[0],r=e[1],{uniqueCount:i,totalCount:a}=FP(t,n.zone),o=IP(t,r);if(i!==a)return{type:`treemap`,title:{},dataSets:[{dataRange:MP(t,n.zone)}],labelRange:MP(t,r.zone),dataSetsHaveTitle:o,legendPosition:`none`}}return{...AP,dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1])}}function zP(e,t){if(e.length<3)throw Error(`buildMultiColumnChart expects at least three columns`);let n=e.some(e=>e.type!==`text`&&IP(t,e)),r=e[e.length-1],i=e.slice(0,e.length-1);if((r.type===`percentage`||r.type===`number`)&&i.every(e=>e.type===`text`)){let e=i.map(({zone:e})=>({dataRange:MP(t,e)}));return{type:i.length>=3?`sunburst`:`treemap`,title:{},dataSets:e,labelRange:MP(t,r.zone),dataSetsHaveTitle:n,legendPosition:`none`}}let a=e[0],o=e.slice(1),s=o.map(({zone:e})=>({dataRange:MP(t,e)}));return o.every(e=>e.type===`percentage`)?{type:`pie`,title:{},dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,aggregated:!1,legendPosition:`top`}:a.type===`date`&&o.every(e=>e.type===`number`)?{...jP,type:`line`,dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,legendPosition:`top`}:{...AP,dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,legendPosition:`top`}}function BP(e,t){let n=t.getCell({sheetId:t.getActiveSheetId(),col:e.left,row:e.top});return{type:`scorecard`,title:{},keyValue:MP(t,e),background:n?.style?.fillColor,baselineMode:Oe,baselineColorUp:ke,baselineColorDown:Ae}}function VP(e,t){let n=PP(e,t);if(n.length===0||n.every(e=>e.type===`empty`)){let e=n.map(({zone:e})=>({dataRange:MP(t,e)}));return{...AP,dataSets:e}}let r=n.filter(e=>e.type!==`empty`);switch(r.length){case 1:return LP(r[0],t);case 2:return RP(r,t);default:return zP(r,t)}}function HP(e,t,n=HA){let r=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,r);r.length===1&&!i&&Gn(r[0])===1&&(e.model.selection.selectTableAroundSelection(),r=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,r));let a=r.map(n=>e.model.getters.getRangeDataFromZone(t,n)),o=e.model.dispatch(`CREATE_TABLE`,{ranges:a,sheetId:t,config:n,tableType:i?`dynamic`:`static`});return o.isCancelledBecause(`TableOverlap`)?e.raiseError(sm.Errors.TableOverlap):o.isCancelledBecause(`NonContinuousTargets`)&&e.raiseError(sm.Errors.NonContinuousTargets),o}function UP(e,t){e.model.dispatch(`SET_FORMATTING_WITH_PIVOT`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function WP(e,t){e.model.dispatch(`SET_FORMATTING`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}let GP=async e=>qP(e),KP=async e=>qP(e,`asValue`);async function qP(e,t){let n=await e.clipboard.read();switch(n.status){case`ok`:let r=e.model.getters.getClipboardId(),i=TP(n.content),a=i.data?.clipboardId,o=e.model.getters.getSelectedZones();r===a?_M(e,o,t):await vM(e,o,i,t),e.model.getters.isCutOperation()&&t!==`asValue`&&await e.clipboard.write({"text/plain":``});break;case`notImplemented`:e.raiseError(k(`Pasting from the context menu is not supported in this browser. Use keyboard shortcuts ctrl+c / ctrl+v instead.`));break;case`permissionDenied`:e.raiseError(k(`Access to the clipboard denied by the browser. Please enable clipboard permission for this page in your browser settings.`));break}}let JP=e=>qP(e,`onlyFormat`),YP=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Clear rows`);let t,n,r=e.model.getters.getActiveRows();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.top,n=r.bottom}return t===n?k(`Clear row %s`,(t+1).toString()):k(`Clear rows %s - %s`,(t+1).toString(),(n+1).toString())},XP=e=>{let t=e.model.getters.getActiveSheetId(),n=[...e.model.getters.getActiveRows()].map(n=>e.model.getters.getRowsZone(t,n,n));e.model.dispatch(`DELETE_CONTENT`,{target:n,sheetId:e.model.getters.getActiveSheetId()})},ZP=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Clear columns`);let t,n,r=e.model.getters.getActiveCols();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.left,n=r.right}return t===n?k(`Clear column %s`,Kt(t)):k(`Clear columns %s - %s`,Kt(t),Kt(n))},QP=e=>{let t=e.model.getters.getActiveSheetId(),n=[...e.model.getters.getActiveCols()].map(n=>e.model.getters.getColsZone(t,n,n));e.model.dispatch(`DELETE_CONTENT`,{target:n,sheetId:e.model.getters.getActiveSheetId()})},$P=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Delete rows`);let t,n,r=e.model.getters.getActiveRows();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.top,n=r.bottom}return t===n?k(`Delete row %s`,(t+1).toString()):k(`Delete rows %s - %s`,(t+1).toString(),(n+1).toString())},eF=e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){let n=e.model.getters.getSelectedZones()[0];for(let e=n.top;e<=n.bottom;e++)t.push(e)}e.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),dimension:`ROW`,elements:t})},tF=(e,t)=>{if(e===`COL`&&t.model.getters.getActiveRows().size>0||e===`ROW`&&t.model.getters.getActiveCols().size>0)return!1;let n=t.model.getters.getActiveSheetId(),r=t.model.getters.getElementsFromSelection(e),i=t.model.getters.checkElementsIncludeAllVisibleHeaders(n,e,r),a=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(n,e,r);return!i&&!a},nF=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Delete columns`);let t,n,r=e.model.getters.getActiveCols();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.left,n=r.right}return t===n?k(`Delete column %s`,Kt(t)):k(`Delete columns %s - %s`,Kt(t),Kt(n))},rF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getElementsFromSelection(`ROW`);return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,`ROW`,n)},iF=e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){let n=e.model.getters.getSelectedZones()[0];for(let e=n.left;e<=n.right;e++)t.push(e)}e.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),dimension:`COL`,elements:t})},aF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getElementsFromSelection(`COL`);return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,`COL`,n)},oF=e=>{let t=e.model.getters.getActiveRows(),n,r;if(t.size)n=Rt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.top,r=t.bottom-t.top+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`before`,base:n,quantity:r,dimension:`ROW`})},sF=e=>{let t=e.model.getters.getActiveRows(),n,r;if(t.size)n=Lt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.bottom,r=t.bottom-t.top+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`after`,base:n,quantity:r,dimension:`ROW`})},cF=e=>{let t=e.model.getters.getActiveCols(),n,r;if(t.size)n=Rt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.left,r=t.right-t.left+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`before`,dimension:`COL`,base:n,quantity:r})},lF=e=>{let t=e.model.getters.getActiveCols(),n,r;if(t.size)n=Lt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.right,r=t.right-t.left+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`after`,dimension:`COL`,base:n,quantity:r})},uF=e=>{let t=e.model.getters.getElementsFromSelection(`COL`),n=t[0],r=t[t.length-1];return t.length===1?k(`Hide column %s`,Kt(n).toString()):r-n+1===t.length?k(`Hide columns %s - %s`,Kt(n).toString(),Kt(r).toString()):k(`Hide columns`)},dF=e=>{let t=e.model.getters.getElementsFromSelection(`ROW`),n=t[0],r=t[t.length-1];return t.length===1?k(`Hide row %s`,(n+1).toString()):r-n+1===t.length?k(`Hide rows %s - %s`,(n+1).toString(),(r+1).toString()):k(`Hide rows`)},fF=e=>{let t=e.model.getters,n=e.model.uuidGenerator.smallUuid(),r=t.getActiveSheetId(),i=t.getSelectedZones();i.length===1&&Gn(i[0])===1&&(e.model.selection.selectTableAroundSelection(),i=t.getSelectedZones());let a={width:536,height:335},{col:o,row:s,offset:c}=H_(t,a);e.model.dispatch(`CREATE_CHART`,{sheetId:r,figureId:n,chartId:e.model.uuidGenerator.smallUuid(),col:o,row:s,offset:c,size:a,definition:VP(i,e.model.getters)}).isSuccessful&&(e.model.dispatch(`SELECT_FIGURE`,{figureId:n}),e.openSidePanel(`ChartPanel`))},pF=e=>{let t=e.model.getters,n=e.model.uuidGenerator.smallUuid(),r=t.getActiveSheetId(),i={width:536,height:335},{col:a,row:o,offset:s}=H_(t,i);e.model.dispatch(`CREATE_CAROUSEL`,{sheetId:r,figureId:n,col:a,row:o,offset:s,size:i,definition:{items:[]}}).isSuccessful&&(e.model.dispatch(`SELECT_FIGURE`,{figureId:n}),e.openSidePanel(`CarouselPanel`,{figureId:n}))},mF=e=>{let t=e.model.uuidGenerator.smallUuid(),n=e.model.uuidGenerator.smallUuid();e.model.dispatch(`INSERT_NEW_PIVOT`,{pivotId:t,newSheetId:n}).isSuccessful&&e.openSidePanel(`PivotSidePanel`,{pivotId:t})},hF=e=>e.model.getters.getPivotIds().map((t,n)=>({id:`reinsert_dynamic_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:n,execute:e=>{let n=e.model.getters.getSelectedZone(),r=e.model.getters.getPivot(t).getCollapsedTableStructure().export();e.model.dispatch(`INSERT_PIVOT_WITH_TABLE`,{pivotId:t,table:r,col:n.left,row:n.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:`dynamic`}),e.model.dispatch(`REFRESH_PIVOT`,{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})),gF=e=>e.model.getters.getPivotIds().map((t,n)=>({id:`reinsert_static_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:n,execute:e=>{let n=e.model.getters.getSelectedZone(),r=e.model.getters.getPivot(t).getExpandedTableStructure();if(r.numberOfCells>5e5){e.notifyUser({type:`warning`,text:lm(r.numberOfCells,e.model.getters.getLocale()),sticky:!0});return}e.model.dispatch(`INSERT_PIVOT_WITH_TABLE`,{pivotId:t,table:r.export(),col:n.left,row:n.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:`static`}),e.model.dispatch(`REFRESH_PIVOT`,{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})),_F=async e=>{if(e.imageProvider){let t=e.model.getters.getActiveSheetId(),n=e.model.uuidGenerator.smallUuid(),r=await e.imageProvider.requestImage(),i=U_(e.model.getters,r.size),{col:a,row:o,offset:s}=H_(e.model.getters,i);e.model.dispatch(`CREATE_IMAGE`,{sheetId:t,figureId:n,col:a,row:o,offset:s,size:i,definition:r})}},vF=e=>UP(e,`0.00%`),yF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZones(),r=e.model.getters.getConditionalFormats(t),i=e.model.getters.getRulesSelection(t,n);return i.length===1?e.openSidePanel(`ConditionalFormattingEditor`,{cf:r.find(e=>e.id===i[0]),isNewCf:!1}):e.openSidePanel(`ConditionalFormatting`)},bF=e=>{let{col:t,row:n}=e.model.getters.getActivePosition();e.getStore(aP).open({col:t,row:n},`LinkEditor`)},xF=e=>{let t=e.model.getters.getActiveSheetId(),{col:n,row:r}=e.model.getters.getActivePosition(),i=e.model.getters.getEvaluatedCell({sheetId:t,col:n,row:r});return i&&i.link?k(`Edit link`):k(`Insert link`)},SF=e=>e.model.getters.getFirstTableInSelection()?.config.hasFilters||!1,CF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZones(),r=e.model.getters.getTablesOverlappingZones(t,n);return r.length===1&&!r[0].isPivotTable},wF=e=>Yn(e.model.getters.getSelectedZones()),TF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getFirstTableInSelection();n?e.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{hasFilters:!0}}):HP(e,t,{...HA,hasFilters:!0,bandedRows:!1,styleId:`TableStyleLight11`})},EF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getFirstTableInSelection();n&&e.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{hasFilters:!1}})},DF=e=>{HP(e,e.model.getters.getActiveSheetId()).isSuccessful&&e.openSidePanel(`TableSidePanel`,{})},OF=e=>{let t=e.model.getters.getFirstTableInSelection();t&&e.model.dispatch(`REMOVE_TABLE`,{sheetId:e.model.getters.getActiveSheetId(),target:[t.range.zone]})},kF=e=>e.model.getters.getSelectedZones().length===1,AF=(e,t)=>{if(!kF(e))return!1;let n=t===`COL`?e.model.getters.getActiveCols():e.model.getters.getActiveRows(),r=t===`COL`?e.model.getters.getActiveRows():e.model.getters.getActiveCols(),i=e.model.getters.getActiveSheetId(),a=Dn(e.model.getters.getSelectedZone(),e.model.getters.getSheetZone(i));return kt(n)&&(r.size===0||a)},jF={name:e=>SF(e)?k(`Remove selected filters`):k(`Add filters`),isEnabled:e=>wF(e),execute:e=>SF(e)?EF(e):TF(e),icon:`o-spreadsheet-Icon.FILTER_ICON_ACTIVE`},MF={name:e=>{let t=fI(e);return t===1?k(`Insert row`):k(`Insert %s rows`,t.toString())},isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW`},NF={name:e=>{let t=fI(e);return t===1?k(`Insert row above`):k(`Insert %s rows above`,t.toString())},execute:oF,isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW_BEFORE`},PF={...NF,name:e=>{let t=fI(e);return t===1?k(`Row above`):k(`%s Rows above`,t.toString())}},FF={...NF,name:e=>{let t=fI(e);return t===1?k(`Insert row`):k(`Insert %s rows`,t.toString())},isVisible:kF,icon:`o-spreadsheet-Icon.INSERT_ROW_BEFORE`},IF={execute:sF,name:e=>{let t=fI(e);return t===1?k(`Insert row below`):k(`Insert %s rows below`,t.toString())},isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW_AFTER`},LF={...IF,name:e=>{let t=fI(e);return t===1?k(`Row below`):k(`%s Rows below`,t.toString())}},RF={name:e=>{let t=pI(e);return t===1?k(`Insert column`):k(`Insert %s columns`,t.toString())},isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL`},zF={name:e=>{let t=pI(e);return t===1?k(`Insert column left`):k(`Insert %s columns left`,t.toString())},execute:cF,isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL_BEFORE`},BF={...zF,name:e=>{let t=pI(e);return t===1?k(`Column left`):k(`%s Columns left`,t.toString())}},VF={...zF,name:e=>{let t=pI(e);return t===1?k(`Insert column`):k(`Insert %s columns`,t.toString())},isVisible:kF,icon:`o-spreadsheet-Icon.INSERT_COL_BEFORE`},HF={name:e=>{let t=pI(e);return t===1?k(`Insert column right`):k(`Insert %s columns right`,t.toString())},execute:lF,isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL_AFTER`},UF={...HF,name:e=>{let t=pI(e);return t===1?k(`Column right`):k(`%s Columns right`,t.toString())},execute:lF},WF={name:k(`Insert cells`),isVisible:e=>kF(e)&&e.model.getters.getActiveCols().size===0&&e.model.getters.getActiveRows().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL`},GF={name:k(`Insert cells and shift down`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`INSERT_CELL`,{zone:t,shiftDimension:`ROW`}))},isVisible:e=>e.model.getters.getActiveRows().size===0&&e.model.getters.getActiveCols().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL_SHIFT_DOWN`},KF={name:k(`Insert cells and shift right`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`INSERT_CELL`,{zone:t,shiftDimension:`COL`}))},isVisible:e=>e.model.getters.getActiveRows().size===0&&e.model.getters.getActiveCols().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL_SHIFT_RIGHT`},qF={name:k(`Chart`),execute:fF,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_CHART`},JF={name:k(`Carousel`),execute:pF,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.CAROUSEL`},YF={name:k(`Pivot table`),execute:mF,isEnabled:e=>!e.isSmall,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.PIVOT`},XF={name:k(`Image`),shortcut:`Ctrl+O`,execute:_F,isVisible:e=>e.imageProvider!==void 0,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_IMAGE`},ZF={name:()=>k(`Table`),description:`Alt+T`,execute:DF,isVisible:e=>wF(e)&&!e.model.getters.getFirstTableInSelection(),isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.PAINT_TABLE`},QF={name:k(`Function`),icon:`o-spreadsheet-Icon.FORMULA`},$F={name:k(`SUM`),execute:e=>e.startCellEdition(`=SUM(`)},eI={name:k(`AVERAGE`),execute:e=>e.startCellEdition(`=AVERAGE(`)},tI={name:k(`COUNT`),execute:e=>e.startCellEdition(`=COUNT(`)},nI={name:k(`MAX`),execute:e=>e.startCellEdition(`=MAX(`)},rI={name:k(`MIN`),execute:e=>e.startCellEdition(`=MIN(`)},iI={name:k(`All`),children:[aI]};function aI(){return dI(uO.getKeys().filter(e=>!uO.get(e).hidden))}let oI=()=>{let e=uO.content;return[...new Set(uO.getAll().filter(e=>!e.hidden).map(e=>e.category))].filter(C).sort().map((t,n)=>({name:t,children:dI(Object.keys(e).filter(n=>e[n].category===t&&!e[n].hidden)),sequence:60+n}))},sI={name:k(`Link`),description:`Ctrl+K`,execute:bF,icon:`o-spreadsheet-Icon.INSERT_LINK`},cI={name:k(`Checkbox`),execute:e=>{let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId(),r=t.map(t=>e.model.getters.getRangeDataFromZone(n,t));e.model.dispatch(`ADD_DATA_VALIDATION_RULE`,{ranges:r,sheetId:n,rule:{id:e.model.uuidGenerator.smallUuid(),criterion:{type:`isBoolean`,values:[]}}})},icon:`o-spreadsheet-Icon.INSERT_CHECKBOX`},lI={name:k(`Dropdown list`),execute:e=>{let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId(),r=t.map(t=>e.model.getters.getRangeDataFromZone(n,t)),i=e.model.uuidGenerator.smallUuid();e.model.dispatch(`ADD_DATA_VALIDATION_RULE`,{ranges:r,sheetId:n,rule:{id:i,criterion:{type:`isValueInList`,values:[],displayStyle:`chip`}}}),e.model.getters.getDataValidationRule(n,i)&&e.openSidePanel(`DataValidationEditor`,{ruleId:i,onCancel:()=>{e.model.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:n,id:i})}})},isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_DROPDOWN`},uI={name:k(`Insert sheet`),description:`Shift+F11`,execute:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSheetIds().indexOf(t)+1,r=e.model.uuidGenerator.smallUuid();e.model.dispatch(`CREATE_SHEET`,{sheetId:r,position:n,name:e.model.getters.getNextSheetName()}),e.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:t,sheetIdTo:r})},icon:`o-spreadsheet-Icon.INSERT_SHEET`};function dI(e){return e.sort().map((e,t)=>({name:e,sequence:t*10,execute:t=>t.startCellEdition(`=${e}(`)}))}function fI(e){let t=e.model.getters.getActiveRows();if(t.size)return t.size;{let t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function pI(e){let t=e.model.getters.getActiveCols();if(t.size)return t.size;{let t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}function mI({refName:e}){let n=(0,t.useRef)(e);(0,t.useEffect)(e=>{e?.focus()},()=>[n.el])}var hI=class extends t.Component{static props={value:[Number,String],onChange:Function,class:{type:String,optional:!0},id:{type:String,optional:!0},placeholder:{type:String,optional:!0},autofocus:{type:Boolean,optional:!0},alwaysShowBorder:{type:Boolean,optional:!0},selectContentOnFocus:{type:Boolean,optional:!0}};refName=`input`;inputRef;setup(){this.inputRef=(0,t.useRef)(this.refName),(0,t.useExternalListener)(window,`click`,e=>{e.target!==this.inputRef.el&&this.inputRef.el?.value!==this.props.value&&this.save()},{capture:!0}),this.props.autofocus&&mI({refName:this.refName}),(0,t.onWillUpdateProps)(e=>{document.activeElement!==this.inputRef.el&&this.inputRef.el&&(this.inputRef.el.value=e.value)}),(0,t.onMounted)(()=>{this.inputRef.el&&(this.inputRef.el.value=this.props.value.toString())})}onKeyDown(e){switch(e.key){case`Enter`:this.save(),e.preventDefault(),e.stopPropagation();break;case`Escape`:this.inputRef.el&&(this.inputRef.el.value=this.props.value.toString(),this.inputRef.el.blur()),e.preventDefault(),e.stopPropagation();break}}save(e=!1){let t=(this.inputRef.el?.value||``).trim();t!==this.props.value.toString()&&this.props.onChange(t),e||this.inputRef.el?.blur()}onMouseDown(e){e.target!==document.activeElement&&this.props.selectContentOnFocus&&(e.preventDefault(),e.stopPropagation())}onMouseUp(e){let t=e.target;t!==document.activeElement&&this.props.selectContentOnFocus&&(t.focus(),this.props.selectContentOnFocus&&t.select(),e.preventDefault(),e.stopPropagation())}},gI=class extends hI{static template=`o-spreadsheet-TextInput`;static components={};static props={...hI.props,errorMessage:{type:String,optional:!0}};get inputClass(){return[this.props.class,`w-100 os-input`,this.props.alwaysShowBorder?`o-input-border`:void 0,this.props.errorMessage?`o-invalid`:void 0].filter(C).join(` `)}},_I=class extends t.Component{static template=`o-spreadsheet-ActionButton`;static props={action:Object,hasTriangleDownIcon:{type:Boolean,optional:!0},selectedColor:{type:String,optional:!0},class:{type:String,optional:!0},onClick:{type:Function,optional:!0}};actionButton=h(this.props.action);setup(){(0,t.onWillUpdateProps)(e=>{e.action!==this.props.action&&(this.actionButton=h(e.action))})}get isVisible(){return this.actionButton.isVisible(this.env)}get isEnabled(){let e=this.actionButton.isEnabledOnLockedSheet||!this.env.model.getters.isCurrentSheetLocked();return this.actionButton.isEnabled(this.env)&&e}get isActive(){return this.actionButton.isActive?.(this.env)}get title(){let e=this.actionButton.name(this.env),t=this.actionButton.description(this.env)||this.actionButton.shortcut;return e+(t?` (${t})`:``)}get iconTitle(){return this.actionButton.icon(this.env)}onClick(e){this.isEnabled&&(this.props.onClick?.(e),this.actionButton.execute?.(this.env))}get buttonStyle(){return this.props.selectedColor?U({"border-bottom":`4px solid ${this.props.selectedColor}`,height:`16px`,"margin-top":`2px`}):``}},vI=class extends t.Component{static template=`o-spreadsheet-ColorPickerWidget`;static props={currentColor:{type:String,optional:!0},toggleColorPicker:Function,showColorPicker:Boolean,onColorPicked:Function,icon:String,title:{type:String,optional:!0},disabled:{type:Boolean,optional:!0},dropdownMaxHeight:{type:Number,optional:!0},class:{type:String,optional:!0}};static components={ColorPicker:zN};colorPickerButtonRef=(0,t.useRef)(`colorPickerButton`);get iconStyle(){return this.props.currentColor?`border-color: ${this.props.currentColor}`:`border-bottom-style: hidden`}get colorPickerAnchorRect(){let e=this.colorPickerButtonRef.el.getBoundingClientRect();return{x:e.x,y:e.y,width:e.width,height:e.height}}},yI=class extends t.Component{static template=`o-spreadsheet-NumberEditor`;static props={currentValue:Number,onValueChange:Function,onToggle:{type:Function,optional:!0},onFocusInput:{type:Function,optional:!0},class:String,valueIcon:{type:String,optional:!0},min:Number,max:Number,title:String,valueList:Array};static defaultProps={onFocusInput:()=>{}};static components={Popover:kv};dropdown=(0,t.useState)({isOpen:!1});inputRef=(0,t.useRef)(`inputNumber`);rootEditorRef=(0,t.useRef)(`NumberEditor`);valueListRef=(0,t.useRef)(`numberList`);DOMFocusableElementStore;setup(){this.DOMFocusableElementStore=D(FM),(0,t.useExternalListener)(window,`click`,this.onExternalClick,{capture:!0}),(0,t.onWillUpdateProps)(e=>{this.inputRef.el&&document.activeElement!==this.inputRef.el&&(this.inputRef.el.value=e.currentValue)}),(0,t.onMounted)(()=>{this.inputRef.el&&(this.inputRef.el.value=this.props.currentValue.toString())})}get popoverProps(){let{x:e,y:t,width:n,height:r}=this.rootEditorRef.el.getBoundingClientRect();return{anchorRect:{x:e,y:t,width:n,height:r},positioning:`bottom-left`,verticalOffset:0}}onExternalClick(e){!np(this.valueListRef.el,e)&&!np(this.rootEditorRef.el,e)&&this.closeList()}toggleList(){this.dropdown.isOpen?this.closeList():(this.props.onToggle?.(),this.inputRef.el.focus())}closeList(){this.dropdown.isOpen=!1}setValue(e){let t=x(Math.floor(parseFloat(e)),this.props.min,this.props.max);this.props.onValueChange(t),this.closeList()}setValueFromInput(e){this.setValue(e.target.value)}setValueFromList(e){this.setValue(e)}get currentValue(){return`${this.props.currentValue}`}onInputFocused(e){this.dropdown.isOpen=!0,e.target.select()}onInputKeydown(e){if(e.key===`Enter`||e.key===`Escape`){this.closeList();let t=e.target;e.key===`Escape`&&(t.value=`${this.props.currentValue}`),this.props.onToggle?.()}if(e.key===`Tab`){e.preventDefault(),e.stopPropagation(),this.closeList(),this.DOMFocusableElementStore.focus();return}}},bI=class extends t.Component{static template=`o-spreadsheet-FontSizeEditor`;static components={NumberEditor:yI};static props={currentFontSize:Number,onFontSizeChanged:Function,onToggle:{type:Function,optional:!0},onFocusInput:{type:Function,optional:!0},class:String};static defaultProps={onFocusInput:()=>{}};fontSizes=Le},xI=class extends t.Component{static template=`o-spreadsheet.TextStyler`;static components={ColorPickerWidget:vI,ActionButton:_I,FontSizeEditor:bI};static props={style:Object,updateStyle:{type:Function,optional:!0},defaultStyle:{type:Object,optional:!0},hasVerticalAlign:{type:Boolean,optional:!0},hasHorizontalAlign:{type:Boolean,optional:!0},hasBackgroundColor:{type:Boolean,optional:!0},class:{type:String,optional:!0}};openedEl=null;setup(){(0,t.useExternalListener)(window,`click`,this.onExternalClick)}state=(0,t.useState)({activeTool:``});updateFontSize(e){this.props.updateStyle?.({...this.props.style,fontSize:e})}toggleDropdownTool(e,t){let n=this.state.activeTool===e;this.closeMenus(),this.state.activeTool=n?``:e,this.openedEl=n?null:t.target}onExternalClick(e){this.openedEl!==e.target&&this.closeMenus()}onTextColorChange(e){this.props.updateStyle?.({...this.props.style,color:e}),this.closeMenus()}onFillColorChange(e){this.props.updateStyle?.({...this.props.style,fillColor:e}),this.closeMenus()}updateAlignment(e){this.props.updateStyle?.({...this.props.style,align:e}),this.closeMenus()}updateVerticalAlignment(e){this.props.updateStyle?.({...this.props.style,verticalAlign:e}),this.closeMenus()}toggleBold(){this.props.updateStyle?.({...this.props.style,bold:!this.bold})}toggleItalic(){this.props.updateStyle?.({...this.props.style,italic:!this.italic})}closeMenus(){this.state.activeTool=``,this.openedEl=null}get align(){return this.props.style.align??this.props.defaultStyle?.align}get verticalAlign(){return this.props.style.verticalAlign||this.props.defaultStyle?.verticalAlign}get bold(){return this.props.style.bold??this.props.defaultStyle?.bold}get italic(){return this.props.style.italic??this.props.defaultStyle?.italic}get currentFontSize(){return this.props.style.fontSize??this.props.defaultStyle?.fontSize??ye.fontSize}get boldButtonAction(){return{name:k(`Bold`),execute:()=>this.toggleBold(),isActive:()=>this.bold||!1,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.BOLD`}}get italicButtonAction(){return{name:k(`Italic`),execute:()=>this.toggleItalic(),isActive:()=>this.italic||!1,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ITALIC`}}get horizontalAlignButtonAction(){let e=`o-spreadsheet-Icon.ALIGN_LEFT`;return this.align===`center`?e=`o-spreadsheet-Icon.ALIGN_CENTER`:this.align===`right`&&(e=`o-spreadsheet-Icon.ALIGN_RIGHT`),{name:k(`Horizontal alignment`),icon:e,isEnabledOnLockedSheet:!0}}get horizontalAlignActions(){return[{name:k(`Left`),execute:()=>this.updateAlignment(`left`),isActive:()=>this.align===`left`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_LEFT`},{name:k(`Center`),execute:()=>this.updateAlignment(`center`),isActive:()=>this.align===`center`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_CENTER`},{name:k(`Right`),execute:()=>this.updateAlignment(`right`),isActive:()=>this.align===`right`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_RIGHT`}]}get verticalAlignButtonAction(){let e=`o-spreadsheet-Icon.ALIGN_MIDDLE`;return this.verticalAlign===`top`?e=`o-spreadsheet-Icon.ALIGN_TOP`:this.verticalAlign===`bottom`&&(e=`o-spreadsheet-Icon.ALIGN_BOTTOM`),{name:k(`Vertical alignment`),icon:e,isEnabledOnLockedSheet:!0}}get verticalAlignActions(){return[{name:k(`Top`),execute:()=>this.updateVerticalAlignment(`top`),isActive:()=>this.verticalAlign===`top`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_TOP`},{name:k(`Middle`),execute:()=>this.updateVerticalAlignment(`middle`),isActive:()=>this.verticalAlign===`middle`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_MIDDLE`},{name:k(`Bottom`),execute:()=>this.updateVerticalAlignment(`bottom`),isActive:()=>this.verticalAlign===`bottom`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_BOTTOM`}]}},SI=class extends t.Component{static template=`o-spreadsheet-CogWheelMenu`;static components={MenuPopover:Nv};static props={items:Array};buttonRef=(0,t.useRef)(`button`);menuState=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]});menuId=this.env.model.uuidGenerator.uuidv4();toggleMenu(e){e.closedMenuId!==this.menuId&&(this.menuState.isOpen=!this.menuState.isOpen,this.menuState.anchorRect=op(this.buttonRef.el),this.menuState.menuItems=p(this.props.items))}},CI=class extends t.Component{static template=`o-spreadsheet-CarouselPanel`;static props={onCloseSidePanel:Function,figureId:String};static components={Section:Q,TextInput:gI,TextStyler:xI,CogWheelMenu:SI};DEFAULT_CAROUSEL_TITLE_STYLE=Ve;dragAndDrop=HN();previewListRef=(0,t.useRef)(`previewList`);setup(){let e=[...this.carouselItems];(0,t.onWillUpdateProps)(()=>{w(this.carouselItems,e)||this.dragAndDrop.cancel(),e=[...this.carouselItems]})}get carouselItems(){return this.env.model.getters.getCarousel(this.props.figureId).items}get title(){return this.env.model.getters.getCarousel(this.props.figureId).title}get carousel(){return this.env.model.getters.getCarousel(this.props.figureId)}getPreviewDivStyle(e){return this.dragAndDrop.itemsStyle[this.getItemId(e)]||``}getItemId(e){return e.type===`chart`?e.chartId:`transparent-carousel`}addNewChartToCarousel(){this.env.model.dispatch(`ADD_NEW_CHART_TO_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId})}get hasDataView(){return this.carouselItems.some(e=>e.type===`carouselDataView`)}isCarouselItemActive(e){return w(this.env.model.getters.getSelectedCarouselItem(this.props.figureId),e)}addDataViewToCarousel(){let e=this.env.model.getters.getCarousel(this.props.figureId);this.updateItems([...e.items,{type:`carouselDataView`}])}activateCarouselItem(e){this.env.model.dispatch(`UPDATE_CAROUSEL_ACTIVE_ITEM`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,item:e})}editCarouselItem(e){e.type===`chart`&&(this.activateCarouselItem(e),this.env.model.dispatch(`SELECT_FIGURE`,{figureId:this.props.figureId}),this.env.openSidePanel(`ChartPanel`,{chartId:e.chartId}))}renameCarouselItem(e,t){let n=t.trim();if(!n||n===this.getItemTitle(e).toString())return;let r=[...this.carouselItems],i=this.carouselItems.findIndex(t=>w(t,e));i!==-1&&(r[i]={...e,title:n},this.updateItems(r))}deleteCarouselItem(e){let t=this.env.model.getters.getCarousel(this.props.figureId).items.filter(t=>!w(t,e));this.updateItems(t)}popOutCarouselItem(e){e.type===`chart`&&this.env.model.dispatch(`POPOUT_CHART_FROM_CAROUSEL`,{sheetId:this.carouselSheetId,carouselId:this.props.figureId,chartId:e.chartId})}duplicateCarouselChart(e){e.type===`chart`&&this.env.model.dispatch(`DUPLICATE_CAROUSEL_CHART`,{sheetId:this.carouselSheetId,carouselId:this.props.figureId,chartId:e.chartId,duplicatedChartId:this.env.model.uuidGenerator.smallUuid()})}onDragHandleMouseDown(e,t){if(t.button!==0)return;let n=Array.from(this.previewListRef.el.children).map(e=>op(e)),r=this.carouselItems.map((e,t)=>({id:this.getItemId(e),size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:this.getItemId(e),initialMousePosition:t.clientY,items:r,scrollableContainerEl:this.previewListRef.el,onDragEnd:(t,n)=>this.onDragEnd(e,n)})}onDragEnd(e,t){let n=this.carouselItems.findIndex(t=>w(t,e));if(n===-1||n===t)return;let r=[...this.env.model.getters.getCarousel(this.props.figureId).items];r.splice(n,1),r.splice(t,0,e),this.updateItems(r)}getItemTitle(e){return tv(this.env.model.getters,e)}getItemPreview(e){return ev(this.env.model.getters,e)}updateItems(e){this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...this.carousel,items:e}})}updateTitleText(e){let t=this.env.model.getters.getCarousel(this.props.figureId);this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...t,title:{...t.title,text:e}}})}updateTitleStyle(e){let t=this.env.model.getters.getCarousel(this.props.figureId);this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...t,title:{...t.title,...e}}})}get carouselAddChartInfoMessage(){return k(`Add a chart to the carousel. You can also add a chart by dragging and dropping it over the carousel figure.`)}getCogWheelMenuItems(e){let t=[];return e.type===`chart`&&(t.push({name:k(`Edit chart`),execute:()=>this.editCarouselItem(e),icon:`o-spreadsheet-Icon.EDIT`}),t.push({name:k(`Pop out chart`),execute:()=>this.popOutCarouselItem(e),icon:`o-spreadsheet-Icon.EXTERNAL`}),t.push({name:k(`Duplicate chart`),execute:()=>this.duplicateCarouselChart(e),icon:`o-spreadsheet-Icon.COPY`})),t.push({name:k(`Delete item`),execute:()=>this.deleteCarouselItem(e),icon:`o-spreadsheet-Icon.TRASH`}),t}get carouselSheetId(){let e=this.env.model.getters.getFigureSheetId(this.props.figureId);if(!e)throw Error(`Could not find the sheetId of the carousel figure`);return e}get carouselDataViewMessage(){return k(`The data view makes the carousel transparent, revealing the data underneath.`)}};let wI={chartId:String,definition:Object,canUpdateChart:Function,updateChart:Function};var TI=class extends t.Component{static template=`o-spreadsheet.ChartDataSeries`;static components={SelectionInput:YN,Section:Q};static props={ranges:Array,hasSingleRange:{type:Boolean,optional:!0},onSelectionChanged:Function,onSelectionReordered:{type:Function,optional:!0},onSelectionRemoved:{type:Function,optional:!0},onSelectionConfirmed:Function,title:{type:String,optional:!0},maxNumberOfUsedRanges:{type:Number,optional:!0},datasetOrientation:{type:String,optional:!0},canChangeDatasetOrientation:{type:Boolean,optional:!0},onFlipAxis:{type:Function,optional:!0}};get ranges(){return this.props.ranges.map(e=>e.dataRange)}get disabledRanges(){return this.props.ranges.map((e,t)=>this.props.maxNumberOfUsedRanges?t>=this.props.maxNumberOfUsedRanges:!1)}get colors(){return this.props.ranges.map(e=>e.backgroundColor)}get title(){return this.props.title?this.props.title:this.props.hasSingleRange?k(`Data range`):k(`Data series`)}},EI=class extends t.Component{static template=`o-spreadsheet-ValidationMessages`;static props={messages:Array,msgType:String,singleBox:{type:Boolean,optional:!0}};get divClasses(){return this.props.msgType===`warning`?`o-validation-warning`:this.props.msgType===`info`?`o-validation-info`:`o-validation-error`}get alertBoxes(){return this.props.singleBox?[this.props.messages]:this.props.messages.map(e=>[e])}},DI=class extends t.Component{static template=`o-spreadsheet.ChartErrorSection`;static components={Section:Q,ValidationMessages:EI};static props={messages:{type:Array,element:String}}},OI=class extends t.Component{static template=`o-spreadsheet.ChartLabelRange`;static components={SelectionInput:YN,Checkbox:eP,Section:Q};static props={title:{type:String,optional:!0},range:String,isInvalid:Boolean,onSelectionChanged:Function,onSelectionConfirmed:Function,options:{type:Array,optional:!0}};static defaultProps={title:k(`Categories / Labels`),options:[]}},kI=class extends t.Component{static template=`o-spreadsheet-GenericChartConfigPanel`;static components={ChartDataSeries:TI,ChartLabelRange:OI,Section:Q,Checkbox:eP,ChartErrorSection:DI};static props=wI;state=(0,t.useState)({datasetDispatchResult:void 0,labelsDispatchResult:void 0});dataSets=[];labelRange;datasetOrientation=void 0;chartTerms=tm;setup(){this.dataSets=this.props.definition.dataSets,this.labelRange=this.props.definition.labelRange,this.datasetOrientation=this.computeDatasetOrientation()}get errorMessages(){return[...this.state.datasetDispatchResult?.reasons||[],...this.state.labelsDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isDatasetInvalid(){return!!this.state.datasetDispatchResult?.isCancelledBecause(`InvalidDataSet`)}get isLabelInvalid(){return!!this.state.labelsDispatchResult?.isCancelledBecause(`InvalidLabelRange`)}get dataSetsHaveTitleLabel(){return this.datasetOrientation===`rows`?k(`Use col %(column_name)s as headers`,{column_name:Kt(this.calculateHeaderPosition()||0)}):k(`Use row %(row_position)s as headers`,{row_position:this.calculateHeaderPosition()||``})}getLabelRangeOptions(){let e=this.props.definition;return[{name:`aggregated`,label:this.chartTerms.AggregatedChart,value:(`aggregated`in e?e.aggregated:!1)??!1,onChange:this.onUpdateAggregated.bind(this)},{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:e.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}onUpdateDataSetsHaveTitle(e){this.props.updateChart(this.props.chartId,{dataSetsHaveTitle:e})}get canChangeDatasetOrientation(){let e=new Set,t=[],n=this.env.model.getters.getActiveSheetName(),r=this.dataSets.map(e=>e.dataRange);this.labelRange&&r.push(this.labelRange);for(let i of r){if(!gn(i))return!1;let r=zc(i),a=pn(r.xc);if(a.bottom===void 0||a.right===void 0||(t.push(a),e.add(r.sheetName||n),e.size>1))return!1}let i=er(t);if(i.length!==1)return!1;let{left:a,right:o,top:s,bottom:c}=i[0];return!t.some(e=>(e.top!==s||e.bottom!==c)&&(e.left!==a||e.right!==o))}computeDatasetOrientation(){let e=!1,t=!1;for(let n of this.dataSets){if(!gn(n.dataRange))return;let r=pn(n.dataRange);if(r.bottom===void 0||r.right===void 0)return;r.top===r.bottom&&(e=!0),r.left===r.right&&(t=!0)}if(e&&!t)return`rows`;if(!e&&t)return`columns`}setDatasetOrientation(e){let t=this.props.definition.dataSets.map(e=>e.dataRange),n=this.transposeDataSet([this.props.definition.labelRange,...t],e);if(n.length===0)return;let r=n.length>1?n.shift().dataRange:``;this.props.updateChart(this.props.chartId,{labelRange:r,dataSets:n}),this.dataSets=n,this.labelRange=r,this.datasetOrientation=e}onDataSeriesRangesChanged(e){this.dataSets=e.map((e,t)=>({...this.dataSets?.[t],dataRange:e})),this.state.datasetDispatchResult=this.props.canUpdateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesReordered(e){let t=Sf({dataSets:this.dataSets},this.dataSets.length);this.datasetOrientation=void 0;let n=this.dataSets.map(e=>t.next());this.dataSets=e.map(e=>({backgroundColor:n[e],...this.dataSets[e]})),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesRemoved(e){let t=Sf({dataSets:this.dataSets},this.dataSets.length),n=this.dataSets.map(e=>t.next());this.dataSets=this.dataSets.map((e,t)=>({backgroundColor:n[t],...e})).filter((t,n)=>n!==e),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesConfirmed(){this.dataSets=this.splitRanges,this.datasetOrientation=this.computeDatasetOrientation(),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets}),this.state.datasetDispatchResult.isSuccessful&&(this.dataSets=this.env.model.getters.getChartDefinition(this.props.chartId).dataSets)}get splitRanges(){let e=[];for(let t of this.dataSets){let n=t.dataRange;if(!this.env.model.getters.isRangeValid(n)){e.push(t);continue}let{sheetName:r}=zc(n),i=r?`${r}!`:``,a=pn(n);if(a.bottom!==a.top&&a.left!==a.right){if(this.datasetOrientation!==`rows`){if(a.right!==void 0)for(let n=a.left;n<=a.right;++n){let r=n===a.left?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:n,right:n,top:a.top,bottom:a.bottom})}`})}else if(a.bottom!==void 0)for(let n=a.top;n<=a.bottom;++n){let r=n===a.top?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:a.left,right:a.right,top:n,bottom:n})}`})}}else if(a.bottom!==void 0)for(let n=a.top;n<=a.bottom;++n){let r=n===a.top?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:a.left,right:a.right,top:n,bottom:n})}`})}else if(a.right!==void 0)for(let n=a.left;n<=a.right;++n){let r=n===a.left?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:n,right:n,top:a.top,bottom:a.bottom})}`})}}else e.push(t)}return e}getDataSeriesRanges(){return this.dataSets}onLabelRangeChanged(e){this.labelRange=e[0],this.state.labelsDispatchResult=this.props.canUpdateChart(this.props.chartId,{labelRange:this.labelRange})}onLabelRangeConfirmed(){this.state.labelsDispatchResult=this.props.updateChart(this.props.chartId,{labelRange:this.labelRange})}getLabelRange(){return this.labelRange||``}onUpdateAggregated(e){this.props.updateChart(this.props.chartId,{aggregated:e})}calculateHeaderPosition(){if(this.isDatasetInvalid||this.isLabelInvalid)return;let e=this.env.model.getters,t=e.getActiveSheetId(),n=nl(e,t,this.labelRange),r=od(e,this.dataSets,t,this.props.definition.dataSetsHaveTitle);if(r.length)return this.datasetOrientation===`rows`?r[0].dataRange.zone.left:r[0].dataRange.zone.top+1;if(n)return n.zone.top+1}get maxNumberOfUsedRanges(){return v_.get(this.props.definition.type).dataSeriesLimit}transposeDataSet(e,t){let n=this.env.model.getters;if(t===void 0)return e.filter(C).map(e=>({dataRange:e}));let r={},i=[],a=n.getFigureIdFromChartId(this.props.chartId),o=n.getFigureSheetId(a),s=n.getActiveSheet().name;o&&(s=n.getSheet(o).name);for(let t of e){if(!t)continue;if(!gn(t))return e.filter(C).map(e=>({dataRange:e}));let{sheetName:n,xc:i}=zc(t);n??=s,r[n]||(r[n]=[]),r[n].push(mn(i))}for(let e in r){let n=r[e],a=er(n);if(t===`columns`)for(let t of a)for(let n=t.left;n<=t.right;n++){let r=`${e===s?``:e+`!`}${yn({...t,left:n,right:n})}`;i.push({dataRange:r})}else for(let t of a)for(let n=t.top;n<=t.bottom;n++){let r=`${e===s?``:e+`!`}${yn({...t,top:n,bottom:n})}`;i.push({dataRange:r})}}return i}},AI=class extends kI{static template=`o-spreadsheet-BarConfigPanel`;get stackedLabel(){return this.props.definition.horizontal?this.chartTerms.StackedBarChart:this.chartTerms.StackedColumnChart}onUpdateStacked(e){this.props.updateChart(this.props.chartId,{stacked:e})}},jI=class extends t.Component{static template=`o-spreadsheet.BadgeSelection`;static props={choices:Array,onChange:Function,selectedValue:String}},MI=class extends t.Component{static template=`o-spreadsheet.ChartTitle`;static components={Section:Q,TextStyler:xI,TextInput:gI};static props={title:{type:String,optional:!0},placeholder:{type:String,optional:!0},updateTitle:Function,name:{type:String},style:Object,defaultStyle:{type:Object,optional:!0},updateStyle:Function};static defaultProps={title:``,placeholder:``};updateTitle(e){this.props.updateTitle(e)}},NI=class extends t.Component{static template=`o-spreadsheet-AxisDesignEditor`;static components={Section:Q,ChartTitle:MI,BadgeSelection:jI};static props={chartId:String,definition:Object,updateChart:Function,axesList:Array};state=(0,t.useState)({currentAxis:`x`});defaultFontSize=12;get axisTitleStyle(){return this.props.definition.axesDesign?.[this.state.currentAxis]?.title??{}}get badgeAxes(){return this.props.axesList.map(e=>({value:e.id,label:e.name}))}updateAxisEditor(e){this.state.currentAxis=e.target.value}getAxisTitle(){return(this.props.definition.axesDesign??{})[this.state.currentAxis]?.title.text||``}updateAxisTitle(e){let t=b(this.props.definition.axesDesign)??{};t[this.state.currentAxis]={...t[this.state.currentAxis],title:{...t?.[this.state.currentAxis]?.title,text:e}},this.props.updateChart(this.props.chartId,{axesDesign:t})}updateAxisTitleStyle(e){let t=b(this.props.definition.axesDesign)??{};t[this.state.currentAxis]={...t[this.state.currentAxis],title:e},this.props.updateChart(this.props.chartId,{axesDesign:t})}},PI=class extends t.Component{static template=`o-spreadsheet.RadioSelection`;static props={choices:Array,onChange:Function,selectedValue:{optional:!1},name:String,direction:{type:String,optional:!0}};static defaultProps={direction:`horizontal`}},FI=class extends t.Component{static template=`o-spreadsheet-GeneralDesignEditor`;static components={RoundColorPicker:BN,ChartTitle:MI,Section:Q,SidePanelCollapsible:TM,RadioSelection:PI};static props={...wI,defaultChartTitleFontSize:{type:Number,optional:!0},slots:{type:Object,optional:!0}};static defaultProps={defaultChartTitleFontSize:16};state;setup(){this.state=(0,t.useState)({activeTool:``})}get title(){return this.props.definition.title}toggleDropdownTool(e,t){let n=this.state.activeTool===e;this.state.activeTool=n?``:e}updateBackgroundColor(e){this.props.updateChart(this.props.chartId,{background:e})}updateTitle(e){let t={...this.title,text:e};this.props.updateChart(this.props.chartId,{title:t})}updateChartTitleStyle(e){let t={...this.title,...e};this.props.updateChart(this.props.chartId,{title:t}),this.state.activeTool=``}},II=class extends t.Component{static template=`o-spreadsheet-ChartHumanizeNumbers`;static components={Checkbox:eP};static props=wI;get title(){let e=this.env.model.getters.getLocale();return k(`E.g. 1234567 -> %(value)s`,{value:z(1234567,{format:bs({value:1234567},void 0,e),locale:e})})}},LI=class extends t.Component{static template=`o-spreadsheet-ChartLegend`;static components={Section:Q,Select:EM};static props=wI;updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`top`,label:k(`Top`)},{value:`bottom`,label:k(`Bottom`)},{value:`left`,label:k(`Left`)},{value:`right`,label:k(`Right`)}]}},RI=class extends hI{static template=`o-spreadsheet-NumberInput`;static components={};static props={...hI.props,min:{type:Number,optional:!0},max:{type:Number,optional:!0}};debouncedOnChange=pt(this.props.onChange.bind(this),100,!0);save(){let e=(this.inputRef.el?.value||``).trim();e!==this.props.value.toString()&&this.debouncedOnChange(e)}get inputClass(){return[this.props.class,`o-input`].join(` `)}},zI=class extends t.Component{static template=`o-spreadsheet-SeriesDesignEditor`;static components={SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,Select:EM};static props={...wI,slots:{type:Object,optional:!0}};state=(0,t.useState)({index:0});getDataSeries(){let e=this.env.model.getters.getChartRuntime(this.props.chartId);return!e||!(`chartJsConfig`in e)?[]:e.chartJsConfig.data.datasets.filter(e=>!Cd(e.xAxisID??``)).map(e=>e.label||``)}updateEditedSeries(e){this.state.index=Number(e)}updateDataSeriesColor(e){let t=this.props.definition.dataSets;t?.[this.state.index]&&(t[this.state.index]={...t[this.state.index],backgroundColor:e},this.props.updateChart(this.props.chartId,{dataSets:t}))}getDataSeriesColor(){let e=this.props.definition.dataSets;if(!e?.[this.state.index])return``;let t=e[this.state.index].backgroundColor;return t?Or(t):ti(this.state.index,ni(this.props.definition.dataSets.length))}updateDataSeriesLabel(e){let t=e.target.value,n=this.props.definition.dataSets;n?.[this.state.index]&&(n[this.state.index]={...n[this.state.index],label:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesLabel(){return this.props.definition.dataSets[this.state.index]?.label||this.getDataSeries()[this.state.index]}get selectOptions(){return this.getDataSeries().map((e,t)=>({value:t.toString(),label:e}))}},BI=class extends t.Component{static template=`o-spreadsheet-SeriesWithAxisDesignEditor`;static components={SeriesDesignEditor:zI,Checkbox:eP,RadioSelection:PI,Section:Q,RoundColorPicker:BN,NumberInput:RI,Select:EM};static props={...wI,slots:{type:Object,optional:!0}};axisChoices=bd;updateDataSeriesAxis(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],yAxisId:t===`left`?`y`:`y1`},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSerieAxis(e){let t=this.props.definition.dataSets;return t?.[e]&&t[e].yAxisId===`y1`?`right`:`left`}get canHaveTwoVerticalAxis(){return!(`horizontal`in this.props.definition&&this.props.definition.horizontal)}toggleDataTrend(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{type:`polynomial`,order:1,...n[e].trend,display:t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}getTrendLineConfiguration(e){return this.props.definition.dataSets?.[e]?.trend}getTrendType(e){return e?e.type===`polynomial`&&e.order===1?`linear`:e.type:``}onChangeTrendType(e,t){let n;switch(t){case`linear`:case`polynomial`:n={type:`polynomial`,order:t===`linear`?1:this.getMaxPolynomialDegree(e)};break;case`exponential`:case`logarithmic`:case`trailingMovingAverage`:n={type:t};break;default:return}this.updateTrendLineValue(e,n)}get trendOptions(){return[{value:`linear`,label:k(`Linear`)},{value:`polynomial`,label:k(`Polynomial`)},{value:`exponential`,label:k(`Exponential`)},{value:`logarithmic`,label:k(`Logarithmic`)},{value:`trailingMovingAverage`,label:k(`Trailing moving average`)}]}getPolynomialDegrees(e){return S(1,this.getMaxPolynomialDegree(e)+1).map(e=>({value:e.toString(),label:e.toString()}))}onChangePolynomialDegree(e,t){this.updateTrendLineValue(e,{order:parseInt(t)})}getMaxPolynomialDegree(e){let t=this.env.model.getters.getChartRuntime(this.props.chartId);return Math.min(10,t.chartJsConfig.data.datasets[e].data.length-1)}get defaultWindowSize(){return 2}onChangeMovingAverageWindow(e,t){let n=parseInt(t)||2;n<=1&&(n=2),this.updateTrendLineValue(e,{window:n})}getDataSeriesColor(e){let t=this.props.definition.dataSets;if(!t?.[e])return``;let n=t[e].backgroundColor;return n?Or(n):ti(e,ni(this.props.definition.dataSets.length))}getTrendLineColor(e){return this.getTrendLineConfiguration(e)?.color??Wr(this.getDataSeriesColor(e),.5)}updateTrendLineColor(e,t){this.updateTrendLineValue(e,{color:t})}updateTrendLineValue(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{...n[e].trend,...t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}},VI=class extends t.Component{static template=`o-spreadsheet-ChartShowValues`;static components={Checkbox:eP};static props={...wI,defaultValue:{type:Boolean,optional:!0}}},HI=class extends t.Component{static template=`o-spreadsheet-ChartWithAxisDesignPanel`;static components={GeneralDesignEditor:FI,SidePanelCollapsible:TM,Section:Q,AxisDesignEditor:NI,SeriesWithAxisDesignEditor:BI,ChartLegend:LI,ChartShowValues:VI,ChartHumanizeNumbers:II};static props=wI;get axesList(){let{useLeftAxis:e,useRightAxis:t}=_d(this.props.definition),n=[{id:`x`,name:k(`Horizontal axis`)}];return e&&n.push({id:`y`,name:k(t?`Left axis`:`Vertical axis`)}),t&&n.push({id:`y1`,name:k(e?`Right axis`:`Vertical axis`)}),n}},UI=class extends HI{static template=`o-spreadsheet-GenericZoomableChartDesignPanel`;static components={...HI.components,Checkbox:eP};onToggleZoom(e){this.props.updateChart(this.props.chartId,{zoomable:e})}},WI=class extends UI{static template=`o-spreadsheet-BarChartDesignPanel`;get isZoomable(){return!this.props.definition.horizontal}};let GI=[`year`,`quarter_number`,`month_number`,`iso_week_number`,`day_of_month`,`day_of_week`,`hour_number`,`minute_number`,`second_number`];var KI=class extends kI{static template=`o-spreadsheet-CalendarChartConfigPanel`;static components={...kI.components,Select:EM};groupByChoices=GI.map(e=>({value:e,label:gh[e]}));getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}getGroupByOptions(){let e=this.env.model.getters.getFigureSheetId(this.env.model.getters.getFigureIdFromChartId(this.props.chartId)),t=od(this.env.model.getters,this.props.definition.dataSets,e,this.props.definition.dataSetsHaveTitle);if(t.length===0)return[];let n=nl(this.env.model.getters,e,this.props.definition.labelRange),r=Gh(this.props.definition,t,n,this.env.model.getters).labels.filter(e=>Ti(e,R));if(r.length===0)return[];let i=r.map(e=>I(e,this.env.model.getters.getLocale())),a=new Set,o=new Set,s=new Set,c=new Set,l=new Set,u=new Set;for(let e of i)a.add(e.getFullYear()),o.add(e.getMonth()),s.add(e.getDate()),c.add(e.getHours()),l.add(e.getMinutes()),u.add(e.getSeconds());return this.groupByChoices.filter(e=>{switch(e.value){case`year`:return a.size>1;case`quarter_number`:case`month_number`:return o.size>1;case`iso_week_number`:case`day_of_month`:case`day_of_week`:return s.size>1;case`hour_number`:return c.size>1;case`minute_number`:return l.size>1;case`second_number`:return u.size>1;default:return!1}})}getGroupByType(e){return(e===`horizontal`?this.props.definition.horizontalGroupBy:this.props.definition.verticalGroupBy)||`year`}updateGroupBy(e,t){this.props.updateChart(this.props.chartId,{[e===`horizontal`?`horizontalGroupBy`:`verticalGroupBy`]:t})}},qI=class extends t.Component{static template=`o-spreadsheet-ColorScalePicker`;static components={Section:Q,RoundColorPicker:BN,Popover:kv};static props={definition:Object,onUpdateColorScale:Function};colorScales=ci.map(e=>({value:e,label:tm.ColorScales[e],className:`${e}-color-scale`}));state=(0,t.useState)({popoverProps:void 0,popoverStyle:``});popoverRef=(0,t.useRef)(`popoverRef`);setup(){(0,t.useExternalListener)(window,`click`,this.closePopover)}get currentColorScale(){return this.props.definition.colorScale||Rm(`oranges`)}get currentColorScaleStyle(){let e=this.currentColorScale,t=e.minColor||`#fff`,n=e.midColor,r=e.maxColor||`#000`;return n?`background: linear-gradient(90deg, ${t}, ${n}, ${r});`:`background: linear-gradient(90deg, ${t}, ${r});`}colorScalePreviewStyle(e){return`background: linear-gradient(90deg, ${si[e].join(`,`)});`}get currentColorScaleLabel(){return tm.ColorScales[this.selectedColorScale]}onColorScaleChange(e){e===`custom`?this.props.onUpdateColorScale(he):this.props.onUpdateColorScale(Rm(e)),this.closePopover()}onPointerDown(e){if(this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n,width:r}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0},this.state.popoverStyle=U({width:`${r}px`})}closePopover(){this.state.popoverProps=void 0}get selectedColorScale(){if(!this.props.definition.colorScale)return`oranges`;let{minColor:e,midColor:t,maxColor:n}=this.props.definition.colorScale||{};for(let[r,i]of Object.entries(si))if(i[0]===e&&i[2]===n&&i[1]===t)return r;return`custom`}getCustomColorScaleColor(e){return this.props.definition.colorScale?.[e]??``}setCustomColorScaleColor(e,t){!t&&e!==`midColor`&&(t=`#fff`);let n=this.currentColorScale;n&&this.props.onUpdateColorScale({...n,[e]:t})}},JI=class extends t.Component{static template=`o-spreadsheet-CalendarChartDesignPanel`;static components={GeneralDesignEditor:FI,SidePanelCollapsible:TM,Section:Q,AxisDesignEditor:NI,ChartShowValues:VI,ColorScalePicker:qI,RoundColorPicker:BN,Select:EM};static props=wI;get axesList(){return[{id:`x`,name:k(`Horizontal axis`)},{id:`y`,name:k(`Vertical axis`)}]}onColormapChange(e){this.props.updateChart(this.props.chartId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.chartId,{missingValueColor:e})}get selectedMissingValueColor(){return this.props.definition.missingValueColor}updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`right`,label:k(`Right`)},{value:`left`,label:k(`Left`)}]}},YI=class extends t.Component{static template=`o-spreadsheet-ChartShowDataMarkers`;static components={Checkbox:eP};static props=wI},XI=class extends UI{static template=`o-spreadsheet-ComboChartDesignPanel`;static components={...UI.components,ChartShowDataMarkers:YI,RadioSelection:PI};seriesTypeChoices=[{value:`bar`,label:k(`Bar`)},{value:`line`,label:k(`Line`)}];updateDataSeriesType(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],type:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesType(e){let t=this.props.definition.dataSets;return t?.[e]?t[e].type??`line`:`bar`}},ZI=class extends kI{getLabelRangeOptions(){let e=this.props.definition;return[{name:`aggregated`,label:this.chartTerms.AggregatedChart,value:e.aggregated??!1,onChange:this.onUpdateAggregated.bind(this)},{name:`cumulative`,label:this.chartTerms.CumulativeData,value:e.cumulative??!1,onChange:this.onUpdateCumulative.bind(this)},{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:e.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}onUpdateCumulative(e){this.props.updateChart(this.props.chartId,{cumulative:e})}},QI=class extends t.Component{static template=`o-spreadsheet-FunnelChartDesignPanel`;static components={ChartShowValues:VI,GeneralDesignEditor:FI,SidePanelCollapsible:TM,RoundColorPicker:BN,Section:Q,ChartHumanizeNumbers:II};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};getFunnelColorItems(){let e=this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.labels||[],t=ff(e,this.props.definition.funnelColors);return e.map((e,n)=>({label:e||k(`Value %s`,n+1),color:t[n]}))}updateFunnelItemColor(e,t){let n=Nt(this.props.definition.funnelColors||[],t,e);this.props.updateChart(this.props.chartId,{funnelColors:n})}},$I=class extends t.Component{static template=`o-spreadsheet-GaugeChartConfigPanel`;static components={ChartErrorSection:DI,ChartDataSeries:TI};static props=wI;state=(0,t.useState)({dataRangeDispatchResult:void 0});dataRange=this.props.definition.dataRange;get configurationErrorMessages(){return[...this.state.dataRangeDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isDataRangeInvalid(){return!!this.state.dataRangeDispatchResult?.isCancelledBecause(`InvalidGaugeDataRange`)}onDataRangeChanged(e){this.dataRange=e[0],this.state.dataRangeDispatchResult=this.props.canUpdateChart(this.props.chartId,{dataRange:this.dataRange})}updateDataRange(){this.state.dataRangeDispatchResult=this.props.updateChart(this.props.chartId,{dataRange:this.dataRange})}getDataRange(){return{dataRange:this.dataRange||``}}},eL=class extends t.Component{static template=`o-spreadsheet-GaugeChartDesignPanel`;static components={SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,GeneralDesignEditor:FI,ChartErrorSection:DI,StandaloneComposer:jN,ChartHumanizeNumbers:II,Select:EM};static props=wI;state;setup(){this.state=(0,t.useState)({sectionRuleCancelledReasons:new Set(this.checkSectionRuleFormulasAreValid(this.props.definition.sectionRule)),sectionRule:b(this.props.definition.sectionRule)})}get designErrorMessages(){return[...this.state.sectionRuleCancelledReasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isRangeMinInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMin`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMinNaN`))}get isRangeMaxInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMax`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMaxNaN`))}get isLowerInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeLowerInflectionPointNaN`)}get isUpperInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeUpperInflectionPointNaN`)}updateSectionColor(e,t){let n=b(this.state.sectionRule);n.colors[e]=t,this.updateSectionRule(n)}updateSectionRuleOperator(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:{...this.state.sectionRule[e],operator:t}},this.updateSectionRule(this.state.sectionRule)}updateSectionRulePointType(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:{...this.state.sectionRule[e],type:t}},this.updateSectionRule(this.state.sectionRule)}updateSectionRule(e){this.state.sectionRuleCancelledReasons=new Set(this.checkSectionRuleFormulasAreValid(this.state.sectionRule));let t=this.props.updateChart(this.props.chartId,{sectionRule:e});if(t.isSuccessful)this.state.sectionRule=b(e);else for(let e of t.reasons)this.state.sectionRuleCancelledReasons.add(e)}onConfirmGaugeRange(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:t},this.updateSectionRule(this.state.sectionRule)}getGaugeInflectionComposerProps(e){let t=e===`lowerColor`?`lowerInflectionPoint`:`upperInflectionPoint`,n=this.state.sectionRule[t];return{onConfirm:e=>{this.state.sectionRule={...this.state.sectionRule,[t]:{...n,value:e}},this.updateSectionRule(this.state.sectionRule)},composerContent:n.value,invalid:e===`lowerColor`?this.isLowerInflectionPointInvalid:this.isUpperInflectionPointInvalid,defaultRangeSheetId:this.sheetId,class:t,placeholder:k(`Value`),title:k(`Value or formula`)}}checkSectionRuleFormulasAreValid(e){let t=new Set;return this.valueIsValidNumber(e.rangeMin)||t.add(`GaugeRangeMinNaN`),this.valueIsValidNumber(e.rangeMax)||t.add(`GaugeRangeMaxNaN`),this.valueIsValidNumber(e.lowerInflectionPoint.value)||t.add(`GaugeLowerInflectionPointNaN`),this.valueIsValidNumber(e.upperInflectionPoint.value)||t.add(`GaugeUpperInflectionPointNaN`),t}valueIsValidNumber(e){let t=this.env.model.getters.getLocale();if(!e.startsWith(`=`))return Ma(e,t)!==void 0;let n=this.env.model.getters.evaluateFormula(this.sheetId,e);return Sm(n)?!1:Ma(bm(n),t)!==void 0}get sheetId(){let e=this.env.model.getters.getChart(this.props.chartId);if(!e)throw Error(`Chart not found with id `+this.props.chartId);return e.sheetId}get inflectionPointOperators(){return[{value:`<`,label:`<`},{value:`<=`,label:`<=`}]}get inflectionPointTypes(){return[{value:`number`,label:k(`Number`)},{value:`percentage`,label:k(`Percentage`)}]}},tL=class extends t.Component{static template=`o-spreadsheet-GeoChartRegionSelectSection`;static components={Section:Q,Select:EM};static props={chartId:String,definition:Object,updateChart:Function};updateSelectedRegion(e){this.props.updateChart(this.props.chartId,{region:e})}get availableRegions(){return this.env.model.getters.getGeoChartAvailableRegions()}get selectedRegion(){return this.props.definition.region||this.availableRegions[0]?.id}get regionOptions(){return this.availableRegions.map(e=>({value:e.id,label:e.label}))}},nL=class extends kI{static template=`o-spreadsheet-GeoChartConfigPanel`;static components={...kI.components,GeoChartRegionSelectSection:tL};get dataRanges(){return this.getDataSeriesRanges()}get disabledRanges(){return this.props.definition.dataSets.map((e,t)=>t>0)}getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},rL=class extends HI{static template=`o-spreadsheet-GeoChartDesignPanel`;static components={...HI.components,RoundColorPicker:BN,ColorScalePicker:qI,Select:EM};updateColorScale(e){this.props.updateChart(this.props.chartId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.chartId,{missingValueColor:e})}updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get selectedMissingValueColor(){return this.props.definition.missingValueColor||`#ffffff`}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`top`,label:k(`Top left`)},{value:`right`,label:k(`Top right`)},{value:`bottom`,label:k(`Bottom right`)},{value:`left`,label:k(`Bottom left`)}]}},iL=class extends kI{static template=`o-spreadsheet-HierarchicalChartConfigPanel`;static components={...kI.components};getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},aL=class extends kI{static template=`o-spreadsheet-LineConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.chartId);return e&&e instanceof F_?lg(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}get stackedLabel(){return this.props.definition.fillArea?this.chartTerms.StackedAreaChart:this.chartTerms.StackedLineChart}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}onUpdateLabelsAsText(e){this.props.updateChart(this.props.chartId,{labelsAsText:e})}onUpdateStacked(e){this.props.updateChart(this.props.chartId,{stacked:e})}onUpdateCumulative(e){this.props.updateChart(this.props.chartId,{cumulative:e})}},oL=class extends UI{static template=`o-spreadsheet-LineChartDesignPanel`;static components={...UI.components,ChartShowDataMarkers:YI}},sL=class extends t.Component{static template=`o-spreadsheet.PieHoleSize`;static components={Section:Q,NumberInput:RI};static props={onValueChange:Function,value:Number};onChange(e){isNaN(Number(e))||this.props.onValueChange(x(Number(e),0,95))}},cL=class extends t.Component{static template=`o-spreadsheet-PieChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,ChartLegend:LI,ChartShowValues:VI,PieHoleSize:sL,Checkbox:eP,ChartHumanizeNumbers:II};static props=wI;onPieHoleSizeChange(e){this.props.updateChart(this.props.chartId,{...this.props.definition,pieHolePercentage:e})}get defaultHoleSize(){return 50}},lL=class extends t.Component{static template=`o-spreadsheet-RadarChartDesignPanel`;static components={GeneralDesignEditor:FI,SeriesDesignEditor:zI,Section:Q,ChartLegend:LI,ChartShowValues:VI,ChartShowDataMarkers:YI,Checkbox:eP,ChartHumanizeNumbers:II};static props=wI},uL=class e extends Ff{dataSets;labelRange;background;legendPosition;labelsAsText;aggregated;type=`scatter`;dataSetsHaveTitle;dataSetDesign;axesDesign;showValues;constructor(e,t,n){super(e,t,n),this.dataSets=od(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(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,pd,md)}static transformDefinition(e,t,n){return ud(e,t,n)}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,humanize:e.humanize}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`scatter`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues,humanize:this.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}getDefinitionForExcel(){let e=this.dataSets.map(e=>cd(this.getters,e)).filter(e=>e.range!==``),t=ld(this.getters,this.labelRange,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),n=this.getDefinition();return{...n,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t,verticalAxis:_d(n)}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}};function dL(e,t){let n=e.getDefinition(),r=Xh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`line`,data:{labels:r.labels,datasets:of(n,r)},options:{...Kp,layout:jg(n,r),scales:Hd(n,r),plugins:{title:Zg(n,t),legend:Lg(n,r),tooltip:r_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var fL=class extends kI{static template=`o-spreadsheet-ScatterConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.chartId);return e&&e instanceof uL?lg(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}onUpdateLabelsAsText(e){this.props.updateChart(this.props.chartId,{labelsAsText:e})}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}},pL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartConfigPanel`;static components={SelectionInput:YN,ChartErrorSection:DI,Section:Q,Select:EM};static props=wI;state=(0,t.useState)({keyValueDispatchResult:void 0,baselineDispatchResult:void 0});keyValue=this.props.definition.keyValue;baseline=this.props.definition.baseline;get errorMessages(){return[...this.state.keyValueDispatchResult?.reasons||[],...this.state.baselineDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isKeyValueInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardKeyValue`)}get isBaselineInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardBaseline`)}onKeyValueRangeChanged(e){this.keyValue=e[0],this.state.keyValueDispatchResult=this.props.canUpdateChart(this.props.chartId,{keyValue:this.keyValue})}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart(this.props.chartId,{keyValue:this.keyValue})}getKeyValueRange(){return this.keyValue||``}onBaselineRangeChanged(e){this.baseline=e[0],this.state.baselineDispatchResult=this.props.canUpdateChart(this.props.chartId,{baseline:this.baseline})}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart(this.props.chartId,{baseline:this.baseline})}getBaselineRange(){return this.baseline||``}updateBaselineMode(e){this.props.updateChart(this.props.chartId,{baselineMode:e})}get baselineModeOptions(){return[{value:`text`,label:k(`Absolute value`)},{value:`difference`,label:k(`Value change from key value`)},{value:`percentage`,label:k(`Percentage change from key value`)},{value:`progress`,label:k(`Progress bar`)}]}},mL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartDesignPanel`;static components={GeneralDesignEditor:FI,RoundColorPicker:BN,SidePanelCollapsible:TM,Section:Q,Checkbox:eP,ChartTitle:MI,ChartHumanizeNumbers:II};static props=wI;get colorsSectionTitle(){return this.props.definition.baselineMode===`progress`?k(`Progress bar colors`):k(`Baseline colors`)}get defaultScorecardTitleFontSize(){return 14}translate(e){return this.env.model.getters.dynamicTranslate(e)}setColor(e,t){switch(t){case`backgroundColor`:this.props.updateChart(this.props.chartId,{background:e});break;case`baselineColorDown`:this.props.updateChart(this.props.chartId,{baselineColorDown:e});break;case`baselineColorUp`:this.props.updateChart(this.props.chartId,{baselineColorUp:e});break}}get keyStyle(){return{align:`center`,fontSize:32,...this.props.definition.keyDescr}}get baselineStyle(){return{align:`center`,fontSize:16,...this.props.definition.baselineDescr}}setKeyText(e){this.props.updateChart(this.props.chartId,{keyDescr:{...this.props.definition.keyDescr,text:e}})}updateKeyStyle(e){let t={...this.keyStyle,...e};this.props.updateChart(this.props.chartId,{keyDescr:t})}setBaselineText(e){this.props.updateChart(this.props.chartId,{baselineDescr:{...this.props.definition.baselineDescr,text:e}})}updateBaselineStyle(e){let t={...this.baselineStyle,...e};this.props.updateChart(this.props.chartId,{baselineDescr:t})}},hL=class extends t.Component{static template=`o-spreadsheet-SunburstChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,SidePanelCollapsible:TM,ChartShowValues:VI,Checkbox:eP,TextStyler:xI,RoundColorPicker:BN,ChartLegend:LI,PieHoleSize:sL,ChartHumanizeNumbers:II};static props=wI;defaults=Wg;get showValues(){return this.props.definition.showValues??Wg.showValues}get showLabels(){return this.props.definition.showLabels??Wg.showLabels}get groupColors(){let e=this.props.chartId;return this.env.model.getters.getChartRuntime(e).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.props.definition.groupColors)??[];n[e]=t,this.props.updateChart(this.props.chartId,{groupColors:n})}onPieHoleSizeChange(e){this.props.updateChart(this.props.chartId,{...this.props.definition,pieHolePercentage:e})}},gL=class extends t.Component{static template=`o-spreadsheet-TreeMapCategoryColors`;static components={Checkbox:eP,RoundColorPicker:BN};static props={chartId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??Ad.coloringOptions;if(e.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);return e}getTreeGroupAndColors(){return this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.coloringOptions);n.colors[e]=t||void 0,this.props.onColorChanged(n)}useValueBasedGradient(e){if(this.coloringOptions.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);this.props.onColorChanged({...this.coloringOptions,useValueBasedGradient:e})}},_L=class extends t.Component{static template=`o-spreadsheet-TreeMapColorScale`;static components={RoundColorPicker:BN};static props={chartId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??Ad.coloringOptions;if(e.type!==`colorScale`)throw Error(`Coloring options is not a color scale`);return e}setColorScaleColor(e,t){this.props.onColorChanged({...this.coloringOptions,[e]:t})}};let vL={type:`colorScale`,minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`},yL={type:`categoryColor`,colors:[],useValueBasedGradient:!0};var bL=class extends t.Component{static template=`o-spreadsheet-TreeMapChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,SidePanelCollapsible:TM,ChartShowValues:VI,Checkbox:eP,TextStyler:xI,RoundColorPicker:BN,BadgeSelection:jI,TreeMapCategoryColors:gL,TreeMapColorScale:_L,ChartHumanizeNumbers:II};static props=wI;savedColors={categoryColors:yL,colorScale:vL};defaults=Ad;get showHeaders(){return this.props.definition.showHeaders??Ad.showHeaders}get showValues(){return this.props.definition.showValues??Ad.showValues}get showLabels(){return this.props.definition.showLabels??Ad.showLabels}get coloringOptions(){return this.props.definition.coloringOptions??Ad.coloringOptions}changeColoringOption(e){let t=e===`categoryColor`?this.savedColors.categoryColors:this.savedColors.colorScale;this.props.updateChart(this.props.chartId,{coloringOptions:t})}onCategoryColorChange(e){this.savedColors.categoryColors=e,this.props.updateChart(this.props.chartId,{coloringOptions:e})}onColorScaleChange(e){this.savedColors.colorScale=e,this.props.updateChart(this.props.chartId,{coloringOptions:e})}get coloringOptionChoices(){return[{label:k(`Category color`),value:`categoryColor`},{label:k(`Color scale`),value:`colorScale`}]}},xL=class extends t.Component{static template=`o-spreadsheet-WaterfallChartDesignPanel`;static components={GeneralDesignEditor:FI,ChartShowValues:VI,Checkbox:eP,SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,AxisDesignEditor:NI,RadioSelection:PI,ChartLegend:LI,ChartHumanizeNumbers:II};static props=wI;axisChoices=bd;onUpdateShowSubTotals(e){this.props.updateChart(this.props.chartId,{showSubTotals:e})}onUpdateShowConnectorLines(e){this.props.updateChart(this.props.chartId,{showConnectorLines:e})}onUpdateFirstValueAsSubtotal(e){this.props.updateChart(this.props.chartId,{firstValueAsSubtotal:e})}updateColor(e,t){this.props.updateChart(this.props.chartId,{[e]:t})}get axesList(){return[{id:`x`,name:k(`Horizontal axis`)},{id:`y`,name:k(`Vertical axis`)}]}get positiveValuesColor(){return this.props.definition.positiveValuesColor||`#4EA7F2`}get negativeValuesColor(){return this.props.definition.negativeValuesColor||`#EA6175`}get subTotalValuesColor(){return this.props.definition.subTotalValuesColor||`#AAAAAA`}updateVerticalAxisPosition(e){this.props.updateChart(this.props.chartId,{verticalAxisPosition:e})}onToggleZoom(e){this.props.updateChart(this.props.chartId,{zoomable:e})}};let SL=new B;SL.add(`line`,{configuration:aL,design:oL}).add(`scatter`,{configuration:fL,design:HI}).add(`bar`,{configuration:AI,design:WI}).add(`combo`,{configuration:kI,design:XI}).add(`pie`,{configuration:kI,design:cL}).add(`gauge`,{configuration:$I,design:eL}).add(`scorecard`,{configuration:pL,design:mL}).add(`waterfall`,{configuration:kI,design:xL}).add(`pyramid`,{configuration:kI,design:HI}).add(`radar`,{configuration:kI,design:lL}).add(`sunburst`,{configuration:iL,design:hL}).add(`geo`,{configuration:nL,design:rL}).add(`funnel`,{configuration:ZI,design:QI}).add(`treemap`,{configuration:iL,design:bL}).add(`calendar`,{configuration:KI,design:JI});let CL={line:k(`Line`),column:k(`Column`),bar:k(`Bar`),area:k(`Area`),pie:k(`Pie`),hierarchical:k(`Hierarchical`),misc:k(`Miscellaneous`)};var wL=class extends t.Component{static template=`o-spreadsheet-ChartTypePicker`;static components={Section:Q,Popover:kv};static props={chartId:String,chartPanelStore:Object};categories=CL;chartTypeByCategories={};popoverRef=(0,t.useRef)(`popoverRef`);selectRef=(0,t.useRef)(`selectRef`);state=(0,t.useState)({popoverProps:void 0,popoverStyle:``});setup(){(0,t.useExternalListener)(window,`pointerdown`,this.onExternalClick,{capture:!0});for(let e of Q_.getAll())this.chartTypeByCategories[e.category]?this.chartTypeByCategories[e.category].push(e):this.chartTypeByCategories[e.category]=[e]}onExternalClick(e){np(this.popoverRef.el?.parentElement,e)||np(this.selectRef.el,e)||this.closePopover()}onTypeChange(e){this.props.chartPanelStore.changeChartType(this.props.chartId,e),this.closePopover()}getChartDefinition(e){return this.env.model.getters.getChartDefinition(e)}getSelectedChartSubtypeProperties(){let e=this.getChartDefinition(this.props.chartId);return Q_.getAll().find(t=>t.matcher?.(e)||!1)||Q_.get(e.type)}onPointerDown(e){if(this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n,width:r}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0},this.state.popoverStyle=U({width:`${r}px`})}closePopover(){this.state.popoverProps=void 0}},TL=class extends yr{mutators=[`activatePanel`,`changeChartType`];panel=`configuration`;creationContexts={};activatePanel(e){this.panel=e}changeChartType(e,t){let n=this.getters.getContextCreationChart(e),r=this.creationContexts[e]||{},i=n?.range;i?.every((e,t)=>w(e,r.range?.[t]))&&(i=Object.assign([],r.range,n?.range)),this.creationContexts[e]={...r,...n,range:i};let a=this.getters.getFigureIdFromChartId(e),o=this.getters.getFigureSheetId(a);if(!o)return;let s=this.getChartDefinitionFromContextCreation(e,t);this.model.dispatch(`UPDATE_CHART`,{definition:s,chartId:e,figureId:a,sheetId:o})}getChartDefinitionFromContextCreation(e,t){let n=Q_.get(t);return{...v_.get(n.chartType).getChartDefinitionFromContextCreation(this.creationContexts[e]),...n.subtypeDefinition}}},EL=class extends t.Component{static template=`o-spreadsheet-ChartPanel`;static components={Section:Q,ChartTypePicker:wL};static props={onCloseSidePanel:Function,chartId:String};store;get chartId(){return this.props.chartId}setup(){this.store=ur(TL)}switchPanel(e){this.store.activatePanel(e)}updateChart(e,t){let n=this.env.model.getters.getFigureIdFromChartId(e);if(e!==this.chartId)return;let r={...this.getChartDefinition(this.chartId),...t};return this.env.model.dispatch(`UPDATE_CHART`,{definition:r,chartId:e,figureId:n,sheetId:this.env.model.getters.getFigureSheetId(n)})}canUpdateChart(e,t){let n=this.env.model.getters.getFigureIdFromChartId(e);if(e!==this.chartId||!this.env.model.getters.isChartDefined(e))return;let r={...this.getChartDefinition(this.chartId),...t};return this.env.model.canDispatch(`UPDATE_CHART`,{definition:r,chartId:e,figureId:n,sheetId:this.env.model.getters.getFigureSheetId(n)})}onTypeChange(e){this.chartId&&this.store.changeChartType(this.chartId,e)}get chartPanel(){if(!this.chartId)throw Error(`Chart not defined.`);let e=this.env.model.getters.getChartType(this.chartId);if(!e)throw Error(`Chart not defined.`);let t=SL.get(e);if(!t)throw Error(`Component is not defined for type ${e}`);return t}getChartDefinition(e){return this.env.model.getters.getChartDefinition(e)}},DL=class extends t.Component{static template=`o-spreadsheet-IconPicker`;static props={onIconPicked:Function};icons=NO;iconSets=PO;onIconClick(e){e&&this.props.onIconPicked(e)}},OL=class extends yr{mutators=[`updateConditionalFormat`,`closeMenus`];icons=NO;iconSets=PO;state;cfId;constructor(e,n,r){switch(super(e),this.cfId=n.id,this.state=(0,t.useState)({errors:[],currentCFType:n.rule.type,ranges:n.ranges,rules:this.getDefaultRules(),hasEditedCf:r}),n.rule.type){case`CellIsRule`:this.state.rules.cellIs=n.rule;break;case`ColorScaleRule`:this.state.rules.colorScale=n.rule;break;case`IconSetRule`:this.state.rules.iconSet=n.rule;break;case`DataBarRule`:this.state.rules.dataBar=n.rule;break}}updateConditionalFormat(e){let t=e.ranges||this.state.ranges;if(this.state.ranges.some(e=>!e.match(Nc))){e.suppressErrors||(this.state.errors=[`InvalidRange`]);return}let n=this.model.getters.getActiveSheetId(),r=this.model.getters.getLocale(),i=e.rule||this.getEditedRule(this.state.currentCFType),a=this.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:this.cfId,rule:IS(i,r)},ranges:t.map(e=>this.model.getters.getRangeDataFromXc(n,e)),sheetId:n});a.isSuccessful&&(this.state.hasEditedCf=!0);let o=a.reasons.filter(e=>e!==`NoChanges`);e.suppressErrors||(this.state.errors=o)}get isRangeValid(){return this.state.errors.includes(`EmptyRange`)}get errorMessages(){return this.state.errors.map(e=>em.Errors[e]||em.Errors.Unexpected)}onRangeUpdate(e){this.state.ranges=e}onRangeConfirmed(){this.updateConditionalFormat({ranges:this.state.ranges})}changeRuleType(e){this.state.currentCFType!==e&&(this.state.errors=[],this.state.currentCFType=e,this.updateConditionalFormat({rule:this.getEditedRule(e),suppressErrors:!0}))}getEditedRule(e){switch(e){case`CellIsRule`:return this.state.rules.cellIs;case`ColorScaleRule`:return this.state.rules.colorScale;case`IconSetRule`:return this.state.rules.iconSet;case`DataBarRule`:return this.state.rules.dataBar}}get cfCriterions(){return QN(zm)}get criterionComponent(){return $.get(this.state.rules.cellIs.operator).component}get genericCriterion(){return{...this.state.rules.cellIs,type:this.state.rules.cellIs.operator}}onRuleValuesChanged(e){let t={...e,operator:e.type,type:`CellIsRule`,style:this.state.rules.cellIs.style};this.state.rules.cellIs=t,this.updateConditionalFormat({rule:t})}toggleStyle(e){let t=this.state.rules.cellIs.style;t[e]=!t[e],this.updateConditionalFormat({rule:this.state.rules.cellIs}),this.closeMenus()}setColor(e,t){this.state.rules.cellIs.style[e]=t,this.updateConditionalFormat({rule:this.state.rules.cellIs}),this.closeMenus()}editOperator(e){this.state.rules.cellIs.operator=e,e.includes(`date`)&&!this.state.rules.cellIs.dateValue&&(this.state.rules.cellIs.dateValue=`exactDate`),this.updateConditionalFormat({rule:this.state.rules.cellIs,suppressErrors:!0}),this.closeMenus()}get previewGradient(){let e=this.state.rules.colorScale,t=Er(e.minimum.color),n=Er(e.midpoint?.color||11982760),r=Er(e.maximum.color),i=`linear-gradient(to right, `;return U({"background-image":e.midpoint===void 0?i+t+`, `+r+`)`:i+t+`, `+n+`, `+r+`)`,color:`#000`})}onMidpointChange(e){let t=this.state.rules.colorScale;e===`none`?t.midpoint=void 0:t.midpoint={color:se,value:``,...t.midpoint,type:e},this.updateConditionalFormat({rule:t,suppressErrors:!0})}updateThresholdType(e,t){this.state.rules.colorScale[e].type=t,this.updateConditionalFormat({rule:this.state.rules.colorScale,suppressErrors:!0})}updateThresholdValue(e,t){this.state.rules.colorScale[e].value=t,this.updateConditionalFormat({rule:this.state.rules.colorScale})}setColorScaleColor(e,t){if(!kr(t))return;let n=this.state.rules.colorScale[e];n&&(n.color=Dr(t)),this.updateConditionalFormat({rule:this.state.rules.colorScale}),this.closeMenus()}reverseIcons(){let e=this.state.rules.iconSet.icons,t=e.upper;e.upper=e.lower,e.lower=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setIconSet(e){let t=this.state.rules.iconSet.icons;t.upper=this.iconSets[e].good,t.middle=this.iconSets[e].neutral,t.lower=this.iconSets[e].bad,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setIcon(e,t){this.state.rules.iconSet.icons[e]=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionOperator(e,t){this.state.rules.iconSet[e].operator=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionValue(e,t){this.state.rules.iconSet[e].value=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionType(e,t){this.state.rules.iconSet[e].type=t,this.updateConditionalFormat({rule:this.state.rules.iconSet,suppressErrors:!0})}get rangeValues(){return[this.state.rules.dataBar.rangeValues||``]}updateDataBarColor(e){kr(e)&&(this.state.rules.dataBar.color=Number.parseInt(e.slice(1),16),this.updateConditionalFormat({rule:this.state.rules.dataBar}))}onDataBarRangeUpdate(e){this.state.rules.dataBar.rangeValues=e[0]}onDataBarRangeChange(){this.updateConditionalFormat({rule:this.state.rules.dataBar})}toggleMenu(e){let t=this.state.openedMenu===e;this.closeMenus(),t||(this.state.openedMenu=e)}closeMenus(){this.state.openedMenu=void 0}getDefaultRules(){return{cellIs:{type:`CellIsRule`,operator:`isNotEmpty`,values:[],style:{fillColor:`#b6d7a8`}},colorScale:{type:`ColorScaleRule`,minimum:{type:`value`,color:vk(`EFF7FF`)},midpoint:void 0,maximum:{type:`value`,color:6989903}},iconSet:{type:`IconSetRule`,icons:{upper:`arrowGood`,middle:`arrowNeutral`,lower:`arrowBad`},upperInflectionPoint:{type:`percentage`,value:`66`,operator:`gt`},lowerInflectionPoint:{type:`percentage`,value:`33`,operator:`gt`}},dataBar:{type:`DataBarRule`,color:14281427}}}},kL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormattingEditor`;static components={SelectionInput:YN,IconPicker:DL,ColorPickerWidget:vI,Section:Q,RoundColorPicker:BN,StandaloneComposer:jN,BadgeSelection:jI,ValidationMessages:EI,Select:EM};static props={cf:Object,isNewCf:Boolean,onCloseSidePanel:Function};getTextDecoration=nv;colorNumberToHex=Er;activeSheetId;store;setup(){this.activeSheetId=this.env.model.getters.getActiveSheetId(),this.store=ur(OL,b(this.props.cf),this.props.isNewCf),(0,t.useEffect)((e,t)=>{(this.activeSheetId!==e||t)&&this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)},()=>[this.env.model.getters.getActiveSheetId(),this.isEditedCfRemoved]),(0,t.useExternalListener)(window,`click`,()=>this.store.closeMenus())}get isEditedCfRemoved(){return!this.env.model.getters.getConditionalFormats(this.activeSheetId).find(e=>e.id===this.props.cf.id)}get cfTypesValues(){return[{value:`CellIsRule`,label:k(`Single color`)},{value:`ColorScaleRule`,label:k(`Color scale`)},{value:`IconSetRule`,label:k(`Icon set`)},{value:`DataBarRule`,label:k(`Data bar`)}]}onSave(){this.store.updateConditionalFormat({}),this.store.state.errors.length===0&&this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)}onCancel(){this.store.state.hasEditedCf&&(this.props.isNewCf?this.env.model.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{sheetId:this.activeSheetId,id:this.props.cf.id}):this.env.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:this.props.cf,ranges:this.props.cf.ranges.map(e=>this.env.model.getters.getRangeDataFromXc(this.activeSheetId,e)),sheetId:this.activeSheetId})),this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)}getThresholdColor(e){return Er(e?e.color:se)}isValueInvalid(e){let t=this.store.state.errors;switch(e){case`minimum`:return t.includes(`MinInvalidFormula`)||t.includes(`MinBiggerThanMid`)||t.includes(`MinBiggerThanMax`)||t.includes(`MinNaN`);case`midpoint`:return t.includes(`MidInvalidFormula`)||t.includes(`MidNaN`)||t.includes(`MidBiggerThanMax`);case`maximum`:return t.includes(`MaxInvalidFormula`)||t.includes(`MaxNaN`);default:return!1}}getColorScaleComposerProps(e){let t=this.store.state.rules.colorScale[e];if(!t)throw Error(`Threshold not found`);let n=this.isValueInvalid(e);return{onConfirm:e=>{t.value=e,this.store.updateConditionalFormat({rule:this.store.state.rules.colorScale})},composerContent:t.value||``,placeholder:k(`Formula`),defaultStatic:!0,invalid:n,class:`o-sidePanel-composer`,defaultRangeSheetId:this.activeSheetId}}isInflectionPointInvalid(e){let t=this.store.state.errors;switch(e){case`lowerInflectionPoint`:return t.includes(`ValueLowerInflectionNaN`)||t.includes(`ValueLowerInvalidFormula`)||t.includes(`LowerBiggerThanUpper`);case`upperInflectionPoint`:return t.includes(`ValueUpperInflectionNaN`)||t.includes(`ValueUpperInvalidFormula`)||t.includes(`LowerBiggerThanUpper`);default:return!0}}getColorIconSetComposerProps(e){let t=this.store.state.rules.iconSet[e],n=this.isInflectionPointInvalid(e);return{onConfirm:e=>{t.value=e,this.store.updateConditionalFormat({rule:this.store.state.rules.iconSet})},composerContent:t.value||``,placeholder:k(`Formula`),defaultStatic:!0,invalid:n,class:`o-sidePanel-composer`,defaultRangeSheetId:this.activeSheetId}}getThresholdTypeSelectOptions(e){let t=[{value:`number`,label:k(`Number`)},{value:`percentage`,label:k(`Percentage`)},{value:`percentile`,label:k(`Percentile`)},{value:`formula`,label:k(`Formula`)}];return e===`iconSet`?t:e===`midpoint`?[{value:`none`,label:k(`None`)},...t]:[{value:`value`,label:k(`Cell values`)},...t]}getIconSetOperatorSelectOptions(){return[{value:`gt`,label:`>`},{value:`ge`,label:`>=`}]}};function AL(e,...n){(0,t.useEffect)(e=>(e?.addEventListener(...n),()=>e?.removeEventListener(...n)),()=>[e.el])}function jL(e){let n=(0,t.useState)({hovered:!1});return AL(e,`mouseenter`,()=>n.hovered=!0),AL(e,`mouseleave`,()=>n.hovered=!1),n}function ML(e,t){let n=jL(e);NL({get highlights(){return n.hovered?t.highlights:[]}})}function NL(e){let n=lr(),r=ur(EN);(0,t.onMounted)(()=>{r.register(e)});let i=e.highlights;(0,t.useEffect)(e=>{w(e,i)||(i=e,n.trigger(`store-updated`))},()=>[e.highlights])}var PL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormatPreview`;static props={conditionalFormat:Object,onMouseDown:Function,class:String};icons=NO;ref=(0,t.useRef)(`cfPreview`);setup(){ML(this.ref,this)}get previewImageStyle(){let e=this.props.conditionalFormat.rule;if(e.type===`CellIsRule`)return U(rv(e.style));if(e.type===`ColorScaleRule`){let t=Er(e.minimum.color),n=e.midpoint?Er(e.midpoint.color):null,r=Er(e.maximum.color),i=`background-image: linear-gradient(to right, `;return n?i+t+`, `+n+`, `+r+`)`:i+t+`, `+r+`)`}else if(e.type===`DataBarRule`)return`${`background-image: linear-gradient(to right, ${Er(e.color)} 50%, white 50%)`}; color: ${pe};`;return``}get description(){let e=this.props.conditionalFormat;switch(e.rule.type){case`CellIsRule`:return Z.get(e.rule.operator).getPreview({...e.rule,type:e.rule.operator},this.env.model.getters);case`ColorScaleRule`:return em.ColorScale;case`IconSetRule`:return em.IconSet;case`DataBarRule`:return em.DataBar}}get highlights(){let e=this.env.model.getters.getActiveSheetId();return this.props.conditionalFormat.ranges.map(t=>({range:this.env.model.getters.getRangeFromSheetXC(e,t),color:ee,fillAlpha:.06}))}editConditionalFormat(){this.env.replaceSidePanel(`ConditionalFormattingEditor`,`ConditionalFormatting`,{cf:this.props.conditionalFormat,isNewCf:!1})}deleteConditionalFormat(){this.env.model.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{id:this.props.conditionalFormat.id,sheetId:this.env.model.getters.getActiveSheetId()})}},FL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormatPreviewList`;static props={onCloseSidePanel:Function};static components={ConditionalFormatPreview:PL};dragAndDrop=HN();cfListRef=(0,t.useRef)(`cfList`);get conditionalFormats(){return this.env.model.getters.getConditionalFormats(this.env.model.getters.getActiveSheetId()).map(e=>({...e,rule:LS(e.rule,this.env.model.getters.getLocale())}))}getPreviewDivStyle(e){return this.dragAndDrop.itemsStyle[e.id]||``}onPreviewMouseDown(e,t){if(t.button!==0)return;let n=Array.from(this.cfListRef.el.children).map(e=>op(e)),r=this.conditionalFormats.map((e,t)=>({id:e.id,size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.id,initialMousePosition:t.clientY,items:r,scrollableContainerEl:this.cfListRef.el,onDragEnd:(e,t)=>this.onDragEnd(e,t)})}onAddConditionalFormat(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZones(),n={id:this.env.model.uuidGenerator.smallUuid(),rule:{type:`CellIsRule`,operator:`isNotEmpty`,style:{fillColor:`#b6d7a8`},values:[]}};return this.env.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:n,ranges:t.map(t=>this.env.model.getters.getRangeDataFromZone(e,t)),sheetId:e}),this.env.replaceSidePanel(`ConditionalFormattingEditor`,`ConditionalFormatting`,{cf:{...n,ranges:t.map(t=>yn(this.env.model.getters.getUnboundedZone(e,t)))},isNewCf:!0})}onDragEnd(e,t){let n=this.conditionalFormats.findIndex(t=>t.id===e)-t;n!==0&&this.env.model.dispatch(`CHANGE_CONDITIONAL_FORMAT_PRIORITY`,{cfId:e,delta:n,sheetId:this.env.model.getters.getActiveSheetId()})}},IL=class extends t.Component{static template=`o-spreadsheet-DataValidationPreview`;static props={rule:Object};ref=(0,t.useRef)(`dvPreview`);setup(){ML(this.ref,this)}onPreviewClick(){this.env.replaceSidePanel(`DataValidationEditor`,`DataValidation`,{ruleId:this.props.rule.id})}deleteDataValidation(){let e=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:e,id:this.props.rule.id})}get highlights(){return this.props.rule.ranges.map(e=>({range:e,color:ee,fillAlpha:.06}))}get rangesString(){let e=this.env.model.getters.getActiveSheetId();return this.props.rule.ranges.map(t=>this.env.model.getters.getRangeString(t,e)).join(`, `)}get descriptionString(){return Z.get(this.props.rule.criterion.type).getPreview(this.props.rule.criterion,this.env.model.getters)}},LL=class extends t.Component{static template=`o-spreadsheet-DataValidationPanel`;static props={onCloseSidePanel:Function};static components={DataValidationPreview:IL};addDataValidationRule(){this.env.replaceSidePanel(`DataValidationEditor`,`DataValidation`,{ruleId:this.env.model.uuidGenerator.smallUuid()})}localizeDVRule(e){return e&&RS(e,this.env.model.getters.getLocale())}get validationRules(){let e=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getDataValidationRules(e)}},RL=class extends t.Component{static template=`o-spreadsheet-DataValidationEditor`;static components={SelectionInput:YN,Select:EM,Section:Q,ValidationMessages:EI};static props={ruleId:String,onCancel:{type:Function,optional:!0},onCloseSidePanel:Function};state=(0,t.useState)({rule:this.defaultDataValidationRule,errors:[],isTypeUpdated:!1});editingSheetId;setup(){this.editingSheetId=this.env.model.getters.getActiveSheetId();let e=this.env.model.getters.getDataValidationRule(this.editingSheetId,this.props.ruleId);if(e){let t=this.env.model.getters.getLocale();this.state.rule={...RS(e,t),ranges:e.ranges.map(e=>this.env.model.getters.getRangeString(e,this.editingSheetId))}}}onCriterionTypeChanged(e){this.state.rule.criterion.type=e,this.state.isTypeUpdated=!0}onRangesChanged(e){this.state.rule.ranges=e}onCriterionChanged(e){this.state.rule.criterion=e}changeRuleIsBlocking(e){this.state.rule.isBlocking=e===`true`}onCancel(){this.props.onCancel?.(),this.env.replaceSidePanel(`DataValidation`,`DataValidationEditor_${this.props.ruleId}`)}onSave(){let e=this.env.model.dispatch(`ADD_DATA_VALIDATION_RULE`,this.dispatchPayload);if(!e.isSuccessful){this.state.errors=e.reasons;return}this.env.replaceSidePanel(`DataValidation`,`DataValidationEditor_${this.props.ruleId}`)}get dispatchPayload(){let e={...this.state.rule,ranges:void 0},t=this.env.model.getters.getLocale(),n=e.criterion,r=Z.get(n.type),i=n.values.slice(0,r.numberOfValues(n)).filter(e=>e&&e.trim()!==``).map(e=>ES(e,t));return e.criterion={...n,values:i},{sheetId:this.editingSheetId,ranges:this.state.rule.ranges.map(e=>this.env.model.getters.getRangeDataFromXc(this.editingSheetId,e)),rule:e}}get dvCriterionOptions(){return QN(Bm)}get defaultDataValidationRule(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZones().map(t=>yn(this.env.model.getters.getUnboundedZone(e,t)));return{id:this.props.ruleId,criterion:{type:`containsText`,values:[``]},ranges:t}}get criterionComponent(){return $.get(this.state.rule.criterion.type).component}get errorMessages(){return this.state.errors.map(e=>H.Errors[e]||H.Errors.Unexpected)}get isRuleBlockingSelectOptions(){return[{value:`false`,label:k(`Show a warning`)},{value:`true`,label:k(`Reject the input`)}]}};let zL=`#8B008B`;var BL=class extends yr{mutators=[`updateSearchOptions`,`updateSearchContent`,`searchFormulas`,`selectPreviousMatch`,`selectNextMatch`,`replace`];allSheetsMatches=[];activeSheetMatches=[];specificRangeMatches=[];selectedMatchPosition=null;currentSearchRegex=null;initialShowFormulaState;irreplaceableMatchCount=0;isSearchDirty=!1;shouldFinalizeUpdateSelection=!1;notificationStore=this.get(DN);selectedMatchIndex=null;toSearch=``;toReplace=``;searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1,searchScope:`activeSheet`,specificRange:void 0};constructor(e){super(e),this.initialShowFormulaState=this.model.getters.shouldShowFormulas(),this.searchOptions.searchFormulas=this.initialShowFormulaState;let t=e(EN);t.register(this),this.onDispose(()=>{this.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:this.initialShowFormulaState}),t.unRegister(this)})}get searchMatches(){switch(this.searchOptions.searchScope){case`allSheets`:return this.allSheetsMatches;case`activeSheet`:return this.activeSheetMatches;case`specificRange`:return this.specificRangeMatches}}updateSearchContent(e){this._updateSearch(e,this.searchOptions)}updateSearchOptions(e){this._updateSearch(this.toSearch,{...this.searchOptions,...e})}searchFormulas(e){this.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:e}),this.updateSearchOptions({searchFormulas:e})}selectPreviousMatch(){this.selectNextCell(-1,{jumpToMatchSheet:!0,updateSelection:!0})}selectNextMatch(){this.selectNextCell(1,{jumpToMatchSheet:!0,updateSelection:!0})}handle(e){switch(e.type){case`SET_FORMULA_VISIBILITY`:this.updateSearchOptions({searchFormulas:e.show});break;case`UNDO`:case`REDO`:case`REMOVE_TABLE`:case`UPDATE_FILTER`:case`REMOVE_COLUMNS_ROWS`:case`HIDE_COLUMNS_ROWS`:case`UNHIDE_COLUMNS_ROWS`:case`ADD_COLUMNS_ROWS`:case`EVALUATE_CELLS`:case`UPDATE_CELL`:this.isSearchDirty=!0;break;case`ACTIVATE_SHEET`:this.isSearchDirty=!0,this.shouldFinalizeUpdateSelection=!0,this.searchOptions.specificRange&&(this.searchOptions.specificRange={...this.searchOptions.specificRange,sheetId:this.getters.getActiveSheetId()});break;case`DELETE_SHEET`:this.searchOptions.searchScope===`specificRange`&&this.searchOptions.specificRange?.sheetId===e.sheetId&&(this.searchOptions={...this.searchOptions,specificRange:void 0}),this.isSearchDirty=!0;break;case`REPLACE_SEARCH`:for(let t of e.matches)this.replaceMatch(t,e.searchString,e.replaceWith,e.searchOptions);this.irreplaceableMatchCount>0&&this.showReplaceWarningMessage(e.matches.length,this.irreplaceableMatchCount),this.irreplaceableMatchCount=0;break}}finalize(){this.isSearchDirty&&=(this.refreshSearch({jumpToMatchSheet:!1,updateSelection:this.shouldFinalizeUpdateSelection}),this.shouldFinalizeUpdateSelection=!1,!1)}get allSheetMatchesCount(){return this.allSheetsMatches.length}get activeSheetMatchesCount(){return this.activeSheetMatches.length}get specificRangeMatchesCount(){return this.specificRangeMatches.length}_updateSearch(e,t){this.searchOptions=t,e!==this.toSearch&&(this.selectedMatchIndex=null,this.selectedMatchPosition=null),this.toSearch=e,this.currentSearchRegex=It(this.toSearch,this.searchOptions),this.refreshSearch({jumpToMatchSheet:!0,updateSelection:!0})}refreshSearch(e){if(this.findMatches(),this.selectedMatchPosition)if(this.selectedMatchPosition.sheetId!==this.getters.getActiveSheetId())this.selectedMatchIndex=null,this.selectedMatchPosition=null;else{let e=this.searchMatches.findIndex(e=>e.sheetId===this.selectedMatchPosition?.sheetId&&e.col===this.selectedMatchPosition?.col&&e.row===this.selectedMatchPosition?.row);e!==-1&&(this.selectedMatchIndex=e)}this.selectNextCell(0,e)}getSheetsInSearchOrder(){switch(this.searchOptions.searchScope){case`allSheets`:let e=this.getters.getSheetIds(),t=e.findIndex(e=>e===this.getters.getActiveSheetId());return[e[t],...e.slice(t+1),...e.slice(0,t)];case`activeSheet`:return[this.getters.getActiveSheetId()];case`specificRange`:let n=this.searchOptions.specificRange;return n&&n?[n.sheetId]:[]}}findMatches(){let e=[];if(this.toSearch)for(let t of this.getters.getSheetIds())e.push(...this.findMatchesInSheet(t));if(this.allSheetsMatches=e,this.activeSheetMatches=e.filter(e=>e.sheetId===this.getters.getActiveSheetId()),this.searchOptions.specificRange){let{sheetId:t,zone:n}=this.searchOptions.specificRange;this.specificRangeMatches=e.filter(e=>e.sheetId===t&&An(e.col,e.row,n))}else this.specificRangeMatches=[]}findMatchesInSheet(e){let t=[],{left:n,right:r,top:i,bottom:a}=this.getters.getSheetZone(e);for(let o=i;o<=a;o++)for(let i=n;i<=r;i++){let n=this.getters.isColHidden(e,i),r=this.getters.isRowHidden(e,o);if(n||r)continue;let a={sheetId:e,col:i,row:o};if(this.currentSearchRegex?.test(this.getSearchableString(a))){let n={sheetId:e,col:i,row:o};t.push(n)}}return t}selectNextCell(e,t){let n=this.searchMatches;if(!n.length){this.selectedMatchIndex=null,this.selectedMatchPosition=null;return}let r;if(this.selectedMatchIndex===null){let e=-1;for(let t of this.getSheetsInSearchOrder())if(e=n.findIndex(e=>e.sheetId===t),e!==-1)break;r=e}else r=this.selectedMatchIndex+e;r=(r+n.length)%n.length,this.selectedMatchIndex=r,this.selectedMatchPosition=n[this.selectedMatchIndex];let i=n[r];t.jumpToMatchSheet&&this.getters.getActiveSheetId()!==i.sheetId&&(this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:this.getters.getActiveSheetId(),sheetIdTo:i.sheetId}),this.isSearchDirty=!1),this.model.selection.getBackToDefault(),t.updateSelection&&this.model.selection.selectCell(i.col,i.row)}replace(){this.selectedMatchIndex!==null&&(this.shouldFinalizeUpdateSelection=!0,this.model.dispatch(`REPLACE_SEARCH`,{searchString:this.toSearch,replaceWith:this.toReplace,matches:[this.searchMatches[this.selectedMatchIndex]],searchOptions:this.searchOptions}))}replaceAll(){this.model.dispatch(`REPLACE_SEARCH`,{searchString:this.toSearch,replaceWith:this.toReplace,matches:this.searchMatches,searchOptions:this.searchOptions})}showReplaceWarningMessage(e,t){let n=e-t;n===0?this.notificationStore.notifyUser({type:`warning`,sticky:!1,text:k(`Match(es) cannot be replaced as they are part of a formula or inside a locked sheet`)}):this.notificationStore.notifyUser({type:`warning`,sticky:!1,text:k(`%(replaceable_count)s match(es) replaced. %(irreplaceable_count)s match(es) cannot be replaced as they are part of a formula or inside a locked sheet`,{replaceable_count:n,irreplaceable_count:t})})}replaceMatch(e,t,n,r){if(this.getters.isSheetLocked(e.sheetId)){this.irreplaceableMatchCount++;return}let i=this.getters.getCell(e);if(!i?.isFormula&&!i?.content)return;if(i?.isFormula&&!r.searchFormulas){this.irreplaceableMatchCount++;return}let a=It(t,r),o=new RegExp(a.source,a.flags+`g`),s=TS(this.getters.getCellText(e,{showFormula:r.searchFormulas}).replace(o,n),this.getters.getLocale());this.model.dispatch(`UPDATE_CELL`,{...e,content:s})}getSearchableString(e){return this.getters.getCellText(e,{showFormula:this.searchOptions.searchFormulas})}get highlights(){let e=[],t=this.getters.getActiveSheetId();for(let[n,r]of this.searchMatches.entries()){if(r.sheetId!==t)continue;let i=E(r),a=this.getters.expandZone(t,i),{width:o,height:s}=this.getters.getVisibleRect(a);o>0&&s>0&&e.push({range:this.model.getters.getRangeFromZone(t,a),color:zL,noBorder:n!==this.selectedMatchIndex,thinLine:!0,fillAlpha:.2})}if(this.searchOptions.searchScope===`specificRange`){let n=this.searchOptions.specificRange;n&&n.sheetId===t&&e.push({range:n,color:zL,noFill:!0,thinLine:!0})}return e}},VL=class extends t.Component{static template=`o-spreadsheet-FindAndReplacePanel`;static components={SelectionInput:YN,Section:Q,Checkbox:eP,ValidationMessages:EI,Select:EM};static props={onCloseSidePanel:Function};searchInput=(0,t.useRef)(`searchInput`);store;state;updateSearchContent;get hasSearchResult(){return this.store.selectedMatchIndex!==null}get searchOptions(){return this.store.searchOptions}get allSheetsMatchesCount(){return k(`%s matches in all sheets`,this.store.allSheetMatchesCount)}get currentSheetMatchesCount(){return k(`%(matches)s matches in %(sheetName)s`,{matches:this.store.activeSheetMatchesCount,sheetName:this.env.model.getters.getSheetName(this.env.model.getters.getActiveSheetId())})}get specificRangeMatchesCount(){let e=this.searchOptions.specificRange;if(!e)return``;let{sheetId:t,zone:n}=e;return k(`%(matches)s matches in range %(range)s of %(sheetName)s`,{matches:this.store.specificRangeMatchesCount,range:yn(n),sheetName:this.env.model.getters.getSheetName(t)})}get searchInfo(){return this.store.toSearch?[this.specificRangeMatchesCount,this.currentSheetMatchesCount,this.allSheetsMatchesCount]:[]}setup(){this.store=ur(BL),this.state=(0,t.useState)({dataRange:``}),(0,t.onMounted)(()=>this.searchInput.el?.focus()),(0,t.onWillUnmount)(()=>this.updateSearchContent.stopDebounce()),this.updateSearchContent=pt(this.store.updateSearchContent,200),(0,t.useExternalListener)(window,`keydown`,e=>{let t=pp(e);(t===`Ctrl+F`||t===`Ctrl+H`)&&(this.searchInput.el?.focus(),e.preventDefault(),e.stopPropagation())},{capture:!0})}onFocusSearch(){this.updateDataRange()}onSearchInput(e){this.updateSearchContent(e.target.value)}onKeydownPanel(e){e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.props.onCloseSidePanel())}onKeydownSearch(e){e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),e.shiftKey?this.store.selectPreviousMatch():this.store.selectNextMatch())}onKeydownReplace(e){e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),this.store.replace())}searchFormulas(e){this.store.searchFormulas(e)}searchExactMatch(e){this.store.updateSearchOptions({exactMatch:e})}searchMatchCase(e){this.store.updateSearchOptions({matchCase:e})}changeSearchScope(e){this.store.updateSearchOptions({searchScope:e})}onSearchRangeChanged(e){this.state.dataRange=e[0]}updateDataRange(){if(!this.state.dataRange||this.searchOptions.searchScope!==`specificRange`)return;let e=this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(),this.state.dataRange);this.store.updateSearchOptions({specificRange:e})}get specificRange(){let e=this.store.searchOptions.specificRange;return e?this.env.model.getters.getRangeString(e,`forceSheetReference`):``}get pendingSearch(){return this.updateSearchContent.isDebouncePending()}get selectionInputKey(){return this.env.model.getters.getActiveSheetId()}get searchScopeOptions(){return[{value:`allSheets`,label:k(`All sheets`)},{value:`activeSheet`,label:k(`Current sheet`)},{value:`specificRange`,label:k(`Specific range`)}]}};let HL=new B;function UL({name:e,format:t,descriptionValue:n}){let r=typeof t==`function`?t:()=>t;return{name:e,description:e=>z(n,{format:r(e),locale:e.model.getters.getLocale()}),execute:e=>UP(e,r(e)),isActive:e=>BR(e,r(e)),format:t}}let WL={name:k(`Automatic`),execute:e=>UP(e,``),isActive:e=>zR(e)},GL={name:k(`Plain text`),execute:e=>UP(e,`@`),isActive:e=>BR(e,`@`)},KL=UL({name:k(`Number`),descriptionValue:1000.12,format:`#,##0.00`}),qL={name:k(`Format as percent`),execute:vF,icon:`o-spreadsheet-Icon.PERCENT`},JL=UL({name:k(`Percent`),descriptionValue:.1012,format:`0.00%`}),YL=UL({name:k(`Scientific`),descriptionValue:.1012,format:`0.00e`}),XL=UL({name:k(`Currency`),descriptionValue:1000.12,format:e=>ps(e.model.config.defaultCurrency||Be)}),ZL={...UL({name:k(`Currency rounded`),descriptionValue:1e3,format:e=>_s(ps(e.model.config.defaultCurrency||Be))}),isVisible:e=>{let t=ps(e.model.config.defaultCurrency||Be);return t!==_s(t)}},QL=UL({name:k(`Accounting`),descriptionValue:-1000.12,format:e=>ms(e.model.config.defaultCurrency||Be)}),$L=sc(`2023/09/26 10:43:00 PM`,R),eR={name:k(`Custom currency`),isVisible:e=>e.loadCurrencies!==void 0&&!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`currency`})},tR=UL({name:k(`Date`),descriptionValue:$L,format:e=>e.model.getters.getLocale().dateFormat}),nR=UL({name:k(`Time`),descriptionValue:$L,format:e=>e.model.getters.getLocale().timeFormat}),rR=UL({name:k(`Date time`),descriptionValue:$L,format:e=>VS(e.model.getters.getLocale())}),iR=UL({name:k(`Duration`),descriptionValue:`27:51:38`,format:`hhhh:mm:ss`}),aR={name:k(`Custom date and time`),isVisible:e=>!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`date`})},oR={name:k(`Custom number format`),isVisible:e=>!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`number`})};UL({name:k(`Full date time`),format:`dddd d mmmm yyyy hh:mm:ss a`,descriptionValue:$L});let sR={name:k(`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})},cR={name:k(`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})},lR={name:k(`Bold`),shortcut:`Ctrl+B`,execute:e=>WP(e,{bold:!e.model.getters.getCurrentStyle().bold}),icon:`o-spreadsheet-Icon.BOLD`,isActive:e=>!!e.model.getters.getCurrentStyle().bold},uR={name:k(`Italic`),shortcut:`Ctrl+I`,execute:e=>WP(e,{italic:!e.model.getters.getCurrentStyle().italic}),icon:`o-spreadsheet-Icon.ITALIC`,isActive:e=>!!e.model.getters.getCurrentStyle().italic},dR={name:k(`Underline`),shortcut:`Ctrl+U`,execute:e=>WP(e,{underline:!e.model.getters.getCurrentStyle().underline}),icon:`o-spreadsheet-Icon.UNDERLINE`,isActive:e=>!!e.model.getters.getCurrentStyle().underline},fR={name:k(`Rotation`),icon:e=>JR(e)};function pR(e,t){t=Math.trunc(t/be)*be,WP(e,{rotation:t})}function mR(e,t){let n=e.model.getters.getCurrentStyle().rotation;return n===void 0?t===0:Math.abs(n-t)<be}let hR={name:k(`No rotation`),execute:e=>WP(e,{rotation:0}),icon:`o-spreadsheet-Icon.ROTATION-0`,isActive:e=>mR(e,0)},gR={name:k(`45° rotation`),execute:e=>pR(e,Math.PI/4),icon:`o-spreadsheet-Icon.ROTATION-45`,isActive:e=>mR(e,Math.PI/4)},_R={name:k(`90° rotation`),execute:e=>pR(e,Math.PI/2),icon:`o-spreadsheet-Icon.ROTATION-90`,isActive:e=>mR(e,Math.PI/2)},vR={name:k(`-90° rotation`),execute:e=>pR(e,-Math.PI/2),icon:`o-spreadsheet-Icon.ROTATION-270`,isActive:e=>mR(e,-Math.PI/2)},yR={name:k(`-45° rotation`),execute:e=>pR(e,-Math.PI/4),icon:`o-spreadsheet-Icon.ROTATION-315`,isActive:e=>mR(e,-Math.PI/4)},bR={name:k(`Strikethrough`),execute:e=>WP(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),icon:`o-spreadsheet-Icon.STRIKE`,isActive:e=>!!e.model.getters.getCurrentStyle().strikethrough},xR={name:k(`Font size`),children:RR(),icon:`o-spreadsheet-Icon.FONT_SIZE`},SR={name:k(`Alignment`),icon:`o-spreadsheet-Icon.ALIGN_LEFT`},CR={name:k(`Horizontal align`),icon:e=>GR(e)},wR={name:k(`Left`),shortcut:`Ctrl+Shift+L`,execute:e=>WP(e,{align:`left`}),isActive:e=>HR(e)===`left`,icon:`o-spreadsheet-Icon.ALIGN_LEFT`},TR={name:k(`Center`),shortcut:`Ctrl+Shift+E`,execute:e=>WP(e,{align:`center`}),isActive:e=>HR(e)===`center`,icon:`o-spreadsheet-Icon.ALIGN_CENTER`},ER={name:k(`Right`),shortcut:`Ctrl+Shift+R`,execute:e=>WP(e,{align:`right`}),isActive:e=>HR(e)===`right`,icon:`o-spreadsheet-Icon.ALIGN_RIGHT`},DR={name:k(`Vertical align`),icon:e=>KR(e)},OR={name:k(`Top`),execute:e=>WP(e,{verticalAlign:`top`}),isActive:e=>UR(e)===`top`,icon:`o-spreadsheet-Icon.ALIGN_TOP`},kR={name:k(`Middle`),execute:e=>WP(e,{verticalAlign:`middle`}),isActive:e=>UR(e)===`middle`,icon:`o-spreadsheet-Icon.ALIGN_MIDDLE`},AR={name:k(`Bottom`),execute:e=>WP(e,{verticalAlign:`bottom`}),isActive:e=>UR(e)===`bottom`,icon:`o-spreadsheet-Icon.ALIGN_BOTTOM`},jR={name:k(`Wrapping`),icon:`o-spreadsheet-Icon.WRAPPING_OVERFLOW`},MR={name:k(`Wrapping`),icon:e=>qR(e)},NR={name:k(`Overflow`),execute:e=>WP(e,{wrapping:`overflow`}),isActive:e=>WR(e)===`overflow`,icon:`o-spreadsheet-Icon.WRAPPING_OVERFLOW`},PR={name:k(`Wrap`),execute:e=>WP(e,{wrapping:`wrap`}),isActive:e=>WR(e)===`wrap`,icon:`o-spreadsheet-Icon.WRAPPING_WRAP`},FR={name:k(`Clip`),execute:e=>WP(e,{wrapping:`clip`}),isActive:e=>WR(e)===`clip`,icon:`o-spreadsheet-Icon.WRAPPING_CLIP`};k(`Text Color`),k(`Fill Color`);let IR={name:k(`Conditional formatting`),execute:yF,isEnabled:e=>!e.isSmall,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.CONDITIONAL_FORMAT`},LR={name:k(`Clear formatting`),shortcut:`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 RR(){return Le.map(e=>({name:e.toString(),sequence:e,id:`font_size_${e}`,execute:t=>WP(t,{fontSize:e}),isActive:t=>VR(t,e)}))}function zR(e){let t=e.model.getters.getActivePosition();return e.model.getters.getPivotCellFromPosition(t).type===`VALUE`?!e.model.getters.getEvaluatedCell(t).format:!e.model.getters.getCell(t)?.format}function BR(e,t){let n=e.model.getters.getActivePosition();return e.model.getters.getPivotCellFromPosition(n).type===`VALUE`?e.model.getters.getEvaluatedCell(n).format===t:e.model.getters.getCell(n)?.format===t}function VR(e,t){return(e.model.getters.getCurrentStyle().fontSize||we)===t}function HR(e){let t=e.model.getters.getCurrentStyle();return t.align?t.align:e.model.getters.getActiveCell().defaultAlign}function UR(e){let t=e.model.getters.getCurrentStyle();return t.verticalAlign?t.verticalAlign:Se}function WR(e){let t=e.model.getters.getCurrentStyle();return t.wrapping?t.wrapping:Ce}function GR(e){switch(HR(e)){case`right`:return`o-spreadsheet-Icon.ALIGN_RIGHT`;case`center`:return`o-spreadsheet-Icon.ALIGN_CENTER`;default:return`o-spreadsheet-Icon.ALIGN_LEFT`}}function KR(e){switch(UR(e)){case`top`:return`o-spreadsheet-Icon.ALIGN_TOP`;case`middle`:return`o-spreadsheet-Icon.ALIGN_MIDDLE`;default:return`o-spreadsheet-Icon.ALIGN_BOTTOM`}}function qR(e){switch(WR(e)){case`wrap`:return`o-spreadsheet-Icon.WRAPPING_WRAP`;case`clip`:return`o-spreadsheet-Icon.WRAPPING_CLIP`;default:return`o-spreadsheet-Icon.WRAPPING_OVERFLOW`}}function JR(e){return mR(e,Math.PI/2)?`o-spreadsheet-Icon.ROTATION-90`:mR(e,-Math.PI/2)?`o-spreadsheet-Icon.ROTATION-270`:mR(e,Math.PI/4)?`o-spreadsheet-Icon.ROTATION-45`:mR(e,-Math.PI/4)?`o-spreadsheet-Icon.ROTATION-315`:`o-spreadsheet-Icon.ROTATION-0`}let YR={name:nm.Custom,code:``,symbol:``,decimalPlaces:2,position:`after`};var XR=class extends yr{mutators=[`updateFormat`,`changeCategory`,`selectCurrency`,`changeCurrencyCode`,`changeCurrencySymbol`,`updateAvailableCurrencies`];invalidFormat=!1;isApplyingFormatFromPanel=!1;currentFormat=this.formatInSelection;category=this.detectFormatCategory(this.formatInSelection);selectedCurrencyIndex=0;currencyCode=``;currencySymbol=``;isAccountingFormat=!1;availableCurrencies=[YR,...HL.getAll()];lastFormatInSelection=this.currentFormat;usedFormatForCategory={};constructor(e,t){super(e),t&&(this.category=t),this.model.selection.observe(this,{handleEvent:this.handleSelectionEvent.bind(this)}),this.onDispose(()=>{this.model.selection.unobserve(this)})}handle(){this.isApplyingFormatFromPanel||this.syncActiveFormat()}handleSelectionEvent(){this.getters.isGridSelectionActive()&&this.syncActiveFormat()}syncActiveFormat(){let e=this.formatInSelection;e!==this.lastFormatInSelection&&(this.setActiveFormat(e),this.lastFormatInSelection=e)}setActiveFormat(e){this.currentFormat=e,this.invalidFormat=!As(e||``),this.category=this.detectFormatCategory(e)}get categories(){return[{label:k(`Number`),value:`number`},{label:k(`Date`),value:`date`},{label:k(`Currency`),value:`currency`}]}get formatInSelection(){let e=this.getters.getActivePosition();return this.getters.getPivotCellFromPosition(e).type===`VALUE`?this.getters.getEvaluatedCell(e).format:this.getters.getCell(e)?.format}detectFormatCategory(e){return e?os(e)?`date`:e.includes(`$`)||e.includes(`"`)?`currency`:`number`:`number`}get formatProposals(){return this.category===`date`?this.dateFormatProposals:this.category===`currency`?this.currencyFormatProposals:this.category===`number`?this.numberFormatProposals:[]}get numberFormatProposals(){let e=[`0.00`,`0`,`#,##0`,`#,##0.00`,`0%`,`0.00%`,`0.00e`,`0.00;(0.00);-`].map(e=>({label:z(-1234.56,{format:e,locale:this.getters.getLocale()}),format:e}));return[{label:k(`Automatic`),format:void 0},{label:k(`Plain text`),format:`@`},...e]}get dateFormatProposals(){let e=this.getters.getLocale();return[e.dateFormat,e.timeFormat,e.dateFormat+` `+e.timeFormat,`dddd d mmmm yyyy hh:mm:ss a`,`yyyy-mm-dd`,`yyyy-mm-dd hh:mm:ss`,`dddd d mmmm yyyy`,`d mmmm yyyy`,`ddd d mmm yyyy`,`d mmm yyyy`,`mmmm yyyy`,`mmm yyyy`,`hhhh:mm:ss`,`qq yyyy`,`qqqq yyyy`].map(t=>({label:z($L,{format:t,locale:e}),format:t}))}get currencyFormatProposals(){let e=this.availableCurrencies[this.selectedCurrencyIndex],t=e.position,n=e.position===`before`?`after`:`before`,r=this.currencySymbol.trim()?this.currencySymbol:``,i=this.currencyCode.trim()?this.currencyCode:``,a=e.decimalPlaces;if(!r&&!i)return[];let o=[{symbol:r,position:t,decimalPlaces:0},{symbol:r,position:t,decimalPlaces:a},{symbol:r,position:t,decimalPlaces:0,code:i},{symbol:r,position:t,decimalPlaces:a,code:i},{symbol:r,position:n,decimalPlaces:0},{symbol:r,position:n,decimalPlaces:a},{symbol:r,position:n,decimalPlaces:0,code:i},{symbol:r,position:n,decimalPlaces:a,code:i}],s=new Set,c=this.getters.getLocale();return o.map(e=>{let t=this.isAccountingFormat?ms(e):ps(e);if(!(!e.symbol&&!e.code||s.has(t)))return s.add(t),{format:t,label:z(1e3,{format:t,locale:c})}}).filter(C)}get formatExamples(){let e=this.currentFormat,t=this.getters.getLocale();if(!e||!As(e))return[];if(this.category===`date`)return[{label:k(`Sample:`),value:z($L,{format:e,locale:t})}];{let n=js(e),r=[{label:k(`Positive:`),value:z(1234.56,{format:e,locale:t})},{label:k(`Negative:`),value:z(-1234.56,{format:e,locale:t})},{label:k(`Zero:`),value:z(0,{format:e,locale:t})}];return n===4&&r.push({label:k(`Text:`),value:z(`Text`,{format:e,locale:t})}),r}}updateAvailableCurrencies(){this.availableCurrencies=[YR,...HL.getAll()]}updateFormat(e){this.currentFormat=e,this.invalidFormat=!As(e),this.invalidFormat||(this.lastFormatInSelection=e,this.isApplyingFormatFromPanel=!0,this.model.dispatch(`SET_FORMATTING_WITH_PIVOT`,{sheetId:this.getters.getActiveSheetId(),target:this.getters.getSelectedZones(),format:e||``}),this.isApplyingFormatFromPanel=!1)}changeCategory(e){if(e===this.category)return`noStateChange`;this.usedFormatForCategory[this.category]=this.currentFormat,this.category=e;let t=this.usedFormatForCategory[e]||this.formatProposals[0]?.format||``;this.updateFormat(t)}selectCurrency(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.selectedCurrencyIndex=e;let n=this.availableCurrencies[e];this.currencyCode=n.code,this.currencySymbol=n.symbol,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}changeCurrencyCode(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.currencyCode=e,this.selectedCurrencyIndex=0,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}changeCurrencySymbol(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.currencySymbol=e,this.selectedCurrencyIndex=0,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}toggleAccountingFormat(){let e=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.isAccountingFormat=!this.isAccountingFormat,this.updateFormat(this.formatProposals[e]?.format||this.formatProposals[0]?.format||``)}get invalidFormatMessage(){return this.invalidFormat?k(`The format entered is not valid.`):void 0}},ZR=class extends t.Component{static template=`o-spreadsheet-MoreFormatsPanel`;static props={onCloseSidePanel:Function,category:{type:String,optional:!0}};static components={BadgeSelection:jI,Section:Q,TextInput:gI,Checkbox:eP,Select:EM};store;setup(){this.store=ur(XR,this.props.category),(0,t.onWillStart)(()=>this.loadCurrencies()),(0,t.onWillUpdateProps)(e=>{e.category&&e.category!==this.props.category&&this.store.changeCategory(e.category)})}async loadCurrencies(){HL.getAll().length===0&&((await(this.env.loadCurrencies?.()??Promise.resolve([]))).forEach((e,t)=>{HL.replace(t.toString(),e)}),this.store.updateAvailableCurrencies())}currencyDisplayName(e){return e.name+(e.code?` (${e.code})`:``)}updateSelectCurrency(e){let t=parseInt(e,10);this.store.selectCurrency(t)}isFormatSelected(e){return e===this.store.currentFormat}get availableCurrenciesOptions(){return this.store.availableCurrencies.map((e,t)=>({value:t.toString(),label:this.currencyDisplayName(e)}))}},QR=class extends yr{pivotId;initialMeasure;mutators=[`cancelMeasureDisplayEdition`,`updateMeasureDisplayType`,`updateMeasureDisplayField`,`updateMeasureDisplayValue`];measureDisplay;constructor(e,t,n){super(e),this.pivotId=t,this.initialMeasure=n,this.measureDisplay=n.display||{type:`no_calculations`}}updateMeasureDisplayType(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(e,this.measureDisplay.fieldNameWithGranularity,this.measureDisplay.value))}updateMeasureDisplayField(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(this.measureDisplay.type,e,this.measureDisplay.value))}updateMeasureDisplayValue(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(this.measureDisplay.type,this.measureDisplay.fieldNameWithGranularity,e))}updatePivotMeasureDisplay(e){let t=b(this.model.getters.getPivotCoreDefinition(this.pivotId)),n=this.getMeasureIndex(this.initialMeasure.id,t),r={...t.measures[n],display:e};t.measures[n]=r,this.model.dispatch(`UPDATE_PIVOT`,{pivot:t,pivotId:this.pivotId}).isSuccessful&&(this.measureDisplay=e)}getMeasureDisplay(e,t,n){switch(e){case`no_calculations`:case`%_of_grand_total`:case`%_of_col_total`:case`%_of_row_total`:case`%_of_parent_row_total`:case`%_of_parent_col_total`:case`index`:return{type:e};case`%_of_parent_total`:case`running_total`:case`%_running_total`:case`rank_asc`:case`rank_desc`:return t||=this.fields[0]?.nameWithGranularity,{type:e,fieldNameWithGranularity:t};case`%_of`:case`difference_from`:case`%_difference_from`:t||=this.fields[0]?.nameWithGranularity;let r=this.getPossibleValues(t);return(n===void 0||!r.find(e=>e.value===n))&&(n=Qp),{type:e,fieldNameWithGranularity:t,value:n??`(previous)`}}}getMeasureIndex(e,t){let n=t.measures.findIndex(t=>t.id===e);if(n===-1)throw Error(`Measure with id ${e} not found in pivot.`);return n}get doesDisplayNeedsField(){return[`%_of_parent_total`,`running_total`,`%_running_total`,`rank_asc`,`rank_desc`].includes(this.measureDisplay.type)||this.doesDisplayNeedsValue}get fields(){let e=this.getters.getPivot(this.pivotId).definition;return[...e.columns,...e.rows].map(e=>({...e,displayName:kh(e)}))}get doesDisplayNeedsValue(){return this.isDisplayValueDependant(this.measureDisplay)}isDisplayValueDependant(e){return[`%_of`,`difference_from`,`%_difference_from`].includes(e.type)}get values(){let e=this.measureDisplay;return this.isDisplayValueDependant(e)?this.getPossibleValues(e.fieldNameWithGranularity):[]}getPossibleValues(e){let t=[{value:Qp,label:k(`(previous)`)},{value:$p,label:k(`(next)`)}],n=this.fields.find(t=>t.nameWithGranularity===e);if(!n)return[];let r=this.getters.getPivot(this.pivotId).getPossibleFieldValues(n);return[...t,...r]}cancelMeasureDisplayEdition(){let e=b(this.model.getters.getPivotCoreDefinition(this.pivotId)),t=this.getMeasureIndex(this.initialMeasure.id,e);e.measures[t]={...e.measures[t],display:this.initialMeasure.display},this.model.dispatch(`UPDATE_PIVOT`,{pivot:e,pivotId:this.pivotId})}},$R=class extends t.Component{static template=`o-spreadsheet-PivotMeasureDisplayPanel`;static props={onCloseSidePanel:Function,pivotId:String,measure:Object};static components={Section:Q,Checkbox:eP,RadioSelection:PI,Select:EM};measureDisplayTypeLabels=cm.labels;measureDisplayDescription=cm.documentation;store;setup(){this.store=ur(QR,this.props.pivotId,this.props.measure)}onSave(){this.env.replaceSidePanel(`PivotSidePanel`,`pivot_measure_display_${this.props.pivotId}_${this.props.measure.id}`,{pivotId:this.props.pivotId})}onCancel(){this.store.cancelMeasureDisplayEdition(),this.env.replaceSidePanel(`PivotSidePanel`,`pivot_measure_display_${this.props.pivotId}_${this.props.measure.id}`,{pivotId:this.props.pivotId})}get fieldChoices(){return this.store.fields.map(e=>({value:e.nameWithGranularity,label:e.displayName}))}get measureDisplayTypeOptions(){return Object.keys(this.measureDisplayTypeLabels).map(e=>({value:e,label:this.measureDisplayTypeLabels[e]}))}};function ez(e,t){let n=e.getActiveSheetId();return er(tz(e,t).map(E)).map(t=>({range:e.getRangeFromZone(n,t),noFill:!0,color:ee}))}function tz(e,t){let n=[],r=e.getActiveSheetId();for(let i of e.getSheetViewVisibleCols())for(let a of e.getSheetViewVisibleRows()){let o={sheetId:r,col:i,row:a};e.getPivotIdsFromPosition(o).includes(t)&&n.push(o)}return n}var nz=class extends t.Component{static template=`o-spreadsheet-PivotDeferUpdate`;static props={deferUpdate:Boolean,isDirty:Boolean,toggleDeferUpdate:Function,discard:Function,apply:Function};static components={Section:Q,Checkbox:eP};get deferUpdatesLabel(){return k(`Defer updates`)}get deferUpdatesTooltip(){return k(`Changing the pivot definition requires to reload the data. It may take some time.`)}},rz=class extends t.Component{static template=`o-spreadsheet-PivotCustomGroupsCollapsible`;static props={pivotId:String,customField:Object,onCustomFieldUpdated:Function};static components={SidePanelCollapsible:TM,TextInput:gI,Checkbox:eP};get groups(){return this.props.customField.groups.sort((e,t)=>!e.isOtherGroup&&!t.isOtherGroup?0:e.isOtherGroup?1:-1)}get hasOthersGroup(){return this.props.customField.groups.some(e=>e.isOtherGroup)}addOthersGroup(){if(this.hasOthersGroup)return;let e={name:Mh(k(`Others`),this.props.customField),values:[],isOtherGroup:!0},t=[...this.props.customField.groups,e];this.updateCustomField({...this.props.customField,groups:t})}onDeleteGroup(e){let t=[...this.props.customField.groups];t.splice(e,1),this.updateCustomField({...this.props.customField,groups:t})}onRenameGroup(e,t){let n=b(this.props.customField.groups),r=n[e];r&&(r.name=Mh(t,this.props.customField),this.updateCustomField({...this.props.customField,groups:n}))}updateCustomField(e){let t=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);this.props.onCustomFieldUpdated({customFields:{...t.customFields,[e.name]:e}})}};function iz(e,t,n,r){let i=[];e=e.toLowerCase();for(let a of e){let e=t.toLocaleLowerCase().indexOf(a);e!==-1&&(i.push({value:t.slice(0,e),color:``},{value:t[e],color:n,classes:[r]}),t=t.slice(e+1))}return i.push({value:t}),i.filter(e=>e.value)}var az=class extends t.Component{static template=`o-spreadsheet-AddDimensionButton`;static components={Popover:kv,TextValueProvider:VM};static props={onFieldPicked:Function,fields:Array,slots:{type:Object,optional:!0}};buttonRef=(0,t.useRef)(`button`);popover=(0,t.useState)({isOpen:!1});search=(0,t.useState)({input:``});autoComplete;setup(){this.autoComplete=ur(ON),this.autoComplete.useProvider(this.getProvider()),(0,t.useExternalListener)(window,`click`,e=>{e.target!==this.buttonRef.el&&(this.popover.isOpen=!1)}),mI({refName:`autofocus`})}getProvider(){return{proposals:this.proposals,autoSelectFirstProposal:!1,selectProposal:e=>{let t=this.props.fields.find(t=>t.string===e);t&&this.pickField(t)}}}get proposals(){let e;return e=this.search.input?_l(this.search.input,this.props.fields,e=>e.string===e.name?e.string:e.string+e.name):this.props.fields,e.map(e=>{let t=e.string;return{text:t,fuzzySearchKey:t,htmlContent:iz(this.search.input,t,le,`o-semi-bold`)}})}get popoverProps(){let{x:e,y:t,width:n,height:r}=this.buttonRef.el.getBoundingClientRect();return{anchorRect:{x:e,y:t,width:n,height:r},positioning:`bottom-left`}}updateSearch(e){this.search.input=e,this.autoComplete.useProvider(this.getProvider())}pickField(e){this.props.onFieldPicked(e.name),this.togglePopover()}togglePopover(){this.popover.isOpen=!this.popover.isOpen,this.search.input=``,this.autoComplete.useProvider(this.getProvider())}onKeyDown(e){switch(e.key){case`Enter`:let t=this.autoComplete.provider?.proposals;t?.length===1&&this.autoComplete.provider?.selectProposal(t[0].text||``);let n=this.autoComplete.selectedProposal;this.autoComplete.provider?.selectProposal(n?.text||``);break;case`ArrowUp`:case`ArrowDown`:this.autoComplete.moveSelection(e.key===`ArrowDown`?`next`:`previous`);break;case`Escape`:this.popover.isOpen=!1;break;default:break}}},oz=class extends t.Component{static template=`o-spreadsheet-PivotDimension`;static props={dimension:Object,onRemoved:{type:Function,optional:!0},onNameUpdated:{type:Function,optional:!0},slots:{type:Object,optional:!0}};static components={CogWheelMenu:SI,TextInput:gI};updateName(e){this.props.onNameUpdated?.(this.props.dimension,e===``||e.startsWith(`=`)?void 0:e)}get dimensionDisplayName(){let e=this.props.dimension.displayName;return Bh(e)}},sz=class extends t.Component{static template=`o-spreadsheet-PivotDimensionGranularity`;static props={dimension:Object,onUpdated:Function,availableGranularities:Set,allGranularities:Array};static components={Select:EM};periods=gh;get granularityOptions(){let e=this.props.dimension.granularity||`month`;return this.props.allGranularities.filter(t=>this.props.availableGranularities.has(t)||t===e).map(e=>({value:e,label:this.periods[e]}))}},cz=class extends t.Component{static template=`o-spreadsheet-PivotDimensionOrder`;static props={dimension:Object,onUpdated:Function};static components={Select:EM};get orderSelectOptions(){let e=[{value:`asc`,label:k(`Ascending`)},{value:`desc`,label:k(`Descending`)}];return this.props.dimension.type===`date`?e:[{value:``,label:k(`Unsorted`)},...e]}},lz=class{scope;code=``;constructor(e=new dz){this.scope=e}append(...e){this.code+=e.map(e=>e.toString()).join(`
79
+ `),i=e.pop();for(let i of e)n.push({color:r.color,value:i}),t.push(n),n=[];n.push({...r,value:i})}else n.push(r);n.length&&t.push(n);let r=[];for(let e of t)e.every(this.isContentEmpty)?r.push([e[0]]):r.push(e.filter(e=>!this.isContentEmpty(e)));return r}isContentEmpty(e){return!(e.value||e.classes?.length)}processTokenAtCursor(){let e=this.props.composerStore;this.functionDescriptionState.showDescription=!1;let t=this.props.composerStore.tokenAtCursor;if(Ut(e.currentContent)&&t&&t.type!==`SYMBOL`){let e=t.functionContext,n=e?.parent.toUpperCase();if(e&&n&&n in XM&&t.type!==`UNKNOWN`){let r=XM[n],i=e.argPosition,a=e.args.length;this.functionDescriptionState.functionDescription=r;let o=this.props.composerStore.currentTokens.some(e=>e.type===`RIGHT_PAREN`&&e.parenthesesCode===t.parenthesesCode);this.functionDescriptionState.argsToFocus=this.getArgsToFocus(o,r,a,i),this.functionDescriptionState.showDescription=!0,this.functionDescriptionState.repeatingArgGroupIndex=this.getRepeatingArgGroupIndex(r,a,i)}}}getRepeatingArgGroupIndex(e,t,n){let{minArgRequired:r,maxArgPossible:i,nbrArgRepeating:a}=e;if(!a)return;let o=(a?Math.ceil((t-r)/a):0)*a+r;return Kv(e,Math.max(Math.min(i,o),r))(n).repeatingGroupIndex??0}getArgsToFocus(e,t,n,r){let{nbrArgRepeating:i,minArgRequired:a,nbrOptionalNonRepeatingArgs:o,maxArgPossible:s}=t;if(e){let e=Kv(t,Math.max(Math.min(s,n),a))(r)?.index;return e===void 0?[]:[e]}let c=Math.max(n,a),l=i?a+Math.ceil((c-a)/i)*i+o:s,u=[];for(let e=c;e<=l;e++){let n=Kv(t,e)(r)?.index;n!==void 0&&u.push(n)}return[...new Set(u)]}autoComplete(e){!e||this.assistant.forcedClosed&&this.props.composerStore.canBeToggled||(this.props.composerStore.insertAutoCompleteValue(e),this.processTokenAtCursor())}get displaySpeechBubble(){return!!(this.props.focus!==`inactive`&&this.composerState.hoveredRect&&this.props.composerStore.hoveredContentEvaluation)}};let QM=/[a-zA-Z0-9\_]+(\.[a-zA-Z0-9\_]+)*/,$M=[`-`,`+`],eN=[`%`,`#`];var tN=class{tokens;currentIndex=0;current;length;constructor(e){this.tokens=e,this.current=e[0],this.length=e.length}shift(){let e=this.tokens[this.currentIndex];return this.current=this.tokens[++this.currentIndex],e}get next(){return this.tokens[this.currentIndex+1]}};let nN={"#":40,"%":40,"^":30,"*":20,"/":20,"+":15,"-":15,"&":13,">":10,"<>":10,">=":10,"<":10,"<=":10,"=":10};function rN(e){let t=e.shift();if(!t)throw new ga;switch(t.type){case`DEBUGGER`:let n=cN(e,1e3);return n.debug=!0,n;case`NUMBER`:return{type:`NUMBER`,value:aa(t.value,R),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`STRING`:return{type:`STRING`,value:Xe(t.value),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`INVALID_REFERENCE`:return{type:`REFERENCE`,value:A.InvalidReference,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`REFERENCE`:if(e.current?.value===`:`&&e.next?.type===`REFERENCE`){e.shift();let n=e.shift();return{type:`REFERENCE`,value:`${t.value}:${n?.value}`,tokenStartIndex:t.tokenIndex,tokenEndIndex:n.tokenIndex}}return{type:`REFERENCE`,value:t.value,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`SYMBOL`:let r=t.value;if(e.current?.type===`LEFT_PAREN`&&QM.test(t.value)&&r===Xe(r,`'`)){let{args:n,rightParen:i}=iN(e);return{type:`FUNCALL`,value:r,args:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:i.tokenIndex}}let i=r.toUpperCase();return i===`TRUE`||i===`FALSE`?{type:`BOOLEAN`,value:i===`TRUE`,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex}:{type:`SYMBOL`,value:Xe(t.value,`'`),tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex};case`LEFT_PAREN`:let a=cN(e),o=oN(e,`RIGHT_PAREN`,k(`Missing closing parenthesis`));return{...a,tokenStartIndex:t.tokenIndex,tokenEndIndex:o.tokenIndex};case`LEFT_BRACE`:return sN(e,t);case`OPERATOR`:let s=t.value;if($M.includes(s)){let n=cN(e,nN[s]);return{type:`UNARY_OPERATION`,value:s,operand:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:n.tokenEndIndex}}throw new ga(k(`Unexpected token: %s`,t.value));default:throw new ga(k(`Unexpected token: %s`,t.value))}}function iN(e){if(oN(e,`LEFT_PAREN`,k(`Missing opening parenthesis`)),e.current?.type===`RIGHT_PAREN`)return{args:[],rightParen:oN(e,`RIGHT_PAREN`)};let t=[];for(t.push(aN(e));e.current?.type!==`RIGHT_PAREN`;)oN(e,`ARG_SEPARATOR`,k(`Wrong function call`)),t.push(aN(e));return{args:t,rightParen:oN(e,`RIGHT_PAREN`)}}function aN(e){let t=e.current;return t?.type===`ARG_SEPARATOR`||t?.type===`RIGHT_PAREN`?{type:`EMPTY`,value:``,tokenStartIndex:t.tokenIndex,tokenEndIndex:t.tokenIndex}:cN(e)}function oN(e,t,n){let r=e.shift();if(!r||r.type!==t)throw new ga(n);return r}function sN(e,t){let n=[],r=[cN(e)];for(;e.current?.type!==`RIGHT_BRACE`;){let t=e.shift();if(!t)throw new ga(k(`Missing closing brace`));if(t.type===`ARG_SEPARATOR`)r.push(cN(e));else if(t.type===`ARRAY_ROW_SEPARATOR`)n.push(r),r=[cN(e)];else throw new ga(k(`Unexpected token: %s`,t.value))}let i=oN(e,`RIGHT_BRACE`,k(`Missing closing brace`));return n.push(r),{type:`ARRAY`,value:n,tokenStartIndex:t.tokenIndex,tokenEndIndex:i.tokenIndex}}function cN(e,t=0){if(e.length===0)throw new ga;let n=rN(e);for(;e.current?.type===`OPERATOR`&&nN[e.current.value]>t;){let t=e.shift(),r=t.value;if(eN.includes(r))n={type:`UNARY_OPERATION`,value:r,operand:n,postfix:!0,tokenStartIndex:n.tokenStartIndex,tokenEndIndex:t.tokenIndex};else{let t=cN(e,nN[r]);n={type:`BIN_OPERATION`,value:r,left:n,right:t,tokenStartIndex:n.tokenStartIndex,tokenEndIndex:t.tokenEndIndex}}}return n}function lN(e){return uN(Ju(e))}function uN(e){let t=new tN(e.map((e,t)=>({type:e.type,value:e.value,tokenIndex:t})).filter(e=>e.type!==`SPACE`));t.current?.value===`=`&&t.shift();let n=cN(t);if(t.current)throw new ga;return n}function dN(e,t,n){return mN(e,e=>e.type===t?n(e):e)}function fN(e){return Array.from(pN(e))}function*pN(e){switch(yield e,e.type){case`FUNCALL`:for(let t of e.args)yield*pN(t);break;case`ARRAY`:for(let t of e.value)for(let e of t)yield*pN(e);break;case`UNARY_OPERATION`:yield*pN(e.operand);break;case`BIN_OPERATION`:yield*pN(e.left),yield*pN(e.right);break}}function mN(e,t){switch(e=t(e),e.type){case`FUNCALL`:return{...e,args:e.args.map(e=>mN(e,t))};case`ARRAY`:return{...e,value:e.value.map(e=>e.map(e=>mN(e,t)))};case`UNARY_OPERATION`:return{...e,operand:mN(e.operand,t)};case`BIN_OPERATION`:return{...e,right:mN(e.right,t),left:mN(e.left,t)};default:return e}}function hN(e){let t=0;return e.map(e=>{let n=e.value.toString().length,r=Object.assign({},e,{start:t,end:t+n,length:n});return t=r.end,r})}function gN(e){let t=[],n=0;return e.map((r,i)=>{if(r.type===`LEFT_PAREN`){t.push(n+1),n=0;for(let n=i-1;n>=0;n--){if(e[n].type===`SPACE`){e[n].parenthesesCode=t.join(`:`);continue}e[n].type===`SYMBOL`&&(e[n].parenthesesCode=t.join(`:`));break}}return r.parenthesesCode=t.join(`:`),r.type===`RIGHT_PAREN`&&t.length&&(n=t.pop()),r})}function _N(e){let t=[],n=``,r=0;function i(e){if(t.length===0)return;let n=t.at(-1);if(n&&n.argsTokens){let{argsTokens:t,argPosition:r}=n;t[r]||(t[r]=[]),t[r].push({value:e.value,type:e.type})}}return e.map(e=>{switch([`SPACE`,`LEFT_PAREN`].includes(e.type)||(n=``),e.type){case`SYMBOL`:i(e),n=e.value;break;case`LEFT_PAREN`:t.push({parent:n,argPosition:0,argsTokens:[],args:[]}),i(e),n=``;break;case`RIGHT_PAREN`:t.pop()?.argsTokens?.flat().forEach(i),i(e);break;case`LEFT_BRACE`:r++,i(e);break;case`RIGHT_BRACE`:r--,i(e);break;case`ARG_SEPARATOR`:t.length&&r===0&&t[t.length-1].argPosition++,i(e);break;default:i(e);break}if(t.length){let n=t[t.length-1];n.parent&&(e.functionContext=Object.assign({},n))}return e})}function vN(e){for(let t of e)if(t.functionContext){let{argsTokens:e,args:n}=t.functionContext;if(delete t.functionContext.argsTokens,n.length||!e)continue;e[0]?.[0]?.type===`LEFT_PAREN`&&(e[0]=e[0].slice(1));for(let t of e){let e=t;e.at(0)?.type===`ARG_SEPARATOR`&&(e=e.slice(1));try{n.push(uN(e))}catch{n.push(void 0)}}}return e}function yN(e,t){return vN(_N(gN(hN(bN(Ju(e,t))))))}function bN(e){let t=[];for(;e.length;)t.push(xN(e)||e.shift());return t}function xN(e){if(e.length<2)return null;let t=e[0],n=e[1];return t.type===`REFERENCE`&&n.type===`OPERATOR`&&n.value===`#`&&!t.value.includes(`:`)?(e.splice(0,2),{type:t.type,value:t.value+`#`}):null}var SN=class{lastId=0;add(e){this.lastId++;let t=this.lastId;return new Promise((n,r)=>{e.then(e=>{this.lastId===t&&n(e)}).catch(e=>{this.lastId===t&&r(e)})})}};function CN(e,t,n){let r=(t.startsWith(`=`)?yN(t,n):[]).filter(t=>t.start<=e.start&&t.end>=e.start||t.start>=e.start&&t.start<e.end),i=r.filter(e=>e.type===`REFERENCE`);if(i.length===0)return;let a=r.map(Vc).map(e=>e.value).join(``),o=r[0].start,s=r[r.length-1].end,c=t.slice(0,o)+a+t.slice(s),l=c.length-t.length,u={start:i[0].start,end:i[i.length-1].end+l};return i.length===1&&e.start===e.end&&(u.start=u.end),{content:c,selection:u}}let wN=new B;function TN(e,t,n){let{x:r,y:i,width:a,height:o}=n;if(a<0||o<0)return;let s=t.color||`#017E84`,{ctx:c}=e;c.save(),t.noBorder||(t.dashed&&c.setLineDash([5,3]),c.strokeStyle=s,t.thinLine?(c.lineWidth=1,c.strokeRect(r,i,a,o)):(c.lineWidth=2,c.strokeRect(r+.5,i+.5,a,o))),t.noFill||(c.fillStyle=Wr(Or(s),t.fillAlpha??.12),c.fillRect(r,i,a,o)),c.restore()}var EN=class extends yr{mutators=[`register`,`unRegister`];providers=[];constructor(e){super(e),this.onDispose(()=>{this.providers=[]})}get renderingLayers(){return[`Highlights`]}get highlights(){let e=this.getters.getActiveSheetId();return this.providers.flatMap(e=>e.highlights).filter(t=>t.range.sheetId===e).map(e=>{let{numberOfRows:t,numberOfCols:n}=Mn(e.range.zone),r=t*n===1?this.getters.expandZone(e.range.sheetId,e.range.zone):e.range.unboundedZone;return{...e,range:this.model.getters.getRangeFromZone(e.range.sheetId,r)}})}register(e){this.providers.push(e)}unRegister(e){this.providers=this.providers.filter(t=>t!==e)}drawLayer(e,t){if(t===`Highlights`)for(let t of this.highlights)TN(e,t,this.getters.getVisibleRect(t.range.zone))}},DN=class{mutators=[`notifyUser`,`raiseError`,`askConfirmation`,`updateNotificationCallbacks`];notifyUser=e=>window.alert(e.text);askConfirmation=(e,t,n)=>{window.confirm(e)?t():n?.()};raiseError=(e,t)=>{window.alert(e),t?.()};updateNotificationCallbacks(e){this.notifyUser=e.notifyUser||this.notifyUser,this.raiseError=e.raiseError||this.raiseError,this.askConfirmation=e.askConfirmation||this.askConfirmation}},ON=class extends yr{mutators=[`useProvider`,`moveSelection`,`hide`,`selectIndex`];selectedIndex=void 0;provider;get selectedProposal(){if(!(this.selectedIndex===void 0||this.provider===void 0))return this.provider.proposals[this.selectedIndex]}useProvider(e){this.provider=e,this.selectedIndex=e.autoSelectFirstProposal?0:void 0}hide(){this.provider=void 0,this.selectedIndex=void 0}selectIndex(e){this.selectedIndex=e}moveSelection(e){if(this.provider){if(this.selectedIndex===void 0){this.selectedIndex=0;return}e===`previous`?(this.selectedIndex--,this.selectedIndex<0&&(this.selectedIndex=this.provider.proposals.length-1)):this.selectedIndex=(this.selectedIndex+1)%this.provider.proposals.length}}},kN=class extends yr{mutators=[`startEdition`,`setCurrentContent`,`stopEdition`,`stopComposerRangeSelection`,`cancelEdition`,`cycleReferences`,`hideHelp`,`autoCompleteOrStop`,`insertAutoCompleteValue`,`moveAutoCompleteSelection`,`selectAutoCompleteIndex`,`toggleEditionMode`,`changeComposerCursorSelection`,`replaceComposerCursorSelection`,`hoverToken`];col=0;row=0;editionMode=`inactive`;sheetId=``;_currentContent=``;currentTokens=[];selectionStart=0;selectionEnd=0;initialContent=``;colorIndexByRange={};autoComplete=new ON(this.get);hoveredTokens=[];hoveredContentEvaluation=``;autoCompleteKeepLast=new SN;notificationStore=this.get(DN);highlightStore=this.get(EN);constructor(e){super(e),this.highlightStore.register(this),this.onDispose(()=>{this.highlightStore.unRegister(this),this._cancelEdition()})}handleEvent(e){let t=this.getters.getActiveSheetId(),n;switch(n=e.options.unbounded?this.getters.getUnboundedZone(t,e.anchor.zone):e.anchor.zone,e.mode){case`newAnchor`:this.editionMode===`selecting`&&this.insertSelectedRange(n);break;default:this.editionMode===`selecting`?this.replaceSelectedRange(n):this.updateComposerRange(e.previousAnchor.zone,n);break}}changeComposerCursorSelection(e,t){this.isSelectionValid(this._currentContent.length,e,t)&&(this.selectionStart=e,this.selectionEnd=t,this.stopComposerRangeSelection(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor(),this.updateAutoCompleteProvider())}stopComposerRangeSelection(){this.isSelectingRange&&(this.editionMode=`editing`)}startEdition(e,t){let{col:n,row:r}=this.getters.getActivePosition();this.model.dispatch(`SELECT_FIGURE`,{figureId:null}),this.model.dispatch(`SCROLL_TO_CELL`,{col:n,row:r}),this.editionMode!==`inactive`&&e?this.setContent(e,t):this._startEdition(e,t),this.updateTokenColor(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor(),this.updateAutoCompleteProvider()}cancelEdition(){this.resetContent(),this.cancelEditionAndActivateSheet()}setCurrentContent(e,t){t&&!this.isSelectionValid(e.length,t.start,t.end)||(this.setContent(e,t,!0),this.updateTokenColor(),this.computeFormulaCursorContext(),this.computeParenthesisRelatedToCursor())}replaceComposerCursorSelection(e){this.replaceSelection(e)}handle(e){switch(e.type){case`SELECT_FIGURE`:e.figureId&&(this.resetContent(),this.cancelEditionAndActivateSheet());break;case`START_CHANGE_HIGHLIGHT`:let{left:t,top:n}=e.zone;this.isSelectingRange&&(this.editionMode=`editing`),this.model.selection.resetAnchor(this,{cell:{col:t,row:n},zone:e.zone});break}}get currentContent(){return this.editionMode===`inactive`?this.getComposerContent(this.getters.getActivePosition()).text:this._currentContent}get composerSelection(){return{start:this.selectionStart,end:this.selectionEnd}}get isSelectingRange(){return this.editionMode===`selecting`}get showSelectionIndicator(){return this.isSelectingRange&&this.canStartComposerRangeSelection()}get tokenAtCursor(){let e=Math.min(this.selectionStart,this.selectionEnd),t=Math.max(this.selectionStart,this.selectionEnd);if(!(e===t&&t===0))return this.currentTokens.find(n=>n.start<=e&&n.end>=t)}get autoCompleteProposals(){return this.autoComplete.provider?.proposals||[]}get autoCompleteSelectedIndex(){return this.autoComplete.selectedIndex}get isAutoCompleteDisplayed(){return!!this.autoComplete.provider}get canBeToggled(){return this.autoComplete.provider?.canBeToggled??!0}cycleReferences(){let e=this.getters.getLocale(),t=CN(this.composerSelection,this._currentContent,e);t!==void 0&&this.setCurrentContent(t.content,t.selection)}toggleEditionMode(){if(this.editionMode===`inactive`)return;let e=Math.min(this.selectionStart,this.selectionEnd),t=Math.max(this.selectionStart,this.selectionEnd),n=[...this.currentTokens].reverse().find(n=>n.end>=e&&t>=n.start&&n.type===`REFERENCE`);if(this.editionMode===`editing`&&n){let e=this.getters.getActiveSheetId(),{sheetName:t,xc:r}=zc(n.value),i=this.getters.getSheetIdByName(t);i&&i!==e&&this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:e,sheetIdTo:i}),this.selectionStart=this.selectionEnd=n.end;let a=this.getFullySpreadRange(this.sheetId,r).zone;this.captureSelection(a),this.editionMode=`selecting`}else this.editionMode=`editing`}hoverToken(e){this.currentTokens.forEach(e=>e.isInHoverContext=void 0);let t=[...this.currentTokens];if(e===void 0||[`ARG_SEPARATOR`,`SPACE`].includes(t[e].type)){this.hoveredContentEvaluation=``,this.hoveredTokens=[];return}let n=this.getMissingSymbols(this.currentTokens);for(let e of n){let n=e===`)`?`RIGHT_PAREN`:`RIGHT_BRACE`,r=t[t.length-1].start+1;t.push({value:e,type:n,start:r,end:r+e.length,length:1})}let r=t;if(e!==0){let n=this.getRelatedTokens(t,e),i=t.filter(e=>!n.includes(e)&&e.type!==`SPACE`);r=i.length===1&&i[0]===t[0]?t:n}r.forEach(e=>e.isInHoverContext=!0);let i=r.map(e=>e.value).join(``);Ut(i)||(i=`=${i}`);let a=TS(i,this.getters.getLocale()),o=this.evaluateCanonicalFormula(a);this.hoveredTokens=r,this.hoveredContentEvaluation=ny(o,`0`,this.getters.getLocale())}evaluateCanonicalFormula(e){return this.getters.evaluateFormulaResult(this.sheetId,e)}getRelatedTokens(e,t){try{let n=uN(e),r;for(let e of fN(n))if(t>=e.tokenStartIndex&&t<=e.tokenEndIndex)r=e;else if(t<e.tokenStartIndex)break;return r?e.slice(r.tokenStartIndex,r.tokenEndIndex+1):e}catch(t){if(t instanceof j)return e;throw t}}captureSelection(e,t,n){this.model.selection.capture(this,{cell:{col:t??e.left,row:n??e.top},zone:e},{handleEvent:this.handleEvent.bind(this),release:()=>{this._stopEdition()}})}isSelectionValid(e,t,n){return t>=0&&t<=e&&n>=0&&n<=e}startComposerRangeSelection(){if(this.sheetId===this.getters.getActiveSheetId()){let e=E({col:this.col,row:this.row});this.model.selection.resetAnchor(this,{cell:{col:this.col,row:this.row},zone:e})}this.editionMode=`selecting`}_startEdition(e,t){let n=this.getters.getActiveCell(),r=this.getters.getLocale();e&&n.format?.includes(`%`)&&ra(e,r)&&(t||={start:e.length,end:e.length},e=`${e}%`);let{col:i,row:a,sheetId:o}=this.getters.getActivePosition();this.col=i,this.sheetId=o,this.row=a,this.editionMode=`editing`;let{text:s,adjustedSelection:c}=this.getComposerContent({sheetId:o,col:i,row:a},t);this.initialContent=s,this.setContent(e||this.initialContent,c??t),this.colorIndexByRange={};let l=E({col:this.col,row:this.row});this.captureSelection(l,i,a)}_stopEdition(){if(this.editionMode!==`inactive`){this.cancelEditionAndActivateSheet();let e=this.getCurrentCanonicalContent();if(this.initialContent===e)return;if(e&&Ut(e)){let t=this.getMissingSymbols(this.currentTokens);e+=gt(t)}this.confirmEdition(e)}}getCurrentCanonicalContent(){return TS(this._currentContent,this.getters.getLocale())}cancelEditionAndActivateSheet(){this.editionMode!==`inactive`&&(this._cancelEdition(),this.getters.getActiveSheetId()!==this.sheetId&&this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:this.getters.getActiveSheetId(),sheetIdTo:this.sheetId}))}_cancelEdition(){this.editionMode!==`inactive`&&(this.editionMode=`inactive`,this.model.selection.release(this),this.colorIndexByRange={},this.hoveredTokens=[],this.hoveredContentEvaluation=``,this.hideHelp())}resetContent(){this.setContent(this.initialContent||``)}setContent(e,t,n){let r=this._currentContent!==e;if(this._currentContent=e,t?(this.selectionStart=t.start,this.selectionEnd=t.end):this.selectionStart=this.selectionEnd=e.length,r||this.editionMode!==`inactive`){let t=this.getters.getLocale();this.currentTokens=Ut(e)?yN(e,t):[],this.currentTokens.filter(e=>e.type!==`SPACE`).length>1e3&&n&&this.notificationStore.raiseError(k(`This formula has over 1000 parts. It can't be processed properly, consider splitting it into multiple cells`))}this.canStartComposerRangeSelection()&&this.startComposerRangeSelection(),this.updateAutoCompleteProvider()}getAutoCompleteProviders(){return wN.getAll()}insertSelectedRange(e){let t=Math.min(this.selectionStart,this.selectionEnd),n=this.getZoneReference(e);this.canStartComposerRangeSelection()?this.insertText(n,t):this.insertText(`,`+n,t)}replaceSelectedRange(e){let t=this.getZoneReference(e),n=this.tokenAtCursor,r=n?.type===`REFERENCE`?n.start:this.selectionStart;this.replaceText(t,r,this.selectionEnd)}updateComposerRange(e,t){let n=this.getters.getActiveSheetId(),r=this.tokenAtCursor,i=(r?[r,...this.currentTokens]:this.currentTokens).filter(e=>e.type===`REFERENCE`).find(t=>{let{xc:r,sheetName:i}=zc(t.value),a=i||this.getters.getSheetName(this.sheetId);if(!wl(this.getters.getSheetName(n),a))return!1;let o=this.getFullySpreadRange(n,r);return Dn(this.getters.expandZone(n,o.zone),e)});if(!i)return;let a=this.getFullySpreadRange(n,i.value);this.selectionStart=i.start,this.selectionEnd=this.selectionStart+i.value.length;let o=this.getters.getRangeFromZone(n,t),s=this.getRangeReference(o,a.parts);this.replaceSelection(s)}getZoneReference(e){let t=this.sheetId,n=this.getters.getActiveSheetId(),r=this.getters.getRangeFromZone(n,e);return this.getters.getSelectionRangeString(r,t,{allowSpilledReferences:!0})}getRangeReference(e,t){let n=[...t],r={...e,parts:n};return this.getters.getSelectionRangeString(r,this.sheetId,{allowSpilledReferences:!0})}replaceSelection(e){let t=Math.min(this.selectionStart,this.selectionEnd),n=Math.max(this.selectionStart,this.selectionEnd);this.replaceText(e,t,n)}replaceText(e,t,n){this._currentContent=this._currentContent.slice(0,t)+this._currentContent.slice(n,this._currentContent.length),this.insertText(e,t)}insertText(e,t){let n=this._currentContent.slice(0,t)+e+this._currentContent.slice(t),r=t+e.length;this.setCurrentContent(n,{start:r,end:r})}updateTokenColor(){this.updateRangeColor();for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].color=this.getTokenColor(this.currentTokens[e])}getTokenColor(e){if(e.type===`REFERENCE`){let{xc:t,sheetName:n}=zc(e.value);return this.rangeColor(t,n)||`light-dark(#000000, #ffffff)`}if(e.type===`SYMBOL`){let t=e.value.toUpperCase();if(t===`TRUE`||t===`FALSE`)return We.NUMBER;if(t in uO.content)return We.FUNCTION}return[`LEFT_PAREN`,`RIGHT_PAREN`].includes(e.type)&&e.parenthesesCode===``?We.ORPHAN_RIGHT_PAREN:We[e.type]||`light-dark(#000000, #ffffff)`}rangeColor(e,t){let n=t?this.model.getters.getSheetIdByName(t):this.sheetId,r=this.highlights.find(t=>{if(t.range.sheetId!==n)return!1;let r=this.getFullySpreadRange(n,e).zone;return r=Gn(r)===1?this.model.getters.expandZone(n,r):r,Dn(r,t.range.zone)});return r&&r.color?r.color:void 0}computeFormulaCursorContext(){for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].isBlurred=!1;if(this.selectionStart!==this.selectionEnd)return;let e=this.getParenthesesCodeAfterCursor(),t=[...this.currentTokens].reverse().find(t=>e.startsWith(t.parenthesesCode)&&t.type===`SYMBOL`);if(t)for(let e=0;e<this.currentTokens.length;e++)(this.currentTokens[e].parenthesesCode||``).startsWith(t.parenthesesCode||``)||(this.currentTokens[e].isBlurred=!0)}getParenthesesCodeAfterCursor(){let e=this.tokenAtCursor?.parenthesesCode||``;return this.tokenAtCursor?.type===`RIGHT_PAREN`?e.slice(0,-1)||``:e}computeParenthesisRelatedToCursor(){for(let e=0;e<this.currentTokens.length;e++)this.currentTokens[e].isParenthesisLinkedToCursor=!1;let e=this.tokenAtCursor;if(!(!e||e.parenthesesCode===``||![`LEFT_PAREN`,`RIGHT_PAREN`].includes(e.type)))for(let t=0;t<this.currentTokens.length;t++){let n=this.currentTokens[t];[`LEFT_PAREN`,`RIGHT_PAREN`].includes(n.type)&&n.parenthesesCode===e.parenthesesCode&&n!==e&&(this.currentTokens[t].isParenthesisLinkedToCursor=!0,this.tokenAtCursor.isParenthesisLinkedToCursor=!0)}}updateRangeColor(){if(!Ut(this._currentContent)||this.editionMode===`inactive`)return;let e=this.sheetId,t=this.getReferencedRanges().map(t=>this.getters.getRangeString(t,e)),n={};for(let e of t)this.colorIndexByRange[e]!==void 0&&(n[e]=this.colorIndexByRange[e]);let r=new Set(Object.values(n)),i=0,a=()=>{for(;r.has(i);)i++;return r.add(i),i};for(let e of t)n[e]=e in n?n[e]:a();this.colorIndexByRange=n}get highlights(){if(!Ut(this.currentContent)||this.editionMode===`inactive`)return[];let e=this.sheetId,t=e=>Tr[this.colorIndexByRange[e]%Tr.length];return this.getReferencedRanges().map(n=>{let r=this.getters.getRangeString(n,e),{numberOfRows:i,numberOfCols:a}=Mn(n.zone),o=i*a===1?this.getters.expandZone(n.sheetId,n.zone):n.unboundedZone;return{range:this.model.getters.getRangeFromZone(n.sheetId,o),color:t(r),interactive:!0}})}getReferencedRanges(){let e=this.sheetId;return this.currentTokens.filter(e=>e.type===`REFERENCE`).map(t=>this.getFullySpreadRange(e,t.value)).filter(e=>!e.invalidSheetName&&!e.invalidXc)}getFullySpreadRange(e,t){if(!t.endsWith(`#`))return this.getters.getRangeFromSheetXC(e,t);let n=t.slice(0,-1),r=this.getters.getRangeFromSheetXC(e,n),i=this.getters.getSpreadZone({sheetId:r.sheetId,col:r.zone.left,row:r.zone.top});return i?this.getters.getRangeFromZone(e,i):r}async updateAutoCompleteProvider(){this.autoComplete.hide();let e=await this.autoCompleteKeepLast.add(this.findAutocompleteProvider());e&&(this.autoComplete.useProvider(e),this.model.trigger(`update`))}async findAutocompleteProvider(){let e=this.currentContent,t=Ut(e)?this.tokenAtCursor:{type:`STRING`,value:e};if(this.editionMode===`inactive`||!t||[`TRUE`,`FALSE`].includes(t.value.toUpperCase())||!(this.canStartComposerRangeSelection()||[`SYMBOL`,`STRING`,`UNKNOWN`].includes(t.type)))return;let n={composer:this,getters:this.getters},r=this.getAutoCompleteProviders().sort((e,t)=>(e.sequence??1/0)-(t.sequence??1/0)).map(r=>({...r,getProposals:r.getProposals.bind(n,t,e),selectProposal:r.selectProposal.bind(n,t)}));for(let e of r){let n=await e.getProposals(),r=n?.find(e=>e.text===t.value),i=t.value.replace(/[ ,\(\)]/g,``);if(this._currentContent===this.initialContent&&e.displayAllOnInitialContent&&n?.length)return{proposals:n,selectProposal:e.selectProposal,autoSelectFirstProposal:e.autoSelectFirstProposal??!1,canBeToggled:e.canBeToggled};if(r&&this._currentContent!==this.initialContent)return;if(i&&n&&![`ARG_SEPARATOR`,`LEFT_PAREN`,`OPERATOR`].includes(t.type)){let e=_l(i,n,e=>e.fuzzySearchKey||e.text);(!r||e.length)&&(n=e)}if(e.maxDisplayedProposals&&(n=n?.slice(0,e.maxDisplayedProposals)),n?.length)return{proposals:n,selectProposal:e.selectProposal,autoSelectFirstProposal:e.autoSelectFirstProposal??!1,canBeToggled:e.canBeToggled}}}hideHelp(){this.autoComplete.hide()}autoCompleteOrStop(e,t=!1){if(this.editionMode!==`inactive`){let n=this.autoComplete;if(!(t&&this.canBeToggled)&&n.provider&&n.selectedIndex!==void 0){let e=n.provider.proposals[n.selectedIndex]?.text;if(e){this.autoComplete.provider?.selectProposal(e);return}}this.stopEdition(e)}}insertAutoCompleteValue(e){this.autoComplete.provider?.selectProposal(e)}selectAutoCompleteIndex(e){this.autoComplete.selectIndex(x(0,e,10))}moveAutoCompleteSelection(e){this.autoComplete.moveSelection(e)}canStartComposerRangeSelection(){if(Ut(this._currentContent)){let e=this.tokenAtCursor;if(!e)return!1;let t=this.currentTokens.map(e=>e.start).indexOf(e.start),n=t,r=e;for(;![`ARG_SEPARATOR`,`ARRAY_ROW_SEPARATOR`,`LEFT_PAREN`,`LEFT_BRACE`,`OPERATOR`].includes(r.type)||Cu.includes(r.value);){if(r.type!==`SPACE`||n<1)return!1;n--,r=this.currentTokens[n]}for(n=t+1,r=this.currentTokens[n];r&&![`ARG_SEPARATOR`,`ARRAY_ROW_SEPARATOR`,`RIGHT_PAREN`,`RIGHT_BRACE`,`OPERATOR`].includes(r.type);){if(r.type!==`SPACE`)return!1;n++,r=this.currentTokens[n]}return!0}return!1}getMissingSymbols(e){let t=[];for(let n of e)switch(n.type){case`LEFT_PAREN`:t.push(`)`);break;case`LEFT_BRACE`:t.push(`}`);break;case`RIGHT_PAREN`:case`RIGHT_BRACE`:t.length>0&&t.at(-1)===n.value&&t.pop();break}return t.reverse(),t}},AN=class extends kN{args;constructor(e,t){super(e),this.args=t,this._currentContent=this.getComposerContent().text}getAutoCompleteProviders(){let e=super.getAutoCompleteProviders(),t=this.args().contextualAutocomplete;return t&&e.push(t),e}getZoneReference(e){let t=super.getZoneReference(e);return this.args().defaultStatic?Uc(t,`colrow`):t}getComposerContent(){let e=this.args().defaultRangeSheetId;return{text:DS(Ju(this.args().content).map(t=>{if(t.type===`REFERENCE`){let n=this.getters.getRangeFromSheetXC(e,t.value);return this.getters.getRangeString(n,this.getters.getActiveSheetId())}return t.value}).join(``),this.getters.getLocale())}}stopEdition(){this._stopEdition()}confirmEdition(e){this.args().onConfirm(e)}getTokenColor(e){if(e.type===`SYMBOL`){let t=this.args().getContextualColoredSymbolToken?.(e);if(t)return t}return super.getTokenColor(e)}hoverToken(){}},jN=class extends t.Component{static template=`o-spreadsheet-StandaloneComposer`;static props={composerContent:{type:String,optional:!0},defaultRangeSheetId:{type:String,optional:!0},defaultStatic:{type:Boolean,optional:!0},onConfirm:Function,contextualAutocomplete:{type:Object,optional:!0},placeholder:{type:String,optional:!0},title:{type:String,optional:!0},class:{type:String,optional:!0},invalid:{type:Boolean,optional:!0},autofocus:{type:Boolean,optional:!0},getContextualColoredSymbolToken:{type:Function,optional:!0}};static components={Composer:ZM};static defaultProps={composerContent:``,defaultStatic:!1};composerFocusStore;standaloneComposerStore;composerInterface;spreadsheetRect=Dv();setup(){this.composerFocusStore=D(xr);let e=ur(AN,()=>({onConfirm:this.props.onConfirm,content:this.props.composerContent,defaultStatic:this.props.defaultStatic??!1,contextualAutocomplete:this.props.contextualAutocomplete,defaultRangeSheetId:this.props.defaultRangeSheetId,getContextualColoredSymbolToken:this.props.getContextualColoredSymbolToken}));this.standaloneComposerStore=e,this.composerInterface={id:`standaloneComposer`,get editionMode(){return e.editionMode},startEdition:this.standaloneComposerStore.startEdition,setCurrentContent:this.standaloneComposerStore.setCurrentContent,stopEdition:this.standaloneComposerStore.stopEdition},(0,t.onMounted)(()=>{this.props.autofocus&&this.focus===`inactive`&&(this.composerFocusStore.focusComposer(this.composerInterface,{}),this.composerFocusStore.activeComposer.editionMode)})}get focus(){return this.composerFocusStore.activeComposer===this.composerInterface?this.composerFocusStore.focusMode:`inactive`}get composerStyle(){return this.props.invalid?U({padding:`1px 0px 0px 0px`}):U({padding:`1px 0px`})}get containerClass(){return[this.focus===`inactive`?``:`active`,this.props.invalid?`o-invalid`:``,this.props.class||``].join(` `)}onFocus(e){this.composerFocusStore.focusComposer(this.composerInterface,{selection:e})}},MN=class extends t.Component{static template=`o-spreadsheet-CriterionInput`;static props={value:{type:String,optional:!0},criterionType:String,onValueChanged:Function,onKeyDown:{type:Function,optional:!0},focused:{type:Boolean,optional:!0},onBlur:{type:Function,optional:!0},onFocus:{type:Function,optional:!0},disableFormulas:{type:Boolean,optional:!0}};static defaultProps={value:``,onKeyDown:()=>{},focused:!1,onBlur:()=>{}};static components={StandaloneComposer:jN};inputRef=(0,t.useRef)(`input`);setup(){(0,t.useEffect)(()=>{this.props.focused&&this.inputRef.el&&this.inputRef.el.focus()},()=>[this.props.focused,this.inputRef.el])}state=(0,t.useState)({shouldDisplayError:!!this.props.value});get placeholder(){return this.allowedValues===`onlyFormulas`?k(`Formula`):this.allowedValues===`onlyLiterals`?k(`Value`):k(`Value or formula`)}get allowedValues(){let e=Z.get(this.props.criterionType);if(e.allowedValues===`onlyFormulas`&&this.props.disableFormulas)throw Error(`Cannot disable formulas for criterion type ${this.props.criterionType} that accept only formulas`);return(this.props.disableFormulas?`onlyLiterals`:e.allowedValues)??`any`}onInputValueChanged(e){this.state.shouldDisplayError=!0,this.props.onValueChanged(e.target.value)}onChangeComposerValue(e){this.state.shouldDisplayError=!0,this.props.onValueChanged(e)}getDataValidationRuleInputComposerProps(){return{onConfirm:e=>this.onChangeComposerValue(e),composerContent:this.props.value,placeholder:this.placeholder,class:`o-sidePanel-composer`,defaultRangeSheetId:this.env.model.getters.getActiveSheetId(),invalid:this.state.shouldDisplayError&&!!this.errorMessage,defaultStatic:!0,autofocus:this.props.focused}}get errorMessage(){if(this.state.shouldDisplayError)return this.env.model.getters.getDataValidationInvalidCriterionValueMessage(this.props.criterionType,ES(this.props.value,this.env.model.getters.getLocale()))}};let NN={today:k(`today`),yesterday:k(`yesterday`),tomorrow:k(`tomorrow`),lastWeek:k(`in the past week`),lastMonth:k(`in the past month`),lastYear:k(`in the past year`),exactDate:k(`exact date`)};var PN=class extends DM{static template=`o-spreadsheet-DataValidationDateCriterion`;static components={CriterionInput:MN,Select:EM};get currentDateValue(){return this.props.criterion.dateValue||`exactDate`}onValueChanged(e){this.updateCriterion({values:[e],dateValue:this.currentDateValue})}onDateValueChanged(e){this.updateCriterion({dateValue:e})}get dateValues(){return Object.keys(NN).map(e=>({value:e,label:NN[e]}))}},FN=class extends DM{static template=`o-spreadsheet-DoubleInputCriterionForm`;static components={CriterionInput:MN};onFirstValueChanged(e){let t=this.props.criterion.values;this.updateCriterion({values:[e,t[1]||``]})}onSecondValueChanged(e){let t=this.props.criterion.values;this.updateCriterion({values:[t[0]||``,e]})}},IN=class extends DM{static template=`o-spreadsheet-SingleInputCriterionForm`;static components={CriterionInput:MN};onValueChanged(e){let t=b(this.props.criterion);t.values[0]=e,this.updateCriterion(t)}},LN=class extends DM{static template=`o-spreadsheet-Top10CriterionForm`;static components={CriterionInput:MN,Select:EM};onValueChanged(e){let t=b(this.props.criterion);t.values[0]=e,this.updateCriterion(t)}updateIsBottom(e){let t=b(this.props.criterion);t.isBottom=e===`bottom`,this.updateCriterion(t)}updateIsPercent(e){let t=b(this.props.criterion);t.isPercent=e===`percent`,this.updateCriterion(t)}get isBottomSelectOptions(){return[{value:`top`,label:k(`Top`)},{value:`bottom`,label:k(`Bottom`)}]}get isPercentSelectOptions(){return[{value:`values`,label:k(`Values`)},{value:`percent`,label:k(`Percent`)}]}};function RN(e,t){let n=()=>{window.removeEventListener(`pointerup`,r,{capture:!0}),window.removeEventListener(`dragstart`,i),window.removeEventListener(`pointermove`,e),window.removeEventListener(`wheel`,e)},r=e=>{t(e),n()};function i(e){e.preventDefault()}return window.addEventListener(`pointerup`,r,{capture:!0}),window.addEventListener(`dragstart`,i),window.addEventListener(`pointermove`,e),window.addEventListener(`wheel`,e,{passive:!1}),n}var zN=class extends t.Component{static template=`o-spreadsheet-ColorPicker`;static props={onColorPicked:Function,currentColor:{type:String,optional:!0},maxHeight:{type:Number,optional:!0},anchorRect:Object,disableNoColor:{type:Boolean,optional:!0}};static defaultProps={currentColor:``};static components={Popover:kv};COLORS=_e;state=(0,t.useState)({showGradient:!1,currentHslaColor:kr(this.props.currentColor)?{...Br(this.props.currentColor),a:1}:{h:0,s:100,l:100,a:1},customHexColor:kr(this.props.currentColor)?Or(this.props.currentColor):``});get colorPickerStyle(){return this.props.maxHeight!==void 0&&this.props.maxHeight<=0?U({display:`none`}):``}get popoverProps(){return{anchorRect:this.props.anchorRect,maxHeight:this.props.maxHeight,positioning:`bottom-left`,verticalOffset:0}}get gradientHueStyle(){return U({background:`hsl(${this.state.currentHslaColor?.h||0} 100% 50%)`})}get sliderStyle(){let e=this.state.currentHslaColor?.h||0;return U({"margin-left":`${x(Math.round(e/360*216),1,216)-18/2}px`})}get pointerStyle(){let{s:e,l:t}=this.state.currentHslaColor||{s:0,l:0},n=Math.round(216*x(e/100,0,1)),r=Math.round(186*x(1-2*t/(200-e),0,1));return U({left:`${-16/2+n}px`,top:`${-16/2+r}px`,background:zr(this.state.currentHslaColor)})}get colorPreviewStyle(){return U({"background-color":zr(this.state.currentHslaColor)})}get checkmarkColor(){return dd(this.props.currentColor)}get isHexColorInputValid(){return!this.state.customHexColor||kr(this.state.customHexColor)}setCustomGradient({x:e,y:t}){let n=x(e,0,216),r=x(t,0,186),i=n/216,a=r/186,o=100*i,s=100*(1-a)*(1-.5*i);this.updateColor({s:o,l:s})}setCustomHue(e){let t=Math.round(x(360*e/216,0,359));this.updateColor({h:t})}updateColor(e){this.state.currentHslaColor={...this.state.currentHslaColor,...e},this.state.customHexColor=zr(this.state.currentHslaColor)}onColorClick(e){e&&this.props.onColorPicked(Or(e))}resetColor(){this.props.onColorPicked(``)}toggleColorPicker(){this.state.showGradient=!this.state.showGradient}dragGradientPointer(e){let t={x:e.offsetX,y:e.offsetY};this.setCustomGradient(t);let n={x:e.clientX,y:e.clientY};RN(e=>{let r={x:e.clientX,y:e.clientY},i=r.x-n.x,a=r.y-n.y,o={x:t.x+i,y:t.y+a};this.setCustomGradient(o)},()=>{})}dragHuePointer(e){let t=e.offsetX,n=e.clientX;this.setCustomHue(t),RN(e=>{let r=t+(e.clientX-n);this.setCustomHue(r)},()=>{})}setHexColor(e){let t=e.target.value.replace(`##`,`#`).slice(0,7);this.state.customHexColor=t,kr(t)&&(this.state.currentHslaColor={...Br(t),a:1})}addCustomColor(e){!Ar(this.state.currentHslaColor)||!kr(this.state.customHexColor)||this.props.onColorPicked(Or(this.state.customHexColor))}isSameColor(e,t){return Ur(e,t)}},Q=class extends t.Component{static template=`o_spreadsheet.Section`;static props={class:{type:String,optional:!0},title:{type:String,optional:!0},slots:Object}},BN=class extends t.Component{static template=`o-spreadsheet.RoundColorPicker`;static components={Section:Q,ColorPicker:zN};static props={currentColor:{type:String,optional:!0},title:{type:String,optional:!0},onColorPicked:Function,disableNoColor:{type:Boolean,optional:!0}};colorPickerButtonRef=(0,t.useRef)(`colorPickerButton`);state;setup(){this.state=(0,t.useState)({pickerOpened:!1}),(0,t.useExternalListener)(window,`click`,this.closePicker)}closePicker(){this.state.pickerOpened=!1}togglePicker(){this.state.pickerOpened=!this.state.pickerOpened}onColorPicked(e){this.props.onColorPicked(e),this.state.pickerOpened=!1}get colorPickerAnchorRect(){let e=this.colorPickerButtonRef.el;return op(e)}get buttonStyle(){return U({background:this.props.currentColor})}},VN=class extends DM{static template=`o-spreadsheet-ListCriterionForm`;static components={CriterionInput:MN,RoundColorPicker:BN,Select:EM};state=(0,t.useState)({items:[],focusedValueIndex:this.props.autofocus?0:void 0});setup(){super.setup();let e=this.props.criterion.values||[],n=this.props.criterion.colors||{};this.state.items=Array.from({length:Math.max(e.length,2)},(t,r)=>{let i=e[r]??``;return{value:i,color:i?n[i]:void 0}});let r=e=>{e.criterion.displayStyle===void 0&&this.updateCriterion({displayStyle:`chip`})};(0,t.onWillUpdateProps)(r),(0,t.onWillStart)(()=>r(this.props))}syncCriterion(){let e=this.state.items.map(e=>e.value),t={};for(let{value:e,color:n}of this.state.items)e?.trim()!==``&&n&&(t[e]=n);this.updateCriterion({values:e,colors:t})}onValueChanged(e,t){this.state.items[e].value=t,this.syncCriterion()}onColorChanged(e,t){this.state.items[e].color=t,this.syncCriterion()}onAddAnotherValue(){this.state.items.push({value:``})}removeItem(e){this.state.items.splice(e,1),this.syncCriterion()}onChangedDisplayStyle(e){this.updateCriterion({displayStyle:e})}onKeyDown(e,t){(e.key===`Enter`||e.key===`Tab`)&&t===this.state.items.length-1?(this.onAddAnotherValue(),this.state.focusedValueIndex=t+1,e.preventDefault()):e.key===`Enter`&&(this.state.focusedValueIndex=t+1)}onBlurInput(){this.state.focusedValueIndex=void 0}get displayTypeOptions(){return[{value:`chip`,label:k(`Chip`)},{value:`arrow`,label:k(`Arrow`)},{value:`plainText`,label:k(`Plain text`)}]}};function HN(){let e,n=document.body.style.cursor,r=[],i=()=>{e=void 0,document.body.style.cursor=n,r.forEach(e=>e()),r=[]},a=(t,a)=>{let s=()=>{document.body.style.cursor=`move`,e&&(Object.assign(o.itemsStyle,e.getItemStyles()),a.onChange?.())};o.cancel=()=>{o.draggedItemId=void 0,o.itemsStyle={},document.body.style.cursor=n,a.onCancel?.(),i()};let c=(e,t)=>{o.draggedItemId=void 0,o.itemsStyle={},document.body.style.cursor=n,a.onDragEnd?.(e,t),i()};document.body.style.cursor=`move`,o.draggedItemId=a.draggedItemId;let l=t===`horizontal`?new KN(a.scrollableContainerEl):new GN(a.scrollableContainerEl);e=new UN({...a,container:l,onChange:s,onDragEnd:c,onCancel:o.cancel});let u=RN(e.onMouseMove.bind(e),e.onMouseUp.bind(e));r.push(u);let d=e.onScroll.bind(e);a.scrollableContainerEl.addEventListener(`scroll`,d),r.push(()=>a.scrollableContainerEl.removeEventListener(`scroll`,d)),r.push(e.destroy.bind(e))};(0,t.onWillUnmount)(()=>{i()});let o=(0,t.useState)({itemsStyle:{},draggedItemId:void 0,start:a,cancel:()=>{}});return o}var UN=class{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(){let e={};for(let t of this.items)e[t.id]=this.getItemStyle(t.id);return e}getItemStyle(e){let t=this.container.cssPositionProperty,n={};return n.position=`relative`,n[t]=(this.getItemsPositions()[e]||0)+`px`,n.transition=`${t} 0.5s`,n[`pointer-events`]=`none`,this.draggedItemId===e&&(n.transition=`${t} 0s`,n[`z-index`]=`1000`),U(n)}onScroll(){this.moveDraggedItemToPosition(this.currentMousePosition+this.scrollOffset)}onMouseMove(e){if(e.button>1){this.onCancel();return}let t=this.container.getMousePosition(e);if(this.currentMousePosition=t,t<this.container.start||t>this.container.end){this.startEdgeScroll(t<this.container.start?-1:1);return}else this.stopEdgeScroll();this.moveDraggedItemToPosition(t+this.scrollOffset)}moveDraggedItemToPosition(e){let t=this.getHoveredItemIndex(e,this.items),n=this.items.findIndex(e=>e.id===this.draggedItemId),r=this.items[n];if(this.deadZone&&this.isInZone(e,this.deadZone)){this.onChange(this.getItemsPositions());return}else this.isInZone(e,{start:r.position,end:r.position+r.size})&&(this.deadZone=void 0);if(n===t){this.onChange(this.getItemsPositions());return}let i=Math.min(n,t),a=Math.max(n,t),o=Math.sign(t-n),s=0;for(let e=i;e<=a;e++)e!==n&&(this.items[e].position-=o*r.size,s+=this.items[e].size);r.position+=o*s,this.items.sort((e,t)=>e.position-t.position),this.deadZone=o>0?{start:e,end:r.position}:{start:r.position+r.size,end:e},this.onChange(this.getItemsPositions())}onMouseUp(e){e.button!==0&&this.onCancel(),e.stopPropagation(),e.preventDefault();let t=this.items.findIndex(e=>e.id===this.draggedItemId);return this.onDragEnd(this.draggedItemId,t),this.stopEdgeScroll(),!1}startEdgeScroll(e){this.edgeScrollIntervalId||=window.setInterval(()=>{let t=e*3;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(){let e={};for(let t of this.items){if(t.id!==this.draggedItemId){e[t.id]=t.position-t.positionAtStart;continue}let n=this.currentMousePosition-this.initialMousePosition+this.scrollOffset;n=Math.max(this.minPosition-t.positionAtStart,n),n=Math.min(this.maxPosition-t.positionAtStart-t.size,n),e[t.id]=n}return e}isInZone(e,t){return e>=t.start&&e<=t.end}get scrollOffset(){return this.container.scroll-this.initialScroll}destroy(){this.stopEdgeScroll()}},WN=class{el;constructor(e){this.el=e}get containerRect(){return this.el.getBoundingClientRect()}},GN=class extends WN{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}},KN=class extends WN{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}},qN=class{mutators=[`focus`,`unfocus`];focusedElement=null;focus(e){this.focusedElement=e}unfocus(e){this.focusedElement&&this.focusedElement===e&&(this.focusedElement=null)}},JN=class extends yr{initialRanges;inputHasSingleRange;colors;disabledRanges;mutators=[`resetWithRanges`,`focusById`,`unfocus`,`addEmptyRange`,`removeRange`,`changeRange`,`reset`,`confirm`,`updateColors`,`updateDisabledRanges`,`toggleEditMode`];ranges=[];focusedRangeIndex=null;mode=`text-edit`;inputSheetId;focusStore=this.get(qN);highlightStore=this.get(EN);constructor(e,t=[],n=!1,r=[],i=[]){if(super(e),this.initialRanges=t,this.inputHasSingleRange=n,this.colors=r,this.disabledRanges=i,n&&t.length>1)throw 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(this.focusedRangeIndex===null)return;let t=this.inputSheetId,n=this.getters.getActiveSheetId(),r=e.options.unbounded?this.getters.getUnboundedZone(n,e.anchor.zone):e.anchor.zone,i=this.getters.getRangeFromZone(n,r);if(e.mode===`newAnchor`&&!this.inputHasSingleRange&&this.ranges[this.focusedRangeIndex].xc.trim()!==``){let e=this.getters.getSelectionRangeString(i,t);this.insertNewRange(this.ranges.length,[e]),this.focusLast()}else{let e=i.parts,n=this.ranges[this.focusedRangeIndex].xc.trim();n&&(e=this.getters.getRangeFromSheetXC(t,n).parts);let r={...i,parts:e},a=this.getters.getSelectionRangeString(r,t);this.setRange(this.focusedRangeIndex,[a])}this.mode=`select-range`}handle(e){switch(e.type){case`ACTIVATE_SHEET`:if(e.sheetIdFrom!==e.sheetIdTo){let{col:t,row:n}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:0,row:0}),r=this.getters.expandZone(e.sheetIdTo,E({col:t,row:n}));this.model.selection.resetAnchor(this,{cell:{col:t,row:n},zone:r})}break;case`START_CHANGE_HIGHLIGHT`:let t=this.getters.getActiveSheetId(),n=this.getters.expandZone(t,e.zone),r=this.ranges.findIndex(e=>{let{xc:r,sheetName:i}=zc(e.xc),a=i||this.getters.getSheetName(this.inputSheetId);if(this.getters.getSheetName(t)!==a)return!1;let o=this.getters.getRangeFromSheetXC(t,r);return Dn(this.getters.expandZone(t,o.zone),n)});if(r!==-1){this.focus(r);let{left:e,top:t}=n;this.model.selection.resetAnchor(this,{cell:{col:e,row:t},zone:n})}break}}changeRange(e,t){if(this.inputHasSingleRange&&t.split(`,`).length>1)return;let n=this.getIndex(e);if(n!==null&&this.focusedRangeIndex!==n&&this.focus(n),n!==null){let e=t.replace(/^,+/,``).split(`,`).map(e=>e.trim());this.setRange(n,e),this.captureSelection()}}addEmptyRange(){this.inputHasSingleRange&&this.ranges.length===1||(this.insertNewRange(this.ranges.length,[``]),this.focusLast())}removeRange(e){if(this.ranges.length===1)return;let t=this.getIndex(e);t!==null&&this.removeRangeByIndex(t)}updateColors(e){this.colors=e;let t=new ii(this.ranges.length,this.colors);this.ranges=this.ranges.map(e=>({...e,color:t.next()}))}updateDisabledRanges(e){this.disabledRanges=e}confirm(){for(let e of this.selectionInputs)e.xc===``&&this.removeRange(e.id);let 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&&this.focusedRangeIndex!==null&&this.getters.isRangeValid(e.xc)?e.color:null,isFocused:this.hasMainFocus&&this.focusedRangeIndex===t,isValidRange:e.xc===``||this.getters.isRangeValid(e.xc),disabled:this.disabledRanges?.[t]}))}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(){let e=this.focusStore.focusedElement;return!!e&&e===this}get highlights(){return this.hasMainFocus?this.ranges.map(e=>this.inputToHighlights(e)).flat():[]}focusById(e){let t=this.getIndex(e);if(this.focusedRangeIndex!==t||this.mode===`select-range`){this.focus(t),this.mode=`text-edit`;return}return`noStateChange`}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(this.focusedRangeIndex===null)return;let e=this.ranges[this.focusedRangeIndex],t=this.getters.getActiveSheetId(),n=this.getters.getRangeFromSheetXC(t,e?.xc||`A1`).zone;this.model.selection.capture(this,{cell:{col:n.left,row:n.top},zone:n},{handleEvent:this.handleEvent.bind(this),release:this.unfocus.bind(this)})}resetWithRanges(e){e.length&&e.every(e=>this.getters.isRangeValid(e))&&(this.initialRanges=e),this.ranges=[],this.insertNewRange(0,e),this.ranges.length===0&&(this.insertNewRange(this.ranges.length,[``]),this.focusLast())}setContent(e,t){this.ranges[e]={...this.ranges[e],xc:t}}insertNewRange(e,t){let n=Math.max(0,...this.ranges.map(e=>Number(e.id))),r=new ii(this.ranges.length,this.colors);for(let t=0;t<e;t++)r.next();this.ranges.splice(e,0,...t.map((e,t)=>({xc:e,id:n+t+1,color:r.next()})))}setRange(e,t){let[,...n]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,n),n.length&&this.focus(e+n.length)}removeRangeByIndex(e){this.ranges.splice(e,1),this.focusedRangeIndex!==null&&this.focusLast()}inputToHighlights({xc:e,color:t}){return this.cleanInputs([e]).filter(e=>this.getters.isRangeValid(e)).filter(e=>this.shouldBeHighlighted(this.inputSheetId,e)).map(e=>{let{sheetName:n}=zc(e),r=n&&this.getters.getSheetIdByName(n)||this.inputSheetId;return{range:this.getters.getRangeFromSheetXC(r,e),color:t,interactive:!0}})}cleanInputs(e){return e.map(e=>e.split(`,`)).flat().map(e=>e.trim()).filter(e=>e!==``)}shouldBeHighlighted(e,t){let{sheetName:n}=zc(t),r=this.getters.getSheetIdByName(n),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(r===i||r===void 0&&i===e)}getIndex(e){let t=this.ranges.findIndex(t=>t.id===e);return t>=0?t:null}toggleEditMode(){this.mode=this.mode===`select-range`?`text-edit`:`select-range`}},YN=class extends t.Component{static template=`o-spreadsheet-SelectionInput`;static props={ranges:Array,hasSingleRange:{type:Boolean,optional:!0},required:{type:Boolean,optional:!0},autofocus:{type:Boolean,optional:!0},isInvalid:{type:Boolean,optional:!0},class:{type:String,optional:!0},onSelectionChanged:{type:Function,optional:!0},onSelectionConfirmed:{type:Function,optional:!0},onSelectionReordered:{type:Function,optional:!0},onSelectionRemoved:{type:Function,optional:!0},colors:{type:Array,optional:!0,default:[]},disabledRanges:{type:Array,optional:!0,default:[]},disabledRangeTitle:{type:String,optional:!0}};state=(0,t.useState)({isMissing:!1});dragAndDrop=HN();focusedInput=(0,t.useRef)(`focusedInput`);selectionRef=(0,t.useRef)(`o-selection`);DOMFocusableElementStore;store;get ranges(){return this.store.selectionInputs}get canAddRange(){return!this.props.hasSingleRange}get isInvalid(){return this.props.isInvalid||this.state.isMissing}get isConfirmable(){return this.store.isConfirmable}get isResettable(){return this.store.isResettable}get hasDisabledRanges(){return this.store.disabledRanges.some(Boolean)}setup(){(0,t.useEffect)(()=>this.focusedInput.el?.focus(),()=>[this.focusedInput.el]),(0,t.useEffect)(()=>{(this.store.isResettable||this.store.hasFocus)&&this.selectionRef.el?.offsetParent===null&&this.reset()}),this.DOMFocusableElementStore=D(FM),this.store=ur(JN,this.props.ranges,this.props.hasSingleRange||!1,this.props.colors,this.props.disabledRanges),this.props.autofocus&&this.store.focusById(this.store.selectionInputs[0]?.id),(0,t.onWillUpdateProps)(e=>{e.ranges.join()!==this.store.selectionInputValues.join()&&this.triggerChange(),e.ranges.join()!==this.props.ranges.join()&&e.ranges.join()!==this.store.selectionInputValues.join()&&this.store.resetWithRanges(e.ranges),e.colors?.join()!==this.props.colors?.join()&&e.colors?.join()!==this.store.colors.join()&&this.store.updateColors(e.colors||[]),!w(e.disabledRanges,this.props.disabledRanges)&&!w(e.disabledRanges,this.store.disabledRanges)&&this.store.updateDisabledRanges(e.disabledRanges||[])})}startDragAndDrop(e,t){if(t.button!==0||t.target.tagName===`SELECT`)return;let n=this.getRangeElementsRects(),r=this.ranges.map(e=>e.id),i=r.map((e,t)=>({id:e.toString(),size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.toString(),initialMousePosition:t.clientY,items:i,scrollableContainerEl:this.selectionRef.el,onDragEnd:(t,n)=>{let i=r.findIndex(t=>t===e);if(i===n)return;let a=S(0,r.length);a.splice(i,1),a.splice(n,0,i),this.props.onSelectionReordered?.(a),this.props.onSelectionConfirmed?.(),this.store.confirm()}})}getRangeElementsRects(){return Array.from(this.selectionRef.el.children).map(e=>e.getBoundingClientRect())}getColor(e){let t={};return e.color&&(t.color=e.color),this.store.mode===`select-range`&&(t[`caret-color`]=`transparent`),U(t)}triggerChange(){let e=this.store.selectionInputValues;this.props.onSelectionChanged?.(e)}onKeydown(e){e.key===`F2`?(e.preventDefault(),e.stopPropagation(),this.store.toggleEditMode()):e.key.startsWith(`Arrow`)?(e.stopPropagation(),this.store.mode===`select-range`&&(e.preventDefault(),LM(e,this.env.model.selection))):e.key===`Enter`?(e.target.blur(),this.isConfirmable&&this.confirm()):e.key===`Escape`&&(this.reset(),this.DOMFocusableElementStore.focus())}extractRanges(e){return this.props.hasSingleRange?e.split(`,`)[0]:e}focus(e){this.state.isMissing=!1,this.store.focusById(e)}addEmptyInput(){this.store.addEmptyRange()}removeInput(e){let t=this.store.selectionInputs.findIndex(t=>t.id===e);this.ranges.find(t=>t.id===e)?.xc&&(this.props.onSelectionRemoved?.(t),this.props.onSelectionConfirmed?.()),this.store.removeRange(e)}onInputChanged(e,t){let n=t.target,r=this.extractRanges(n.value);this.store.changeRange(e,r),this.triggerChange()}reset(){this.store.reset(),this.triggerChange()}confirm(){this.store.confirm();let e=this.store.selectionInputs.some(e=>this.env.model.getters.isRangeValid(e.xc));this.props.required&&!e&&(this.state.isMissing=!0),this.props.onSelectionChanged?.(this.store.selectionInputValues),this.props.onSelectionConfirmed?.()}},XN=class extends DM{static template=`o-spreadsheet-ValueInRangeCriterionForm`;static components={RoundColorPicker:BN,SelectionInput:YN,Select:EM};setup(){super.setup();let e=e=>{e.criterion.displayStyle===void 0&&this.updateCriterion({displayStyle:`chip`})};(0,t.onWillUpdateProps)(e),(0,t.onWillStart)(()=>e(this.props))}onRangeChanged(e){this.updateCriterion({values:[e]})}onChangedDisplayStyle(e){this.updateCriterion({displayStyle:e})}onColorChanged(e,t){let n={...this.props.criterion.colors};n[t]=e||void 0,this.updateCriterion({colors:n})}get values(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getDataValidationRangeValues(e,this.props.criterion);return new Set(t)}get displayTypeOptions(){return[{value:`chip`,label:k(`Chip`)},{value:`arrow`,label:k(`Arrow`)},{value:`plainText`,label:k(`Plain text`)}]}};let ZN={list:10,text:20,number:30,date:40,relative:45,misc:50},$=new B;$.add(`containsText`,{type:`containsText`,component:IN,category:`text`,sequence:10}),$.add(`notContainsText`,{type:`notContainsText`,component:IN,category:`text`,sequence:20}),$.add(`beginsWithText`,{type:`beginsWithText`,component:IN,category:`text`,sequence:25}),$.add(`endsWithText`,{type:`endsWithText`,component:IN,category:`text`,sequence:26}),$.add(`isEqualText`,{type:`isEqualText`,component:IN,category:`text`,sequence:30}),$.add(`isEmail`,{type:`isEmail`,component:void 0,category:`text`,sequence:40}),$.add(`isLink`,{type:`isLink`,component:void 0,category:`text`,sequence:50}),$.add(`dateIs`,{type:`dateIs`,component:PN,category:`date`,sequence:20}),$.add(`dateIsBefore`,{type:`dateIsBefore`,component:PN,category:`date`,sequence:30}),$.add(`dateIsOnOrBefore`,{type:`dateIsOnOrBefore`,component:PN,category:`date`,sequence:40}),$.add(`dateIsAfter`,{type:`dateIsAfter`,component:PN,category:`date`,sequence:50}),$.add(`dateIsOnOrAfter`,{type:`dateIsOnOrAfter`,component:PN,category:`date`,sequence:60}),$.add(`dateIsBetween`,{type:`dateIsBetween`,component:FN,category:`date`,sequence:70}),$.add(`dateIsNotBetween`,{type:`dateIsNotBetween`,component:FN,category:`date`,sequence:80}),$.add(`dateIsValid`,{type:`dateIsValid`,component:void 0,category:`date`,sequence:10}),$.add(`isEqual`,{type:`isEqual`,component:IN,category:`number`,sequence:10}),$.add(`isNotEqual`,{type:`isNotEqual`,component:IN,category:`number`,sequence:20}),$.add(`isGreaterThan`,{type:`isGreaterThan`,component:IN,category:`number`,sequence:50}),$.add(`isGreaterOrEqualTo`,{type:`isGreaterOrEqualTo`,component:IN,category:`number`,sequence:60}),$.add(`isLessThan`,{type:`isLessThan`,component:IN,category:`number`,sequence:30}),$.add(`isLessOrEqualTo`,{type:`isLessOrEqualTo`,component:IN,category:`number`,sequence:40}),$.add(`isBetween`,{type:`isBetween`,component:FN,category:`number`,sequence:70}),$.add(`isNotBetween`,{type:`isNotBetween`,component:FN,category:`number`,sequence:80}),$.add(`isBoolean`,{type:`isBoolean`,component:void 0,category:`misc`,sequence:10}),$.add(`isValueInList`,{type:`isValueInList`,component:VN,category:`list`,sequence:10}),$.add(`isValueInRange`,{type:`isValueInRange`,component:XN,category:`list`,sequence:20}),$.add(`customFormula`,{type:`customFormula`,component:IN,category:`misc`,sequence:20}),$.add(`isEmpty`,{type:`isEmpty`,component:void 0,category:`misc`,sequence:5}),$.add(`isNotEmpty`,{type:`isNotEmpty`,component:void 0,category:`misc`,sequence:6}),$.add(`top10`,{type:`top10`,component:LN,category:`relative`,sequence:7}),$.add(`uniqueValues`,{type:`uniqueValues`,component:void 0,category:`relative`,sequence:8}),$.add(`duplicateValues`,{type:`duplicateValues`,component:void 0,category:`relative`,sequence:9});function QN(e){let t=$.getAll().filter(t=>e.has(t.type)).sort((e,t)=>e.category===t.category?e.sequence-t.sequence:ZN[e.category]-ZN[t.category]);return t.map((e,n)=>({label:Z.get(e.type).name,value:e.type,separator:e.category!==t[n+1]?.category}))}var $N=class extends t.Component{static template=`o-spreadsheet-FilterMenuCriterion`;static props={filterPosition:Object,onCriterionChanged:Function,criterionOperators:Array};static components={Select:EM};state;setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.state.criterion=this.getFilterCriterionValue(e.filterPosition))}),this.state=(0,t.useState)({criterion:this.getFilterCriterionValue(this.props.filterPosition)})}getFilterCriterionValue(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilterCriterionValue({sheetId:t,...e});return n?.filterType===`criterion`?b(n):{filterType:`criterion`,type:`none`,values:[]}}get criterionOptions(){return[{label:k(`None`),value:`none`},...QN(new Set(this.props.criterionOperators))]}get criterionComponent(){return this.state.criterion.type===`none`?void 0:$.get(this.state.criterion.type).component}onCriterionChanged(e){this.state.criterion.values=e.values,this.state.criterion.dateValue=e.dateValue,this.props.onCriterionChanged(this.state.criterion)}onCriterionTypeChange(e){this.state.criterion.type=e,this.props.onCriterionChanged(this.state.criterion)}},eP=class extends t.Component{static template=`o-spreadsheet.Checkbox`;static props={label:{type:String,optional:!0},value:{type:Boolean,optional:!0},className:{type:String,optional:!0},name:{type:String,optional:!0},title:{type:String,optional:!0},disabled:{type:Boolean,optional:!0},onChange:Function};static defaultProps={value:!1};onChange(e){let t=e.target.checked;this.props.onChange(t)}},tP=class extends t.Component{static template=`o-spreadsheet-FilterMenuValueItem`;static components={Checkbox:eP};static props={value:String,isChecked:Boolean,isSelected:Boolean,onMouseMove:Function,onClick:Function,scrolledTo:{type:String,optional:!0}};itemRef=(0,t.useRef)(`menuValueItem`);setup(){(0,t.onWillPatch)(()=>{this.props.scrolledTo&&this.scrollListToSelectedValue()})}scrollListToSelectedValue(){this.itemRef.el&&this.itemRef.el.scrollIntoView?.({block:this.props.scrolledTo===`bottom`?`end`:`start`})}},nP=class extends t.Component{static template=`o-spreadsheet-FilterMenuValueList`;static props={filterPosition:Object,onUpdateHiddenValues:Function};static components={FilterMenuValueItem:tP};state=(0,t.useState)({values:[],displayedValues:[],textFilter:``,selectedValue:void 0,numberOfDisplayedValues:50,hasMoreValues:!1});searchBar=(0,t.useRef)(`filterMenuSearchBar`);setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.state.values=this.getFilterHiddenValues(e.filterPosition),this.computeDisplayedValues())}),this.state.values=this.getFilterHiddenValues(this.props.filterPosition),this.computeDisplayedValues()}getFilterHiddenValues(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilter({sheetId:t,...e});if(!n)return[];let r=this.env.model.getters.getFilterValue({sheetId:t,...e}),i=(n.filteredRange?Fn(n.filteredRange.zone):[]).map(e=>({position:e,cellValue:this.env.model.getters.getEvaluatedCell({sheetId:t,...e}).formattedValue}));r?.filterType!==`criterion`&&(i=i.filter(e=>!this.env.model.getters.isRowHidden(t,e.position.row)));let a=i.map(e=>e.cellValue),o=r?.filterType===`values`?r.hiddenValues:[],s=new Set(o.map(Ul)),c=new Set,l=[],u=e=>{let t=Ul(e);c.has(t)||(l.push({string:e||``,checked:r?.filterType===`criterion`?!1:!s.has(t),normalizedValue:t}),c.add(t))};return a.forEach(u),o.forEach(u),l.sort((e,t)=>e.normalizedValue.localeCompare(t.normalizedValue,void 0,{numeric:!0,sensitivity:`base`}))}checkValue(e){this.state.selectedValue=e.string,e.checked=!e.checked,this.searchBar.el?.focus(),this.updateHiddenValues()}onMouseMove(e){this.state.selectedValue=e.string}getSearchedValues(){return this.state.textFilter?_l(this.state.textFilter,this.state.values,e=>e.string):this.state.values}setAllChecked(e){let t=new Set(this.getSearchedValues());for(let n of this.state.values)t.has(n)&&(n.checked=e);this.updateHiddenValues()}selectAll(){this.setAllChecked(!0)}clearAll(){this.setAllChecked(!1)}updateHiddenValues(){let e=this.state.values.filter(e=>!e.checked).map(e=>e.string);this.props.onUpdateHiddenValues(e)}updateSearch(e){let t=e.target;this.state.textFilter=t.value,this.state.selectedValue=void 0,this.computeDisplayedValues()}computeDisplayedValues(){let e=this.getSearchedValues();this.state.displayedValues=e.slice(0,this.state.numberOfDisplayedValues),this.state.hasMoreValues=e.length>this.state.numberOfDisplayedValues}loadMoreValues(){this.state.numberOfDisplayedValues+=100,this.computeDisplayedValues()}onKeyDown(e){let t=this.state.displayedValues;if(t.length===0)return;let n;if(this.state.selectedValue!==void 0){let e=t.findIndex(e=>e.string===this.state.selectedValue);n=e===-1?void 0:e}switch(e.key){case`ArrowDown`:n=n===void 0?0:Math.min(n+1,t.length-1),e.preventDefault(),e.stopPropagation();break;case`ArrowUp`:n=n===void 0?t.length-1:Math.max(n-1,0),e.preventDefault(),e.stopPropagation();break;case`Enter`:n!==void 0&&this.checkValue(t[n]),e.stopPropagation(),e.preventDefault();break}this.state.selectedValue=n===void 0?void 0:t[n].string,(e.key===`ArrowUp`||e.key===`ArrowDown`)&&this.scrollListToSelectedValue(e.key)}clearScrolledToValue(){this.state.values.forEach(e=>e.scrolledTo=void 0)}scrollListToSelectedValue(e){this.clearScrolledToValue();let t=this.state.values.find(e=>e.string===this.state.selectedValue);t&&(t.scrolledTo=e===`ArrowUp`?`top`:`bottom`)}},rP=class extends t.Component{static template=`o-spreadsheet-FilterMenu`;static props={filterPosition:Object,onClosed:{type:Function,optional:!0}};static components={FilterMenuValueList:nP,SidePanelCollapsible:TM,FilterMenuCriterion:$N};criterionCategory=`text`;updatedCriterionValue;setup(){(0,t.onWillUpdateProps)(e=>{w(e.filterPosition,this.props.filterPosition)||(this.updatedCriterionValue=void 0,this.criterionCategory=this.getCriterionCategory(e.filterPosition))}),this.criterionCategory=this.getCriterionCategory(this.props.filterPosition)}get isSortable(){if(!this.table)return!1;let e=this.env.model.getters.getCoreTableMatchingTopLeft(this.table.range.sheetId,this.table.range.zone);return!this.env.model.getters.isReadonly()&&e?.type!==`dynamic`}get table(){let e=this.env.model.getters.getActiveSheetId(),t=this.props.filterPosition;return this.env.model.getters.getTable({sheetId:e,...t})}get filterValueType(){let e=this.env.model.getters.getActiveSheetId(),t=this.props.filterPosition;return this.env.model.getters.getFilterValue({sheetId:e,...t})?.filterType}getCriterionCategory(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getFilter({sheetId:t,...e});if(!n||!n.filteredRange)return`text`;let r={text:0,number:0,date:0},i=n.filteredRange.zone;for(let n=i.top;n<=i.bottom&&!(n>100);n++){let i=this.env.model.getters.getEvaluatedCell({sheetId:t,row:n,col:e.col});i.type===`text`||i.type===`boolean`?r.text++:i.type===`number`&&(i.format&&os(i.format)?r.date++:r.number++)}let a=Math.max(r.text,r.number,r.date);return Object.keys(r).find(e=>r[e]===a)||`text`}onUpdateHiddenValues(e){this.updatedCriterionValue={filterType:`values`,hiddenValues:e}}onCriterionChanged(e){this.updatedCriterionValue=e}confirm(){if(!this.updatedCriterionValue){this.props.onClosed?.();return}let e=this.props.filterPosition;this.env.model.dispatch(`UPDATE_FILTER`,{...e,sheetId:this.env.model.getters.getActiveSheetId(),value:this.updatedCriterionValue}),this.props.onClosed?.()}get criterionOperators(){return this.criterionCategory===`date`?Um:this.criterionCategory===`number`?Hm:Vm}cancel(){this.props.onClosed?.()}sortFilterZone(e){let t=this.props.filterPosition,n=this.table?.range.zone;if(!t||!n||n.top===n.bottom)return;let r=this.env.model.getters.getActiveSheetId(),i={...n,top:n.top+1},a={col:t.col,row:i.top};CM(this.env,r,a,i,e,{emptyCellAsZero:!0,sortHeaders:!0}),this.props.onClosed?.()}};let iP={onOpen:(e,t)=>({isOpen:!0,props:{filterPosition:e},Component:rP,cellCorner:`bottom-left`})};var aP=class extends yr{mutators=[`open`,`close`];persistentPopover;hoveredCell=this.get(Bv);handle(e){switch(e.type){case`ACTIVATE_SHEET`:this.close()}}open({col:e,row:t},n){let r=this.getters.getActiveSheetId();yM.contains(n)&&(this.persistentPopover={col:e,row:t,sheetId:r,type:n})}close(){if(!this.persistentPopover)return`noStateChange`;this.persistentPopover=void 0}get persistentCellPopover(){return this.persistentPopover&&{isOpen:!0,...this.persistentPopover}||{isOpen:!1}}get isOpen(){return this.persistentPopover!==void 0}get cellPopover(){let e=this.getters.getActiveSheetId();if(this.persistentPopover&&this.getters.isVisibleInViewport(this.persistentPopover)){let e=this.getters.getMainCellPosition(this.persistentPopover),t=yM.get(this.persistentPopover.type).onOpen?.(e,this.getters);return t?.isOpen?{...t,anchorRect:this.computePopoverAnchorRect(this.persistentPopover)}:{isOpen:!1}}let{col:t,row:n}=this.hoveredCell;if(t===void 0||n===void 0||!this.getters.isVisibleInViewport({sheetId:e,col:t,row:n}))return{isOpen:!1};let r=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),i=yM.getAll().map(e=>e.onHover?.(r,this.getters)).find(e=>e?.isOpen);return i?.isOpen?{...i,anchorRect:this.computePopoverAnchorRect(r)}:{isOpen:!1}}computePopoverAnchorRect({col:e,row:t}){let n=this.getters.getActiveSheetId(),r=this.getters.getMerge({sheetId:n,col:e,row:t});return r?this.getters.getVisibleRect(r):this.getters.getVisibleRect(E({col:e,row:t}))}},oP=class extends t.Component{static template=`o-spreadsheet-LinkDisplay`;static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};cellPopovers;setup(){this.cellPopovers=D(aP)}get cell(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t})}get link(){if(this.cell.link)return this.cell.link;let{col:e,row:t}=this.props.cellPosition;throw Error(`LinkDisplay Component can only be used with link cells. ${T(e,t)} is not a link.`)}getUrlRepresentation(e){return rc(e,this.env.model.getters)}openLink(e){ic(this.link,this.env,gp(e))}edit(){let{col:e,row:t}=this.props.cellPosition;this.env.model.selection.selectCell(e,t),this.cellPopovers.open({col:e,row:t},`LinkEditor`)}unlink(){let e=this.env.model.getters.getActiveSheetId(),{col:t,row:n}=this.props.cellPosition,r=this.env.model.getters.getCellComputedStyle({sheetId:e,col:t,row:n}),i=r?.textColor===`#017E84`?void 0:r?.textColor;this.env.model.dispatch(`UPDATE_CELL`,{col:t,row:n,sheetId:e,content:this.link.label,style:{...r,textColor:i,underline:void 0}})}};let sP={onHover:(e,t)=>{let n=t.getEvaluatedCell(e);return!t.isDashboard()&&n.link&&t.isVisibleInViewport(e)?{isOpen:!0,Component:oP,props:{cellPosition:e},cellCorner:`bottom-left`}:{isOpen:!1}}},cP={name:k(`Link sheet`),children:[e=>e.model.getters.getSheetIds().map(t=>e.model.getters.getSheet(t)).map(e=>({id:e.id,name:e.name,execute:()=>ot(e.name,ut(e.id))}))]},lP={name:k(`Delete`),isVisible:e=>e.model.getters.getVisibleSheetIds().length>1,execute:e=>e.askConfirmation(k(`Are you sure you want to delete this sheet?`),()=>{e.model.dispatch(`DELETE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName()})}),icon:`o-spreadsheet-Icon.TRASH`},uP={name:k(`Duplicate`),execute:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSheetName(t),r=e.model.uuidGenerator.smallUuid(),i=e.model.getters.getDuplicateSheetName(n);e.model.dispatch(`DUPLICATE_SHEET`,{sheetId:t,sheetIdTo:r,sheetNameTo:i}),e.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:t,sheetIdTo:r})},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.COPY`},dP=e=>({name:k(`Rename`),execute:e.renameSheetCallback,icon:`o-spreadsheet-Icon.RENAME_SHEET`}),fP=e=>({name:k(`Change color`),execute:e.openSheetColorPickerCallback,icon:`o-spreadsheet-Icon.PAINT_FORMAT`}),pP={name:k(`Move right`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getVisibleSheetIds();return n.indexOf(t)!==n.length-1},execute:e=>e.model.dispatch(`MOVE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),delta:1}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.MOVE_SHEET_RIGHT`},mP={name:k(`Move left`),isVisible:e=>{let t=e.model.getters.getActiveSheetId();return e.model.getters.getVisibleSheetIds()[0]!==t},execute:e=>e.model.dispatch(`MOVE_SHEET`,{sheetId:e.model.getters.getActiveSheetId(),delta:-1}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.MOVE_SHEET_LEFT`},hP={name:k(`Hide sheet`),isVisible:e=>e.model.getters.getVisibleSheetIds().length!==1,execute:e=>e.model.dispatch(`HIDE_SHEET`,{sheetId:e.model.getters.getActiveSheetId()}),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.HIDE_SHEET`},gP={name:k(`Lock sheet`),isVisible:e=>!e.model.getters.isCurrentSheetLocked(),execute:e=>{e.model.dispatch(`LOCK_SHEET`,{sheetId:e.model.getters.getActiveSheetId()})},icon:`o-spreadsheet-Icon.LOCK`},_P={name:k(`Unlock sheet`),isVisible:e=>e.model.getters.isCurrentSheetLocked(),execute:e=>{e.model.dispatch(`UNLOCK_SHEET`,{sheetId:e.model.getters.getActiveSheetId()})},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.UNLOCK`};var vP=class extends B{replace(e,t){return t.id===void 0&&(t.id=e),this.content[e]=t,this}addChild(e,t,n){return this._replaceChild(e,t,n,{force:!1})}replaceChild(e,t,n){return this._replaceChild(e,t,n,{force:!0})}_replaceChild(e,t,n,r={force:!0}){typeof n!=`function`&&n.id===void 0&&(n.id=e);let i=t.splice(0,1)[0],a=this.content[i];if(!a)throw Error(`Path ${i+`:`+t.join(`:`)} not found`);for(let e of t){let n=a.children;if(!n||typeof n==`function`)throw Error(`${e} is either not a node or it's dynamically computed`);if(a=n.find(t=>t.id===e),!a)throw Error(`Path ${i+`:`+t.join(`:`)} not found`)}a.children||=[];let o=a.children;if(!o||typeof o==`function`)throw Error(`${t} is either not a node or it's dynamically computed`);if(`id`in n){let e=o.findIndex(e=>`id`in e&&e.id===n.id);if(e>-1){if(!r.force)throw Error(`A child with the id "${n.id}" already exists.`);return a.children.splice(e,1,n),this}}return a.children.push(n),this}getMenuItems(){return p(this.getAll())}};let yP=new vP;yP.add(`sheet`,{...cP,sequence:10});var bP=class extends t.Component{static template=`o-spreadsheet-LinkEditor`;static props={cellPosition:Object,onClosed:{type:Function,optional:!0}};static components={MenuPopover:Nv};menuItems=yP.getMenuItems();link=(0,t.useState)(this.defaultState);menu=(0,t.useState)({isOpen:!1});linkEditorMenuButtonRef=(0,t.useRef)(`linkEditorMenuButton`);urlInput=(0,t.useRef)(`urlInput`);setup(){(0,t.onMounted)(()=>this.urlInput.el?.focus())}get defaultState(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t});return r.link?{url:r.link.url,label:r.formattedValue,isUrlEditable:r.link.isUrlEditable}:{label:r.formattedValue,url:``,isUrlEditable:!0}}get menuButtonRect(){return ap(this.linkEditorMenuButtonRef)}onSpecialLink(e){let{detail:t}=e,n=ac(t);n&&(this.link.url=n.url,this.link.label=n.label,this.link.isUrlEditable=n.isUrlEditable)}getUrlRepresentation(e){return rc(e,this.env.model.getters)}openMenu(){this.menu.isOpen=!0}removeLink(){this.link.url=``,this.link.isUrlEditable=!0}save(){let{col:e,row:t}=this.props.cellPosition,n=this.env.model.getters.getLocale(),r=this.link.label?TS(this.link.label,n):this.link.url;this.env.model.dispatch(`UPDATE_CELL`,{col:e,row:t,sheetId:this.env.model.getters.getActiveSheetId(),content:ot(r,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();break}}};yM.add(`ErrorToolTip`,xM).add(`LinkCell`,sP).add(`LinkEditor`,{onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:bP,cellCorner:`bottom-left`})}).add(`FilterMenu`,iP);let xP=[`image/avif`,`image/bmp`,`image/gif`,`image/vnd.microsoft.icon`,`image/jpeg`,`image/png`,`image/tiff`,`image/webp`];function SP(e,t){let n=new Set(t.map(e=>e.left)),r=new Set(t.map(e=>e.right)),i=new Set(t.map(e=>e.top)),a=new Set(t.map(e=>e.bottom)),o=i.size===1&&a.size===1||n.size===1&&r.size===1?Bn(t):[t[t.length-1]],s=o.map(e=>Fn(e)).flat();return{sheetId:e,zones:t,clippedZones:o,columnsIndexes:[...new Set(s.map(e=>e.col))].sort((e,t)=>e-t),rowsIndexes:[...new Set(s.map(e=>e.row))].sort((e,t)=>e-t)}}function CP(e,t,n){let r=Math.max(e.right-t+1,e.left),i=Math.max(e.bottom-n+1,e.top),a=[];for(let o=e.left;o<=r;o+=t)for(let r=e.top;r<=i;r+=n)a.push({left:o,top:r,bottom:r+n-1,right:o+t-1});return a}function wP(e,t){if(!t.length||!t[0].length)return e;let n=t[0].length,r=t.length;return e.map(e=>CP(e,n,r)).flat()}function TP(e){let t;e[`text/html`]&&(t=EP(new DOMParser().parseFromString(e[`text/html`],`text/html`)));let n=e[`text/plain`]||``,r;if(!n.trim()){for(let t of xP)if(e[t]){r=e[t];break}}return{text:n,data:t,imageBlob:r}}function EP(e){if([...e.documentElement.attributes].some(e=>e.value.includes(`microsoft`)))return;let t=e.querySelector(`div`)?.getAttribute(`data-osheet-clipboard`);return t&&JSON.parse(t)}let DP=(e,t,n,r)=>{e.forEach(({handlerName:e,handler:i})=>{let a=t[e];a&&i.paste(n,a,r)})};function OP(e,t,n,r,i){let a,o=[],s={sheetId:e,zones:t};for(let{handlerName:c,handler:l}of r){let r=n[c];if(!r)continue;let u=l.getPasteTarget(e,t,r,i);u.figureId&&(s.figureId=u.figureId);for(let e of u.zones){if(o.push(e),a===void 0){a=e;continue}a=wn(a,e)}}return{target:s,zone:a,selectedZones:o}}let kP=(e,t,n)=>{let r={col:t[0].left,row:t[0].top};e.getBackToDefault(),e.selectZone({cell:r,zone:wn(...n)},{scrollIntoView:!1})},AP={type:`bar`,title:{},dataSets:[],legendPosition:`none`,dataSetsHaveTitle:!1,stacked:!1},jP={type:`line`,title:{},dataSets:[],legendPosition:`none`,dataSetsHaveTitle:!1,stacked:!1,cumulative:!1,labelsAsText:!1};function MP(e,t){return yn(e.getUnboundedZone(e.getActiveSheetId(),t))}function NP(e){if(!e.length)return`empty`;let t={number:0,text:0,date:0,percentage:0},n=0,r=`empty`;for(let i of e){let e=null;if(i.type===`number`?e=i.format&&os(i.format)?`date`:i.format?.includes(`%`)?`percentage`:`number`:i.type===`text`&&(e=`text`),e){let i=++t[e];i>n&&(n=i,r=e)}}return r}function PP(e,t){let n=[];for(let r of Zn(e)){let e=t.getEvaluatedCellsInZone(t.getActiveSheetId(),r);n.push({zone:r,type:NP(e)})}return n}function FP(e,t){let n=e.getEvaluatedCellsInZone(e.getActiveSheetId(),t).map(e=>e.value?.toString().trim()||``).filter(e=>e);return{uniqueCount:new Set(n).size,totalCount:n.length}}function IP(e,t){let n=e.getEvaluatedCell({sheetId:e.getActiveSheetId(),col:t.zone.left,row:t.zone.top});return![`number`,`empty`].includes(n.type)}function LP(e,t){let{type:n,zone:r}=e,i=t.getActiveSheetId(),a=IP(t,e),o=MP(t,r),s=t.getEvaluatedCell({sheetId:i,col:r.left,row:r.top});if(Gn(r)===1)return BP(r,t);switch(n){case`percentage`:return{type:`pie`,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],legendPosition:`none`,dataSetsHaveTitle:a};case`text`:let e=t.getEvaluatedCellsInZone(i,r).reduce((e,t)=>t.value===s.value?e+1:e,0),n=s.value!==null&&e===1;return{type:`pie`,title:n?{text:String(s.value)}:{},dataSets:[{dataRange:o}],labelRange:o,dataSetsHaveTitle:n,aggregated:!0,legendPosition:`top`};case`date`:return{...jP,type:`line`,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],dataSetsHaveTitle:a}}return{...AP,title:a?{text:String(s.value)}:{},dataSets:[{dataRange:o}],dataSetsHaveTitle:a}}function RP(e,t){if(e.length!==2)throw Error(`buildTwoColumnChart expects exactly two columns`);if(e[1].type===`percentage`)return{type:`pie`,title:{},dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1]),aggregated:!0,legendPosition:`none`};if(e[0].type===`number`&&e[1].type===`number`)return{type:`scatter`,title:{},dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1]),labelsAsText:!1,legendPosition:`none`};if(e[0].type===`date`&&e[1].type===`number`)return{...jP,type:`line`,dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[0])};if(e[0].type===`text`&&e[1].type===`number`){let n=e[0],r=e[1],{uniqueCount:i,totalCount:a}=FP(t,n.zone),o=IP(t,r);if(i!==a)return{type:`treemap`,title:{},dataSets:[{dataRange:MP(t,n.zone)}],labelRange:MP(t,r.zone),dataSetsHaveTitle:o,legendPosition:`none`}}return{...AP,dataSets:[{dataRange:MP(t,e[1].zone)}],labelRange:MP(t,e[0].zone),dataSetsHaveTitle:IP(t,e[1])}}function zP(e,t){if(e.length<3)throw Error(`buildMultiColumnChart expects at least three columns`);let n=e.some(e=>e.type!==`text`&&IP(t,e)),r=e[e.length-1],i=e.slice(0,e.length-1);if((r.type===`percentage`||r.type===`number`)&&i.every(e=>e.type===`text`)){let e=i.map(({zone:e})=>({dataRange:MP(t,e)}));return{type:i.length>=3?`sunburst`:`treemap`,title:{},dataSets:e,labelRange:MP(t,r.zone),dataSetsHaveTitle:n,legendPosition:`none`}}let a=e[0],o=e.slice(1),s=o.map(({zone:e})=>({dataRange:MP(t,e)}));return o.every(e=>e.type===`percentage`)?{type:`pie`,title:{},dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,aggregated:!1,legendPosition:`top`}:a.type===`date`&&o.every(e=>e.type===`number`)?{...jP,type:`line`,dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,legendPosition:`top`}:{...AP,dataSets:s,labelRange:MP(t,a.zone),dataSetsHaveTitle:n,legendPosition:`top`}}function BP(e,t){let n=t.getCell({sheetId:t.getActiveSheetId(),col:e.left,row:e.top});return{type:`scorecard`,title:{},keyValue:MP(t,e),background:n?.style?.fillColor,baselineMode:Oe,baselineColorUp:ke,baselineColorDown:Ae}}function VP(e,t){let n=PP(e,t);if(n.length===0||n.every(e=>e.type===`empty`)){let e=n.map(({zone:e})=>({dataRange:MP(t,e)}));return{...AP,dataSets:e}}let r=n.filter(e=>e.type!==`empty`);switch(r.length){case 1:return LP(r[0],t);case 2:return RP(r,t);default:return zP(r,t)}}function HP(e,t,n=HA){let r=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,r);r.length===1&&!i&&Gn(r[0])===1&&(e.model.selection.selectTableAroundSelection(),r=e.model.getters.getSelectedZones(),i=e.model.getters.canCreateDynamicTableOnZones(t,r));let a=r.map(n=>e.model.getters.getRangeDataFromZone(t,n)),o=e.model.dispatch(`CREATE_TABLE`,{ranges:a,sheetId:t,config:n,tableType:i?`dynamic`:`static`});return o.isCancelledBecause(`TableOverlap`)?e.raiseError(sm.Errors.TableOverlap):o.isCancelledBecause(`NonContinuousTargets`)&&e.raiseError(sm.Errors.NonContinuousTargets),o}function UP(e,t){e.model.dispatch(`SET_FORMATTING_WITH_PIVOT`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function WP(e,t){e.model.dispatch(`SET_FORMATTING`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}let GP=async e=>qP(e),KP=async e=>qP(e,`asValue`);async function qP(e,t){let n=await e.clipboard.read();switch(n.status){case`ok`:let r=e.model.getters.getClipboardId(),i=TP(n.content),a=i.data?.clipboardId,o=e.model.getters.getSelectedZones();r===a?_M(e,o,t):await vM(e,o,i,t),e.model.getters.isCutOperation()&&t!==`asValue`&&await e.clipboard.write({"text/plain":``});break;case`notImplemented`:e.raiseError(k(`Pasting from the context menu is not supported in this browser. Use keyboard shortcuts ctrl+c / ctrl+v instead.`));break;case`permissionDenied`:e.raiseError(k(`Access to the clipboard denied by the browser. Please enable clipboard permission for this page in your browser settings.`));break}}let JP=e=>qP(e,`onlyFormat`),YP=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Clear rows`);let t,n,r=e.model.getters.getActiveRows();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.top,n=r.bottom}return t===n?k(`Clear row %s`,(t+1).toString()):k(`Clear rows %s - %s`,(t+1).toString(),(n+1).toString())},XP=e=>{let t=e.model.getters.getActiveSheetId(),n=[...e.model.getters.getActiveRows()].map(n=>e.model.getters.getRowsZone(t,n,n));e.model.dispatch(`DELETE_CONTENT`,{target:n,sheetId:e.model.getters.getActiveSheetId()})},ZP=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Clear columns`);let t,n,r=e.model.getters.getActiveCols();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.left,n=r.right}return t===n?k(`Clear column %s`,Kt(t)):k(`Clear columns %s - %s`,Kt(t),Kt(n))},QP=e=>{let t=e.model.getters.getActiveSheetId(),n=[...e.model.getters.getActiveCols()].map(n=>e.model.getters.getColsZone(t,n,n));e.model.dispatch(`DELETE_CONTENT`,{target:n,sheetId:e.model.getters.getActiveSheetId()})},$P=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Delete rows`);let t,n,r=e.model.getters.getActiveRows();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.top,n=r.bottom}return t===n?k(`Delete row %s`,(t+1).toString()):k(`Delete rows %s - %s`,(t+1).toString(),(n+1).toString())},eF=e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){let n=e.model.getters.getSelectedZones()[0];for(let e=n.top;e<=n.bottom;e++)t.push(e)}e.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),dimension:`ROW`,elements:t})},tF=(e,t)=>{if(e===`COL`&&t.model.getters.getActiveRows().size>0||e===`ROW`&&t.model.getters.getActiveCols().size>0)return!1;let n=t.model.getters.getActiveSheetId(),r=t.model.getters.getElementsFromSelection(e),i=t.model.getters.checkElementsIncludeAllVisibleHeaders(n,e,r),a=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(n,e,r);return!i&&!a},nF=e=>{if(e.model.getters.getSelectedZones().length>1)return k(`Delete columns`);let t,n,r=e.model.getters.getActiveCols();if(r.size!==0)t=Rt([...r]),n=Lt([...r]);else{let r=e.model.getters.getSelectedZones()[0];t=r.left,n=r.right}return t===n?k(`Delete column %s`,Kt(t)):k(`Delete columns %s - %s`,Kt(t),Kt(n))},rF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getElementsFromSelection(`ROW`);return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,`ROW`,n)},iF=e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){let n=e.model.getters.getSelectedZones()[0];for(let e=n.left;e<=n.right;e++)t.push(e)}e.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),dimension:`COL`,elements:t})},aF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getElementsFromSelection(`COL`);return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,`COL`,n)},oF=e=>{let t=e.model.getters.getActiveRows(),n,r;if(t.size)n=Rt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.top,r=t.bottom-t.top+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`before`,base:n,quantity:r,dimension:`ROW`})},sF=e=>{let t=e.model.getters.getActiveRows(),n,r;if(t.size)n=Lt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.bottom,r=t.bottom-t.top+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`after`,base:n,quantity:r,dimension:`ROW`})},cF=e=>{let t=e.model.getters.getActiveCols(),n,r;if(t.size)n=Rt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.left,r=t.right-t.left+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`before`,dimension:`COL`,base:n,quantity:r})},lF=e=>{let t=e.model.getters.getActiveCols(),n,r;if(t.size)n=Lt([...t]),r=t.size;else{let t=e.model.getters.getSelectedZones()[0];n=t.right,r=t.right-t.left+1}e.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),sheetName:e.model.getters.getActiveSheetName(),position:`after`,dimension:`COL`,base:n,quantity:r})},uF=e=>{let t=e.model.getters.getElementsFromSelection(`COL`),n=t[0],r=t[t.length-1];return t.length===1?k(`Hide column %s`,Kt(n).toString()):r-n+1===t.length?k(`Hide columns %s - %s`,Kt(n).toString(),Kt(r).toString()):k(`Hide columns`)},dF=e=>{let t=e.model.getters.getElementsFromSelection(`ROW`),n=t[0],r=t[t.length-1];return t.length===1?k(`Hide row %s`,(n+1).toString()):r-n+1===t.length?k(`Hide rows %s - %s`,(n+1).toString(),(r+1).toString()):k(`Hide rows`)},fF=e=>{let t=e.model.getters,n=e.model.uuidGenerator.smallUuid(),r=t.getActiveSheetId(),i=t.getSelectedZones();i.length===1&&Gn(i[0])===1&&(e.model.selection.selectTableAroundSelection(),i=t.getSelectedZones());let a={width:536,height:335},{col:o,row:s,offset:c}=H_(t,a);e.model.dispatch(`CREATE_CHART`,{sheetId:r,figureId:n,chartId:e.model.uuidGenerator.smallUuid(),col:o,row:s,offset:c,size:a,definition:VP(i,e.model.getters)}).isSuccessful&&(e.model.dispatch(`SELECT_FIGURE`,{figureId:n}),e.openSidePanel(`ChartPanel`))},pF=e=>{let t=e.model.getters,n=e.model.uuidGenerator.smallUuid(),r=t.getActiveSheetId(),i={width:536,height:335},{col:a,row:o,offset:s}=H_(t,i);e.model.dispatch(`CREATE_CAROUSEL`,{sheetId:r,figureId:n,col:a,row:o,offset:s,size:i,definition:{items:[]}}).isSuccessful&&(e.model.dispatch(`SELECT_FIGURE`,{figureId:n}),e.openSidePanel(`CarouselPanel`,{figureId:n}))},mF=e=>{let t=e.model.uuidGenerator.smallUuid(),n=e.model.uuidGenerator.smallUuid();e.model.dispatch(`INSERT_NEW_PIVOT`,{pivotId:t,newSheetId:n}).isSuccessful&&e.openSidePanel(`PivotSidePanel`,{pivotId:t})},hF=e=>e.model.getters.getPivotIds().map((t,n)=>({id:`reinsert_dynamic_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:n,execute:e=>{let n=e.model.getters.getSelectedZone(),r=e.model.getters.getPivot(t).getCollapsedTableStructure().export();e.model.dispatch(`INSERT_PIVOT_WITH_TABLE`,{pivotId:t,table:r,col:n.left,row:n.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:`dynamic`}),e.model.dispatch(`REFRESH_PIVOT`,{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})),gF=e=>e.model.getters.getPivotIds().map((t,n)=>({id:`reinsert_static_pivot_${e.model.getters.getPivotFormulaId(t)}`,name:e.model.getters.getPivotDisplayName(t),sequence:n,execute:e=>{let n=e.model.getters.getSelectedZone(),r=e.model.getters.getPivot(t).getExpandedTableStructure();if(r.numberOfCells>5e5){e.notifyUser({type:`warning`,text:lm(r.numberOfCells,e.model.getters.getLocale()),sticky:!0});return}e.model.dispatch(`INSERT_PIVOT_WITH_TABLE`,{pivotId:t,table:r.export(),col:n.left,row:n.top,sheetId:e.model.getters.getActiveSheetId(),pivotMode:`static`}),e.model.dispatch(`REFRESH_PIVOT`,{id:t})},isVisible:e=>e.model.getters.getPivot(t).isValid()})),_F=async e=>{if(e.imageProvider){let t=e.model.getters.getActiveSheetId(),n=e.model.uuidGenerator.smallUuid(),r=await e.imageProvider.requestImage(),i=U_(e.model.getters,r.size),{col:a,row:o,offset:s}=H_(e.model.getters,i);e.model.dispatch(`CREATE_IMAGE`,{sheetId:t,figureId:n,col:a,row:o,offset:s,size:i,definition:r})}},vF=e=>UP(e,`0.00%`),yF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZones(),r=e.model.getters.getConditionalFormats(t),i=e.model.getters.getRulesSelection(t,n);return i.length===1?e.openSidePanel(`ConditionalFormattingEditor`,{cf:r.find(e=>e.id===i[0]),isNewCf:!1}):e.openSidePanel(`ConditionalFormatting`)},bF=e=>{let{col:t,row:n}=e.model.getters.getActivePosition();e.getStore(aP).open({col:t,row:n},`LinkEditor`)},xF=e=>{let t=e.model.getters.getActiveSheetId(),{col:n,row:r}=e.model.getters.getActivePosition(),i=e.model.getters.getEvaluatedCell({sheetId:t,col:n,row:r});return i&&i.link?k(`Edit link`):k(`Insert link`)},SF=e=>e.model.getters.getFirstTableInSelection()?.config.hasFilters||!1,CF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZones(),r=e.model.getters.getTablesOverlappingZones(t,n);return r.length===1&&!r[0].isPivotTable},wF=e=>Yn(e.model.getters.getSelectedZones()),TF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getFirstTableInSelection();n?e.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{hasFilters:!0}}):HP(e,t,{...HA,hasFilters:!0,bandedRows:!1,styleId:`TableStyleLight11`})},EF=e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getFirstTableInSelection();n&&e.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{hasFilters:!1}})},DF=e=>{HP(e,e.model.getters.getActiveSheetId()).isSuccessful&&e.openSidePanel(`TableSidePanel`,{})},OF=e=>{let t=e.model.getters.getFirstTableInSelection();t&&e.model.dispatch(`REMOVE_TABLE`,{sheetId:e.model.getters.getActiveSheetId(),target:[t.range.zone]})},kF=e=>e.model.getters.getSelectedZones().length===1,AF=(e,t)=>{if(!kF(e))return!1;let n=t===`COL`?e.model.getters.getActiveCols():e.model.getters.getActiveRows(),r=t===`COL`?e.model.getters.getActiveRows():e.model.getters.getActiveCols(),i=e.model.getters.getActiveSheetId(),a=Dn(e.model.getters.getSelectedZone(),e.model.getters.getSheetZone(i));return kt(n)&&(r.size===0||a)},jF={name:e=>SF(e)?k(`Remove selected filters`):k(`Add filters`),isEnabled:e=>wF(e),execute:e=>SF(e)?EF(e):TF(e),icon:`o-spreadsheet-Icon.FILTER_ICON_ACTIVE`},MF={name:e=>{let t=fI(e);return t===1?k(`Insert row`):k(`Insert %s rows`,t.toString())},isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW`},NF={name:e=>{let t=fI(e);return t===1?k(`Insert row above`):k(`Insert %s rows above`,t.toString())},execute:oF,isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW_BEFORE`},PF={...NF,name:e=>{let t=fI(e);return t===1?k(`Row above`):k(`%s Rows above`,t.toString())}},FF={...NF,name:e=>{let t=fI(e);return t===1?k(`Insert row`):k(`Insert %s rows`,t.toString())},isVisible:kF,icon:`o-spreadsheet-Icon.INSERT_ROW_BEFORE`},IF={execute:sF,name:e=>{let t=fI(e);return t===1?k(`Insert row below`):k(`Insert %s rows below`,t.toString())},isVisible:e=>AF(e,`ROW`),icon:`o-spreadsheet-Icon.INSERT_ROW_AFTER`},LF={...IF,name:e=>{let t=fI(e);return t===1?k(`Row below`):k(`%s Rows below`,t.toString())}},RF={name:e=>{let t=pI(e);return t===1?k(`Insert column`):k(`Insert %s columns`,t.toString())},isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL`},zF={name:e=>{let t=pI(e);return t===1?k(`Insert column left`):k(`Insert %s columns left`,t.toString())},execute:cF,isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL_BEFORE`},BF={...zF,name:e=>{let t=pI(e);return t===1?k(`Column left`):k(`%s Columns left`,t.toString())}},VF={...zF,name:e=>{let t=pI(e);return t===1?k(`Insert column`):k(`Insert %s columns`,t.toString())},isVisible:kF,icon:`o-spreadsheet-Icon.INSERT_COL_BEFORE`},HF={name:e=>{let t=pI(e);return t===1?k(`Insert column right`):k(`Insert %s columns right`,t.toString())},execute:lF,isVisible:e=>AF(e,`COL`),icon:`o-spreadsheet-Icon.INSERT_COL_AFTER`},UF={...HF,name:e=>{let t=pI(e);return t===1?k(`Column right`):k(`%s Columns right`,t.toString())},execute:lF},WF={name:k(`Insert cells`),isVisible:e=>kF(e)&&e.model.getters.getActiveCols().size===0&&e.model.getters.getActiveRows().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL`},GF={name:k(`Insert cells and shift down`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`INSERT_CELL`,{zone:t,shiftDimension:`ROW`}))},isVisible:e=>e.model.getters.getActiveRows().size===0&&e.model.getters.getActiveCols().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL_SHIFT_DOWN`},KF={name:k(`Insert cells and shift right`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`INSERT_CELL`,{zone:t,shiftDimension:`COL`}))},isVisible:e=>e.model.getters.getActiveRows().size===0&&e.model.getters.getActiveCols().size===0,icon:`o-spreadsheet-Icon.INSERT_CELL_SHIFT_RIGHT`},qF={name:k(`Chart`),execute:fF,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_CHART`},JF={name:k(`Carousel`),execute:pF,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.CAROUSEL`},YF={name:k(`Pivot table`),execute:mF,isEnabled:e=>!e.isSmall,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.PIVOT`},XF={name:k(`Image`),shortcut:`Ctrl+O`,execute:_F,isVisible:e=>e.imageProvider!==void 0,isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_IMAGE`},ZF={name:()=>k(`Table`),description:`Alt+T`,execute:DF,isVisible:e=>wF(e)&&!e.model.getters.getFirstTableInSelection(),isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.PAINT_TABLE`},QF={name:k(`Function`),icon:`o-spreadsheet-Icon.FORMULA`},$F={name:k(`SUM`),execute:e=>e.startCellEdition(`=SUM(`)},eI={name:k(`AVERAGE`),execute:e=>e.startCellEdition(`=AVERAGE(`)},tI={name:k(`COUNT`),execute:e=>e.startCellEdition(`=COUNT(`)},nI={name:k(`MAX`),execute:e=>e.startCellEdition(`=MAX(`)},rI={name:k(`MIN`),execute:e=>e.startCellEdition(`=MIN(`)},iI={name:k(`All`),children:[aI]};function aI(){return dI(uO.getKeys().filter(e=>!uO.get(e).hidden))}let oI=()=>{let e=uO.content;return[...new Set(uO.getAll().filter(e=>!e.hidden).map(e=>e.category))].filter(C).sort().map((t,n)=>({name:t,children:dI(Object.keys(e).filter(n=>e[n].category===t&&!e[n].hidden)),sequence:60+n}))},sI={name:k(`Link`),description:`Ctrl+K`,execute:bF,icon:`o-spreadsheet-Icon.INSERT_LINK`},cI={name:k(`Checkbox`),execute:e=>{let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId(),r=t.map(t=>e.model.getters.getRangeDataFromZone(n,t));e.model.dispatch(`ADD_DATA_VALIDATION_RULE`,{ranges:r,sheetId:n,rule:{id:e.model.uuidGenerator.smallUuid(),criterion:{type:`isBoolean`,values:[]}}})},icon:`o-spreadsheet-Icon.INSERT_CHECKBOX`},lI={name:k(`Dropdown list`),execute:e=>{let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId(),r=t.map(t=>e.model.getters.getRangeDataFromZone(n,t)),i=e.model.uuidGenerator.smallUuid();e.model.dispatch(`ADD_DATA_VALIDATION_RULE`,{ranges:r,sheetId:n,rule:{id:i,criterion:{type:`isValueInList`,values:[],displayStyle:`chip`}}}),e.model.getters.getDataValidationRule(n,i)&&e.openSidePanel(`DataValidationEditor`,{ruleId:i,onCancel:()=>{e.model.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:n,id:i})}})},isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.INSERT_DROPDOWN`},uI={name:k(`Insert sheet`),description:`Shift+F11`,execute:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSheetIds().indexOf(t)+1,r=e.model.uuidGenerator.smallUuid();e.model.dispatch(`CREATE_SHEET`,{sheetId:r,position:n,name:e.model.getters.getNextSheetName()}),e.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:t,sheetIdTo:r})},icon:`o-spreadsheet-Icon.INSERT_SHEET`};function dI(e){return e.sort().map((e,t)=>({name:e,sequence:t*10,execute:t=>t.startCellEdition(`=${e}(`)}))}function fI(e){let t=e.model.getters.getActiveRows();if(t.size)return t.size;{let t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function pI(e){let t=e.model.getters.getActiveCols();if(t.size)return t.size;{let t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}function mI({refName:e}){let n=(0,t.useRef)(e);(0,t.useEffect)(e=>{e?.focus()},()=>[n.el])}var hI=class extends t.Component{static props={value:[Number,String],onChange:Function,class:{type:String,optional:!0},id:{type:String,optional:!0},placeholder:{type:String,optional:!0},autofocus:{type:Boolean,optional:!0},alwaysShowBorder:{type:Boolean,optional:!0},selectContentOnFocus:{type:Boolean,optional:!0}};refName=`input`;inputRef;setup(){this.inputRef=(0,t.useRef)(this.refName),(0,t.useExternalListener)(window,`click`,e=>{e.target!==this.inputRef.el&&this.inputRef.el?.value!==this.props.value&&this.save()},{capture:!0}),this.props.autofocus&&mI({refName:this.refName}),(0,t.onWillUpdateProps)(e=>{document.activeElement!==this.inputRef.el&&this.inputRef.el&&(this.inputRef.el.value=e.value)}),(0,t.onMounted)(()=>{this.inputRef.el&&(this.inputRef.el.value=this.props.value.toString())})}onKeyDown(e){switch(e.key){case`Enter`:this.save(),e.preventDefault(),e.stopPropagation();break;case`Escape`:this.inputRef.el&&(this.inputRef.el.value=this.props.value.toString(),this.inputRef.el.blur()),e.preventDefault(),e.stopPropagation();break}}save(e=!1){let t=(this.inputRef.el?.value||``).trim();t!==this.props.value.toString()&&this.props.onChange(t),e||this.inputRef.el?.blur()}onMouseDown(e){e.target!==document.activeElement&&this.props.selectContentOnFocus&&(e.preventDefault(),e.stopPropagation())}onMouseUp(e){let t=e.target;t!==document.activeElement&&this.props.selectContentOnFocus&&(t.focus(),this.props.selectContentOnFocus&&t.select(),e.preventDefault(),e.stopPropagation())}},gI=class extends hI{static template=`o-spreadsheet-TextInput`;static components={};static props={...hI.props,errorMessage:{type:String,optional:!0}};get inputClass(){return[this.props.class,`w-100 os-input`,this.props.alwaysShowBorder?`o-input-border`:void 0,this.props.errorMessage?`o-invalid`:void 0].filter(C).join(` `)}},_I=class extends t.Component{static template=`o-spreadsheet-ActionButton`;static props={action:Object,hasTriangleDownIcon:{type:Boolean,optional:!0},selectedColor:{type:String,optional:!0},class:{type:String,optional:!0},onClick:{type:Function,optional:!0}};actionButton=h(this.props.action);setup(){(0,t.onWillUpdateProps)(e=>{e.action!==this.props.action&&(this.actionButton=h(e.action))})}get isVisible(){return this.actionButton.isVisible(this.env)}get isEnabled(){let e=this.actionButton.isEnabledOnLockedSheet||!this.env.model.getters.isCurrentSheetLocked();return this.actionButton.isEnabled(this.env)&&e}get isActive(){return this.actionButton.isActive?.(this.env)}get title(){let e=this.actionButton.name(this.env),t=this.actionButton.description(this.env)||this.actionButton.shortcut;return e+(t?` (${t})`:``)}get iconTitle(){return this.actionButton.icon(this.env)}onClick(e){this.isEnabled&&(this.props.onClick?.(e),this.actionButton.execute?.(this.env))}get buttonStyle(){return this.props.selectedColor?U({"border-bottom":`4px solid ${this.props.selectedColor}`,height:`16px`,"margin-top":`2px`}):``}},vI=class extends t.Component{static template=`o-spreadsheet-ColorPickerWidget`;static props={currentColor:{type:String,optional:!0},toggleColorPicker:Function,showColorPicker:Boolean,onColorPicked:Function,icon:String,title:{type:String,optional:!0},disabled:{type:Boolean,optional:!0},dropdownMaxHeight:{type:Number,optional:!0},class:{type:String,optional:!0}};static components={ColorPicker:zN};colorPickerButtonRef=(0,t.useRef)(`colorPickerButton`);get iconStyle(){return this.props.currentColor?`border-color: ${this.props.currentColor}`:`border-bottom-style: hidden`}get colorPickerAnchorRect(){let e=this.colorPickerButtonRef.el.getBoundingClientRect();return{x:e.x,y:e.y,width:e.width,height:e.height}}},yI=class extends t.Component{static template=`o-spreadsheet-NumberEditor`;static props={currentValue:Number,onValueChange:Function,onToggle:{type:Function,optional:!0},onFocusInput:{type:Function,optional:!0},class:String,valueIcon:{type:String,optional:!0},min:Number,max:Number,title:String,valueList:Array};static defaultProps={onFocusInput:()=>{}};static components={Popover:kv};dropdown=(0,t.useState)({isOpen:!1});inputRef=(0,t.useRef)(`inputNumber`);rootEditorRef=(0,t.useRef)(`NumberEditor`);valueListRef=(0,t.useRef)(`numberList`);DOMFocusableElementStore;setup(){this.DOMFocusableElementStore=D(FM),(0,t.useExternalListener)(window,`click`,this.onExternalClick,{capture:!0}),(0,t.onWillUpdateProps)(e=>{this.inputRef.el&&document.activeElement!==this.inputRef.el&&(this.inputRef.el.value=e.currentValue)}),(0,t.onMounted)(()=>{this.inputRef.el&&(this.inputRef.el.value=this.props.currentValue.toString())})}get popoverProps(){let{x:e,y:t,width:n,height:r}=this.rootEditorRef.el.getBoundingClientRect();return{anchorRect:{x:e,y:t,width:n,height:r},positioning:`bottom-left`,verticalOffset:0}}onExternalClick(e){!np(this.valueListRef.el,e)&&!np(this.rootEditorRef.el,e)&&this.closeList()}toggleList(){this.dropdown.isOpen?this.closeList():(this.props.onToggle?.(),this.inputRef.el.focus())}closeList(){this.dropdown.isOpen=!1}setValue(e){let t=x(Math.floor(parseFloat(e)),this.props.min,this.props.max);this.props.onValueChange(t),this.closeList()}setValueFromInput(e){this.setValue(e.target.value)}setValueFromList(e){this.setValue(e)}get currentValue(){return`${this.props.currentValue}`}onInputFocused(e){this.dropdown.isOpen=!0,e.target.select()}onInputKeydown(e){if(e.key===`Enter`||e.key===`Escape`){this.closeList();let t=e.target;e.key===`Escape`&&(t.value=`${this.props.currentValue}`),this.props.onToggle?.()}if(e.key===`Tab`){e.preventDefault(),e.stopPropagation(),this.closeList(),this.DOMFocusableElementStore.focus();return}}},bI=class extends t.Component{static template=`o-spreadsheet-FontSizeEditor`;static components={NumberEditor:yI};static props={currentFontSize:Number,onFontSizeChanged:Function,onToggle:{type:Function,optional:!0},onFocusInput:{type:Function,optional:!0},class:String};static defaultProps={onFocusInput:()=>{}};fontSizes=Le},xI=class extends t.Component{static template=`o-spreadsheet.TextStyler`;static components={ColorPickerWidget:vI,ActionButton:_I,FontSizeEditor:bI};static props={style:Object,updateStyle:{type:Function,optional:!0},defaultStyle:{type:Object,optional:!0},hasVerticalAlign:{type:Boolean,optional:!0},hasHorizontalAlign:{type:Boolean,optional:!0},hasBackgroundColor:{type:Boolean,optional:!0},class:{type:String,optional:!0}};openedEl=null;setup(){(0,t.useExternalListener)(window,`click`,this.onExternalClick)}state=(0,t.useState)({activeTool:``});updateFontSize(e){this.props.updateStyle?.({...this.props.style,fontSize:e})}toggleDropdownTool(e,t){let n=this.state.activeTool===e;this.closeMenus(),this.state.activeTool=n?``:e,this.openedEl=n?null:t.target}onExternalClick(e){this.openedEl!==e.target&&this.closeMenus()}onTextColorChange(e){this.props.updateStyle?.({...this.props.style,color:e}),this.closeMenus()}onFillColorChange(e){this.props.updateStyle?.({...this.props.style,fillColor:e}),this.closeMenus()}updateAlignment(e){this.props.updateStyle?.({...this.props.style,align:e}),this.closeMenus()}updateVerticalAlignment(e){this.props.updateStyle?.({...this.props.style,verticalAlign:e}),this.closeMenus()}toggleBold(){this.props.updateStyle?.({...this.props.style,bold:!this.bold})}toggleItalic(){this.props.updateStyle?.({...this.props.style,italic:!this.italic})}closeMenus(){this.state.activeTool=``,this.openedEl=null}get align(){return this.props.style.align??this.props.defaultStyle?.align}get verticalAlign(){return this.props.style.verticalAlign||this.props.defaultStyle?.verticalAlign}get bold(){return this.props.style.bold??this.props.defaultStyle?.bold}get italic(){return this.props.style.italic??this.props.defaultStyle?.italic}get currentFontSize(){return this.props.style.fontSize??this.props.defaultStyle?.fontSize??ye.fontSize}get boldButtonAction(){return{name:k(`Bold`),execute:()=>this.toggleBold(),isActive:()=>this.bold||!1,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.BOLD`}}get italicButtonAction(){return{name:k(`Italic`),execute:()=>this.toggleItalic(),isActive:()=>this.italic||!1,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ITALIC`}}get horizontalAlignButtonAction(){let e=`o-spreadsheet-Icon.ALIGN_LEFT`;return this.align===`center`?e=`o-spreadsheet-Icon.ALIGN_CENTER`:this.align===`right`&&(e=`o-spreadsheet-Icon.ALIGN_RIGHT`),{name:k(`Horizontal alignment`),icon:e,isEnabledOnLockedSheet:!0}}get horizontalAlignActions(){return[{name:k(`Left`),execute:()=>this.updateAlignment(`left`),isActive:()=>this.align===`left`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_LEFT`},{name:k(`Center`),execute:()=>this.updateAlignment(`center`),isActive:()=>this.align===`center`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_CENTER`},{name:k(`Right`),execute:()=>this.updateAlignment(`right`),isActive:()=>this.align===`right`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_RIGHT`}]}get verticalAlignButtonAction(){let e=`o-spreadsheet-Icon.ALIGN_MIDDLE`;return this.verticalAlign===`top`?e=`o-spreadsheet-Icon.ALIGN_TOP`:this.verticalAlign===`bottom`&&(e=`o-spreadsheet-Icon.ALIGN_BOTTOM`),{name:k(`Vertical alignment`),icon:e,isEnabledOnLockedSheet:!0}}get verticalAlignActions(){return[{name:k(`Top`),execute:()=>this.updateVerticalAlignment(`top`),isActive:()=>this.verticalAlign===`top`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_TOP`},{name:k(`Middle`),execute:()=>this.updateVerticalAlignment(`middle`),isActive:()=>this.verticalAlign===`middle`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_MIDDLE`},{name:k(`Bottom`),execute:()=>this.updateVerticalAlignment(`bottom`),isActive:()=>this.verticalAlign===`bottom`,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.ALIGN_BOTTOM`}]}},SI=class extends t.Component{static template=`o-spreadsheet-CogWheelMenu`;static components={MenuPopover:Nv};static props={items:Array};buttonRef=(0,t.useRef)(`button`);menuState=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]});menuId=this.env.model.uuidGenerator.uuidv4();toggleMenu(e){e.closedMenuId!==this.menuId&&(this.menuState.isOpen=!this.menuState.isOpen,this.menuState.anchorRect=op(this.buttonRef.el),this.menuState.menuItems=p(this.props.items))}},CI=class extends t.Component{static template=`o-spreadsheet-CarouselPanel`;static props={onCloseSidePanel:Function,figureId:String};static components={Section:Q,TextInput:gI,TextStyler:xI,CogWheelMenu:SI};DEFAULT_CAROUSEL_TITLE_STYLE=Ve;dragAndDrop=HN();previewListRef=(0,t.useRef)(`previewList`);setup(){let e=[...this.carouselItems];(0,t.onWillUpdateProps)(()=>{w(this.carouselItems,e)||this.dragAndDrop.cancel(),e=[...this.carouselItems]})}get carouselItems(){return this.env.model.getters.getCarousel(this.props.figureId).items}get title(){return this.env.model.getters.getCarousel(this.props.figureId).title}get carousel(){return this.env.model.getters.getCarousel(this.props.figureId)}getPreviewDivStyle(e){return this.dragAndDrop.itemsStyle[this.getItemId(e)]||``}getItemId(e){return e.type===`chart`?e.chartId:`transparent-carousel`}addNewChartToCarousel(){this.env.model.dispatch(`ADD_NEW_CHART_TO_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId})}get hasDataView(){return this.carouselItems.some(e=>e.type===`carouselDataView`)}isCarouselItemActive(e){return w(this.env.model.getters.getSelectedCarouselItem(this.props.figureId),e)}addDataViewToCarousel(){let e=this.env.model.getters.getCarousel(this.props.figureId);this.updateItems([...e.items,{type:`carouselDataView`}])}activateCarouselItem(e){this.env.model.dispatch(`UPDATE_CAROUSEL_ACTIVE_ITEM`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,item:e})}editCarouselItem(e){e.type===`chart`&&(this.activateCarouselItem(e),this.env.model.dispatch(`SELECT_FIGURE`,{figureId:this.props.figureId}),this.env.openSidePanel(`ChartPanel`,{chartId:e.chartId}))}renameCarouselItem(e,t){let n=t.trim();if(!n||n===this.getItemTitle(e).toString())return;let r=[...this.carouselItems],i=this.carouselItems.findIndex(t=>w(t,e));i!==-1&&(r[i]={...e,title:n},this.updateItems(r))}deleteCarouselItem(e){let t=this.env.model.getters.getCarousel(this.props.figureId).items.filter(t=>!w(t,e));this.updateItems(t)}popOutCarouselItem(e){e.type===`chart`&&this.env.model.dispatch(`POPOUT_CHART_FROM_CAROUSEL`,{sheetId:this.carouselSheetId,carouselId:this.props.figureId,chartId:e.chartId})}duplicateCarouselChart(e){e.type===`chart`&&this.env.model.dispatch(`DUPLICATE_CAROUSEL_CHART`,{sheetId:this.carouselSheetId,carouselId:this.props.figureId,chartId:e.chartId,duplicatedChartId:this.env.model.uuidGenerator.smallUuid()})}onDragHandleMouseDown(e,t){if(t.button!==0)return;let n=Array.from(this.previewListRef.el.children).map(e=>op(e)),r=this.carouselItems.map((e,t)=>({id:this.getItemId(e),size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:this.getItemId(e),initialMousePosition:t.clientY,items:r,scrollableContainerEl:this.previewListRef.el,onDragEnd:(t,n)=>this.onDragEnd(e,n)})}onDragEnd(e,t){let n=this.carouselItems.findIndex(t=>w(t,e));if(n===-1||n===t)return;let r=[...this.env.model.getters.getCarousel(this.props.figureId).items];r.splice(n,1),r.splice(t,0,e),this.updateItems(r)}getItemTitle(e){return tv(this.env.model.getters,e)}getItemPreview(e){return ev(this.env.model.getters,e)}updateItems(e){this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...this.carousel,items:e}})}updateTitleText(e){let t=this.env.model.getters.getCarousel(this.props.figureId);this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...t,title:{...t.title,text:e}}})}updateTitleStyle(e){let t=this.env.model.getters.getCarousel(this.props.figureId);this.env.model.dispatch(`UPDATE_CAROUSEL`,{figureId:this.props.figureId,sheetId:this.carouselSheetId,definition:{...t,title:{...t.title,...e}}})}get carouselAddChartInfoMessage(){return k(`Add a chart to the carousel. You can also add a chart by dragging and dropping it over the carousel figure.`)}getCogWheelMenuItems(e){let t=[];return e.type===`chart`&&(t.push({name:k(`Edit chart`),execute:()=>this.editCarouselItem(e),icon:`o-spreadsheet-Icon.EDIT`}),t.push({name:k(`Pop out chart`),execute:()=>this.popOutCarouselItem(e),icon:`o-spreadsheet-Icon.EXTERNAL`}),t.push({name:k(`Duplicate chart`),execute:()=>this.duplicateCarouselChart(e),icon:`o-spreadsheet-Icon.COPY`})),t.push({name:k(`Delete item`),execute:()=>this.deleteCarouselItem(e),icon:`o-spreadsheet-Icon.TRASH`}),t}get carouselSheetId(){let e=this.env.model.getters.getFigureSheetId(this.props.figureId);if(!e)throw Error(`Could not find the sheetId of the carousel figure`);return e}get carouselDataViewMessage(){return k(`The data view makes the carousel transparent, revealing the data underneath.`)}};let wI={chartId:String,definition:Object,canUpdateChart:Function,updateChart:Function};var TI=class extends t.Component{static template=`o-spreadsheet.ChartDataSeries`;static components={SelectionInput:YN,Section:Q};static props={ranges:Array,hasSingleRange:{type:Boolean,optional:!0},onSelectionChanged:Function,onSelectionReordered:{type:Function,optional:!0},onSelectionRemoved:{type:Function,optional:!0},onSelectionConfirmed:Function,title:{type:String,optional:!0},maxNumberOfUsedRanges:{type:Number,optional:!0},datasetOrientation:{type:String,optional:!0},canChangeDatasetOrientation:{type:Boolean,optional:!0},onFlipAxis:{type:Function,optional:!0}};get ranges(){return this.props.ranges.map(e=>e.dataRange)}get disabledRanges(){return this.props.ranges.map((e,t)=>this.props.maxNumberOfUsedRanges?t>=this.props.maxNumberOfUsedRanges:!1)}get colors(){return this.props.ranges.map(e=>e.backgroundColor)}get title(){return this.props.title?this.props.title:this.props.hasSingleRange?k(`Data range`):k(`Data series`)}},EI=class extends t.Component{static template=`o-spreadsheet-ValidationMessages`;static props={messages:Array,msgType:String,singleBox:{type:Boolean,optional:!0}};get divClasses(){return this.props.msgType===`warning`?`o-validation-warning`:this.props.msgType===`info`?`o-validation-info`:`o-validation-error`}get alertBoxes(){return this.props.singleBox?[this.props.messages]:this.props.messages.map(e=>[e])}},DI=class extends t.Component{static template=`o-spreadsheet.ChartErrorSection`;static components={Section:Q,ValidationMessages:EI};static props={messages:{type:Array,element:String}}},OI=class extends t.Component{static template=`o-spreadsheet.ChartLabelRange`;static components={SelectionInput:YN,Checkbox:eP,Section:Q};static props={title:{type:String,optional:!0},range:String,isInvalid:Boolean,onSelectionChanged:Function,onSelectionConfirmed:Function,options:{type:Array,optional:!0}};static defaultProps={title:k(`Categories / Labels`),options:[]}},kI=class extends t.Component{static template=`o-spreadsheet-GenericChartConfigPanel`;static components={ChartDataSeries:TI,ChartLabelRange:OI,Section:Q,Checkbox:eP,ChartErrorSection:DI};static props=wI;state=(0,t.useState)({datasetDispatchResult:void 0,labelsDispatchResult:void 0});dataSets=[];labelRange;datasetOrientation=void 0;chartTerms=tm;setup(){this.dataSets=this.props.definition.dataSets,this.labelRange=this.props.definition.labelRange,this.datasetOrientation=this.computeDatasetOrientation()}get errorMessages(){return[...this.state.datasetDispatchResult?.reasons||[],...this.state.labelsDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isDatasetInvalid(){return!!this.state.datasetDispatchResult?.isCancelledBecause(`InvalidDataSet`)}get isLabelInvalid(){return!!this.state.labelsDispatchResult?.isCancelledBecause(`InvalidLabelRange`)}get dataSetsHaveTitleLabel(){return this.datasetOrientation===`rows`?k(`Use col %(column_name)s as headers`,{column_name:Kt(this.calculateHeaderPosition()||0)}):k(`Use row %(row_position)s as headers`,{row_position:this.calculateHeaderPosition()||``})}getLabelRangeOptions(){let e=this.props.definition;return[{name:`aggregated`,label:this.chartTerms.AggregatedChart,value:(`aggregated`in e?e.aggregated:!1)??!1,onChange:this.onUpdateAggregated.bind(this)},{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:e.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}onUpdateDataSetsHaveTitle(e){this.props.updateChart(this.props.chartId,{dataSetsHaveTitle:e})}get canChangeDatasetOrientation(){let e=new Set,t=[],n=this.env.model.getters.getActiveSheetName(),r=this.dataSets.map(e=>e.dataRange);this.labelRange&&r.push(this.labelRange);for(let i of r){if(!gn(i))return!1;let r=zc(i),a=pn(r.xc);if(a.bottom===void 0||a.right===void 0||(t.push(a),e.add(r.sheetName||n),e.size>1))return!1}let i=er(t);if(i.length!==1)return!1;let{left:a,right:o,top:s,bottom:c}=i[0];return!t.some(e=>(e.top!==s||e.bottom!==c)&&(e.left!==a||e.right!==o))}computeDatasetOrientation(){let e=!1,t=!1;for(let n of this.dataSets){if(!gn(n.dataRange))return;let r=pn(n.dataRange);if(r.bottom===void 0||r.right===void 0)return;r.top===r.bottom&&(e=!0),r.left===r.right&&(t=!0)}if(e&&!t)return`rows`;if(!e&&t)return`columns`}setDatasetOrientation(e){let t=this.props.definition.dataSets.map(e=>e.dataRange),n=this.transposeDataSet([this.props.definition.labelRange,...t],e);if(n.length===0)return;let r=n.length>1?n.shift().dataRange:``;this.props.updateChart(this.props.chartId,{labelRange:r,dataSets:n}),this.dataSets=n,this.labelRange=r,this.datasetOrientation=e}onDataSeriesRangesChanged(e){this.dataSets=e.map((e,t)=>({...this.dataSets?.[t],dataRange:e})),this.state.datasetDispatchResult=this.props.canUpdateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesReordered(e){let t=Sf({dataSets:this.dataSets},this.dataSets.length);this.datasetOrientation=void 0;let n=this.dataSets.map(e=>t.next());this.dataSets=e.map(e=>({backgroundColor:n[e],...this.dataSets[e]})),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesRemoved(e){let t=Sf({dataSets:this.dataSets},this.dataSets.length),n=this.dataSets.map(e=>t.next());this.dataSets=this.dataSets.map((e,t)=>({backgroundColor:n[t],...e})).filter((t,n)=>n!==e),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets})}onDataSeriesConfirmed(){this.dataSets=this.splitRanges,this.datasetOrientation=this.computeDatasetOrientation(),this.state.datasetDispatchResult=this.props.updateChart(this.props.chartId,{dataSets:this.dataSets}),this.state.datasetDispatchResult.isSuccessful&&(this.dataSets=this.env.model.getters.getChartDefinition(this.props.chartId).dataSets)}get splitRanges(){let e=[];for(let t of this.dataSets){let n=t.dataRange;if(!this.env.model.getters.isRangeValid(n)){e.push(t);continue}let{sheetName:r}=zc(n),i=r?`${r}!`:``,a=pn(n);if(a.bottom!==a.top&&a.left!==a.right){if(this.datasetOrientation!==`rows`){if(a.right!==void 0)for(let n=a.left;n<=a.right;++n){let r=n===a.left?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:n,right:n,top:a.top,bottom:a.bottom})}`})}else if(a.bottom!==void 0)for(let n=a.top;n<=a.bottom;++n){let r=n===a.top?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:a.left,right:a.right,top:n,bottom:n})}`})}}else if(a.bottom!==void 0)for(let n=a.top;n<=a.bottom;++n){let r=n===a.top?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:a.left,right:a.right,top:n,bottom:n})}`})}else if(a.right!==void 0)for(let n=a.left;n<=a.right;++n){let r=n===a.left?t:{yAxisId:t.yAxisId};e.push({...r,dataRange:`${i}${yn({left:n,right:n,top:a.top,bottom:a.bottom})}`})}}else e.push(t)}return e}getDataSeriesRanges(){return this.dataSets}onLabelRangeChanged(e){this.labelRange=e[0],this.state.labelsDispatchResult=this.props.canUpdateChart(this.props.chartId,{labelRange:this.labelRange})}onLabelRangeConfirmed(){this.state.labelsDispatchResult=this.props.updateChart(this.props.chartId,{labelRange:this.labelRange})}getLabelRange(){return this.labelRange||``}onUpdateAggregated(e){this.props.updateChart(this.props.chartId,{aggregated:e})}calculateHeaderPosition(){if(this.isDatasetInvalid||this.isLabelInvalid)return;let e=this.env.model.getters,t=e.getActiveSheetId(),n=nl(e,t,this.labelRange),r=od(e,this.dataSets,t,this.props.definition.dataSetsHaveTitle);if(r.length)return this.datasetOrientation===`rows`?r[0].dataRange.zone.left:r[0].dataRange.zone.top+1;if(n)return n.zone.top+1}get maxNumberOfUsedRanges(){return v_.get(this.props.definition.type).dataSeriesLimit}transposeDataSet(e,t){let n=this.env.model.getters;if(t===void 0)return e.filter(C).map(e=>({dataRange:e}));let r={},i=[],a=n.getFigureIdFromChartId(this.props.chartId),o=n.getFigureSheetId(a),s=n.getActiveSheet().name;o&&(s=n.getSheet(o).name);for(let t of e){if(!t)continue;if(!gn(t))return e.filter(C).map(e=>({dataRange:e}));let{sheetName:n,xc:i}=zc(t);n??=s,r[n]||(r[n]=[]),r[n].push(mn(i))}for(let e in r){let n=r[e],a=er(n);if(t===`columns`)for(let t of a)for(let n=t.left;n<=t.right;n++){let r=`${e===s?``:e+`!`}${yn({...t,left:n,right:n})}`;i.push({dataRange:r})}else for(let t of a)for(let n=t.top;n<=t.bottom;n++){let r=`${e===s?``:e+`!`}${yn({...t,top:n,bottom:n})}`;i.push({dataRange:r})}}return i}},AI=class extends kI{static template=`o-spreadsheet-BarConfigPanel`;get stackedLabel(){return this.props.definition.horizontal?this.chartTerms.StackedBarChart:this.chartTerms.StackedColumnChart}onUpdateStacked(e){this.props.updateChart(this.props.chartId,{stacked:e})}},jI=class extends t.Component{static template=`o-spreadsheet.BadgeSelection`;static props={choices:Array,onChange:Function,selectedValue:String}},MI=class extends t.Component{static template=`o-spreadsheet.ChartTitle`;static components={Section:Q,TextStyler:xI,TextInput:gI};static props={title:{type:String,optional:!0},placeholder:{type:String,optional:!0},updateTitle:Function,name:{type:String},style:Object,defaultStyle:{type:Object,optional:!0},updateStyle:Function};static defaultProps={title:``,placeholder:``};updateTitle(e){this.props.updateTitle(e)}},NI=class extends t.Component{static template=`o-spreadsheet-AxisDesignEditor`;static components={Section:Q,ChartTitle:MI,BadgeSelection:jI};static props={chartId:String,definition:Object,updateChart:Function,axesList:Array};state=(0,t.useState)({currentAxis:`x`});defaultFontSize=12;get axisTitleStyle(){return this.props.definition.axesDesign?.[this.state.currentAxis]?.title??{}}get badgeAxes(){return this.props.axesList.map(e=>({value:e.id,label:e.name}))}updateAxisEditor(e){this.state.currentAxis=e.target.value}getAxisTitle(){return(this.props.definition.axesDesign??{})[this.state.currentAxis]?.title.text||``}updateAxisTitle(e){let t=b(this.props.definition.axesDesign)??{};t[this.state.currentAxis]={...t[this.state.currentAxis],title:{...t?.[this.state.currentAxis]?.title,text:e}},this.props.updateChart(this.props.chartId,{axesDesign:t})}updateAxisTitleStyle(e){let t=b(this.props.definition.axesDesign)??{};t[this.state.currentAxis]={...t[this.state.currentAxis],title:e},this.props.updateChart(this.props.chartId,{axesDesign:t})}},PI=class extends t.Component{static template=`o-spreadsheet.RadioSelection`;static props={choices:Array,onChange:Function,selectedValue:{optional:!1},name:String,direction:{type:String,optional:!0}};static defaultProps={direction:`horizontal`}},FI=class extends t.Component{static template=`o-spreadsheet-GeneralDesignEditor`;static components={RoundColorPicker:BN,ChartTitle:MI,Section:Q,SidePanelCollapsible:TM,RadioSelection:PI};static props={...wI,defaultChartTitleFontSize:{type:Number,optional:!0},slots:{type:Object,optional:!0}};static defaultProps={defaultChartTitleFontSize:16};state;setup(){this.state=(0,t.useState)({activeTool:``})}get title(){return this.props.definition.title}toggleDropdownTool(e,t){let n=this.state.activeTool===e;this.state.activeTool=n?``:e}updateBackgroundColor(e){this.props.updateChart(this.props.chartId,{background:e})}updateTitle(e){let t={...this.title,text:e};this.props.updateChart(this.props.chartId,{title:t})}updateChartTitleStyle(e){let t={...this.title,...e};this.props.updateChart(this.props.chartId,{title:t}),this.state.activeTool=``}},II=class extends t.Component{static template=`o-spreadsheet-ChartHumanizeNumbers`;static components={Checkbox:eP};static props=wI;get title(){let e=this.env.model.getters.getLocale();return k(`E.g. 1234567 -> %(value)s`,{value:z(1234567,{format:bs({value:1234567},void 0,e),locale:e})})}},LI=class extends t.Component{static template=`o-spreadsheet-ChartLegend`;static components={Section:Q,Select:EM};static props=wI;updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`top`,label:k(`Top`)},{value:`bottom`,label:k(`Bottom`)},{value:`left`,label:k(`Left`)},{value:`right`,label:k(`Right`)}]}},RI=class extends hI{static template=`o-spreadsheet-NumberInput`;static components={};static props={...hI.props,min:{type:Number,optional:!0},max:{type:Number,optional:!0}};debouncedOnChange=pt(this.props.onChange.bind(this),100,!0);save(){let e=(this.inputRef.el?.value||``).trim();e!==this.props.value.toString()&&this.debouncedOnChange(e)}get inputClass(){return[this.props.class,`o-input`].join(` `)}},zI=class extends t.Component{static template=`o-spreadsheet-SeriesDesignEditor`;static components={SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,Select:EM};static props={...wI,slots:{type:Object,optional:!0}};state=(0,t.useState)({index:0});getDataSeries(){let e=this.env.model.getters.getChartRuntime(this.props.chartId);return!e||!(`chartJsConfig`in e)?[]:e.chartJsConfig.data.datasets.filter(e=>!Cd(e.xAxisID??``)).map(e=>e.label||``)}updateEditedSeries(e){this.state.index=Number(e)}updateDataSeriesColor(e){let t=this.props.definition.dataSets;t?.[this.state.index]&&(t[this.state.index]={...t[this.state.index],backgroundColor:e},this.props.updateChart(this.props.chartId,{dataSets:t}))}getDataSeriesColor(){let e=this.props.definition.dataSets;if(!e?.[this.state.index])return``;let t=e[this.state.index].backgroundColor;return t?Or(t):ti(this.state.index,ni(this.props.definition.dataSets.length))}updateDataSeriesLabel(e){let t=e.target.value,n=this.props.definition.dataSets;n?.[this.state.index]&&(n[this.state.index]={...n[this.state.index],label:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesLabel(){return this.props.definition.dataSets[this.state.index]?.label||this.getDataSeries()[this.state.index]}get selectOptions(){return this.getDataSeries().map((e,t)=>({value:t.toString(),label:e}))}},BI=class extends t.Component{static template=`o-spreadsheet-SeriesWithAxisDesignEditor`;static components={SeriesDesignEditor:zI,Checkbox:eP,RadioSelection:PI,Section:Q,RoundColorPicker:BN,NumberInput:RI,Select:EM};static props={...wI,slots:{type:Object,optional:!0}};axisChoices=bd;updateDataSeriesAxis(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],yAxisId:t===`left`?`y`:`y1`},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSerieAxis(e){let t=this.props.definition.dataSets;return t?.[e]&&t[e].yAxisId===`y1`?`right`:`left`}get canHaveTwoVerticalAxis(){return!(`horizontal`in this.props.definition&&this.props.definition.horizontal)}toggleDataTrend(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{type:`polynomial`,order:1,...n[e].trend,display:t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}getTrendLineConfiguration(e){return this.props.definition.dataSets?.[e]?.trend}getTrendType(e){return e?e.type===`polynomial`&&e.order===1?`linear`:e.type:``}onChangeTrendType(e,t){let n;switch(t){case`linear`:case`polynomial`:n={type:`polynomial`,order:t===`linear`?1:this.getMaxPolynomialDegree(e)};break;case`exponential`:case`logarithmic`:case`trailingMovingAverage`:n={type:t};break;default:return}this.updateTrendLineValue(e,n)}get trendOptions(){return[{value:`linear`,label:k(`Linear`)},{value:`polynomial`,label:k(`Polynomial`)},{value:`exponential`,label:k(`Exponential`)},{value:`logarithmic`,label:k(`Logarithmic`)},{value:`trailingMovingAverage`,label:k(`Trailing moving average`)}]}getPolynomialDegrees(e){return S(1,this.getMaxPolynomialDegree(e)+1).map(e=>({value:e.toString(),label:e.toString()}))}onChangePolynomialDegree(e,t){this.updateTrendLineValue(e,{order:parseInt(t)})}getMaxPolynomialDegree(e){let t=this.env.model.getters.getChartRuntime(this.props.chartId);return Math.min(10,t.chartJsConfig.data.datasets[e].data.length-1)}get defaultWindowSize(){return 2}onChangeMovingAverageWindow(e,t){let n=parseInt(t)||2;n<=1&&(n=2),this.updateTrendLineValue(e,{window:n})}getDataSeriesColor(e){let t=this.props.definition.dataSets;if(!t?.[e])return``;let n=t[e].backgroundColor;return n?Or(n):ti(e,ni(this.props.definition.dataSets.length))}getTrendLineColor(e){return this.getTrendLineConfiguration(e)?.color??Wr(this.getDataSeriesColor(e),.5)}updateTrendLineColor(e,t){this.updateTrendLineValue(e,{color:t})}updateTrendLineValue(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{...n[e].trend,...t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}},VI=class extends t.Component{static template=`o-spreadsheet-ChartShowValues`;static components={Checkbox:eP};static props={...wI,defaultValue:{type:Boolean,optional:!0}}},HI=class extends t.Component{static template=`o-spreadsheet-ChartWithAxisDesignPanel`;static components={GeneralDesignEditor:FI,SidePanelCollapsible:TM,Section:Q,AxisDesignEditor:NI,SeriesWithAxisDesignEditor:BI,ChartLegend:LI,ChartShowValues:VI,ChartHumanizeNumbers:II};static props=wI;get axesList(){let{useLeftAxis:e,useRightAxis:t}=_d(this.props.definition),n=[{id:`x`,name:k(`Horizontal axis`)}];return e&&n.push({id:`y`,name:k(t?`Left axis`:`Vertical axis`)}),t&&n.push({id:`y1`,name:k(e?`Right axis`:`Vertical axis`)}),n}},UI=class extends HI{static template=`o-spreadsheet-GenericZoomableChartDesignPanel`;static components={...HI.components,Checkbox:eP};onToggleZoom(e){this.props.updateChart(this.props.chartId,{zoomable:e})}},WI=class extends UI{static template=`o-spreadsheet-BarChartDesignPanel`;get isZoomable(){return!this.props.definition.horizontal}};let GI=[`year`,`quarter_number`,`month_number`,`iso_week_number`,`day_of_month`,`day_of_week`,`hour_number`,`minute_number`,`second_number`];var KI=class extends kI{static template=`o-spreadsheet-CalendarChartConfigPanel`;static components={...kI.components,Select:EM};groupByChoices=GI.map(e=>({value:e,label:gh[e]}));getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}getGroupByOptions(){let e=this.env.model.getters.getFigureSheetId(this.env.model.getters.getFigureIdFromChartId(this.props.chartId)),t=od(this.env.model.getters,this.props.definition.dataSets,e,this.props.definition.dataSetsHaveTitle);if(t.length===0)return[];let n=nl(this.env.model.getters,e,this.props.definition.labelRange),r=Gh(this.props.definition,t,n,this.env.model.getters).labels.filter(e=>Ti(e,R));if(r.length===0)return[];let i=r.map(e=>I(e,this.env.model.getters.getLocale())),a=new Set,o=new Set,s=new Set,c=new Set,l=new Set,u=new Set;for(let e of i)a.add(e.getFullYear()),o.add(e.getMonth()),s.add(e.getDate()),c.add(e.getHours()),l.add(e.getMinutes()),u.add(e.getSeconds());return this.groupByChoices.filter(e=>{switch(e.value){case`year`:return a.size>1;case`quarter_number`:case`month_number`:return o.size>1;case`iso_week_number`:case`day_of_month`:case`day_of_week`:return s.size>1;case`hour_number`:return c.size>1;case`minute_number`:return l.size>1;case`second_number`:return u.size>1;default:return!1}})}getGroupByType(e){return(e===`horizontal`?this.props.definition.horizontalGroupBy:this.props.definition.verticalGroupBy)||`year`}updateGroupBy(e,t){this.props.updateChart(this.props.chartId,{[e===`horizontal`?`horizontalGroupBy`:`verticalGroupBy`]:t})}},qI=class extends t.Component{static template=`o-spreadsheet-ColorScalePicker`;static components={Section:Q,RoundColorPicker:BN,Popover:kv};static props={definition:Object,onUpdateColorScale:Function};colorScales=ci.map(e=>({value:e,label:tm.ColorScales[e],className:`${e}-color-scale`}));state=(0,t.useState)({popoverProps:void 0,popoverStyle:``});popoverRef=(0,t.useRef)(`popoverRef`);setup(){(0,t.useExternalListener)(window,`click`,this.closePopover)}get currentColorScale(){return this.props.definition.colorScale||Rm(`oranges`)}get currentColorScaleStyle(){let e=this.currentColorScale,t=e.minColor||`#fff`,n=e.midColor,r=e.maxColor||`#000`;return n?`background: linear-gradient(90deg, ${t}, ${n}, ${r});`:`background: linear-gradient(90deg, ${t}, ${r});`}colorScalePreviewStyle(e){return`background: linear-gradient(90deg, ${si[e].join(`,`)});`}get currentColorScaleLabel(){return tm.ColorScales[this.selectedColorScale]}onColorScaleChange(e){e===`custom`?this.props.onUpdateColorScale(he):this.props.onUpdateColorScale(Rm(e)),this.closePopover()}onPointerDown(e){if(this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n,width:r}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0},this.state.popoverStyle=U({width:`${r}px`})}closePopover(){this.state.popoverProps=void 0}get selectedColorScale(){if(!this.props.definition.colorScale)return`oranges`;let{minColor:e,midColor:t,maxColor:n}=this.props.definition.colorScale||{};for(let[r,i]of Object.entries(si))if(i[0]===e&&i[2]===n&&i[1]===t)return r;return`custom`}getCustomColorScaleColor(e){return this.props.definition.colorScale?.[e]??``}setCustomColorScaleColor(e,t){!t&&e!==`midColor`&&(t=`#fff`);let n=this.currentColorScale;n&&this.props.onUpdateColorScale({...n,[e]:t})}},JI=class extends t.Component{static template=`o-spreadsheet-CalendarChartDesignPanel`;static components={GeneralDesignEditor:FI,SidePanelCollapsible:TM,Section:Q,AxisDesignEditor:NI,ChartShowValues:VI,ColorScalePicker:qI,RoundColorPicker:BN,Select:EM};static props=wI;get axesList(){return[{id:`x`,name:k(`Horizontal axis`)},{id:`y`,name:k(`Vertical axis`)}]}onColormapChange(e){this.props.updateChart(this.props.chartId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.chartId,{missingValueColor:e})}get selectedMissingValueColor(){return this.props.definition.missingValueColor}updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`right`,label:k(`Right`)},{value:`left`,label:k(`Left`)}]}},YI=class extends t.Component{static template=`o-spreadsheet-ChartShowDataMarkers`;static components={Checkbox:eP};static props=wI},XI=class extends UI{static template=`o-spreadsheet-ComboChartDesignPanel`;static components={...UI.components,ChartShowDataMarkers:YI,RadioSelection:PI};seriesTypeChoices=[{value:`bar`,label:k(`Bar`)},{value:`line`,label:k(`Line`)}];updateDataSeriesType(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],type:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesType(e){let t=this.props.definition.dataSets;return t?.[e]?t[e].type??`line`:`bar`}},ZI=class extends kI{getLabelRangeOptions(){let e=this.props.definition;return[{name:`aggregated`,label:this.chartTerms.AggregatedChart,value:e.aggregated??!1,onChange:this.onUpdateAggregated.bind(this)},{name:`cumulative`,label:this.chartTerms.CumulativeData,value:e.cumulative??!1,onChange:this.onUpdateCumulative.bind(this)},{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:e.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}onUpdateCumulative(e){this.props.updateChart(this.props.chartId,{cumulative:e})}},QI=class extends t.Component{static template=`o-spreadsheet-FunnelChartDesignPanel`;static components={ChartShowValues:VI,GeneralDesignEditor:FI,SidePanelCollapsible:TM,RoundColorPicker:BN,Section:Q,ChartHumanizeNumbers:II};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};getFunnelColorItems(){let e=this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.labels||[],t=ff(e,this.props.definition.funnelColors);return e.map((e,n)=>({label:e||k(`Value %s`,n+1),color:t[n]}))}updateFunnelItemColor(e,t){let n=Nt(this.props.definition.funnelColors||[],t,e);this.props.updateChart(this.props.chartId,{funnelColors:n})}},$I=class extends t.Component{static template=`o-spreadsheet-GaugeChartConfigPanel`;static components={ChartErrorSection:DI,ChartDataSeries:TI};static props=wI;state=(0,t.useState)({dataRangeDispatchResult:void 0});dataRange=this.props.definition.dataRange;get configurationErrorMessages(){return[...this.state.dataRangeDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isDataRangeInvalid(){return!!this.state.dataRangeDispatchResult?.isCancelledBecause(`InvalidGaugeDataRange`)}onDataRangeChanged(e){this.dataRange=e[0],this.state.dataRangeDispatchResult=this.props.canUpdateChart(this.props.chartId,{dataRange:this.dataRange})}updateDataRange(){this.state.dataRangeDispatchResult=this.props.updateChart(this.props.chartId,{dataRange:this.dataRange})}getDataRange(){return{dataRange:this.dataRange||``}}},eL=class extends t.Component{static template=`o-spreadsheet-GaugeChartDesignPanel`;static components={SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,GeneralDesignEditor:FI,ChartErrorSection:DI,StandaloneComposer:jN,ChartHumanizeNumbers:II,Select:EM};static props=wI;state;setup(){this.state=(0,t.useState)({sectionRuleCancelledReasons:new Set(this.checkSectionRuleFormulasAreValid(this.props.definition.sectionRule)),sectionRule:b(this.props.definition.sectionRule)})}get designErrorMessages(){return[...this.state.sectionRuleCancelledReasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isRangeMinInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMin`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMinNaN`))}get isRangeMaxInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMax`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMaxNaN`))}get isLowerInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeLowerInflectionPointNaN`)}get isUpperInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeUpperInflectionPointNaN`)}updateSectionColor(e,t){let n=b(this.state.sectionRule);n.colors[e]=t,this.updateSectionRule(n)}updateSectionRuleOperator(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:{...this.state.sectionRule[e],operator:t}},this.updateSectionRule(this.state.sectionRule)}updateSectionRulePointType(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:{...this.state.sectionRule[e],type:t}},this.updateSectionRule(this.state.sectionRule)}updateSectionRule(e){this.state.sectionRuleCancelledReasons=new Set(this.checkSectionRuleFormulasAreValid(this.state.sectionRule));let t=this.props.updateChart(this.props.chartId,{sectionRule:e});if(t.isSuccessful)this.state.sectionRule=b(e);else for(let e of t.reasons)this.state.sectionRuleCancelledReasons.add(e)}onConfirmGaugeRange(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:t},this.updateSectionRule(this.state.sectionRule)}getGaugeInflectionComposerProps(e){let t=e===`lowerColor`?`lowerInflectionPoint`:`upperInflectionPoint`,n=this.state.sectionRule[t];return{onConfirm:e=>{this.state.sectionRule={...this.state.sectionRule,[t]:{...n,value:e}},this.updateSectionRule(this.state.sectionRule)},composerContent:n.value,invalid:e===`lowerColor`?this.isLowerInflectionPointInvalid:this.isUpperInflectionPointInvalid,defaultRangeSheetId:this.sheetId,class:t,placeholder:k(`Value`),title:k(`Value or formula`)}}checkSectionRuleFormulasAreValid(e){let t=new Set;return this.valueIsValidNumber(e.rangeMin)||t.add(`GaugeRangeMinNaN`),this.valueIsValidNumber(e.rangeMax)||t.add(`GaugeRangeMaxNaN`),this.valueIsValidNumber(e.lowerInflectionPoint.value)||t.add(`GaugeLowerInflectionPointNaN`),this.valueIsValidNumber(e.upperInflectionPoint.value)||t.add(`GaugeUpperInflectionPointNaN`),t}valueIsValidNumber(e){let t=this.env.model.getters.getLocale();if(!e.startsWith(`=`))return Ma(e,t)!==void 0;let n=this.env.model.getters.evaluateFormula(this.sheetId,e);return Sm(n)?!1:Ma(bm(n),t)!==void 0}get sheetId(){let e=this.env.model.getters.getChart(this.props.chartId);if(!e)throw Error(`Chart not found with id `+this.props.chartId);return e.sheetId}get inflectionPointOperators(){return[{value:`<`,label:`<`},{value:`<=`,label:`<=`}]}get inflectionPointTypes(){return[{value:`number`,label:k(`Number`)},{value:`percentage`,label:k(`Percentage`)}]}},tL=class extends t.Component{static template=`o-spreadsheet-GeoChartRegionSelectSection`;static components={Section:Q,Select:EM};static props={chartId:String,definition:Object,updateChart:Function};updateSelectedRegion(e){this.props.updateChart(this.props.chartId,{region:e})}get availableRegions(){return this.env.model.getters.getGeoChartAvailableRegions()}get selectedRegion(){return this.props.definition.region||this.availableRegions[0]?.id}get regionOptions(){return this.availableRegions.map(e=>({value:e.id,label:e.label}))}},nL=class extends kI{static template=`o-spreadsheet-GeoChartConfigPanel`;static components={...kI.components,GeoChartRegionSelectSection:tL};get dataRanges(){return this.getDataSeriesRanges()}get disabledRanges(){return this.props.definition.dataSets.map((e,t)=>t>0)}getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},rL=class extends HI{static template=`o-spreadsheet-GeoChartDesignPanel`;static components={...HI.components,RoundColorPicker:BN,ColorScalePicker:qI,Select:EM};updateColorScale(e){this.props.updateChart(this.props.chartId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.chartId,{missingValueColor:e})}updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e})}get selectedMissingValueColor(){return this.props.definition.missingValueColor||`#ffffff`}get legendValues(){return[{value:`none`,label:k(`None`)},{value:`top`,label:k(`Top left`)},{value:`right`,label:k(`Top right`)},{value:`bottom`,label:k(`Bottom right`)},{value:`left`,label:k(`Bottom left`)}]}},iL=class extends kI{static template=`o-spreadsheet-HierarchicalChartConfigPanel`;static components={...kI.components};getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},aL=class extends kI{static template=`o-spreadsheet-LineConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.chartId);return e&&e instanceof F_?lg(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}get stackedLabel(){return this.props.definition.fillArea?this.chartTerms.StackedAreaChart:this.chartTerms.StackedLineChart}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}onUpdateLabelsAsText(e){this.props.updateChart(this.props.chartId,{labelsAsText:e})}onUpdateStacked(e){this.props.updateChart(this.props.chartId,{stacked:e})}onUpdateCumulative(e){this.props.updateChart(this.props.chartId,{cumulative:e})}},oL=class extends UI{static template=`o-spreadsheet-LineChartDesignPanel`;static components={...UI.components,ChartShowDataMarkers:YI}},sL=class extends t.Component{static template=`o-spreadsheet.PieHoleSize`;static components={Section:Q,NumberInput:RI};static props={onValueChange:Function,value:Number};onChange(e){isNaN(Number(e))||this.props.onValueChange(x(Number(e),0,95))}},cL=class extends t.Component{static template=`o-spreadsheet-PieChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,ChartLegend:LI,ChartShowValues:VI,PieHoleSize:sL,Checkbox:eP,ChartHumanizeNumbers:II};static props=wI;onPieHoleSizeChange(e){this.props.updateChart(this.props.chartId,{...this.props.definition,pieHolePercentage:e})}get defaultHoleSize(){return 50}},lL=class extends t.Component{static template=`o-spreadsheet-RadarChartDesignPanel`;static components={GeneralDesignEditor:FI,SeriesDesignEditor:zI,Section:Q,ChartLegend:LI,ChartShowValues:VI,ChartShowDataMarkers:YI,Checkbox:eP,ChartHumanizeNumbers:II};static props=wI},uL=class e extends Ff{dataSets;labelRange;background;legendPosition;labelsAsText;aggregated;type=`scatter`;dataSetsHaveTitle;dataSetDesign;axesDesign;showValues;constructor(e,t,n){super(e,t,n),this.dataSets=od(this.getters,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(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,pd,md)}static transformDefinition(e,t,n){return ud(e,t,n)}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,humanize:e.humanize}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`scatter`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,labelsAsText:this.labelsAsText,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues,humanize:this.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}getDefinitionForExcel(){let e=this.dataSets.map(e=>cd(this.getters,e)).filter(e=>e.range!==``),t=ld(this.getters,this.labelRange,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),n=this.getDefinition();return{...n,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t,verticalAxis:_d(n)}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}};function dL(e,t){let n=e.getDefinition(),r=Xh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`line`,data:{labels:r.labels,datasets:of(n,r)},options:{...Kp,layout:jg(n,r),scales:Hd(n,r),plugins:{title:Zg(n,t),legend:Lg(n,r),tooltip:r_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var fL=class extends kI{static template=`o-spreadsheet-ScatterConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.chartId);return e&&e instanceof uL?lg(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}onUpdateLabelsAsText(e){this.props.updateChart(this.props.chartId,{labelsAsText:e})}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}},pL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartConfigPanel`;static components={SelectionInput:YN,ChartErrorSection:DI,Section:Q,Select:EM};static props=wI;state=(0,t.useState)({keyValueDispatchResult:void 0,baselineDispatchResult:void 0});keyValue=this.props.definition.keyValue;baseline=this.props.definition.baseline;get errorMessages(){return[...this.state.keyValueDispatchResult?.reasons||[],...this.state.baselineDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>tm.Errors[e]||tm.Errors.Unexpected)}get isKeyValueInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardKeyValue`)}get isBaselineInvalid(){return!!this.state.baselineDispatchResult?.isCancelledBecause(`InvalidScorecardBaseline`)}onKeyValueRangeChanged(e){this.keyValue=e[0],this.state.keyValueDispatchResult=this.props.canUpdateChart(this.props.chartId,{keyValue:this.keyValue})}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart(this.props.chartId,{keyValue:this.keyValue})}getKeyValueRange(){return this.keyValue||``}onBaselineRangeChanged(e){this.baseline=e[0],this.state.baselineDispatchResult=this.props.canUpdateChart(this.props.chartId,{baseline:this.baseline})}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart(this.props.chartId,{baseline:this.baseline})}getBaselineRange(){return this.baseline||``}updateBaselineMode(e){this.props.updateChart(this.props.chartId,{baselineMode:e})}get baselineModeOptions(){return[{value:`text`,label:k(`Absolute value`)},{value:`difference`,label:k(`Value change from key value`)},{value:`percentage`,label:k(`Percentage change from key value`)},{value:`progress`,label:k(`Progress bar`)}]}},mL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartDesignPanel`;static components={GeneralDesignEditor:FI,RoundColorPicker:BN,SidePanelCollapsible:TM,Section:Q,Checkbox:eP,ChartTitle:MI,ChartHumanizeNumbers:II};static props=wI;get colorsSectionTitle(){return this.props.definition.baselineMode===`progress`?k(`Progress bar colors`):k(`Baseline colors`)}get defaultScorecardTitleFontSize(){return 14}translate(e){return this.env.model.getters.dynamicTranslate(e)}setColor(e,t){switch(t){case`backgroundColor`:this.props.updateChart(this.props.chartId,{background:e});break;case`baselineColorDown`:this.props.updateChart(this.props.chartId,{baselineColorDown:e});break;case`baselineColorUp`:this.props.updateChart(this.props.chartId,{baselineColorUp:e});break}}get keyStyle(){return{align:`center`,fontSize:32,...this.props.definition.keyDescr}}get baselineStyle(){return{align:`center`,fontSize:16,...this.props.definition.baselineDescr}}setKeyText(e){this.props.updateChart(this.props.chartId,{keyDescr:{...this.props.definition.keyDescr,text:e}})}updateKeyStyle(e){let t={...this.keyStyle,...e};this.props.updateChart(this.props.chartId,{keyDescr:t})}setBaselineText(e){this.props.updateChart(this.props.chartId,{baselineDescr:{...this.props.definition.baselineDescr,text:e}})}updateBaselineStyle(e){let t={...this.baselineStyle,...e};this.props.updateChart(this.props.chartId,{baselineDescr:t})}},hL=class extends t.Component{static template=`o-spreadsheet-SunburstChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,SidePanelCollapsible:TM,ChartShowValues:VI,Checkbox:eP,TextStyler:xI,RoundColorPicker:BN,ChartLegend:LI,PieHoleSize:sL,ChartHumanizeNumbers:II};static props=wI;defaults=Wg;get showValues(){return this.props.definition.showValues??Wg.showValues}get showLabels(){return this.props.definition.showLabels??Wg.showLabels}get groupColors(){let e=this.props.chartId;return this.env.model.getters.getChartRuntime(e).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.props.definition.groupColors)??[];n[e]=t,this.props.updateChart(this.props.chartId,{groupColors:n})}onPieHoleSizeChange(e){this.props.updateChart(this.props.chartId,{...this.props.definition,pieHolePercentage:e})}},gL=class extends t.Component{static template=`o-spreadsheet-TreeMapCategoryColors`;static components={Checkbox:eP,RoundColorPicker:BN};static props={chartId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??Ad.coloringOptions;if(e.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);return e}getTreeGroupAndColors(){return this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.coloringOptions);n.colors[e]=t||void 0,this.props.onColorChanged(n)}useValueBasedGradient(e){if(this.coloringOptions.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);this.props.onColorChanged({...this.coloringOptions,useValueBasedGradient:e})}},_L=class extends t.Component{static template=`o-spreadsheet-TreeMapColorScale`;static components={RoundColorPicker:BN};static props={chartId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??Ad.coloringOptions;if(e.type!==`colorScale`)throw Error(`Coloring options is not a color scale`);return e}setColorScaleColor(e,t){this.props.onColorChanged({...this.coloringOptions,[e]:t})}};let vL={type:`colorScale`,minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`},yL={type:`categoryColor`,colors:[],useValueBasedGradient:!0};var bL=class extends t.Component{static template=`o-spreadsheet-TreeMapChartDesignPanel`;static components={GeneralDesignEditor:FI,Section:Q,SidePanelCollapsible:TM,ChartShowValues:VI,Checkbox:eP,TextStyler:xI,RoundColorPicker:BN,BadgeSelection:jI,TreeMapCategoryColors:gL,TreeMapColorScale:_L,ChartHumanizeNumbers:II};static props=wI;savedColors={categoryColors:yL,colorScale:vL};defaults=Ad;get showHeaders(){return this.props.definition.showHeaders??Ad.showHeaders}get showValues(){return this.props.definition.showValues??Ad.showValues}get showLabels(){return this.props.definition.showLabels??Ad.showLabels}get coloringOptions(){return this.props.definition.coloringOptions??Ad.coloringOptions}changeColoringOption(e){let t=e===`categoryColor`?this.savedColors.categoryColors:this.savedColors.colorScale;this.props.updateChart(this.props.chartId,{coloringOptions:t})}onCategoryColorChange(e){this.savedColors.categoryColors=e,this.props.updateChart(this.props.chartId,{coloringOptions:e})}onColorScaleChange(e){this.savedColors.colorScale=e,this.props.updateChart(this.props.chartId,{coloringOptions:e})}get coloringOptionChoices(){return[{label:k(`Category color`),value:`categoryColor`},{label:k(`Color scale`),value:`colorScale`}]}},xL=class extends t.Component{static template=`o-spreadsheet-WaterfallChartDesignPanel`;static components={GeneralDesignEditor:FI,ChartShowValues:VI,Checkbox:eP,SidePanelCollapsible:TM,Section:Q,RoundColorPicker:BN,AxisDesignEditor:NI,RadioSelection:PI,ChartLegend:LI,ChartHumanizeNumbers:II};static props=wI;axisChoices=bd;onUpdateShowSubTotals(e){this.props.updateChart(this.props.chartId,{showSubTotals:e})}onUpdateShowConnectorLines(e){this.props.updateChart(this.props.chartId,{showConnectorLines:e})}onUpdateFirstValueAsSubtotal(e){this.props.updateChart(this.props.chartId,{firstValueAsSubtotal:e})}updateColor(e,t){this.props.updateChart(this.props.chartId,{[e]:t})}get axesList(){return[{id:`x`,name:k(`Horizontal axis`)},{id:`y`,name:k(`Vertical axis`)}]}get positiveValuesColor(){return this.props.definition.positiveValuesColor||`#4EA7F2`}get negativeValuesColor(){return this.props.definition.negativeValuesColor||`#EA6175`}get subTotalValuesColor(){return this.props.definition.subTotalValuesColor||`#AAAAAA`}updateVerticalAxisPosition(e){this.props.updateChart(this.props.chartId,{verticalAxisPosition:e})}onToggleZoom(e){this.props.updateChart(this.props.chartId,{zoomable:e})}};let SL=new B;SL.add(`line`,{configuration:aL,design:oL}).add(`scatter`,{configuration:fL,design:HI}).add(`bar`,{configuration:AI,design:WI}).add(`combo`,{configuration:kI,design:XI}).add(`pie`,{configuration:kI,design:cL}).add(`gauge`,{configuration:$I,design:eL}).add(`scorecard`,{configuration:pL,design:mL}).add(`waterfall`,{configuration:kI,design:xL}).add(`pyramid`,{configuration:kI,design:HI}).add(`radar`,{configuration:kI,design:lL}).add(`sunburst`,{configuration:iL,design:hL}).add(`geo`,{configuration:nL,design:rL}).add(`funnel`,{configuration:ZI,design:QI}).add(`treemap`,{configuration:iL,design:bL}).add(`calendar`,{configuration:KI,design:JI});let CL={line:k(`Line`),column:k(`Column`),bar:k(`Bar`),area:k(`Area`),pie:k(`Pie`),hierarchical:k(`Hierarchical`),misc:k(`Miscellaneous`)};var wL=class extends t.Component{static template=`o-spreadsheet-ChartTypePicker`;static components={Section:Q,Popover:kv};static props={chartId:String,chartPanelStore:Object};categories=CL;chartTypeByCategories={};popoverRef=(0,t.useRef)(`popoverRef`);selectRef=(0,t.useRef)(`selectRef`);state=(0,t.useState)({popoverProps:void 0,popoverStyle:``});setup(){(0,t.useExternalListener)(window,`pointerdown`,this.onExternalClick,{capture:!0});for(let e of Q_.getAll())this.chartTypeByCategories[e.category]?this.chartTypeByCategories[e.category].push(e):this.chartTypeByCategories[e.category]=[e]}onExternalClick(e){np(this.popoverRef.el?.parentElement,e)||np(this.selectRef.el,e)||this.closePopover()}onTypeChange(e){this.props.chartPanelStore.changeChartType(this.props.chartId,e),this.closePopover()}getChartDefinition(e){return this.env.model.getters.getChartDefinition(e)}getSelectedChartSubtypeProperties(){let e=this.getChartDefinition(this.props.chartId);return Q_.getAll().find(t=>t.matcher?.(e)||!1)||Q_.get(e.type)}onPointerDown(e){if(this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n,width:r}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0},this.state.popoverStyle=U({width:`${r}px`})}closePopover(){this.state.popoverProps=void 0}},TL=class extends yr{mutators=[`activatePanel`,`changeChartType`];panel=`configuration`;creationContexts={};activatePanel(e){this.panel=e}changeChartType(e,t){let n=this.getters.getContextCreationChart(e),r=this.creationContexts[e]||{},i=n?.range;i?.every((e,t)=>w(e,r.range?.[t]))&&(i=Object.assign([],r.range,n?.range)),this.creationContexts[e]={...r,...n,range:i};let a=this.getters.getFigureIdFromChartId(e),o=this.getters.getFigureSheetId(a);if(!o)return;let s=this.getChartDefinitionFromContextCreation(e,t);this.model.dispatch(`UPDATE_CHART`,{definition:s,chartId:e,figureId:a,sheetId:o})}getChartDefinitionFromContextCreation(e,t){let n=Q_.get(t);return{...v_.get(n.chartType).getChartDefinitionFromContextCreation(this.creationContexts[e]),...n.subtypeDefinition}}},EL=class extends t.Component{static template=`o-spreadsheet-ChartPanel`;static components={Section:Q,ChartTypePicker:wL};static props={onCloseSidePanel:Function,chartId:String};store;get chartId(){return this.props.chartId}setup(){this.store=ur(TL)}switchPanel(e){this.store.activatePanel(e)}updateChart(e,t){let n=this.env.model.getters.getFigureIdFromChartId(e);if(e!==this.chartId)return;let r={...this.getChartDefinition(this.chartId),...t};return this.env.model.dispatch(`UPDATE_CHART`,{definition:r,chartId:e,figureId:n,sheetId:this.env.model.getters.getFigureSheetId(n)})}canUpdateChart(e,t){let n=this.env.model.getters.getFigureIdFromChartId(e);if(e!==this.chartId||!this.env.model.getters.isChartDefined(e))return;let r={...this.getChartDefinition(this.chartId),...t};return this.env.model.canDispatch(`UPDATE_CHART`,{definition:r,chartId:e,figureId:n,sheetId:this.env.model.getters.getFigureSheetId(n)})}onTypeChange(e){this.chartId&&this.store.changeChartType(this.chartId,e)}get chartPanel(){if(!this.chartId)throw Error(`Chart not defined.`);let e=this.env.model.getters.getChartType(this.chartId);if(!e)throw Error(`Chart not defined.`);let t=SL.get(e);if(!t)throw Error(`Component is not defined for type ${e}`);return t}getChartDefinition(e){return this.env.model.getters.getChartDefinition(e)}},DL=class extends t.Component{static template=`o-spreadsheet-IconPicker`;static props={onIconPicked:Function};icons=NO;iconSets=PO;onIconClick(e){e&&this.props.onIconPicked(e)}},OL=class extends yr{mutators=[`updateConditionalFormat`,`closeMenus`];icons=NO;iconSets=PO;state;cfId;constructor(e,n,r){switch(super(e),this.cfId=n.id,this.state=(0,t.useState)({errors:[],currentCFType:n.rule.type,ranges:n.ranges,rules:this.getDefaultRules(),hasEditedCf:r}),n.rule.type){case`CellIsRule`:this.state.rules.cellIs=n.rule;break;case`ColorScaleRule`:this.state.rules.colorScale=n.rule;break;case`IconSetRule`:this.state.rules.iconSet=n.rule;break;case`DataBarRule`:this.state.rules.dataBar=n.rule;break}}updateConditionalFormat(e){let t=e.ranges||this.state.ranges;if(this.state.ranges.some(e=>!e.match(Nc))){e.suppressErrors||(this.state.errors=[`InvalidRange`]);return}let n=this.model.getters.getActiveSheetId(),r=this.model.getters.getLocale(),i=e.rule||this.getEditedRule(this.state.currentCFType),a=this.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:this.cfId,rule:IS(i,r)},ranges:t.map(e=>this.model.getters.getRangeDataFromXc(n,e)),sheetId:n});a.isSuccessful&&(this.state.hasEditedCf=!0);let o=a.reasons.filter(e=>e!==`NoChanges`);e.suppressErrors||(this.state.errors=o)}get isRangeValid(){return this.state.errors.includes(`EmptyRange`)}get errorMessages(){return this.state.errors.map(e=>em.Errors[e]||em.Errors.Unexpected)}onRangeUpdate(e){this.state.ranges=e}onRangeConfirmed(){this.updateConditionalFormat({ranges:this.state.ranges})}changeRuleType(e){this.state.currentCFType!==e&&(this.state.errors=[],this.state.currentCFType=e,this.updateConditionalFormat({rule:this.getEditedRule(e),suppressErrors:!0}))}getEditedRule(e){switch(e){case`CellIsRule`:return this.state.rules.cellIs;case`ColorScaleRule`:return this.state.rules.colorScale;case`IconSetRule`:return this.state.rules.iconSet;case`DataBarRule`:return this.state.rules.dataBar}}get cfCriterions(){return QN(zm)}get criterionComponent(){return $.get(this.state.rules.cellIs.operator).component}get genericCriterion(){return{...this.state.rules.cellIs,type:this.state.rules.cellIs.operator}}onRuleValuesChanged(e){let t={...e,operator:e.type,type:`CellIsRule`,style:this.state.rules.cellIs.style};this.state.rules.cellIs=t,this.updateConditionalFormat({rule:t})}toggleStyle(e){let t=this.state.rules.cellIs.style;t[e]=!t[e],this.updateConditionalFormat({rule:this.state.rules.cellIs}),this.closeMenus()}setColor(e,t){this.state.rules.cellIs.style[e]=t,this.updateConditionalFormat({rule:this.state.rules.cellIs}),this.closeMenus()}editOperator(e){this.state.rules.cellIs.operator=e,e.includes(`date`)&&!this.state.rules.cellIs.dateValue&&(this.state.rules.cellIs.dateValue=`exactDate`),this.updateConditionalFormat({rule:this.state.rules.cellIs,suppressErrors:!0}),this.closeMenus()}get previewGradient(){let e=this.state.rules.colorScale,t=Er(e.minimum.color),n=Er(e.midpoint?.color||11982760),r=Er(e.maximum.color),i=`linear-gradient(to right, `;return U({"background-image":e.midpoint===void 0?i+t+`, `+r+`)`:i+t+`, `+n+`, `+r+`)`,color:`#000`})}onMidpointChange(e){let t=this.state.rules.colorScale;e===`none`?t.midpoint=void 0:t.midpoint={color:se,value:``,...t.midpoint,type:e},this.updateConditionalFormat({rule:t,suppressErrors:!0})}updateThresholdType(e,t){this.state.rules.colorScale[e].type=t,this.updateConditionalFormat({rule:this.state.rules.colorScale,suppressErrors:!0})}updateThresholdValue(e,t){this.state.rules.colorScale[e].value=t,this.updateConditionalFormat({rule:this.state.rules.colorScale})}setColorScaleColor(e,t){if(!kr(t))return;let n=this.state.rules.colorScale[e];n&&(n.color=Dr(t)),this.updateConditionalFormat({rule:this.state.rules.colorScale}),this.closeMenus()}reverseIcons(){let e=this.state.rules.iconSet.icons,t=e.upper;e.upper=e.lower,e.lower=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setIconSet(e){let t=this.state.rules.iconSet.icons;t.upper=this.iconSets[e].good,t.middle=this.iconSets[e].neutral,t.lower=this.iconSets[e].bad,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setIcon(e,t){this.state.rules.iconSet.icons[e]=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionOperator(e,t){this.state.rules.iconSet[e].operator=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionValue(e,t){this.state.rules.iconSet[e].value=t,this.updateConditionalFormat({rule:this.state.rules.iconSet})}setInflectionType(e,t){this.state.rules.iconSet[e].type=t,this.updateConditionalFormat({rule:this.state.rules.iconSet,suppressErrors:!0})}get rangeValues(){return[this.state.rules.dataBar.rangeValues||``]}updateDataBarColor(e){kr(e)&&(this.state.rules.dataBar.color=Number.parseInt(e.slice(1),16),this.updateConditionalFormat({rule:this.state.rules.dataBar}))}onDataBarRangeUpdate(e){this.state.rules.dataBar.rangeValues=e[0]}onDataBarRangeChange(){this.updateConditionalFormat({rule:this.state.rules.dataBar})}toggleMenu(e){let t=this.state.openedMenu===e;this.closeMenus(),t||(this.state.openedMenu=e)}closeMenus(){this.state.openedMenu=void 0}getDefaultRules(){return{cellIs:{type:`CellIsRule`,operator:`isNotEmpty`,values:[],style:{fillColor:`#b6d7a8`}},colorScale:{type:`ColorScaleRule`,minimum:{type:`value`,color:vk(`EFF7FF`)},midpoint:void 0,maximum:{type:`value`,color:6989903}},iconSet:{type:`IconSetRule`,icons:{upper:`arrowGood`,middle:`arrowNeutral`,lower:`arrowBad`},upperInflectionPoint:{type:`percentage`,value:`66`,operator:`gt`},lowerInflectionPoint:{type:`percentage`,value:`33`,operator:`gt`}},dataBar:{type:`DataBarRule`,color:14281427}}}},kL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormattingEditor`;static components={SelectionInput:YN,IconPicker:DL,ColorPickerWidget:vI,Section:Q,RoundColorPicker:BN,StandaloneComposer:jN,BadgeSelection:jI,ValidationMessages:EI,Select:EM};static props={cf:Object,isNewCf:Boolean,onCloseSidePanel:Function};getTextDecoration=nv;colorNumberToHex=Er;activeSheetId;store;setup(){this.activeSheetId=this.env.model.getters.getActiveSheetId(),this.store=ur(OL,b(this.props.cf),this.props.isNewCf),(0,t.useEffect)((e,t)=>{(this.activeSheetId!==e||t)&&this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)},()=>[this.env.model.getters.getActiveSheetId(),this.isEditedCfRemoved]),(0,t.useExternalListener)(window,`click`,()=>this.store.closeMenus())}get isEditedCfRemoved(){return!this.env.model.getters.getConditionalFormats(this.activeSheetId).find(e=>e.id===this.props.cf.id)}get cfTypesValues(){return[{value:`CellIsRule`,label:k(`Single color`)},{value:`ColorScaleRule`,label:k(`Color scale`)},{value:`IconSetRule`,label:k(`Icon set`)},{value:`DataBarRule`,label:k(`Data bar`)}]}onSave(){this.store.updateConditionalFormat({}),this.store.state.errors.length===0&&this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)}onCancel(){this.store.state.hasEditedCf&&(this.props.isNewCf?this.env.model.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{sheetId:this.activeSheetId,id:this.props.cf.id}):this.env.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:this.props.cf,ranges:this.props.cf.ranges.map(e=>this.env.model.getters.getRangeDataFromXc(this.activeSheetId,e)),sheetId:this.activeSheetId})),this.env.replaceSidePanel(`ConditionalFormatting`,`ConditionalFormattingEditor_${this.props.cf.id}`)}getThresholdColor(e){return Er(e?e.color:se)}isValueInvalid(e){let t=this.store.state.errors;switch(e){case`minimum`:return t.includes(`MinInvalidFormula`)||t.includes(`MinBiggerThanMid`)||t.includes(`MinBiggerThanMax`)||t.includes(`MinNaN`);case`midpoint`:return t.includes(`MidInvalidFormula`)||t.includes(`MidNaN`)||t.includes(`MidBiggerThanMax`);case`maximum`:return t.includes(`MaxInvalidFormula`)||t.includes(`MaxNaN`);default:return!1}}getColorScaleComposerProps(e){let t=this.store.state.rules.colorScale[e];if(!t)throw Error(`Threshold not found`);let n=this.isValueInvalid(e);return{onConfirm:e=>{t.value=e,this.store.updateConditionalFormat({rule:this.store.state.rules.colorScale})},composerContent:t.value||``,placeholder:k(`Formula`),defaultStatic:!0,invalid:n,class:`o-sidePanel-composer`,defaultRangeSheetId:this.activeSheetId}}isInflectionPointInvalid(e){let t=this.store.state.errors;switch(e){case`lowerInflectionPoint`:return t.includes(`ValueLowerInflectionNaN`)||t.includes(`ValueLowerInvalidFormula`)||t.includes(`LowerBiggerThanUpper`);case`upperInflectionPoint`:return t.includes(`ValueUpperInflectionNaN`)||t.includes(`ValueUpperInvalidFormula`)||t.includes(`LowerBiggerThanUpper`);default:return!0}}getColorIconSetComposerProps(e){let t=this.store.state.rules.iconSet[e],n=this.isInflectionPointInvalid(e);return{onConfirm:e=>{t.value=e,this.store.updateConditionalFormat({rule:this.store.state.rules.iconSet})},composerContent:t.value||``,placeholder:k(`Formula`),defaultStatic:!0,invalid:n,class:`o-sidePanel-composer`,defaultRangeSheetId:this.activeSheetId}}getThresholdTypeSelectOptions(e){let t=[{value:`number`,label:k(`Number`)},{value:`percentage`,label:k(`Percentage`)},{value:`percentile`,label:k(`Percentile`)},{value:`formula`,label:k(`Formula`)}];return e===`iconSet`?t:e===`midpoint`?[{value:`none`,label:k(`None`)},...t]:[{value:`value`,label:k(`Cell values`)},...t]}getIconSetOperatorSelectOptions(){return[{value:`gt`,label:`>`},{value:`ge`,label:`>=`}]}};function AL(e,...n){(0,t.useEffect)(e=>(e?.addEventListener(...n),()=>e?.removeEventListener(...n)),()=>[e.el])}function jL(e){let n=(0,t.useState)({hovered:!1});return AL(e,`mouseenter`,()=>n.hovered=!0),AL(e,`mouseleave`,()=>n.hovered=!1),n}function ML(e,t){let n=jL(e);NL({get highlights(){return n.hovered?t.highlights:[]}})}function NL(e){let n=lr(),r=ur(EN);(0,t.onMounted)(()=>{r.register(e)});let i=e.highlights;(0,t.useEffect)(e=>{w(e,i)||(i=e,n.trigger(`store-updated`))},()=>[e.highlights])}var PL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormatPreview`;static props={conditionalFormat:Object,onMouseDown:Function,class:String};icons=NO;ref=(0,t.useRef)(`cfPreview`);setup(){ML(this.ref,this)}get previewImageStyle(){let e=this.props.conditionalFormat.rule;if(e.type===`CellIsRule`)return U(rv(e.style));if(e.type===`ColorScaleRule`){let t=Er(e.minimum.color),n=e.midpoint?Er(e.midpoint.color):null,r=Er(e.maximum.color),i=`background-image: linear-gradient(to right, `;return n?i+t+`, `+n+`, `+r+`)`:i+t+`, `+r+`)`}else if(e.type===`DataBarRule`)return`${`background-image: linear-gradient(to right, ${Er(e.color)} 50%, white 50%)`}; color: ${pe};`;return``}get description(){let e=this.props.conditionalFormat;switch(e.rule.type){case`CellIsRule`:return Z.get(e.rule.operator).getPreview({...e.rule,type:e.rule.operator},this.env.model.getters);case`ColorScaleRule`:return em.ColorScale;case`IconSetRule`:return em.IconSet;case`DataBarRule`:return em.DataBar}}get highlights(){let e=this.env.model.getters.getActiveSheetId();return this.props.conditionalFormat.ranges.map(t=>({range:this.env.model.getters.getRangeFromSheetXC(e,t),color:ee,fillAlpha:.06}))}editConditionalFormat(){this.env.replaceSidePanel(`ConditionalFormattingEditor`,`ConditionalFormatting`,{cf:this.props.conditionalFormat,isNewCf:!1})}deleteConditionalFormat(){this.env.model.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{id:this.props.conditionalFormat.id,sheetId:this.env.model.getters.getActiveSheetId()})}},FL=class extends t.Component{static template=`o-spreadsheet-ConditionalFormatPreviewList`;static props={onCloseSidePanel:Function};static components={ConditionalFormatPreview:PL};dragAndDrop=HN();cfListRef=(0,t.useRef)(`cfList`);get conditionalFormats(){return this.env.model.getters.getConditionalFormats(this.env.model.getters.getActiveSheetId()).map(e=>({...e,rule:LS(e.rule,this.env.model.getters.getLocale())}))}getPreviewDivStyle(e){return this.dragAndDrop.itemsStyle[e.id]||``}onPreviewMouseDown(e,t){if(t.button!==0)return;let n=Array.from(this.cfListRef.el.children).map(e=>op(e)),r=this.conditionalFormats.map((e,t)=>({id:e.id,size:n[t].height,position:n[t].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.id,initialMousePosition:t.clientY,items:r,scrollableContainerEl:this.cfListRef.el,onDragEnd:(e,t)=>this.onDragEnd(e,t)})}onAddConditionalFormat(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZones(),n={id:this.env.model.uuidGenerator.smallUuid(),rule:{type:`CellIsRule`,operator:`isNotEmpty`,style:{fillColor:`#b6d7a8`},values:[]}};return this.env.model.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:n,ranges:t.map(t=>this.env.model.getters.getRangeDataFromZone(e,t)),sheetId:e}),this.env.replaceSidePanel(`ConditionalFormattingEditor`,`ConditionalFormatting`,{cf:{...n,ranges:t.map(t=>yn(this.env.model.getters.getUnboundedZone(e,t)))},isNewCf:!0})}onDragEnd(e,t){let n=this.conditionalFormats.findIndex(t=>t.id===e)-t;n!==0&&this.env.model.dispatch(`CHANGE_CONDITIONAL_FORMAT_PRIORITY`,{cfId:e,delta:n,sheetId:this.env.model.getters.getActiveSheetId()})}},IL=class extends t.Component{static template=`o-spreadsheet-DataValidationPreview`;static props={rule:Object};ref=(0,t.useRef)(`dvPreview`);setup(){ML(this.ref,this)}onPreviewClick(){this.env.replaceSidePanel(`DataValidationEditor`,`DataValidation`,{ruleId:this.props.rule.id})}deleteDataValidation(){let e=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:e,id:this.props.rule.id})}get highlights(){return this.props.rule.ranges.map(e=>({range:e,color:ee,fillAlpha:.06}))}get rangesString(){let e=this.env.model.getters.getActiveSheetId();return this.props.rule.ranges.map(t=>this.env.model.getters.getRangeString(t,e)).join(`, `)}get descriptionString(){return Z.get(this.props.rule.criterion.type).getPreview(this.props.rule.criterion,this.env.model.getters)}},LL=class extends t.Component{static template=`o-spreadsheet-DataValidationPanel`;static props={onCloseSidePanel:Function};static components={DataValidationPreview:IL};addDataValidationRule(){this.env.replaceSidePanel(`DataValidationEditor`,`DataValidation`,{ruleId:this.env.model.uuidGenerator.smallUuid()})}localizeDVRule(e){return e&&RS(e,this.env.model.getters.getLocale())}get validationRules(){let e=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getDataValidationRules(e)}},RL=class extends t.Component{static template=`o-spreadsheet-DataValidationEditor`;static components={SelectionInput:YN,Select:EM,Section:Q,ValidationMessages:EI};static props={ruleId:String,onCancel:{type:Function,optional:!0},onCloseSidePanel:Function};state=(0,t.useState)({rule:this.defaultDataValidationRule,errors:[],isTypeUpdated:!1});editingSheetId;setup(){this.editingSheetId=this.env.model.getters.getActiveSheetId();let e=this.env.model.getters.getDataValidationRule(this.editingSheetId,this.props.ruleId);if(e){let t=this.env.model.getters.getLocale();this.state.rule={...RS(e,t),ranges:e.ranges.map(e=>this.env.model.getters.getRangeString(e,this.editingSheetId))}}}onCriterionTypeChanged(e){this.state.rule.criterion.type=e,this.state.isTypeUpdated=!0}onRangesChanged(e){this.state.rule.ranges=e}onCriterionChanged(e){this.state.rule.criterion=e}changeRuleIsBlocking(e){this.state.rule.isBlocking=e===`true`}onCancel(){this.props.onCancel?.(),this.env.replaceSidePanel(`DataValidation`,`DataValidationEditor_${this.props.ruleId}`)}onSave(){let e=this.env.model.dispatch(`ADD_DATA_VALIDATION_RULE`,this.dispatchPayload);if(!e.isSuccessful){this.state.errors=e.reasons;return}this.env.replaceSidePanel(`DataValidation`,`DataValidationEditor_${this.props.ruleId}`)}get dispatchPayload(){let e={...this.state.rule,ranges:void 0},t=this.env.model.getters.getLocale(),n=e.criterion,r=Z.get(n.type),i=n.values.slice(0,r.numberOfValues(n)).filter(e=>e&&e.trim()!==``).map(e=>ES(e,t));return e.criterion={...n,values:i},{sheetId:this.editingSheetId,ranges:this.state.rule.ranges.map(e=>this.env.model.getters.getRangeDataFromXc(this.editingSheetId,e)),rule:e}}get dvCriterionOptions(){return QN(Bm)}get defaultDataValidationRule(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZones().map(t=>yn(this.env.model.getters.getUnboundedZone(e,t)));return{id:this.props.ruleId,criterion:{type:`containsText`,values:[``]},ranges:t}}get criterionComponent(){return $.get(this.state.rule.criterion.type).component}get errorMessages(){return this.state.errors.map(e=>H.Errors[e]||H.Errors.Unexpected)}get isRuleBlockingSelectOptions(){return[{value:`false`,label:k(`Show a warning`)},{value:`true`,label:k(`Reject the input`)}]}};let zL=`#8B008B`;var BL=class extends yr{mutators=[`updateSearchOptions`,`updateSearchContent`,`searchFormulas`,`selectPreviousMatch`,`selectNextMatch`,`replace`];allSheetsMatches=[];activeSheetMatches=[];specificRangeMatches=[];selectedMatchPosition=null;currentSearchRegex=null;initialShowFormulaState;irreplaceableMatchCount=0;isSearchDirty=!1;shouldFinalizeUpdateSelection=!1;notificationStore=this.get(DN);selectedMatchIndex=null;toSearch=``;toReplace=``;searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1,searchScope:`activeSheet`,specificRange:void 0};constructor(e){super(e),this.initialShowFormulaState=this.model.getters.shouldShowFormulas(),this.searchOptions.searchFormulas=this.initialShowFormulaState;let t=e(EN);t.register(this),this.onDispose(()=>{this.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:this.initialShowFormulaState}),t.unRegister(this)})}get searchMatches(){switch(this.searchOptions.searchScope){case`allSheets`:return this.allSheetsMatches;case`activeSheet`:return this.activeSheetMatches;case`specificRange`:return this.specificRangeMatches}}updateSearchContent(e){this._updateSearch(e,this.searchOptions)}updateSearchOptions(e){this._updateSearch(this.toSearch,{...this.searchOptions,...e})}searchFormulas(e){this.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:e}),this.updateSearchOptions({searchFormulas:e})}selectPreviousMatch(){this.selectNextCell(-1,{jumpToMatchSheet:!0,updateSelection:!0})}selectNextMatch(){this.selectNextCell(1,{jumpToMatchSheet:!0,updateSelection:!0})}handle(e){switch(e.type){case`SET_FORMULA_VISIBILITY`:this.updateSearchOptions({searchFormulas:e.show});break;case`UNDO`:case`REDO`:case`REMOVE_TABLE`:case`UPDATE_FILTER`:case`REMOVE_COLUMNS_ROWS`:case`HIDE_COLUMNS_ROWS`:case`UNHIDE_COLUMNS_ROWS`:case`ADD_COLUMNS_ROWS`:case`EVALUATE_CELLS`:case`UPDATE_CELL`:this.isSearchDirty=!0;break;case`ACTIVATE_SHEET`:this.isSearchDirty=!0,this.shouldFinalizeUpdateSelection=!0,this.searchOptions.specificRange&&(this.searchOptions.specificRange={...this.searchOptions.specificRange,sheetId:this.getters.getActiveSheetId()});break;case`DELETE_SHEET`:this.searchOptions.searchScope===`specificRange`&&this.searchOptions.specificRange?.sheetId===e.sheetId&&(this.searchOptions={...this.searchOptions,specificRange:void 0}),this.isSearchDirty=!0;break;case`REPLACE_SEARCH`:for(let t of e.matches)this.replaceMatch(t,e.searchString,e.replaceWith,e.searchOptions);this.irreplaceableMatchCount>0&&this.showReplaceWarningMessage(e.matches.length,this.irreplaceableMatchCount),this.irreplaceableMatchCount=0;break}}finalize(){this.isSearchDirty&&=(this.refreshSearch({jumpToMatchSheet:!1,updateSelection:this.shouldFinalizeUpdateSelection}),this.shouldFinalizeUpdateSelection=!1,!1)}get allSheetMatchesCount(){return this.allSheetsMatches.length}get activeSheetMatchesCount(){return this.activeSheetMatches.length}get specificRangeMatchesCount(){return this.specificRangeMatches.length}_updateSearch(e,t){this.searchOptions=t,e!==this.toSearch&&(this.selectedMatchIndex=null,this.selectedMatchPosition=null),this.toSearch=e,this.currentSearchRegex=It(this.toSearch,this.searchOptions),this.refreshSearch({jumpToMatchSheet:!0,updateSelection:!0})}refreshSearch(e){if(this.findMatches(),this.selectedMatchPosition)if(this.selectedMatchPosition.sheetId!==this.getters.getActiveSheetId())this.selectedMatchIndex=null,this.selectedMatchPosition=null;else{let e=this.searchMatches.findIndex(e=>e.sheetId===this.selectedMatchPosition?.sheetId&&e.col===this.selectedMatchPosition?.col&&e.row===this.selectedMatchPosition?.row);e!==-1&&(this.selectedMatchIndex=e)}this.selectNextCell(0,e)}getSheetsInSearchOrder(){switch(this.searchOptions.searchScope){case`allSheets`:let e=this.getters.getSheetIds(),t=e.findIndex(e=>e===this.getters.getActiveSheetId());return[e[t],...e.slice(t+1),...e.slice(0,t)];case`activeSheet`:return[this.getters.getActiveSheetId()];case`specificRange`:let n=this.searchOptions.specificRange;return n&&n?[n.sheetId]:[]}}findMatches(){let e=[];if(this.toSearch)for(let t of this.getters.getSheetIds())e.push(...this.findMatchesInSheet(t));if(this.allSheetsMatches=e,this.activeSheetMatches=e.filter(e=>e.sheetId===this.getters.getActiveSheetId()),this.searchOptions.specificRange){let{sheetId:t,zone:n}=this.searchOptions.specificRange;this.specificRangeMatches=e.filter(e=>e.sheetId===t&&An(e.col,e.row,n))}else this.specificRangeMatches=[]}findMatchesInSheet(e){let t=[],{left:n,right:r,top:i,bottom:a}=this.getters.getSheetZone(e);for(let o=i;o<=a;o++)for(let i=n;i<=r;i++){let n=this.getters.isColHidden(e,i),r=this.getters.isRowHidden(e,o);if(n||r)continue;let a={sheetId:e,col:i,row:o};if(this.currentSearchRegex?.test(this.getSearchableString(a))){let n={sheetId:e,col:i,row:o};t.push(n)}}return t}selectNextCell(e,t){let n=this.searchMatches;if(!n.length){this.selectedMatchIndex=null,this.selectedMatchPosition=null;return}let r;if(this.selectedMatchIndex===null){let e=-1;for(let t of this.getSheetsInSearchOrder())if(e=n.findIndex(e=>e.sheetId===t),e!==-1)break;r=e}else r=this.selectedMatchIndex+e;r=(r+n.length)%n.length,this.selectedMatchIndex=r,this.selectedMatchPosition=n[this.selectedMatchIndex];let i=n[r];t.jumpToMatchSheet&&this.getters.getActiveSheetId()!==i.sheetId&&(this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:this.getters.getActiveSheetId(),sheetIdTo:i.sheetId}),this.isSearchDirty=!1),this.model.selection.getBackToDefault(),t.updateSelection&&this.model.selection.selectCell(i.col,i.row)}replace(){this.selectedMatchIndex!==null&&(this.shouldFinalizeUpdateSelection=!0,this.model.dispatch(`REPLACE_SEARCH`,{searchString:this.toSearch,replaceWith:this.toReplace,matches:[this.searchMatches[this.selectedMatchIndex]],searchOptions:this.searchOptions}))}replaceAll(){this.model.dispatch(`REPLACE_SEARCH`,{searchString:this.toSearch,replaceWith:this.toReplace,matches:this.searchMatches,searchOptions:this.searchOptions})}showReplaceWarningMessage(e,t){let n=e-t;n===0?this.notificationStore.notifyUser({type:`warning`,sticky:!1,text:k(`Match(es) cannot be replaced as they are part of a formula or inside a locked sheet`)}):this.notificationStore.notifyUser({type:`warning`,sticky:!1,text:k(`%(replaceable_count)s match(es) replaced. %(irreplaceable_count)s match(es) cannot be replaced as they are part of a formula or inside a locked sheet`,{replaceable_count:n,irreplaceable_count:t})})}replaceMatch(e,t,n,r){if(this.getters.isSheetLocked(e.sheetId)){this.irreplaceableMatchCount++;return}let i=this.getters.getCell(e);if(!i?.isFormula&&!i?.content)return;if(i?.isFormula&&!r.searchFormulas){this.irreplaceableMatchCount++;return}let a=It(t,r),o=new RegExp(a.source,a.flags+`g`),s=TS(this.getters.getCellText(e,{showFormula:r.searchFormulas}).replace(o,n),this.getters.getLocale());this.model.dispatch(`UPDATE_CELL`,{...e,content:s})}getSearchableString(e){return this.getters.getCellText(e,{showFormula:this.searchOptions.searchFormulas})}get highlights(){let e=[],t=this.getters.getActiveSheetId();for(let[n,r]of this.searchMatches.entries()){if(r.sheetId!==t)continue;let i=E(r),a=this.getters.expandZone(t,i),{width:o,height:s}=this.getters.getVisibleRect(a);o>0&&s>0&&e.push({range:this.model.getters.getRangeFromZone(t,a),color:zL,noBorder:n!==this.selectedMatchIndex,thinLine:!0,fillAlpha:.2})}if(this.searchOptions.searchScope===`specificRange`){let n=this.searchOptions.specificRange;n&&n.sheetId===t&&e.push({range:n,color:zL,noFill:!0,thinLine:!0})}return e}},VL=class extends t.Component{static template=`o-spreadsheet-FindAndReplacePanel`;static components={SelectionInput:YN,Section:Q,Checkbox:eP,ValidationMessages:EI,Select:EM};static props={onCloseSidePanel:Function};searchInput=(0,t.useRef)(`searchInput`);store;state;updateSearchContent;get hasSearchResult(){return this.store.selectedMatchIndex!==null}get searchOptions(){return this.store.searchOptions}get allSheetsMatchesCount(){return k(`%s matches in all sheets`,this.store.allSheetMatchesCount)}get currentSheetMatchesCount(){return k(`%(matches)s matches in %(sheetName)s`,{matches:this.store.activeSheetMatchesCount,sheetName:this.env.model.getters.getSheetName(this.env.model.getters.getActiveSheetId())})}get specificRangeMatchesCount(){let e=this.searchOptions.specificRange;if(!e)return``;let{sheetId:t,zone:n}=e;return k(`%(matches)s matches in range %(range)s of %(sheetName)s`,{matches:this.store.specificRangeMatchesCount,range:yn(n),sheetName:this.env.model.getters.getSheetName(t)})}get searchInfo(){return this.store.toSearch?[this.specificRangeMatchesCount,this.currentSheetMatchesCount,this.allSheetsMatchesCount]:[]}setup(){this.store=ur(BL),this.state=(0,t.useState)({dataRange:``}),(0,t.onMounted)(()=>this.searchInput.el?.focus()),(0,t.onWillUnmount)(()=>this.updateSearchContent.stopDebounce()),this.updateSearchContent=pt(this.store.updateSearchContent,200),(0,t.useExternalListener)(window,`keydown`,e=>{let t=pp(e);(t===`Ctrl+F`||t===`Ctrl+H`)&&(this.searchInput.el?.focus(),e.preventDefault(),e.stopPropagation())},{capture:!0})}onFocusSearch(){this.updateDataRange()}onSearchInput(e){this.updateSearchContent(e.target.value)}onKeydownPanel(e){e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),this.props.onCloseSidePanel())}onKeydownSearch(e){e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),e.shiftKey?this.store.selectPreviousMatch():this.store.selectNextMatch())}onKeydownReplace(e){e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),this.store.replace())}searchFormulas(e){this.store.searchFormulas(e)}searchExactMatch(e){this.store.updateSearchOptions({exactMatch:e})}searchMatchCase(e){this.store.updateSearchOptions({matchCase:e})}changeSearchScope(e){this.store.updateSearchOptions({searchScope:e})}onSearchRangeChanged(e){this.state.dataRange=e[0]}updateDataRange(){if(!this.state.dataRange||this.searchOptions.searchScope!==`specificRange`)return;let e=this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(),this.state.dataRange);this.store.updateSearchOptions({specificRange:e})}get specificRange(){let e=this.store.searchOptions.specificRange;return e?this.env.model.getters.getRangeString(e,`forceSheetReference`):``}get pendingSearch(){return this.updateSearchContent.isDebouncePending()}get selectionInputKey(){return this.env.model.getters.getActiveSheetId()}get searchScopeOptions(){return[{value:`allSheets`,label:k(`All sheets`)},{value:`activeSheet`,label:k(`Current sheet`)},{value:`specificRange`,label:k(`Specific range`)}]}};let HL=new B;function UL({name:e,format:t,descriptionValue:n}){let r=typeof t==`function`?t:()=>t;return{name:e,description:e=>z(n,{format:r(e),locale:e.model.getters.getLocale()}),execute:e=>UP(e,r(e)),isActive:e=>BR(e,r(e)),format:t}}let WL={name:k(`Automatic`),execute:e=>UP(e,``),isActive:e=>zR(e)},GL={name:k(`Plain text`),execute:e=>UP(e,`@`),isActive:e=>BR(e,`@`)},KL=UL({name:k(`Number`),descriptionValue:1000.12,format:`#,##0.00`}),qL={name:k(`Format as percent`),execute:vF,icon:`o-spreadsheet-Icon.PERCENT`},JL=UL({name:k(`Percent`),descriptionValue:.1012,format:`0.00%`}),YL=UL({name:k(`Scientific`),descriptionValue:.1012,format:`0.00e`}),XL=UL({name:k(`Currency`),descriptionValue:1000.12,format:e=>ps(e.model.config.defaultCurrency||Be)}),ZL={...UL({name:k(`Currency rounded`),descriptionValue:1e3,format:e=>_s(ps(e.model.config.defaultCurrency||Be))}),isVisible:e=>{let t=ps(e.model.config.defaultCurrency||Be);return t!==_s(t)}},QL=UL({name:k(`Accounting`),descriptionValue:-1000.12,format:e=>ms(e.model.config.defaultCurrency||Be)}),$L=sc(`2023/09/26 10:43:00 PM`,R),eR={name:k(`Custom currency`),isVisible:e=>e.loadCurrencies!==void 0&&!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`currency`})},tR=UL({name:k(`Date`),descriptionValue:$L,format:e=>e.model.getters.getLocale().dateFormat}),nR=UL({name:k(`Time`),descriptionValue:$L,format:e=>e.model.getters.getLocale().timeFormat}),rR=UL({name:k(`Date time`),descriptionValue:$L,format:e=>VS(e.model.getters.getLocale())}),iR=UL({name:k(`Duration`),descriptionValue:`27:51:38`,format:`hhhh:mm:ss`}),aR={name:k(`Custom date and time`),isVisible:e=>!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`date`})},oR={name:k(`Custom number format`),isVisible:e=>!e.isSmall,execute:e=>e.openSidePanel(`MoreFormats`,{category:`number`})};UL({name:k(`Full date time`),format:`dddd d mmmm yyyy hh:mm:ss a`,descriptionValue:$L});let sR={name:k(`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})},cR={name:k(`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})},lR={name:k(`Bold`),shortcut:`Ctrl+B`,execute:e=>WP(e,{bold:!e.model.getters.getCurrentStyle().bold}),icon:`o-spreadsheet-Icon.BOLD`,isActive:e=>!!e.model.getters.getCurrentStyle().bold},uR={name:k(`Italic`),shortcut:`Ctrl+I`,execute:e=>WP(e,{italic:!e.model.getters.getCurrentStyle().italic}),icon:`o-spreadsheet-Icon.ITALIC`,isActive:e=>!!e.model.getters.getCurrentStyle().italic},dR={name:k(`Underline`),shortcut:`Ctrl+U`,execute:e=>WP(e,{underline:!e.model.getters.getCurrentStyle().underline}),icon:`o-spreadsheet-Icon.UNDERLINE`,isActive:e=>!!e.model.getters.getCurrentStyle().underline},fR={name:k(`Rotation`),icon:e=>JR(e)};function pR(e,t){t=Math.trunc(t/be)*be,WP(e,{rotation:t})}function mR(e,t){let n=e.model.getters.getCurrentStyle().rotation;return n===void 0?t===0:Math.abs(n-t)<be}let hR={name:k(`No rotation`),execute:e=>WP(e,{rotation:0}),icon:`o-spreadsheet-Icon.ROTATION-0`,isActive:e=>mR(e,0)},gR={name:k(`45° rotation`),execute:e=>pR(e,Math.PI/4),icon:`o-spreadsheet-Icon.ROTATION-45`,isActive:e=>mR(e,Math.PI/4)},_R={name:k(`90° rotation`),execute:e=>pR(e,Math.PI/2),icon:`o-spreadsheet-Icon.ROTATION-90`,isActive:e=>mR(e,Math.PI/2)},vR={name:k(`-90° rotation`),execute:e=>pR(e,-Math.PI/2),icon:`o-spreadsheet-Icon.ROTATION-270`,isActive:e=>mR(e,-Math.PI/2)},yR={name:k(`-45° rotation`),execute:e=>pR(e,-Math.PI/4),icon:`o-spreadsheet-Icon.ROTATION-315`,isActive:e=>mR(e,-Math.PI/4)},bR={name:k(`Strikethrough`),execute:e=>WP(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),icon:`o-spreadsheet-Icon.STRIKE`,isActive:e=>!!e.model.getters.getCurrentStyle().strikethrough},xR={name:k(`Font size`),children:RR(),icon:`o-spreadsheet-Icon.FONT_SIZE`},SR={name:k(`Alignment`),icon:`o-spreadsheet-Icon.ALIGN_LEFT`},CR={name:k(`Horizontal align`),icon:e=>GR(e)},wR={name:k(`Left`),shortcut:`Ctrl+Shift+L`,execute:e=>WP(e,{align:`left`}),isActive:e=>HR(e)===`left`,icon:`o-spreadsheet-Icon.ALIGN_LEFT`},TR={name:k(`Center`),shortcut:`Ctrl+Shift+E`,execute:e=>WP(e,{align:`center`}),isActive:e=>HR(e)===`center`,icon:`o-spreadsheet-Icon.ALIGN_CENTER`},ER={name:k(`Right`),shortcut:`Ctrl+Shift+R`,execute:e=>WP(e,{align:`right`}),isActive:e=>HR(e)===`right`,icon:`o-spreadsheet-Icon.ALIGN_RIGHT`},DR={name:k(`Vertical align`),icon:e=>KR(e)},OR={name:k(`Top`),execute:e=>WP(e,{verticalAlign:`top`}),isActive:e=>UR(e)===`top`,icon:`o-spreadsheet-Icon.ALIGN_TOP`},kR={name:k(`Middle`),execute:e=>WP(e,{verticalAlign:`middle`}),isActive:e=>UR(e)===`middle`,icon:`o-spreadsheet-Icon.ALIGN_MIDDLE`},AR={name:k(`Bottom`),execute:e=>WP(e,{verticalAlign:`bottom`}),isActive:e=>UR(e)===`bottom`,icon:`o-spreadsheet-Icon.ALIGN_BOTTOM`},jR={name:k(`Wrapping`),icon:`o-spreadsheet-Icon.WRAPPING_OVERFLOW`},MR={name:k(`Wrapping`),icon:e=>qR(e)},NR={name:k(`Overflow`),execute:e=>WP(e,{wrapping:`overflow`}),isActive:e=>WR(e)===`overflow`,icon:`o-spreadsheet-Icon.WRAPPING_OVERFLOW`},PR={name:k(`Wrap`),execute:e=>WP(e,{wrapping:`wrap`}),isActive:e=>WR(e)===`wrap`,icon:`o-spreadsheet-Icon.WRAPPING_WRAP`},FR={name:k(`Clip`),execute:e=>WP(e,{wrapping:`clip`}),isActive:e=>WR(e)===`clip`,icon:`o-spreadsheet-Icon.WRAPPING_CLIP`};k(`Text Color`),k(`Fill Color`);let IR={name:k(`Conditional formatting`),execute:yF,isEnabled:e=>!e.isSmall,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.CONDITIONAL_FORMAT`},LR={name:k(`Clear formatting`),shortcut:`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 RR(){return Le.map(e=>({name:e.toString(),sequence:e,id:`font_size_${e}`,execute:t=>WP(t,{fontSize:e}),isActive:t=>VR(t,e)}))}function zR(e){let t=e.model.getters.getActivePosition();return e.model.getters.getPivotCellFromPosition(t).type===`VALUE`?!e.model.getters.getEvaluatedCell(t).format:!e.model.getters.getCell(t)?.format}function BR(e,t){let n=e.model.getters.getActivePosition();return e.model.getters.getPivotCellFromPosition(n).type===`VALUE`?e.model.getters.getEvaluatedCell(n).format===t:e.model.getters.getCell(n)?.format===t}function VR(e,t){return(e.model.getters.getCurrentStyle().fontSize||we)===t}function HR(e){let t=e.model.getters.getCurrentStyle();return t.align?t.align:e.model.getters.getActiveCell().defaultAlign}function UR(e){let t=e.model.getters.getCurrentStyle();return t.verticalAlign?t.verticalAlign:Se}function WR(e){let t=e.model.getters.getCurrentStyle();return t.wrapping?t.wrapping:Ce}function GR(e){switch(HR(e)){case`right`:return`o-spreadsheet-Icon.ALIGN_RIGHT`;case`center`:return`o-spreadsheet-Icon.ALIGN_CENTER`;default:return`o-spreadsheet-Icon.ALIGN_LEFT`}}function KR(e){switch(UR(e)){case`top`:return`o-spreadsheet-Icon.ALIGN_TOP`;case`middle`:return`o-spreadsheet-Icon.ALIGN_MIDDLE`;default:return`o-spreadsheet-Icon.ALIGN_BOTTOM`}}function qR(e){switch(WR(e)){case`wrap`:return`o-spreadsheet-Icon.WRAPPING_WRAP`;case`clip`:return`o-spreadsheet-Icon.WRAPPING_CLIP`;default:return`o-spreadsheet-Icon.WRAPPING_OVERFLOW`}}function JR(e){return mR(e,Math.PI/2)?`o-spreadsheet-Icon.ROTATION-90`:mR(e,-Math.PI/2)?`o-spreadsheet-Icon.ROTATION-270`:mR(e,Math.PI/4)?`o-spreadsheet-Icon.ROTATION-45`:mR(e,-Math.PI/4)?`o-spreadsheet-Icon.ROTATION-315`:`o-spreadsheet-Icon.ROTATION-0`}let YR={name:nm.Custom,code:``,symbol:``,decimalPlaces:2,position:`after`};var XR=class extends yr{mutators=[`updateFormat`,`changeCategory`,`selectCurrency`,`changeCurrencyCode`,`changeCurrencySymbol`,`updateAvailableCurrencies`];invalidFormat=!1;isApplyingFormatFromPanel=!1;currentFormat=this.formatInSelection;category=this.detectFormatCategory(this.formatInSelection);selectedCurrencyIndex=0;currencyCode=``;currencySymbol=``;isAccountingFormat=!1;availableCurrencies=[YR,...HL.getAll()];lastFormatInSelection=this.currentFormat;usedFormatForCategory={};constructor(e,t){super(e),t&&(this.category=t),this.model.selection.observe(this,{handleEvent:this.handleSelectionEvent.bind(this)}),this.onDispose(()=>{this.model.selection.unobserve(this)})}handle(){this.isApplyingFormatFromPanel||this.syncActiveFormat()}handleSelectionEvent(){this.getters.isGridSelectionActive()&&this.syncActiveFormat()}syncActiveFormat(){let e=this.formatInSelection;e!==this.lastFormatInSelection&&(this.setActiveFormat(e),this.lastFormatInSelection=e)}setActiveFormat(e){this.currentFormat=e,this.invalidFormat=!As(e||``),this.category=this.detectFormatCategory(e)}get categories(){return[{label:k(`Number`),value:`number`},{label:k(`Date`),value:`date`},{label:k(`Currency`),value:`currency`}]}get formatInSelection(){let e=this.getters.getActivePosition();return this.getters.getPivotCellFromPosition(e).type===`VALUE`?this.getters.getEvaluatedCell(e).format:this.getters.getCell(e)?.format}detectFormatCategory(e){return e?os(e)?`date`:e.includes(`$`)||e.includes(`"`)?`currency`:`number`:`number`}get formatProposals(){return this.category===`date`?this.dateFormatProposals:this.category===`currency`?this.currencyFormatProposals:this.category===`number`?this.numberFormatProposals:[]}get numberFormatProposals(){let e=[`0.00`,`0`,`#,##0`,`#,##0.00`,`0%`,`0.00%`,`0.00e`,`0.00;(0.00);-`].map(e=>({label:z(-1234.56,{format:e,locale:this.getters.getLocale()}),format:e}));return[{label:k(`Automatic`),format:void 0},{label:k(`Plain text`),format:`@`},...e]}get dateFormatProposals(){let e=this.getters.getLocale();return[e.dateFormat,e.timeFormat,e.dateFormat+` `+e.timeFormat,`dddd d mmmm yyyy hh:mm:ss a`,`yyyy-mm-dd`,`yyyy-mm-dd hh:mm:ss`,`dddd d mmmm yyyy`,`d mmmm yyyy`,`ddd d mmm yyyy`,`d mmm yyyy`,`mmmm yyyy`,`mmm yyyy`,`hhhh:mm:ss`,`qq yyyy`,`qqqq yyyy`].map(t=>({label:z($L,{format:t,locale:e}),format:t}))}get currencyFormatProposals(){let e=this.availableCurrencies[this.selectedCurrencyIndex],t=e.position,n=e.position===`before`?`after`:`before`,r=this.currencySymbol.trim()?this.currencySymbol:``,i=this.currencyCode.trim()?this.currencyCode:``,a=e.decimalPlaces;if(!r&&!i)return[];let o=[{symbol:r,position:t,decimalPlaces:0},{symbol:r,position:t,decimalPlaces:a},{symbol:r,position:t,decimalPlaces:0,code:i},{symbol:r,position:t,decimalPlaces:a,code:i},{symbol:r,position:n,decimalPlaces:0},{symbol:r,position:n,decimalPlaces:a},{symbol:r,position:n,decimalPlaces:0,code:i},{symbol:r,position:n,decimalPlaces:a,code:i}],s=new Set,c=this.getters.getLocale();return o.map(e=>{let t=this.isAccountingFormat?ms(e):ps(e);if(!(!e.symbol&&!e.code||s.has(t)))return s.add(t),{format:t,label:z(1e3,{format:t,locale:c})}}).filter(C)}get formatExamples(){let e=this.currentFormat,t=this.getters.getLocale();if(!e||!As(e))return[];if(this.category===`date`)return[{label:k(`Sample:`),value:z($L,{format:e,locale:t})}];{let n=js(e),r=[{label:k(`Positive:`),value:z(1234.56,{format:e,locale:t})},{label:k(`Negative:`),value:z(-1234.56,{format:e,locale:t})},{label:k(`Zero:`),value:z(0,{format:e,locale:t})}];return n===4&&r.push({label:k(`Text:`),value:z(`Text`,{format:e,locale:t})}),r}}updateAvailableCurrencies(){this.availableCurrencies=[YR,...HL.getAll()]}updateFormat(e){this.currentFormat=e,this.invalidFormat=!As(e),this.invalidFormat||(this.lastFormatInSelection=e,this.isApplyingFormatFromPanel=!0,this.model.dispatch(`SET_FORMATTING_WITH_PIVOT`,{sheetId:this.getters.getActiveSheetId(),target:this.getters.getSelectedZones(),format:e||``}),this.isApplyingFormatFromPanel=!1)}changeCategory(e){if(e===this.category)return`noStateChange`;this.usedFormatForCategory[this.category]=this.currentFormat,this.category=e;let t=this.usedFormatForCategory[e]||this.formatProposals[0]?.format||``;this.updateFormat(t)}selectCurrency(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.selectedCurrencyIndex=e;let n=this.availableCurrencies[e];this.currencyCode=n.code,this.currencySymbol=n.symbol,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}changeCurrencyCode(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.currencyCode=e,this.selectedCurrencyIndex=0,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}changeCurrencySymbol(e){let t=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.currencySymbol=e,this.selectedCurrencyIndex=0,this.updateFormat(this.formatProposals[t]?.format||this.formatProposals[0]?.format||``)}toggleAccountingFormat(){let e=this.formatProposals.findIndex(e=>e.format===this.currentFormat);this.isAccountingFormat=!this.isAccountingFormat,this.updateFormat(this.formatProposals[e]?.format||this.formatProposals[0]?.format||``)}get invalidFormatMessage(){return this.invalidFormat?k(`The format entered is not valid.`):void 0}},ZR=class extends t.Component{static template=`o-spreadsheet-MoreFormatsPanel`;static props={onCloseSidePanel:Function,category:{type:String,optional:!0}};static components={BadgeSelection:jI,Section:Q,TextInput:gI,Checkbox:eP,Select:EM};store;setup(){this.store=ur(XR,this.props.category),(0,t.onWillStart)(()=>this.loadCurrencies()),(0,t.onWillUpdateProps)(e=>{e.category&&e.category!==this.props.category&&this.store.changeCategory(e.category)})}async loadCurrencies(){HL.getAll().length===0&&((await(this.env.loadCurrencies?.()??Promise.resolve([]))).forEach((e,t)=>{HL.replace(t.toString(),e)}),this.store.updateAvailableCurrencies())}currencyDisplayName(e){return e.name+(e.code?` (${e.code})`:``)}updateSelectCurrency(e){let t=parseInt(e,10);this.store.selectCurrency(t)}isFormatSelected(e){return e===this.store.currentFormat}get availableCurrenciesOptions(){return this.store.availableCurrencies.map((e,t)=>({value:t.toString(),label:this.currencyDisplayName(e)}))}},QR=class extends yr{pivotId;initialMeasure;mutators=[`cancelMeasureDisplayEdition`,`updateMeasureDisplayType`,`updateMeasureDisplayField`,`updateMeasureDisplayValue`];measureDisplay;constructor(e,t,n){super(e),this.pivotId=t,this.initialMeasure=n,this.measureDisplay=n.display||{type:`no_calculations`}}updateMeasureDisplayType(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(e,this.measureDisplay.fieldNameWithGranularity,this.measureDisplay.value))}updateMeasureDisplayField(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(this.measureDisplay.type,e,this.measureDisplay.value))}updateMeasureDisplayValue(e){this.updatePivotMeasureDisplay(this.getMeasureDisplay(this.measureDisplay.type,this.measureDisplay.fieldNameWithGranularity,e))}updatePivotMeasureDisplay(e){let t=b(this.model.getters.getPivotCoreDefinition(this.pivotId)),n=this.getMeasureIndex(this.initialMeasure.id,t),r={...t.measures[n],display:e};t.measures[n]=r,this.model.dispatch(`UPDATE_PIVOT`,{pivot:t,pivotId:this.pivotId}).isSuccessful&&(this.measureDisplay=e)}getMeasureDisplay(e,t,n){switch(e){case`no_calculations`:case`%_of_grand_total`:case`%_of_col_total`:case`%_of_row_total`:case`%_of_parent_row_total`:case`%_of_parent_col_total`:case`index`:return{type:e};case`%_of_parent_total`:case`running_total`:case`%_running_total`:case`rank_asc`:case`rank_desc`:return t||=this.fields[0]?.nameWithGranularity,{type:e,fieldNameWithGranularity:t};case`%_of`:case`difference_from`:case`%_difference_from`:t||=this.fields[0]?.nameWithGranularity;let r=this.getPossibleValues(t);return(n===void 0||!r.find(e=>e.value===n))&&(n=Qp),{type:e,fieldNameWithGranularity:t,value:n??`(previous)`}}}getMeasureIndex(e,t){let n=t.measures.findIndex(t=>t.id===e);if(n===-1)throw Error(`Measure with id ${e} not found in pivot.`);return n}get doesDisplayNeedsField(){return[`%_of_parent_total`,`running_total`,`%_running_total`,`rank_asc`,`rank_desc`].includes(this.measureDisplay.type)||this.doesDisplayNeedsValue}get fields(){let e=this.getters.getPivot(this.pivotId).definition;return[...e.columns,...e.rows].map(e=>({...e,displayName:kh(e)}))}get doesDisplayNeedsValue(){return this.isDisplayValueDependant(this.measureDisplay)}isDisplayValueDependant(e){return[`%_of`,`difference_from`,`%_difference_from`].includes(e.type)}get values(){let e=this.measureDisplay;return this.isDisplayValueDependant(e)?this.getPossibleValues(e.fieldNameWithGranularity):[]}getPossibleValues(e){let t=[{value:Qp,label:k(`(previous)`)},{value:$p,label:k(`(next)`)}],n=this.fields.find(t=>t.nameWithGranularity===e);if(!n)return[];let r=this.getters.getPivot(this.pivotId).getPossibleFieldValues(n);return[...t,...r]}cancelMeasureDisplayEdition(){let e=b(this.model.getters.getPivotCoreDefinition(this.pivotId)),t=this.getMeasureIndex(this.initialMeasure.id,e);e.measures[t]={...e.measures[t],display:this.initialMeasure.display},this.model.dispatch(`UPDATE_PIVOT`,{pivot:e,pivotId:this.pivotId})}},$R=class extends t.Component{static template=`o-spreadsheet-PivotMeasureDisplayPanel`;static props={onCloseSidePanel:Function,pivotId:String,measure:Object};static components={Section:Q,Checkbox:eP,RadioSelection:PI,Select:EM};measureDisplayTypeLabels=cm.labels;measureDisplayDescription=cm.documentation;store;setup(){this.store=ur(QR,this.props.pivotId,this.props.measure)}onSave(){this.env.replaceSidePanel(`PivotSidePanel`,`pivot_measure_display_${this.props.pivotId}_${this.props.measure.id}`,{pivotId:this.props.pivotId})}onCancel(){this.store.cancelMeasureDisplayEdition(),this.env.replaceSidePanel(`PivotSidePanel`,`pivot_measure_display_${this.props.pivotId}_${this.props.measure.id}`,{pivotId:this.props.pivotId})}get fieldChoices(){return this.store.fields.map(e=>({value:e.nameWithGranularity,label:e.displayName}))}get measureDisplayTypeOptions(){return Object.keys(this.measureDisplayTypeLabels).map(e=>({value:e,label:this.measureDisplayTypeLabels[e]}))}};function ez(e,t){let n=e.getActiveSheetId();return er(tz(e,t).map(E)).map(t=>({range:e.getRangeFromZone(n,t),noFill:!0,color:ee}))}function tz(e,t){let n=[],r=e.getActiveSheetId();for(let i of e.getSheetViewVisibleCols())for(let a of e.getSheetViewVisibleRows()){let o={sheetId:r,col:i,row:a};e.getPivotIdsFromPosition(o).includes(t)&&n.push(o)}return n}var nz=class extends t.Component{static template=`o-spreadsheet-PivotDeferUpdate`;static props={deferUpdate:Boolean,isDirty:Boolean,toggleDeferUpdate:Function,discard:Function,apply:Function};static components={Section:Q,Checkbox:eP};get deferUpdatesLabel(){return k(`Defer updates`)}get deferUpdatesTooltip(){return k(`Changing the pivot definition requires to reload the data. It may take some time.`)}},rz=class extends t.Component{static template=`o-spreadsheet-PivotCustomGroupsCollapsible`;static props={pivotId:String,customField:Object,onCustomFieldUpdated:Function};static components={SidePanelCollapsible:TM,TextInput:gI,Checkbox:eP};get groups(){return this.props.customField.groups.sort((e,t)=>!e.isOtherGroup&&!t.isOtherGroup?0:e.isOtherGroup?1:-1)}get hasOthersGroup(){return this.props.customField.groups.some(e=>e.isOtherGroup)}addOthersGroup(){if(this.hasOthersGroup)return;let e={name:Mh(k(`Others`),this.props.customField),values:[],isOtherGroup:!0},t=[...this.props.customField.groups,e];this.updateCustomField({...this.props.customField,groups:t})}onDeleteGroup(e){let t=[...this.props.customField.groups];t.splice(e,1),this.updateCustomField({...this.props.customField,groups:t})}onRenameGroup(e,t){let n=b(this.props.customField.groups),r=n[e];r&&(r.name=Mh(t,this.props.customField),this.updateCustomField({...this.props.customField,groups:n}))}updateCustomField(e){let t=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);this.props.onCustomFieldUpdated({customFields:{...t.customFields,[e.name]:e}})}};function iz(e,t,n,r){let i=[];e=e.toLowerCase();for(let a of e){let e=t.toLocaleLowerCase().indexOf(a);e!==-1&&(i.push({value:t.slice(0,e),color:``},{value:t[e],color:n,classes:[r]}),t=t.slice(e+1))}return i.push({value:t}),i.filter(e=>e.value)}var az=class extends t.Component{static template=`o-spreadsheet-AddDimensionButton`;static components={Popover:kv,TextValueProvider:VM};static props={onFieldPicked:Function,fields:Array,slots:{type:Object,optional:!0}};buttonRef=(0,t.useRef)(`button`);popover=(0,t.useState)({isOpen:!1});search=(0,t.useState)({input:``});autoComplete;setup(){this.autoComplete=ur(ON),this.autoComplete.useProvider(this.getProvider()),(0,t.useExternalListener)(window,`click`,e=>{e.target!==this.buttonRef.el&&(this.popover.isOpen=!1)}),mI({refName:`autofocus`})}getProvider(){return{proposals:this.proposals,autoSelectFirstProposal:!1,selectProposal:e=>{let t=this.props.fields.find(t=>t.string===e);t&&this.pickField(t)}}}get proposals(){let e;return e=this.search.input?_l(this.search.input,this.props.fields,e=>e.string===e.name?e.string:e.string+e.name):this.props.fields,e.map(e=>{let t=e.string;return{text:t,fuzzySearchKey:t,htmlContent:iz(this.search.input,t,le,`o-semi-bold`)}})}get popoverProps(){let{x:e,y:t,width:n,height:r}=this.buttonRef.el.getBoundingClientRect();return{anchorRect:{x:e,y:t,width:n,height:r},positioning:`bottom-left`}}updateSearch(e){this.search.input=e,this.autoComplete.useProvider(this.getProvider())}pickField(e){this.props.onFieldPicked(e.name),this.togglePopover()}togglePopover(){this.popover.isOpen=!this.popover.isOpen,this.search.input=``,this.autoComplete.useProvider(this.getProvider())}onKeyDown(e){switch(e.key){case`Enter`:let t=this.autoComplete.provider?.proposals;t?.length===1&&this.autoComplete.provider?.selectProposal(t[0].text||``);let n=this.autoComplete.selectedProposal;this.autoComplete.provider?.selectProposal(n?.text||``);break;case`ArrowUp`:case`ArrowDown`:this.autoComplete.moveSelection(e.key===`ArrowDown`?`next`:`previous`);break;case`Escape`:this.popover.isOpen=!1;break;default:break}}},oz=class extends t.Component{static template=`o-spreadsheet-PivotDimension`;static props={dimension:Object,onRemoved:{type:Function,optional:!0},onNameUpdated:{type:Function,optional:!0},slots:{type:Object,optional:!0}};static components={CogWheelMenu:SI,TextInput:gI};updateName(e){this.props.onNameUpdated?.(this.props.dimension,e===``||e.startsWith(`=`)?void 0:e)}get dimensionDisplayName(){let e=this.props.dimension.displayName;return Bh(e)}},sz=class extends t.Component{static template=`o-spreadsheet-PivotDimensionGranularity`;static props={dimension:Object,onUpdated:Function,availableGranularities:Set,allGranularities:Array};static components={Select:EM};periods=gh;get granularityOptions(){let e=this.props.dimension.granularity||`month`;return this.props.allGranularities.filter(t=>this.props.availableGranularities.has(t)||t===e).map(e=>({value:e,label:this.periods[e]}))}},cz=class extends t.Component{static template=`o-spreadsheet-PivotDimensionOrder`;static props={dimension:Object,onUpdated:Function};static components={Select:EM};get orderSelectOptions(){let e=[{value:`asc`,label:k(`Ascending`)},{value:`desc`,label:k(`Descending`)}];return this.props.dimension.type===`date`?e:[{value:``,label:k(`Unsorted`)},...e]}},lz=class{scope;code=``;constructor(e=new dz){this.scope=e}append(...e){this.code+=e.map(e=>e.toString()).join(`
80
80
  `)+`
81
81
  `}return(e){return new uz(this.scope,this.code,e)}toString(){return pz(this.code)}},uz=class{scope;returnExpression;code;constructor(e,t,n){this.scope=e,this.returnExpression=n,this.code=pz(t)}toString(){return this.code}assignResultToVariable(){if(this.scope.isAlreadyDeclared(this.returnExpression))return this;let e=this.scope.nextVariableName(),t=new lz(this.scope);return t.append(this.code),t.append(`const ${e} = ${this.returnExpression};`),t.return(e)}},dz=class{nextId=1;declaredVariables=new Set;nextVariableName(){let e=`_${this.nextId++}`;return this.declaredVariables.add(e),e}isAlreadyDeclared(e){return this.declaredVariables.has(e)}};function fz(e){return e.split(`
82
82
  `).map(e=>e.trim()).filter(e=>e!==``)}function pz(e){let t=``,n=0,r=fz(e);for(let e of r)e.startsWith(`}`)&&n--,t+=` `.repeat(n)+e+`
83
- `,e.endsWith(`{`)&&n++;return t.trim()}let mz=uO.content,hz={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},gz={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`,"#":`SPILLED.RANGE`},_z={},vz=new Intl.Collator(`en`,{sensitivity:`accent`});var yz=class e{sheetId;tokens;literalValues;symbols;isBadExpression;normalizedFormula;execute;rangeDependencies;hasDependencies;constructor(e,t,n,r,i,a,o,s){this.sheetId=e,this.tokens=t,this.literalValues=n,this.symbols=r,this.isBadExpression=a,this.normalizedFormula=o,this.execute=s,this.hasDependencies=i?.length>0,this.tokens.forEach(e=>{[`REFERENCE`,`NUMBER`,`STRING`,`INVALID_REFERENCE`].includes(e.type)&&(e.value=`__NO_REAL_VALUE__`)}),this.rangeDependencies=i}getTokens(e,t){let n=0,r=0,i=0;return this.isBadExpression||this.tokens.forEach(a=>{switch(a.type){case`REFERENCE`:case`INVALID_REFERENCE`:a.value=e.getRangeString(this.rangeDependencies[n++],this.sheetId,t);break;case`NUMBER`:a.value=this.literalValues.numbers[r++].value.toString();break;case`STRING`:a.value=`"${this.literalValues.strings[i++].value}"`;break}}),this.tokens}getAst(e){return uN(this.getTokens(e))}toFormulaString(e,t){return this.isBadExpression?this.normalizedFormula:gt(this.getTokens(e,t).filter(e=>e.type!==`SPACE`).map(e=>e.value))}usesSymbol(e){return this.symbols.some(t=>vz.compare(t,e)===0)}areAllFunctionsExportableToExcel(){return this.isBadExpression?!1:!fN(uN(this.tokens)).some(e=>e.type===`FUNCALL`&&!mz[e.value.toUpperCase()]?.isExported)}getFunctionsFromTokens(e,t){return this.isBadExpression||!e.some(e=>this.usesSymbol(e))?[]:fN(this.getAst(t)).filter(t=>t.type===`FUNCALL`&&e.includes(t.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}isFirstNonWhitespaceSymbol(e){let t=this.tokens.find((e,t)=>t>0&&e.type!==`SPACE`);return t?.type===`SYMBOL`&&t.value.toUpperCase()===e}static IsBadExpression(e){return bz(Ju(e)).isBadExpression}static CopyWithDependencies(t,n,r){return new e(n,t.tokens,t.literalValues,t.symbols,r,t.isBadExpression,t.normalizedFormula,t.execute)}static CopyWithDependenciesAndLiteral(t,n,r,i,a){return new e(n,t.tokens,{numbers:i,strings:a},t.symbols,r,t.isBadExpression,t.normalizedFormula,t.execute)}static CompileForSerializedFormula(t,n){let r=bz(n.tokens);return new e(t,n.tokens,n.literalValues,n.symbols,n.rangeDependencies,n.isBadExpression,n.normalizedFormula,r.execute)}static Compile(t,n,r){let i=bz(Ju(t));return new e(n,i.tokens,i.literalValues,i.symbols,i.dependencies.map(e=>r.getRangeFromSheetXC(n,e)),i.isBadExpression,i.normalizedFormula,i.execute)}};function bz(e){try{return xz(e)}catch(t){return{tokens:e,literalValues:{numbers:[],strings:[]},symbols:[],dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function xz(e){let{dependencies:t,literalValues:n,symbols:r}=Cz(e),i=Sz(e);if(!_z[i]){let t=uN([...e]),n=new dz,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new ga(k(`Invalid formula`));let u=o(t),d=new lz;d.append(u),d.append(`return ${u.returnExpression};`),_z[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=mz[e.value.toUpperCase()];if(!n)throw new ba(k(`Unknown function: "%s"`,e.value));wz(e);let r=[],i=Kv(n,t.length);for(let e=0;e<t.length;e++){let a=n.args[i(e).index??-1],s=t[e],c=a.type||[],l=c.includes(`META`)||c.includes(`RANGE<META>`),u=c.some(e=>Tz(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new lz(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new ga(k(`Argument must be a reference to a cell or range.`));switch(e.debug&&(u.append(`debugger;`),u.append(`ctx["debug"] = true;`)),e.type){case`BOOLEAN`:return u.return(`{ value: ${e.value} }`);case`NUMBER`:return u.return(`this.literalValues.numbers[${c++}]`);case`STRING`:return u.return(`this.literalValues.strings[${s++}]`);case`REFERENCE`:return u.return(`${e.value.includes(`:`)||i?`range`:`ref`}(deps[${l++}], ${t?`true`:`false`})`);case`FUNCALL`:let n=a(e).map(e=>e.assignResultToVariable());u.append(...n);let d=e.value.toUpperCase();return u.return(`ctx['${d}'](${n.map(e=>e.returnExpression)})`);case`ARRAY`:return o({type:`FUNCALL`,value:`ARRAY.LITERAL`,args:e.value.map(e=>({type:`FUNCALL`,value:`ARRAY.ROW`,args:e,tokenStartIndex:0,tokenEndIndex:0})),tokenStartIndex:0,tokenEndIndex:0});case`UNARY_OPERATION`:{let t=gz[e.value],{isMeta:n,hasRange:r}=e.value===`#`?{isMeta:!0,hasRange:!0}:{isMeta:!1,hasRange:!1},i=o(e.operand,n,r).assignResultToVariable();return u.append(i),u.return(`ctx['${t}'](${i.returnExpression})`)}case`BIN_OPERATION`:{let t=hz[e.value],n=o(e.left,!1,!1).assignResultToVariable(),r=o(e.right,!1,!1).assignResultToVariable();return u.append(n),u.append(r),u.return(`ctx['${t}'](${n.returnExpression}, ${r.returnExpression})`)}case`SYMBOL`:let f=r.indexOf(e.value);return u.return(`getSymbolValue(this.symbols[${f}])`);case`EMPTY`:return u.return(`undefined`)}}}return{execute:_z[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function Sz(e){let t=``;for(let n of e)switch(n.type){case`STRING`:t+=`|S|`;break;case`NUMBER`:t+=`|N|`;break;case`REFERENCE`:case`INVALID_REFERENCE`:n.value.includes(`:`)?t+=`|R|`:t+=`|C|`;break;case`SPACE`:break;default:t+=n.value;break}return t}function Cz(e){let t={numbers:[],strings:[]},n=[],r=[];for(let i of e)switch(i.type){case`INVALID_REFERENCE`:case`REFERENCE`:n.push(i.value);break;case`STRING`:let e=Xe(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=aa(i.value,R);t.numbers.push({value:e});break}case`SYMBOL`:r.push(Xe(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function wz(e){let t=e.args.length,n=e.value.toUpperCase(),r=mz[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Expected %(minArgRequired)s minimum, but got %(nbrArgSupplied)s instead.`,{functionName:n,minArgRequired:a,nbrArgSupplied:t}));if(t>r.maxArgPossible)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Expected %(maxArgPossible)s maximum, but got %(nbrArgSupplied)s instead.`,{functionName:n,maxArgPossible:r.maxArgPossible,nbrArgSupplied:t}));if(i>1){let e=i*Math.floor((t-a)/i),o=t-a-e-r.nbrOptionalNonRepeatingArgs;if(o>0)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Repeatable arguments should be supplied in groups of %(nbrArgRepeating)s, with up to %(nbrArgOptional)s optional. Got %(nbrValueRemaining)s too many.`,{functionName:n,nbrArgRepeating:i,nbrArgOptional:r.nbrOptionalNonRepeatingArgs,nbrValueRemaining:o}))}}function Tz(e){return e.startsWith(`RANGE`)}function Ez(e,t){return{sequence:0,autoSelectFirstProposal:!0,getProposals(n){let r=e.measures.filter(e=>e!==t).map(e=>{let t=Ze(e.id);return{text:t,description:e.displayName,htmlContent:[{value:t,color:ge}],fuzzySearchKey:e.displayName+t+e.fieldName}}),i=e.rows.concat(e.columns).map(e=>{let t=Ze(e.nameWithGranularity);return{text:t,description:e.displayName,htmlContent:[{value:t,color:ge}],fuzzySearchKey:e.displayName+t+e.fieldName}});return r.concat(i)},selectProposal(e,t){let n=e.end;e.type===`SYMBOL`&&(n=e.start);let r=e.end;this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}}}var Dz=class extends t.Component{static template=`o-spreadsheet-PivotMeasureEditor`;static components={PivotDimension:oz,StandaloneComposer:jN,Select:EM};static props={definition:Object,measure:Object,onMeasureUpdated:Function,onRemoved:Function,generateMeasureId:Function,aggregators:Object,pivotId:String};getMeasureAutocomplete(){return Ez(this.props.definition,this.props.measure)}updateMeasureFormula(e){this.props.onMeasureUpdated({...this.props.measure,computedBy:{sheetId:this.env.model.getters.getActiveSheetId(),formula:e[0]===`=`?e:`=`+e}})}updateAggregator(e){this.props.onMeasureUpdated({...this.props.measure,aggregator:e,id:this.props.generateMeasureId(this.props.measure.fieldName,e)})}updateName(e,t){this.props.measure.computedBy&&t?this.props.onMeasureUpdated({...this.props.measure,userDefinedName:t,id:this.props.generateMeasureId(t,this.props.measure.aggregator),fieldName:t}):this.props.onMeasureUpdated({...this.props.measure,userDefinedName:t})}toggleMeasureVisibility(){this.props.onMeasureUpdated({...this.props.measure,isHidden:!this.props.measure.isHidden})}openShowValuesAs(){this.env.replaceSidePanel(`PivotMeasureDisplayPanel`,`pivot_key_${this.props.pivotId}`,{pivotId:this.props.pivotId,measure:this.props.measure})}getColoredSymbolToken(e){if(e.type!==`SYMBOL`)return;let t=Xe(e.value,`'`);if(this.props.definition.columns.some(e=>e.nameWithGranularity===t)||this.props.definition.rows.some(e=>e.nameWithGranularity===t)||this.props.definition.measures.some(e=>e.id===t&&e.id!==this.props.measure.id))return ge}get isCalculatedMeasureInvalid(){return yz.IsBadExpression(this.props.measure.computedBy?.formula??``)}get aggregatorOptions(){let e=this.props.aggregators[this.props.measure.type],t=Object.keys(e).map(t=>({value:t,label:e[t]}));return this.props.measure.computedBy?[...t,{value:``,label:k(`Compute from totals`)}]:t}getMeasureDescription(e){let t=e.display;if(!t||t.type===`no_calculations`)return``;let n=this.env.model.getters.getPivot(this.props.pivotId),r=[...n.definition.columns,...n.definition.rows].find(e=>e.nameWithGranularity===t.fieldNameWithGranularity),i=r?kh(r):``,a=t.value?.toString()||``;return cm.descriptions[t.type](i,a)}},Oz=class extends t.Component{static template=`o-spreadsheet-PivotSortSection`;static components={Section:Q};static props={definition:Object,pivotId:String};get hasValidSort(){let e=this.env.model.getters.getPivot(this.props.pivotId);return!!this.props.definition.sortedColumn&&jh(this.props.definition.sortedColumn,e)}get sortDescription(){return k(`Sorted on column (%(ascOrDesc)s):`,{ascOrDesc:this.props.definition.sortedColumn?.order===`asc`?k(`ascending`):k(`descending`)})}get sortValuesAndFields(){let e=this.props.definition.sortedColumn;if(!e)return[];let t=this.env.model.getters.getPivot(this.props.pivotId),n=this.env.model.getters.getLocale(),r=[],i=[];for(let a of e.domain){r.push(a);let{value:e,format:o}=t.getPivotHeaderValueAndFormat(r),s=z(e,{format:o,locale:n}),c=t.definition.getDimension(a.field);i.push({field:kh(c),value:s})}e.domain.length===0&&i.push({value:k(`Total`)});let a=t.getMeasure(e.measure).displayName;return i.push({value:a,field:k(`Measure`)}),i}},kz=class extends t.Component{static template=`o-spreadsheet-PivotLayoutConfigurator`;static components={AddDimensionButton:az,PivotDimension:oz,PivotDimensionOrder:cz,PivotDimensionGranularity:sz,PivotMeasureEditor:Dz,PivotSortSection:Oz,PivotCustomGroupsCollapsible:rz};static props={definition:Object,onDimensionsUpdated:Function,unusedGroupableFields:Array,measureFields:Array,unusedGranularities:Object,dateGranularities:Array,datetimeGranularities:Array,getScrollableContainerEl:{type:Function,optional:!0},pivotId:String};dimensionsRef=(0,t.useRef)(`pivot-dimensions`);dragAndDrop=HN();AGGREGATORS=ph;composerFocus;isDateOrDatetimeField=yh;setup(){this.composerFocus=D(xr)}startDragAndDrop(e,t){if(t.button!==0||t.target.tagName===`SELECT`)return;let n=this.getDimensionElementsRects(),{columns:r,rows:i}=this.props.definition,a=[...r.map(e=>e.nameWithGranularity),`__rows_title__`,...i.map(e=>e.nameWithGranularity)],o=r.concat(i),s=a.map((e,t)=>({id:e,size:n[t+1].height,position:n[t+1].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.nameWithGranularity,initialMousePosition:t.clientY,items:s,scrollableContainerEl:this.props.getScrollableContainerEl?.()||this.dimensionsRef.el,onDragEnd:(e,t)=>{let n=a.findIndex(t=>t===e);if(n===t)return;let r=[...a];r.splice(n,1),r.splice(t,0,e);let i=r.slice(0,r.indexOf(`__rows_title__`)),s=r.slice(r.indexOf(`__rows_title__`)+1);this.props.onDimensionsUpdated({columns:i.map(e=>o.find(t=>t.nameWithGranularity===e)).filter(C),rows:s.map(e=>o.find(t=>t.nameWithGranularity===e)).filter(C)})}})}getGranularitiesFor(e){return yh(e)?e.type===`date`?this.props.dateGranularities:this.props.datetimeGranularities:[]}startDragAndDropMeasures(e,t){if(t.button!==0||t.target.tagName===`SELECT`||t.target.tagName===`INPUT`||this.composerFocus.focusMode!==`inactive`)return;let n=this.getDimensionElementsRects(),{measures:r,columns:i,rows:a}=this.props.definition,o=r.map(e=>e.id),s=3+i.length+a.length,c=o.map((e,t)=>({id:e,size:n[t+s].height,position:n[t+s].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.id,initialMousePosition:t.clientY,items:c,scrollableContainerEl:this.props.getScrollableContainerEl?.()||this.dimensionsRef.el,onDragEnd:(e,t)=>{let n=o.findIndex(t=>t===e);if(n===t)return;let i=[...o];i.splice(n,1),i.splice(t,0,e),this.props.onDimensionsUpdated({measures:i.map(e=>r.find(t=>t.id===e)).filter(C)})}})}getDimensionElementsRects(){return Array.from(this.dimensionsRef.el.children).map(e=>{let t=getComputedStyle(e),n=e.getBoundingClientRect();return{x:n.x,y:n.y,width:n.width+parseInt(t.marginLeft||`0`)+parseInt(t.marginRight||`0`),height:n.height+parseInt(t.marginTop||`0`)+parseInt(t.marginBottom||`0`)}})}removeDimension(e){let{columns:t,rows:n}=this.props.definition;this.props.onDimensionsUpdated({columns:t.filter(t=>t.nameWithGranularity!==e.nameWithGranularity),rows:n.filter(t=>t.nameWithGranularity!==e.nameWithGranularity)})}removeMeasureDimension(e){let{measures:t}=this.props.definition;this.props.onDimensionsUpdated({measures:t.filter(t=>t.id!==e.id)})}addColumnDimension(e){let{columns:t}=this.props.definition;this.props.onDimensionsUpdated({columns:t.concat([{fieldName:e,order:`asc`}])})}addRowDimension(e){let{rows:t}=this.props.definition;this.props.onDimensionsUpdated({rows:t.concat([{fieldName:e,order:`asc`}])})}addMeasureDimension(e){let{measures:t}=this.props.definition,n=this.getDefaultMeasureAggregator(e);this.props.onDimensionsUpdated({measures:t.concat([{id:this.getMeasureId(e,n),fieldName:e,aggregator:n}])})}updateMeasure(e,t){let{measures:n}=this.props.definition,r={measures:n.map(n=>n.id===e.id?t:n)};this.props.definition.sortedColumn?.measure===e.id&&(r.sortedColumn={...this.props.definition.sortedColumn,measure:t.id}),this.props.onDimensionsUpdated(r)}getMeasureId(e,t){let n=e.replaceAll(`'`,``)+(t?`:${t}`:``),r=n,i=2;for(;this.props.definition.measures.some(e=>e.id===r);)r=`${n}:${i}`,i++;return r}getDefaultMeasureAggregator(e){let t=this.props.measureFields.find(t=>t.name===e);return t?.aggregator?t.aggregator:`count`}addCalculatedMeasure(){let{measures:e}=this.props.definition,t=this.env.model.getters.generateNewCalculatedMeasureName(e);this.props.onDimensionsUpdated({measures:e.concat([{id:this.getMeasureId(t,`sum`),fieldName:t,aggregator:`sum`,computedBy:{sheetId:this.env.model.getters.getActiveSheetId(),formula:`=0`}}])})}getCustomField(e){return this.env.model.getters.getPivotCoreDefinition(this.props.pivotId).customFields?.[e.nameWithGranularity]}updateOrder(e,t){let{rows:n,columns:r}=this.props.definition;this.props.onDimensionsUpdated({rows:n.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,order:t||void 0}:n),columns:r.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,order:t||void 0}:n)})}updateGranularity(e,t){let{rows:n,columns:r}=this.props.definition;this.props.onDimensionsUpdated({rows:n.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,granularity:t}:n),columns:r.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,granularity:t}:n)})}getHugeDimensionErrorMessage(e){let t=this.env.model.getters.getPivot(this.props.pivotId).getPossibleFieldValues(e);return t.length>100?k(`This dimension contains a lot of values (%s), and might slow down the pivot table.`,t.length):void 0}},Az=class extends t.Component{static template=`o-spreadsheet-PivotTitleSection`;static components={CogWheelMenu:SI,Section:Q,TextInput:gI};static props={pivotId:String,flipAxis:Function};get cogWheelMenuItems(){return[{name:k(`Flip axes`),icon:`o-spreadsheet-Icon.EXCHANGE`,execute:this.props.flipAxis,isEnabledOnLockedSheet:!0},{name:k(`Duplicate`),icon:`o-spreadsheet-Icon.COPY`,execute:()=>this.duplicatePivot(),isEnabledOnLockedSheet:!0},{name:k(`Delete`),icon:`o-spreadsheet-Icon.TRASH`,execute:()=>this.delete(),isEnabledOnLockedSheet:!0}]}get name(){return this.env.model.getters.getPivotName(this.props.pivotId)}get displayName(){return this.env.model.getters.getPivotDisplayName(this.props.pivotId)}duplicatePivot(){let e=this.env.model.uuidGenerator.smallUuid(),t=this.env.model.uuidGenerator.smallUuid(),n=this.env.model.dispatch(`DUPLICATE_PIVOT_IN_NEW_SHEET`,{pivotId:this.props.pivotId,newPivotId:e,newSheetId:t}),r;r=n.isSuccessful?k(`Pivot duplicated.`):n.isCancelledBecause(`PivotInError`)?k(`Cannot duplicate a pivot in error.`):k(`Pivot duplication failed.`);let i=n.isSuccessful?`success`:`danger`;this.env.notifyUser({text:r,sticky:!1,type:i}),n.isSuccessful&&this.env.openSidePanel(`PivotSidePanel`,{pivotId:e})}delete(){this.env.askConfirmation(k(`Are you sure you want to delete this pivot?`),()=>{this.env.model.dispatch(`REMOVE_PIVOT`,{pivotId:this.props.pivotId})})}onNameChanged(e){let t=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);this.env.model.dispatch(`UPDATE_PIVOT`,{pivotId:this.props.pivotId,pivot:{...t,name:e}})}},jz=class{measures;columns;rows;sortedColumn;collapsedDomains;customFields;constructor(e,t){this.columns=e.columns.map(e=>this.createPivotDimension(t,e)),this.rows=e.rows.map(e=>this.createPivotDimension(t,e)),this.measures=e.measures.map(e=>this.createMeasure(t,e)),this.sortedColumn=e.sortedColumn,this.collapsedDomains=e.collapsedDomains,this.customFields=e.customFields}getDimension(e){let t=this.columns.find(t=>t.nameWithGranularity===e)||this.rows.find(t=>t.nameWithGranularity===e);if(!t)throw new j(k(`Dimension %s does not exist`,e));return t}getMeasure(e){let t=this.measures.find(t=>t.id===e);if(!t)throw new j(k(`Field %s is not a measure`,e));return t}get invalidAggregatorsForCustomField(){return[]}createMeasure(e,t){let n=t.fieldName,r=n===`__count`?{name:`__count`,string:k(`Count`),type:`integer`,aggregator:`sum`}:e[n],i=t.aggregator,a=!!(r||t.computedBy);for(let t of[...this.rows,...this.columns])if(e[t.fieldName]?.isCustomField&&this.invalidAggregatorsForCustomField.includes(i)){a=!1;break}return{id:t.id,get displayName(){return t.userDefinedName??r?.string??t.fieldName},userDefinedName:t.userDefinedName,fieldName:n,aggregator:i,type:n===`__count`?`integer`:r?.type??`integer`,isValid:a,isHidden:t.isHidden,format:t.format,computedBy:t.computedBy,display:t.display}}createPivotDimension(e,t){let n=e[t.fieldName],r=n?.type??`integer`,i=n&&yh(n)?t.granularity:void 0;return{displayName:n?.string??t.fieldName,nameWithGranularity:t.fieldName+(i?`:${i}`:``),fieldName:t.fieldName,granularity:i,type:n?.isCustomField?`custom`:r,order:t.order,isValid:!!n,isCustomField:!!n?.isCustomField,customGroups:n?.customGroups,parentField:n?.parentField}}},Mz=class extends jz{range;constructor(e,t,n){if(super(e,t),e.dataSet){let{sheetId:t,zone:r}=e.dataSet;this.range=n.getRangeFromZone(t,r)}}};function Nz(e,t){let{colDomain:n,rowDomain:r}=Fz(e,t);return[...n,...r.slice(0,r.length-1)]}function Pz(e,t){let{colDomain:n,rowDomain:r}=Fz(e,t);return[...n.slice(0,n.length-1),...r]}function Fz(e,t){let n=e.definition.rows.map(e=>e.nameWithGranularity),r=t.filter(e=>n.includes(e.field)),i=e.definition.columns.map(e=>e.nameWithGranularity);return{colDomain:t.filter(e=>i.includes(e.field)),rowDomain:r}}function Iz(e,t,n){return t===`column`?Fz(e,n).colDomain:Fz(e,n).rowDomain}function Lz(e,t){return t.find(t=>t.field===e)?.value}function Rz(e,t){for(let n of t)if(e.definition.rows.find(e=>e.nameWithGranularity===n.field)===void 0&&e.definition.columns.find(e=>e.nameWithGranularity===n.field)===void 0)return!1;let{rowDomain:n,colDomain:r}=Fz(e,t);return zz(n,e.getExpandedTableStructure().getRowTree())&&zz(r,e.getExpandedTableStructure().getColTree())}function zz(e,t){return Bz(e,t)!==void 0}function Bz(e,t,n){let r=t;for(let t of e){let e=r.find(e=>e.value===t.value);if(!e)return;if(e.field===n)return r;r=e.children}return r}function Vz(e,t,n){let{rowDomain:r,colDomain:i}=Fz(e,n);if(Wz(e,t)===`row`){let e=r.findIndex(e=>e.field===t);if(e===-1)return n;r=r.slice(0,e+1)}else{let e=i.findIndex(e=>e.field===t);if(e===-1)return n;i=i.slice(0,e+1)}return[...r,...i]}function Hz(e,t,n){e=b(e);let r=e.find(e=>e.field===t);return r&&(r.value=n),e}function Uz(e,t){return t.some(t=>t.field===e)}function Wz(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 Error(`Field ${t} not found in pivot`)}function Gz(e,t,n,r){let i=Wz(e,n),a=i===`row`?e.getExpandedTableStructure().getRowTree():e.getExpandedTableStructure().getColTree(),o=Bz(Iz(e,i,t),a,n)?.map(e=>e.value)??[],s=Lz(n,t);if(s===void 0)return;let c=o.indexOf(s);if(!(s===void 0||c===-1))return Hz(t,n,o[x(c+(r===`(previous)`?-1:1),0,o.length-1)])}function Kz(e){return e?e.map(qz).join(`, `):``}function qz(e){return e?`${e.field}=${e.value}`:``}function Jz(e,t){let n=e.findIndex(e=>e.field===t);if(n===-1)return``;let r=e.slice(0,n),i=e.at(-1);return Kz(i.field===t?r:[...r,i])}function Yz(e,t){let n=e.findIndex(e=>e.field===t);return n===-1?``:Kz([...e.slice(0,n),...e.slice(n+1)])}function Xz(e,t,n){let r=[...e],i=[...t];r.sort((e,t)=>n([...i,e],[...i,t]));for(let t of e)t.children=Xz(t.children,[...i,t],n);return r}function Zz(e,t){return e.length>t.length&&t.every((t,n)=>w(t,e[n]))}var Qz=class{columns;rows;measures;fieldsType;maxIndent;pivotCells={};rowTree;colTree;isSorted=!1;constructor(e,t,n,r,i={COL:[],ROW:[]}){this.measures=n,this.fieldsType=r,i.COL.length&&(e=this.removeCollapsedColumns(e,n,i.COL)),this.columns=e.map(e=>{let t=1;return e.map(e=>(e={...e,offset:t},t+=e.width,e))}),this.rows=t.filter(e=>!this.isParentCollapsed(i.ROW,e)),this.maxIndent=Math.max(...this.rows.map(e=>e.indent)),this.rowTree=_t(()=>this.buildRowsTree()),this.colTree=_t(()=>this.buildColumnsTree())}removeCollapsedColumns(e,t,n){let r=(n,r)=>{let i=this.getDomain(n),a=e[r],o=a.findIndex(e=>Zz(this.getDomain(e),i)),s=a.findLastIndex(e=>Zz(this.getDomain(e),i)),c=r===e.length-1,l=t.map(e=>({fields:c?[...n.fields,`measure`]:[],values:c?[...n.values,e]:[],width:1,offset:0,collapsedHeader:!c}));a.splice(o,s-o+1,...l)};return e.map((i,a)=>{for(let o of i){if(a>=e.length-2)return i;let s=this.getDomain(o);if(n.some(e=>w(s,e))){o.width=t.length;for(let t=a+1;t<e.length;t++)r(o,t)}}return i})}isParentCollapsed(e,t){let n=this.getDomain(t);return e.some(e=>Zz(n,e))}getNumberOfDataColumns(){return this.columns.at(-1)?.length||0}getSkippedRows(e){let t=new Set;if(!e.displayColumnHeaders)for(let e=0;e<this.columns.length-1;e++)t.add(e);return e.displayMeasuresRow||t.add(this.columns.length-1),t}getPivotCells(e=lh){let t=JSON.stringify(e);if(!this.pivotCells[t]){let{displayTotals:n}=e,r=this.rows.length,i=this.getNumberOfDataColumns(),a=this.columns.length+r,o=1+i;!n&&r!==1&&--a,!n&&i!==this.measures.length&&(o-=this.measures.length);let s=[],c=this.getSkippedRows(e);for(let e=0;e<o;e++){s.push([]);for(let t=0;t<a;t++)c.has(t)||s[e].push(this.getPivotCell(e,t,n))}this.pivotCells[t]=s}return this.pivotCells[t]}getRowTree(){return this.rowTree()}getColTree(){return this.colTree()}isTotalRow(e){return this.rows[e].indent!==this.maxIndent}getPivotCell(e,t,n=!0){let r=this.columns.length;if(e>0&&t===r-1){let n=this.getColHeaderDomain(e,t);if(!n)return $z;let r=n.at(-1)?.value?.toString()||``;return{type:`MEASURE_HEADER`,domain:n.slice(0,-1),measure:r}}else if(t<=r-1){let n=this.getColHeaderDomain(e,t);return n?{type:`HEADER`,domain:n,dimension:`COL`}:$z}else if(e===0){let e=t-r;return{type:`HEADER`,domain:this.getDomain(this.rows[e]),dimension:`ROW`}}else{let i=t-r;return!n&&this.isTotalRow(i)?$z:{type:`VALUE`,domain:[...this.getDomain(this.rows[i]),...this.getColDomain(e)],measure:this.getColMeasure(e)}}}getColHeaderDomain(e,t){if(e===0)return;let n=this.columns[t].find(t=>t.offset===e);if(!(!n||n.collapsedHeader))return this.getDomain(n)}getDomain(e){return e.fields.map((t,n)=>{if(t===`measure`)return{type:`char`,field:t,value:Ch({displayName:`measure`,type:`char`},e.values[n])};{let{fieldName:r,granularity:i}=vh(t),a=this.fieldsType[r]||`char`;return{type:a,field:t,value:Ch({displayName:r,type:a,granularity:i},e.values[n])}}})}getColDomain(e){let t=this.getColHeaderDomain(e,this.columns.length-1);return t?t.slice(0,-1):[]}getColMeasure(e){let t=this.getColHeaderDomain(e,this.columns.length-1)?.at(-1)?.value;if(t==null)throw Error(`Measure is missing`);return t.toString()}buildRowsTree(){let e=[],t=0,n={};n[0]=e;for(let r of this.rows){if(r.fields.length===0||r.values.length===0)return e;let i=r.fields.length-1,a=r.fields[i],{fieldName:o,granularity:s}=vh(a),c=Ch({displayName:o,type:this.fieldsType[o]??`char`,granularity:s},r.values[i]);if(i>t){t=i,n[t]=[];let e=n[t-1].at(-1);e&&(e.children=n[t])}t=i;let l={value:c,field:r.fields[i],children:[],type:this.fieldsType[o]||`char`,width:0};n[t].push(l)}return e}buildColumnsTree(){let e=[],t=this.columns.at(-2)||[],n={};n[0]=e;for(let e of t)for(let t=0;t<e.fields.length;t++){let r=e.fields[t],{fieldName:i,granularity:a}=vh(r),o=Ch({displayName:i,type:this.fieldsType[i]??`char`,granularity:a},e.values[t]),s={value:o,field:e.fields[t],children:[],width:e.width,type:this.fieldsType[i]||`char`};n[t]?.at(-1)?.value!==o&&(n[t+1]=[],s.children=n[t+1],n[t].push(s))}return e}export(){return{cols:this.columns,rows:this.rows,measures:this.measures,fieldsType:this.fieldsType}}sort(e,t,n){if(this.isSorted)return;let r=(e,t)=>{let r=n(e,t).value;return typeof r==`number`?r:-1/0},i=t.domain,a=Xz(this.rowTree(),[],(n,a)=>{let o=r(e,[...n,...i]),s=r(e,[...a,...i]);return t.order===`asc`?o-s:s-o});this.rowTree=_t(a),this.rows=[...this.rowTreeToRows(a),this.rows[this.rows.length-1]],this.isSorted=!0}rowTreeToRows(e,t){return e.flatMap(e=>{let n={indent:t?t.indent+1:1,fields:[...t?.fields||[],e.field],values:[...t?.values||[],e.value]};return[n,...this.rowTreeToRows(e.children,n)]})}get numberOfCells(){return this.rows.length*this.getNumberOfDataColumns()}getColumnDomainsAtDepth(e){return e<0||e>=this.columns.length-1?[]:this.columns[e].map(e=>this.getDomain(e)).filter(e=>e.length)}getRowDomainsAtDepth(e){return e<0||e>this.maxIndent?[]:this.rows.filter(t=>t.indent===e+1).map(e=>this.getDomain(e))}getPivotTableDimensions(e){let t=this.getPivotCells(e),n=0;return e.displayColumnHeaders&&(n=this.columns.length-1),e.displayMeasuresRow&&n++,{numberOfCols:Math.min(1+e.numberOfColumns,t.length),numberOfRows:Math.min(n+e.numberOfRows,t[0].length),numberOfHeaderRows:n}}getNumberOfRowGroupBys(){return Math.max(...this.rows.map(e=>e.fields.length))}};let $z={type:`EMPTY`};function eB(e,t,n){let r=t.measures.filter(e=>!e.isHidden).map(e=>e.id),i=nB(e,t.columns,0);rB(i,r.length);let a=iB(i,t),o=tB(e,0,t.rows,[],[]);o.push({fields:[],values:[],indent:0});let s={};for(let e of t.columns)s[e.fieldName]=e.type;for(let e of t.rows)s[e.fieldName]=e.type;return new Qz(a,o,r,s,n===`collapsed`?t.collapsedDomains:void 0)}function tB(e,t,n,r,i){if(t>=n.length)return[];let a=n[t],o=a.nameWithGranularity,s=aB(e,a),c=sB(s,a),l=[],u=r.concat(o);for(let e of c){let r=i.concat(e);l.push({fields:u,values:r,indent:t+1});let a=s[e];a&&l.push(...tB(a,t+1,n,u,r))}return l}function nB(e,t,n){if(n>=t.length)return[];let r=t[n],i=t[n].nameWithGranularity,a=aB(e,r);return sB(a,t[n]).map(e=>({value:a[e]?.[0]?.[r.nameWithGranularity]?.value??null,field:i,children:nB(a[e]||[],t,n+1),type:r.type,width:0}))}function rB(e,t){for(let n in e){let r=e[n];r.children.length===0?r.width=t:(rB(r.children,t),r.width=r.children.reduce((e,t)=>e+t.width,0))}}function iB(e,t){let n=t.columns.map(e=>e.nameWithGranularity),r=n.length,i=t.measures.filter(e=>!e.isHidden),a=i.length,o=Array(r).fill(0).map(()=>[]);function s(e,t,i){let a=o[t];for(let o of e){let e=i.concat([o.value]),c={fields:n.slice(0,t+1),values:e,width:o.width,offset:0};a.push(c),t<=r-1&&s(o.children,t+1,e)}}s(e,0,[]);let c=n.length>0,l=[];return c&&o[o.length-1].forEach(e=>{i.forEach(t=>{let n={fields:[...e.fields,`measure`],values:[...e.values,t.id],width:1,offset:0};l.push(n)})}),i.forEach(e=>{let t={fields:[`measure`],values:[e.id],width:1,offset:0};l.push(t)}),o.push(l),o.length===1&&o.unshift([]),o[o.length-2].push({fields:[],values:[],width:a,offset:0}),o}function aB(e,t){return Object.groupBy(e,oB(t))}function oB(e){let t=e.nameWithGranularity;return e=>`${e[t]?.value??null}`}function sB(e,t){let n=t.order,r=t.customGroups?.find(e=>e.isOtherGroup);return!n&&!r?Object.keys(e):Object.keys(e).sort((e,i)=>r&&e===r.name?1:r&&i===r.name?-1:n?cB(t,e,i):0)}function cB(e,t,n){return t===`null`?e.order===`asc`?1:-1:n===`null`?e.order===`asc`?-1:1:e.type===`integer`||e.type===`datetime`?e.order===`asc`?N(t,R)-N(n,R):N(n,R)-N(t,R):e.order===`asc`?t.localeCompare(n):n.localeCompare(t)}var lB=class{type=`SPREADSHEET`;getters;_definition;coreDefinition;metaData={fields:{},fieldKeys:[]};dataEntries=[];collapsedTable;expandedTable;invalidRangeError;needsReevaluation=!0;constructor(e,t){this.getters=t.getters,this.coreDefinition=t.definition}init(e={}){(!this._definition||e.reload)&&(this.reload(4),this.needsReevaluation=!1)}reload(e){e===4&&(this.metaData=this.loadMetaData()),e>=3&&(this._definition=this.loadRuntimeDefinition()),e>=2&&(this.dataEntries=this.loadData()),e>=1&&(this.collapsedTable=void 0,this.expandedTable=void 0)}onDefinitionChange(e){let t=this.coreDefinition;if(this.coreDefinition=e,this._definition){let n=Math.max(this.computeShouldReload(t,e),0);this.reload(n)}}computeShouldReload(e,t){return w(e.dataSet,t.dataSet)?3:4}get isInvalidRange(){return!!this.invalidRangeError}get invalidRangeMessage(){return this.invalidRangeError?.message}get definition(){if(this._definition||this.init(),!this._definition)throw Error(`Pivot definition should be defined at this point.`);return this._definition}isValid(){if(this.invalidRangeError||!this.definition)return!1;for(let e of this.definition.measures)if(!e.isValid)return!1;for(let e of this.definition.columns)if(!e.isValid)return!1;for(let e of this.definition.rows)if(!e.isValid)return!1;return!0}assertIsValid({throwOnError:e}){if(!this.isValid()){if(e)throw this.invalidRangeError?this.invalidRangeError:new j(k(`At least one measure and/or dimension is not correct.`));return{value:A.GenericError,message:this.invalidRangeError?.message??k(`At least one measure and/or dimension is not correct.`)}}}areDomainArgsFieldsValid(e){let t=e.filter((e,t)=>t%2==0).map(P);return t.length&&t.at(-1)===`measure`&&(t=t.slice(0,-1)),xh(t,this.definition)}parseArgsToPivotDomain(e){let t=[];for(let n=0;n<e.length-1;n+=2){let r=P(e[n]),i=this.getTypeOfDimension(r),a=r===`measure`?P(e[n+1]):Ch(this.getDimension(r),e[n+1]);t.push({field:r,value:a,type:i})}return t}markAsDirtyForEvaluation(){this.needsReevaluation=!0}getMeasure(e){return this.definition.getMeasure(e)}getPivotMeasureValue(e){return{value:this.getMeasure(e).displayName}}getPivotHeaderValueAndFormat(e){let t=e.at(-1);if(!t)return{value:k(`Total`)};let n=this.getDimension(t.field),r=this.filterDataEntriesFromDomain(this.dataEntries,e)[0]?.[n.nameWithGranularity];return n.type===`datetime`?Xm(n.granularity||`month`).toValueAndFormat(t.value,this.getters.getLocale()):r?r.value===null?{value:k(`(Undefined)`)}:r:{value:``}}getPivotCellValueAndFormat(e,t){let n=this.filterDataEntriesFromDomain(this.dataEntries,t);if(n.length===0)return{value:``};let r=this.getMeasure(e),i=n.map(e=>e[r.fieldName]).filter(C),a=i.filter(e=>e.type!==`empty`),o=r.aggregator,s=mh[o];if(!s)throw Error(`Aggregator ${o} does not exist`);try{let e=s([i],this.getters.getLocale());return a.length===0?{...e,value:``}:e}catch(e){return Zv(e,o.toUpperCase())}}getPossibleFieldValues(e){let t=[],n=aB(this.dataEntries,e),r=sB(n,e);for(let i of r)t.push({value:n[i]?.[0]?.[e.nameWithGranularity]?.value??``,label:n[i]?.[0]?.[e.nameWithGranularity]?.formattedValue||``});return t}getCollapsedTableStructure(){if(!this.isValid())throw Error(`Pivot is not valid !`);return this.collapsedTable||=eB(this.dataEntries,this.definition,`collapsed`),this.collapsedTable}getExpandedTableStructure(){if(!this.isValid())throw Error(`Pivot is not valid !`);return this.expandedTable||=eB(this.dataEntries,this.definition,`expanded`),this.expandedTable}getFields(){return this.metaData.fields}get fields(){return this.getFields()}loadMetaData(){if(this.invalidRangeError=void 0,this.coreDefinition.dataSet){let{zone:e,sheetId:t}=this.coreDefinition.dataSet,n=this.getters.getRangeFromZone(t,e);try{let e=this.extractFieldsFromRange(n),t=Ph(this.coreDefinition,e.fields);return{...e,fields:{...e.fields,...t}}}catch(e){return this.invalidRangeError=e,{fields:{},fieldKeys:[]}}}else return this.invalidRangeError=new j(k(`The pivot cannot be created because the dataset is missing.`)),{fields:{},fieldKeys:[]}}loadRuntimeDefinition(){return new Mz(this.coreDefinition,this.fields,this.getters)}loadData(){let e=this._definition?.range;return this.isValid()&&e?this.extractDataEntriesFromRange(e):[]}getTypeOfDimension(e){if(e===`measure`)return`char`;let{fieldName:t}=vh(e),n=this.fields[t]?.type;if(!n)throw Error(`Field ${t} does not exist`);return n}filterDataEntriesFromDomain(e,t){return t.reduce((e,t)=>this.filterDataEntriesFromDomainNode(e,t),e)}filterDataEntriesFromDomainNode(e,t){let{field:n,value:r,type:i}=t,{nameWithGranularity:a}=this.getDimension(n);return e.filter(e=>{let t=e[a]?.value;return i===`char`?String(t)===String(r):t===r})}getDimension(e){return this.definition.getDimension(e)}getTypeFromZone(e,t){let n=this.getters.getEvaluatedCellsInZone(e,t).filter(e=>!(e.type===`empty`||e.value===``));return n.length===0?`integer`:n.every(e=>e.type===`number`&&e.format&&os(e.format))?`datetime`:n.every(e=>e.type===`boolean`)?`boolean`:n.every(e=>e.type===`number`)?`integer`:`char`}assertCellIsValidField(e,t,n){if(n.type===`error`)throw new j(k(`The pivot cannot be created because cell %s contains an error`,T(e,t)));if(n.type===`empty`||n.value===``)throw new j(k(`The pivot cannot be created because cell %s is empty`,T(e,t)));if(n.value===`__count`)throw new j(k(`The pivot cannot be created because cell %s contains a reserved value`,T(e,t)))}extractFieldsFromRange(e){let t={},n=[],r=e.sheetId,i=e.zone.top;for(let a=e.zone.left;a<=e.zone.right;a++){let o=this.getters.getEvaluatedCell({sheetId:r,col:a,row:i});this.assertCellIsValidField(a,i,o);let s=o.value?.toString();if(s){let i=this.getTypeFromZone(r,{top:e.zone.top+1,left:a,bottom:e.zone.bottom,right:a}),o=Nh(s,t);t[o]={name:o,type:i,string:o,aggregator:i===`integer`?`sum`:`count`},n.push(o)}}return{fields:t,fieldKeys:n}}extractDataEntriesFromRange(e){let t=[];for(let n=e.zone.top+1;n<=e.zone.bottom;n++){let r={top:n,bottom:n,left:e.zone.left,right:e.zone.right},i=this.getters.getEvaluatedCellsInZone(e.sheetId,r),a={};for(let e in i){let t=i[e],n=this.fields[this.metaData.fieldKeys[e]];if(!n)throw Error(`Field ${this.metaData.fieldKeys[e]} does not exist`);t.value===``?a[n.name]={value:null,type:`empty`,formattedValue:``}:a[n.name]=t}for(let e in this.definition.customFields||{}){let t=this.definition.customFields?.[e];if(!t)continue;let n=a[t.parentField],r=this.fields[t.parentField];if(!n||!r){a[e]={value:null,type:`empty`,formattedValue:``};continue}let i=t.groups.find(e=>e.values.some(e=>e===n?.value))||t.groups.find(e=>e.isOtherGroup);a[e]={...n,value:i?i.name:n.value}}a.__count={value:1,type:`number`,formattedValue:`1`},t.push(a)}let n=this.definition.columns.concat(this.definition.rows).filter(e=>e.type===`datetime`);if(n.length){let e=this.getters.getLocale();for(let r of t)for(let t of n){let n=Hh(t,r[t.fieldName]?.value||null,this.getters.getLocale()),{format:i,value:a}=Xm(t.granularity||`month`).toValueAndFormat(n,e);r[t.nameWithGranularity]={value:n,type:r[t.fieldName]?.type||`empty`,format:r[t.fieldName]?.format,formattedValue:z(a,{locale:e,format:i})}}}return t}};let uB=new B,dB=[`year`,`quarter_number`,`month_number`,`month`,`iso_week_number`,`day_of_month`,`day`,`day_of_week`],fB=[...dB,`hour_number`,`minute_number`,`second_number`];uB.add(`SPREADSHEET`,{ui:lB,definition:Mz,dateGranularities:[...dB],isMeasureCandidate:e=>e.type!==`boolean`,datetimeGranularities:[...fB],isGroupable:()=>!0,canHaveCustomGroup:e=>e.type===`char`&&!e.isCustomField,isPivotUnused:()=>!0,adaptRanges:(e,t,n)=>{if(t.type!==`SPREADSHEET`||!t.dataSet)return t;let{sheetId:r,zone:i}=t.dataSet,a=e.getRangeFromZone(r,i),o=pB(a,n);if(o===a)return t;let s=o&&{sheetId:o.sheetId,zone:o.zone};return{...t,dataSet:s}}});function pB(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}let mB=[`PIVOT.VALUE`,`PIVOT.HEADER`,`PIVOT`];function hB(e,t){return e.getFunctionsFromTokens(mB,t)[0]}function gB(e,t){return e.getFunctionsFromTokens(mB,t)}function _B(e,t){return e.getFunctionsFromTokens(mB,t).length}function vB(e,t){let n=`"${t?`${e.name}:${t}`:e.name}"`,r=e.string===e.name?n:e.string+n;return{text:n,description:e.string+(e.help?` (${e.help})`:``),htmlContent:[{value:n,color:We.STRING}],fuzzySearchKey:r}}function yB(e){let t=`"${e.id}"`,n=e.displayName+e.fieldName+t;return{text:t,description:e.displayName,htmlContent:[{value:t,color:We.STRING}],fuzzySearchKey:n}}function bB(e,t){let n=e.end,r=e.end;e.type!==`ARG_SEPARATOR`&&(n=e.start),this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}function xB(e,t){let n=e.end,r=e.end;e.type!==`LEFT_PAREN`&&(n=e.start),this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}function SB(e){let t=e.functionContext?.args[0];if(!(!t||![`STRING`,`NUMBER`].includes(t.type)))return t.value}var CB=class extends yr{pivotId;updateMode;mutators=[`reset`,`deferUpdates`,`applyUpdate`,`discardPendingUpdate`,`update`];_updatesAreDeferred;draft=null;notification=this.get(DN);alreadyNotified=!1;alreadyNotifiedForPivotSize=!1;constructor(e,t,n=`canDefer`){super(e),this.pivotId=t,this.updateMode=n,this._updatesAreDeferred=this.getters.getPivotCoreDefinition(this.pivotId).deferUpdates??!1}handle(e){switch(e.type){case`UPDATE_PIVOT`:e.pivotId===this.pivotId&&this.getters.getPivot(this.pivotId).init()}}get updatesAreDeferred(){return this.updateMode===`neverDefer`?!1:this._updatesAreDeferred}get fields(){return this.pivot.getFields()}get pivot(){return this.getters.getPivot(this.pivotId)}get definition(){let e=uB.get(this.pivot.type).definition;return this.draft?new e(this.draft,this.fields,this.getters):this.pivot.definition}get isDirty(){return!!this.draft}get measureFields(){let e=[{name:`__count`,string:k(`Count`),type:`integer`,aggregator:`sum`}],t=this.fields;for(let n in t){let r=t[n];r&&uB.get(this.pivot.type).isMeasureCandidate(r)&&e.push(r)}return e.sort((e,t)=>e.string.localeCompare(t.string))}get unusedGroupableFields(){let e=[],t=this.fields;for(let n in t){let r=t[n];r&&uB.get(this.pivot.type).isGroupable(r)&&e.push(r)}let{columns:n,rows:r,measures:i}=this.definition,a=i.concat(r).concat(n).map(e=>e.fieldName),o=this.unusedGranularities;return e.filter(e=>yh(e)?!a.includes(e.name)||o[e.name].size>0:!a.includes(e.name)).sort((e,t)=>e.string.localeCompare(t.string))}get datetimeGranularities(){return uB.get(this.pivot.type).datetimeGranularities}get dateGranularities(){return uB.get(this.pivot.type).dateGranularities}get unusedGranularities(){return this.getUnusedGranularities(this.fields,this.draft??this.getters.getPivotCoreDefinition(this.pivotId))}reset(e){this.pivotId=e,this._updatesAreDeferred=!0,this.draft=null}deferUpdates(e){e===!1&&this.draft?(this.draft.deferUpdates=!1,this.applyUpdate()):this.update({deferUpdates:e}),this._updatesAreDeferred=e}applyUpdate(){if(this.draft){if(this.model.dispatch(`UPDATE_PIVOT`,{pivotId:this.pivotId,pivot:this.draft}),this.draft=null,!this.alreadyNotified&&this.isUpdatedPivotVisibleInViewportOnlyAsStaticPivot()){let e=`=PIVOT(${this.getters.getPivotFormulaId(this.pivotId)})`;this.alreadyNotified=!0,this.notification.notifyUser({type:`info`,text:k(`Pivot updates only work with dynamic pivot tables. Use the formula '%s' or re-insert the static pivot from the Data menu.`,e),sticky:!0})}let e=this.getters.getPivot(this.pivotId),t=e.isValid()?e.getExpandedTableStructure().numberOfCells:0;!this.alreadyNotifiedForPivotSize&&t>5e5&&(this.alreadyNotifiedForPivotSize=!0,this.notification.notifyUser({type:`warning`,text:lm(t,this.getters.getLocale()),sticky:!0}))}}discardPendingUpdate(){this.draft=null}update(e){let t=this.getters.getPivotCoreDefinition(this.pivotId),n={...t,...this.draft,...e},r={...n,columns:n.columns.map(e=>({fieldName:e.fieldName,order:e.order,granularity:e.granularity})),rows:n.rows.map(e=>({fieldName:e.fieldName,order:e.order,granularity:e.granularity})),measures:n.measures.map(e=>({id:e.id,fieldName:e.fieldName,aggregator:e.aggregator,userDefinedName:e.userDefinedName,computedBy:e.computedBy,isHidden:e.isHidden,format:e.format,display:e.display})),sortedColumn:this.shouldKeepSortedColumn(n)?n.sortedColumn:void 0};if(r.collapsedDomains){let{COL:e,ROW:t}=r.collapsedDomains;r.collapsedDomains={COL:e.filter(e=>this.areDomainFieldsValid(e,r.columns)),ROW:t.filter(e=>this.areDomainFieldsValid(e,r.rows))}}if(!this.draft&&w(t,r))return;let i=this.addDefaultDateTimeGranularity(this.fields,r);this.draft=i,this.updatesAreDeferred||this.applyUpdate()}isUpdatedPivotVisibleInViewportOnlyAsStaticPivot(){let e=0,t=this.getters.getPivotFormulaId(this.pivotId);for(let n of this.getters.getVisibleCellPositions()){let r=this.getters.getCell(n);if(r?.isFormula){let n=hB(r.compiledFormula,this.getters),i=n?.args[0]?.value;if(n&&t===i.toString()){if(n.functionName===`PIVOT`)return!1;e++}}}return e>0}addDefaultDateTimeGranularity(e,t){let{columns:n,rows:r}=t,i=b(n),a=b(r),o=this.getUnusedGranularities(e,t);for(let t of i.concat(a)){let n=e[t.fieldName]?.type;if((n===`date`||n===`datetime`)&&!t.granularity){let e=o[t.fieldName]?.values().next().value;o[t.fieldName]?.delete(e),t.granularity=e}}return{...t,columns:i,rows:a}}getUnusedGranularities(e,t){let{columns:n,rows:r,measures:i}=t,a=n.concat(r).concat(i).filter(t=>{let n=e[t.fieldName]?.type;return n===`date`||n===`datetime`}),o={};for(let t of a)o[t.fieldName]=new Set(e[t.fieldName]?.type===`date`?this.dateGranularities:this.datetimeGranularities);for(let e of a)o[e.fieldName].delete(e.granularity);return o}shouldKeepSortedColumn(e){let{sortedColumn:t}=e;if(!t)return!0;let n=this.getters.getPivotCoreDefinition(this.pivotId);return e.measures.find(e=>e.id===t.measure)&&w(n.columns,e.columns)}areDomainFieldsValid(e,t){let n=t.map(({fieldName:e,granularity:t})=>e+(t?`:${t}`:``));for(let t=0;t<e.length;t++)if(e[t].field!==n[t])return!1;return!0}},wB=class extends t.Component{static template=`o-spreadsheet-PivotSpreadsheetSidePanel`;static props={pivotId:String,onCloseSidePanel:Function};static components={PivotLayoutConfigurator:kz,Section:Q,SelectionInput:YN,Checkbox:eP,PivotDeferUpdate:nz,PivotTitleSection:Az};store;state;pivotSidePanelRef=(0,t.useRef)(`pivotSidePanel`);setup(){this.store=ur(CB,this.props.pivotId),this.state=(0,t.useState)({range:void 0,rangeHasChanged:!1})}get shouldDisplayInvalidRangeError(){return this.store.isDirty&&this.state.rangeHasChanged?!1:this.pivot.isInvalidRange}get ranges(){return this.state.range?[this.state.range]:this.definition.range?[this.env.model.getters.getRangeString(this.definition.range,`forceSheetReference`)]:[]}get pivot(){return this.store.pivot}get definition(){return this.store.definition}getScrollableContainerEl(){return this.pivotSidePanelRef.el}onSelectionChanged(e){this.state.rangeHasChanged=!0,this.state.range=e[0]}onSelectionConfirmed(){if(this.state.range){let e=this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(),this.state.range);if(e.invalidSheetName||e.invalidXc)return;let t={sheetId:e.sheetId,zone:e.zone};this.store.update({dataSet:t}),this.store.applyUpdate()}}flipAxis(){let{rows:e,columns:t}=this.definition;this.onDimensionsUpdated({rows:t,columns:e})}onDimensionsUpdated(e){this.store.update(e)}};let TB=new B;TB.add(`SPREADSHEET`,{editor:wB});let EB=e=>({category:`light`,templateName:`pivotLightWithLightBorders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{bold:!0},border:{top:{color:e.highlight,style:`thin`},bottom:{color:e.highlight,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:e.highlight}},totalRow:{border:{top:{color:e.highlight,style:`thin`},bottom:{color:e.highlight,style:`thin`}},style:{bold:!0,fillColor:`#FFFFFF`}},firstRowStripe:{style:{fillColor:e.light},border:{bottom:{color:e.medium,style:`thin`},top:{color:e.medium,style:`thin`},vertical:{color:e.medium,style:`thin`}}},secondColumnStripe:{style:{fillColor:e.light},border:{left:{color:e.medium,style:`thin`},right:{color:e.medium,style:`thin`},horizontal:{color:e.medium,style:`thin`}}}}),DB=e=>({category:`light`,templateName:`pivotLightWithMediumBorders`,primaryColor:e.highlight,wholeTable:{style:{textColor:e.coloredText,hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},firstColumn:{border:{right:{color:e.highlight,style:`thin`}}},headerRow:{style:{bold:!0,textColor:`#000000`},border:{top:{color:e.highlight,style:`medium`},bottom:{color:e.highlight,style:`medium`},left:{color:e.highlight,style:`medium`},right:{color:e.highlight,style:`medium`}}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,textColor:`#000000`,fillColor:e.light}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:`#000000`}},totalRow:{border:{top:{color:e.highlight,style:`medium`},bottom:{color:e.highlight,style:`medium`},left:{color:e.highlight,style:`medium`},right:{color:e.highlight,style:`medium`}},style:{bold:!0,textColor:`#000000`}},firstRowStripe:{border:{bottom:{color:e.highlight,style:`thin`},top:{color:e.highlight,style:`thin`}}},secondRowStripe:{border:{bottom:{color:e.highlight,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}},secondColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}}}),OB=e=>({category:`light`,templateName:`PivotLightWithGrayBands`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0}},headerRow:{style:{bold:!0,fillColor:e.light},border:{horizontal:{color:e.light,style:`thin`},vertical:{color:e.light,style:`thin`},bottom:{color:e.mediumBorder,style:`thin`}}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0},border:{bottom:{color:e.mediumBorder,style:`thin`}}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{border:{top:{color:e.mediumBorder,style:`medium`}},style:{bold:!0,fillColor:e.light}},firstRowStripe:{style:{fillColor:K.black.light}},secondColumnStripe:{style:{fillColor:K.black.light},border:{left:{color:K.black.medium,style:`thin`},right:{color:K.black.medium,style:`thin`}}}}),kB=e=>({category:`light`,templateName:`pivotLightWithColoredText`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,textColor:e.coloredText},border:{vertical:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`},bottom:{color:e.mediumBorder,style:`thin`},left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}},headerRow:{border:{bottom:{color:e.mediumBorder,style:`thin`},vertical:{color:e.mediumBorder,style:`thin`}}},totalRow:{border:{top:{color:e.mediumBorder,style:`thin`}}},firstRowStripe:{style:{fillColor:e.light},border:{top:{color:K.black.medium,style:`thin`},bottom:{color:K.black.medium,style:`thin`}}},secondColumnStripe:{style:{fillColor:e.light}}}),AB=e=>({category:`medium`,templateName:`pivotMediumHeavyColors`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{fillColor:e.highlight,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{fillColor:e.mediumBorder,textColor:`#FFFFFF`}},firstAlternatingSubHeaderRow:{style:{fillColor:e.light},border:{bottom:{color:e.highlight,style:`thin`}}},totalRow:{border:{top:{color:e.highlight,style:`medium`}},style:{bold:!0}},firstRowStripe:{border:{bottom:{color:e.highlight,style:`thin`},top:{color:e.highlight,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}}}),jB=e=>({category:`medium`,templateName:`pivotMediumLightColors`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{top:{color:e.dark,style:`medium`},bottom:{color:e.dark,style:`medium`}}},headerRow:{style:{fillColor:e.highlight,textColor:`#FFFFFF`,bold:!0}},measureHeader:{border:{top:{color:e.mediumBorder,style:`thin`}}},mainSubHeaderRow:{style:{fillColor:e.light,bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{border:{top:{color:e.dark,style:`thin`}},style:{bold:!0}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),MB=e=>({category:`medium`,templateName:`pivotMediumBlackHeaders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light},border:{vertical:{color:e.mediumBorder,style:`thin`}}},headerRow:{style:{fillColor:`#000000`,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:`#808080`}},secondAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{fillColor:`#000000`,textColor:`#FFFFFF`},border:{vertical:null}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}}}),NB=e=>({category:`medium`,templateName:`pivotMediumBlackHeaders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light,textColor:e.coloredText},border:{vertical:{color:`#FFFFFF`,style:`thin`}}},headerRow:{style:{bold:!0},border:{vertical:{color:`#FFFFFF`,style:`thin`},bottom:{color:`#FFFFFF`,style:`thin`}}},firstColumn:{style:{fillColor:e.medium}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,textColor:`#000000`}},firstAlternatingSubHeaderRow:{style:{bold:!0}},secondAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0}},firstRowStripe:{style:{fillColor:e.medium}},firstColumnStripe:{style:{fillColor:e.medium}}}),PB=e=>({category:`dark`,templateName:`pivotDarkWithDarkHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.medium},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{bold:!0,fillColor:e.dark,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.light}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:e.dark,textColor:`#FFFFFF`}},secondRowStripe:{style:{fillColor:e.mediumBorder}},firstColumnStripe:{border:{left:{color:e.light,style:`thin`},right:{color:e.light,style:`thin`}}}}),FB=e=>({category:`dark`,templateName:`pivotDarkWithGrayHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light}},headerRow:{style:{bold:!0,fillColor:K.black.dark,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`medium`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.medium}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:K.black.dark,textColor:`#FFFFFF`}},firstRowStripe:{border:{bottom:{color:e.medium,style:`thin`},top:{color:e.medium,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),IB=e=>({category:`dark`,templateName:`pivotDarkWithBlackHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.highlight,textColor:`#FFFFFF`}},headerRow:{style:{bold:!0,fillColor:`#000000`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.dark}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:`#000000`}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),LB=e=>({category:`dark`,templateName:`pivotDarkWithFirstColumn`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.highlight,textColor:`#FFFFFF`},border:{vertical:{color:`#FFFFFF`,style:`thin`}}},headerRow:{style:{fillColor:e.dark},border:{bottom:{color:`#FFFFFF`,style:`medium`}}},firstColumn:{style:{fillColor:e.dark}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:e.dark},border:{top:{color:`#FFFFFF`,style:`medium`}}},secondRowStripe:{style:{fillColor:e.mediumBorder}},firstColumnStripe:{style:{fillColor:e.mediumBorder}}}),RB={None:{category:`light`,templateName:`none`,primaryColor:``,displayName:k(`None`)}},zB=[K.black,K.lightBlue,K.red,K.lightGreen,K.purple,K.gray,K.orange];function BB(e,t){let n=1;for(let r of t)for(let t of zB){let i=e+n++;RB[i]={...r(t),displayName:VB(t.name,e,n-1)}}}function VB(e,t,n){let r=``;return t.includes(`Light`)?r=UA.light:t.includes(`Medium`)?r=UA.medium:t.includes(`Dark`)&&(r=UA.dark),`${r} ${e} ${n}`}BB(`PivotTableStyleLight`,[EB,DB,OB,kB]),BB(`PivotTableStyleMedium`,[AB,jB,MB,NB]),BB(`PivotTableStyleDark`,[PB,FB,IB,LB]),RB.PivotTableStyleDark1={...RB.PivotTableStyleDark1,...PB({...K.black,mediumBorder:Kr(K.black.medium,.1)})},RB.PivotTableStyleDark15={...RB.PivotTableStyleDark15,...IB({...K.black,highlight:K.gray.dark,mediumBorder:K.black.medium})},RB.PivotTableStyleDark22={...RB.PivotTableStyleDark22,...LB({...K.black,highlight:K.gray.dark,mediumBorder:K.black.medium})};function HB(e){let t=RB[e];return t&&Object.keys(rj).find(e=>{let n=rj[e];return n.category===t.category&&n.primaryColor===t.primaryColor})||`None`}let UB=[`wholeTable`,`firstColumnStripe`,`secondColumnStripe`,`firstRowStripe`,`secondRowStripe`,`firstColumn`,`lastColumn`,`headerRow`,`measureHeader`,`firstAlternatingSubHeaderRow`,`secondAlternatingSubHeaderRow`,`mainSubHeaderRow`,`totalRow`];function WB(e,t){let n=t.numberOfHeaders,r={...e,top:e.top+n};return r.top<=r.bottom?r:void 0}function GB(e){let t=e.range;return{row:t.zone.top,col:t.zone.left,sheetId:t.sheetId}}function KB(e,t,n,r){let i=t.zone;if(i.left!==i.right)throw Error(`Can only define a filter on a single column`);let a={...i,top:i.top+n.numberOfHeaders},o=r(t.sheetId,a);return{id:e,rangeWithHeaders:t,col:i.left,filteredRange:a.top>a.bottom?void 0:o}}function qB(e){return e.type===`static`||e.type===`forceStatic`}function JB(e,t,n){return{borders:YB(e,t,n),styles:ZB(e,t,n)}}function YB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=Ja(r,i,()=>({}));for(let o of UB){let s=t[o]?.border;if(!s)continue;let c=QB(o,e,n);for(let t of c)for(let n=t.left;n<=t.right;n++)for(let c=t.top;c<=t.bottom;c++){let l=o===`wholeTable`&&c<=e.numberOfHeaders-1;c===t.top&&s?.top!==void 0?XB(a,`top`,s.top,n,c,r,i):c!==t.top&&!l&&s?.horizontal!==void 0&&XB(a,`top`,s.horizontal,n,c,r,i),c===t.bottom&&s?.bottom!==void 0&&XB(a,`bottom`,s.bottom,n,c,r,i),n===t.left&&s?.left!==void 0&&XB(a,`left`,s.left,n,c,r,i),n===t.right&&s?.right!==void 0?XB(a,`right`,s.right,n,c,r,i):n!==t.right&&!l&&s?.vertical!==void 0&&XB(a,`right`,s.vertical,n,c,r,i)}}return a}function XB(e,t,n,r,i,a,o){switch(t){case`top`:e[r][i].top=n??void 0,i!==0&&(e[r][i-1].bottom=n??void 0);return;case`bottom`:e[r][i].bottom=n??void 0,i!==o-1&&(e[r][i+1].top=n??void 0);return;case`left`:e[r][i].left=n??void 0,r!==0&&(e[r-1][i].right=n??void 0);return;case`right`:e[r][i].right=n??void 0,r!==a-1&&(e[r+1][i].left=n??void 0);return}}function ZB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=Ja(r,i,()=>({}));for(let r of UB){let i=t[r];if(!i)continue;let o=QB(r,e,n);for(let e of o)for(let t=e.left;t<=e.right;t++)for(let n=e.top;n<=e.bottom;n++)a[t][n]||(a[t][n]={}),a[t][n]={...a[t][n],...i?.style}}return a}function QB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=[],o=Math.min(t.numberOfHeaders,i),s=+!!t.totalRow,c=r-1,l=i-1;switch(e){case`wholeTable`:a.push({top:0,left:0,bottom:l,right:c});break;case`firstColumn`:if(!t.firstColumn)break;a.push({top:0,left:0,bottom:l,right:0});break;case`lastColumn`:if(!t.lastColumn)break;a.push({top:0,left:c,bottom:l,right:c});break;case`headerRow`:if(!t.numberOfHeaders)break;a.push({top:0,left:0,bottom:o-1,right:c});break;case`totalRow`:if(!t.totalRow)break;a.push({top:l,left:0,bottom:l,right:c});break;case`firstRowStripe`:if(!t.bandedRows)break;for(let e=o;e<i-s;e+=2)a.push({top:e,left:0,bottom:e,right:c});break;case`secondRowStripe`:if(!t.bandedRows)break;for(let e=o+1;e<i-s;e+=2)a.push({top:e,left:0,bottom:e,right:c});break;case`firstColumnStripe`:{if(!t.bandedColumns)break;let e=n.mode===`pivot`?l:l-s;for(let t=0;t<r;t+=2)a.push({top:o,left:t,bottom:e,right:t});break}case`secondColumnStripe`:{if(!t.bandedColumns)break;let e=n.mode===`pivot`?l:l-s;for(let t=1;t<r;t+=2)a.push({top:o,left:t,bottom:e,right:t});break}case`mainSubHeaderRow`:for(let e of n.mainSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`firstAlternatingSubHeaderRow`:for(let e of n.firstAlternatingSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`secondAlternatingSubHeaderRow`:for(let e of n.secondAlternatingSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`measureHeader`:if(n.measureRow!==void 0&&n.numberOfCols>1){let e=n.measureRow;a.push({top:e,bottom:e,left:1,right:n.numberOfCols-1})}break}return a}function $B(e,t){return e.model.getters.isTableStyleEditable(t)?p([{id:`editTableStyle`,name:k(`Edit table style`),execute:e=>e.openSidePanel(`TableStyleEditorPanel`,{styleId:t}),isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.EDIT`},{id:`deleteTableStyle`,name:k(`Delete table style`),execute:e=>e.model.dispatch(`REMOVE_TABLE_STYLE`,{tableStyleId:t}),icon:`o-spreadsheet-Icon.TRASH`}]):[]}function eV(e,t,n){e.resetTransform(),tV(e,t,n),nV(e,t,n),rV(e,t,n)}function tV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save();for(let n=0;n<a;n++)for(let s=0;s<o;s++){e.fillStyle=t.styles[n][s].fillColor||`#fff`;let c=n===a-1?r+1:r,l=s===o-1?i+1:i;e.fillRect(n*r,s*i,c,l)}e.restore()}function nV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save(),e.translate(0,.5),e.lineWidth=1;for(let n=0;n<a;n++)for(let a=0;a<o;a++){let o=t.borders[n][a];o.top&&(e.strokeStyle=o.top.color,e.beginPath(),e.moveTo(n*r,a*i),e.lineTo(n*r+r,a*i),e.stroke()),o.bottom&&(e.strokeStyle=o.bottom.color,e.beginPath(),e.moveTo(n*r,a*i+i),e.lineTo(n*r+r,a*i+i),e.stroke())}e.resetTransform(),e.translate(.5,0);for(let n=0;n<a;n++)for(let a=0;a<o;a++){let o=t.borders[n][a];o.left&&(e.strokeStyle=o.left.color,e.beginPath(),e.moveTo(n*r,a*i),e.lineTo(n*r,a*i+i),e.stroke()),o.right&&(e.strokeStyle=o.right.color,e.beginPath(),e.moveTo(n*r+r,a*i),e.lineTo(n*r+r,a*i+i+1),e.stroke())}e.restore()}function rV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save(),e.translate(0,.5),e.lineWidth=1;let s=Math.floor(r/4),c=Math.floor(i/2);for(let n=0;n<a;n++)for(let a=0;a<o;a++)e.strokeStyle=t.styles[n][a].textColor||`#000`,e.beginPath(),e.moveTo(n*r+s+1,a*i+c),e.lineTo(n*r+r-s,a*i+c),e.stroke();e.restore()}var iV=class extends t.Component{static template=`o-spreadsheet-TableStylePreview`;static components={MenuPopover:Nv};static props={tableConfig:Object,tableStyle:Object,type:String,styleId:{type:String,optional:!0},selected:{type:Boolean,optional:!0},onClick:{type:Function,optional:!0}};canvasRef=(0,t.useRef)(`canvas`);menu=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]});setup(){(0,t.onWillUpdateProps)(e=>{(!w(this.props.tableConfig,e.tableConfig)||!w(this.props.tableStyle,e.tableStyle))&&this.drawTable(e)});let e=new ResizeObserver(()=>{this.drawTable(this.props)});(0,t.useEffect)(()=>(e.observe(this.canvasRef.el),()=>{e.disconnect()}),()=>[this.canvasRef.el])}drawTable(e){let t=this.canvasRef.el.getContext(`2d`),{width:n,height:r}=this.canvasRef.el.getBoundingClientRect();if(!n||!r)return;this.canvasRef.el.width=n,this.canvasRef.el.height=r;let i;i=e.type===`table`?{mode:`table`,numberOfCols:5,numberOfRows:5}:{mode:`pivot`,numberOfCols:5,numberOfRows:8,mainSubHeaderRows:new Set([e.tableConfig.numberOfHeaders,e.tableConfig.numberOfHeaders+3])},eV(t,JB(e.tableConfig,e.tableStyle,i),{...i,colWidth:(n-1)/i.numberOfCols,rowHeight:(r-1)/i.numberOfRows})}onContextMenu(e){this.props.styleId&&(this.menu.menuItems=$B(this.env,this.props.styleId),this.menu.isOpen=!0,this.menu.anchorRect={x:e.clientX,y:e.clientY,width:0,height:0})}closeMenu(){this.menu.isOpen=!1,this.menu.anchorRect=null,this.menu.menuItems=[]}get styleName(){return this.props.styleId?this.props.tableStyle.displayName:``}get isStyleEditable(){return this.props.styleId?this.env.model.getters.isTableStyleEditable(this.props.styleId):!1}editTableStyle(){this.env.openSidePanel(`TableStyleEditorPanel`,{styleId:this.props.styleId})}},aV=class extends t.Component{static template=`o-spreadsheet-TableStylesPopover`;static components={Popover:kv,TableStylePreview:iV};static props={tableConfig:Object,popoverProps:{type:Object,optional:!0},closePopover:Function,onStylePicked:Function,selectedStyleId:{type:String,optional:!0},tableStyles:Object,type:String};tableStyleListRef=(0,t.useRef)(`tableStyleList`);state=(0,t.useState)({selectedCategory:this.initialSelectedCategory});setup(){(0,t.useExternalListener)(window,`click`,this.onExternalClick,{capture:!0})}onExternalClick(e){this.tableStyleListRef.el&&!np(this.tableStyleListRef.el,e)&&(this.props.closePopover(),e.hasClosedTableStylesPopover=!0)}get displayedStyles(){let e=this.props.tableStyles;return Object.keys(e).filter(t=>e[t].category===this.state.selectedCategory)}get initialSelectedCategory(){return this.props.selectedStyleId?this.props.tableStyles[this.props.selectedStyleId].category:`medium`}get categories(){return this.props.type===`table`?{...UA,custom:k(`Custom`)}:UA}newTableStyle(){this.props.closePopover(),this.env.openSidePanel(`TableStyleEditorPanel`,{onStylePicked:this.props.onStylePicked})}},oV=class extends t.Component{static template=`o-spreadsheet-TableStylePicker`;static components={TableStylesPopover:aV,TableStylePreview:iV};static props={tableConfig:Object,onStylePicked:Function,tableStyles:Object,type:String};state=(0,t.useState)({popoverProps:void 0});getDisplayedTableStyles(){let e=this.props.tableStyles,t=e[this.props.tableConfig.styleId].category,n=Object.keys(e).filter(n=>e[n].category===t),r=n.indexOf(this.props.tableConfig.styleId);if(r===-1)return n;let i=Math.floor(r/4)*4;return n.slice(i)}onStylePicked(e){this.props.onStylePicked(e),this.closePopover()}onArrowButtonClick(e){if(e.hasClosedTableStylesPopover||this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0}}closePopover(){this.state.popoverProps=void 0}},sV=class extends t.Component{static template=`o-spreadsheet-PivotDesignPanel`;static props={pivotId:String};static components={Section:Q,Checkbox:eP,NumberInput:RI,TableStylePicker:oV};store;setup(){this.store=ur(CB,this.props.pivotId,`neverDefer`)}updatePivotStyleNumberProperty(e,t){let n=parseInt(e);this.store.update({style:{...this.pivotStyle,[t]:isNaN(n)?void 0:n}})}updatePivotStyleProperty(e,t){this.store.update({style:{...this.pivotStyle,[e]:t}})}get pivotStyle(){return this.env.model.getters.getPivotCoreDefinition(this.props.pivotId).style||{}}get defaultStyle(){return lh}get tableConfig(){let e=(this.pivotStyle.displayMeasuresRow??lh.displayMeasuresRow)||(this.pivotStyle.displayColumnHeaders??lh.displayColumnHeaders);return{hasFilters:!1,totalRow:this.pivotStyle.displayTotals??lh.displayTotals,firstColumn:!0,lastColumn:!1,styleId:this.pivotStyle.tableStyleId??lh.tableStyleId,bandedRows:this.pivotStyle.bandedRows??lh.bandedRows,bandedColumns:this.pivotStyle.bandedColumns??lh.bandedColumns,numberOfHeaders:+!!e}}onStylePicked(e){this.updatePivotStyleProperty(`tableStyleId`,e)}get tableStyles(){return RB}},cV=class extends t.Component{static template=`o-spreadsheet-PivotSidePanel`;static props={pivotId:String,onCloseSidePanel:Function,openTab:{type:String,optional:!0}};static defaultProps={openTab:`configuration`};static components={PivotLayoutConfigurator:kz,Section:Q,PivotDesignPanel:sV};state=(0,t.useState)({panel:this.props.openTab||`configuration`});setup(){NL(this),(0,t.onWillUpdateProps)(e=>{e.openTab&&e.openTab!==this.props.openTab&&this.switchPanel(e.openTab)})}get sidePanelEditor(){let e=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);if(!e)throw Error(`pivotId does not correspond to a pivot.`);return TB.get(e.type).editor}get highlights(){return this.state.panel===`configuration`?ez(this.env.model.getters,this.props.pivotId):[]}switchPanel(e){this.state.panel=e}},lV=class extends t.Component{static template=`o-spreadsheet-RemoveDuplicatesPanel`;static components={ValidationMessages:EI,Section:Q,Checkbox:eP};static props={onCloseSidePanel:Function};state=(0,t.useState)({hasHeader:!1,columns:{}});setup(){this.updateColumns(),(0,t.onWillUpdateProps)(()=>this.updateColumns())}toggleHasHeader(){this.state.hasHeader=!this.state.hasHeader}toggleAllColumns(){let e=!this.isEveryColumnSelected;for(let t in this.state.columns)this.state.columns[t]=e}toggleColumn(e){this.state.columns[e]=!this.state.columns[e]}onRemoveDuplicates(){this.env.model.dispatch(`REMOVE_DUPLICATES`,{hasHeader:this.state.hasHeader,columns:this.getColsToAnalyze()})}getColLabel(e){let t=parseInt(e),n=k(`Column %s`,Kt(t));if(this.state.hasHeader){let e=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getSelectedZone().top,i=this.env.model.getters.getEvaluatedCell({sheetId:e,col:t,row:r});i.type!==`empty`&&(n+=` - ${i.value}`)}return n}get isEveryColumnSelected(){return Object.values(this.state.columns).every(e=>e)}get errorMessages(){let e=this.env.model.canDispatch(`REMOVE_DUPLICATES`,{hasHeader:this.state.hasHeader,columns:this.getColsToAnalyze()}).reasons,t=new Set;for(let n of e)t.add(om.Errors[n]||om.Errors.Unexpected);return Array.from(t)}get selectionStatisticalInformation(){let e=Mn(this.env.model.getters.getSelectedZone());return k(`%(row_count)s rows and %(column_count)s columns selected`,{row_count:e.numberOfRows,column_count:e.numberOfCols})}get canConfirm(){return this.errorMessages.length===0}updateColumns(){let e=this.env.model.getters.getSelectedZone(),t=this.state.columns,n={};for(let r=e.left;r<=e.right;r++)n[r]=r in t?t[r]:!0;this.state.columns=n}getColsToAnalyze(){return Object.keys(this.state.columns).filter(e=>this.state.columns[e]).map(e=>parseInt(e))}},uV=class extends t.Component{static template=`o-spreadsheet-SettingsPanel`;static components={Section:Q,ValidationMessages:EI,BadgeSelection:jI,Select:EM};static props={onCloseSidePanel:Function};loadedLocales=[];setup(){(0,t.onWillStart)(()=>this.loadLocales())}onLocaleChange(e){let t=this.loadedLocales.find(t=>t.code===e);t&&this.env.model.dispatch(`UPDATE_LOCALE`,{locale:t})}async loadLocales(){this.loadedLocales=(await this.env.loadLocales()).filter(e=>{let t=wS(e);return t||console.warn(`Invalid locale: ${e.code} ${e}`),t}).sort((e,t)=>e.name.localeCompare(t.name))}get numberFormatPreview(){return z(1234567.89,{format:`#,##0.00`,locale:this.env.model.getters.getLocale()})}get dateFormatPreview(){let e=this.env.model.getters.getLocale();return z(1.6,{format:e.dateFormat,locale:e})}get dateTimeFormatPreview(){let e=this.env.model.getters.getLocale();return z(1.6,{format:VS(e),locale:e})}get firstDayOfWeek(){return Go[this.env.model.getters.getLocale().weekStart%7]}get currentLocale(){return this.env.model.getters.getLocale()}get supportedLocales(){let e=this.currentLocale,t=this.loadedLocales.find(t=>t.code===e.code);if(!t)return[...this.loadedLocales,e].sort((e,t)=>e.name.localeCompare(t.name));if(!w(e,t)){let n=this.loadedLocales.indexOf(t),r=[...this.loadedLocales];return r[n]=e,r.sort((e,t)=>e.name.localeCompare(t.name)),r}return this.loadedLocales}get selectOptions(){return this.supportedLocales.map(e=>({label:e.name,value:e.code}))}};let dV={SplitIsDestructive:k(`This will overwrite data in the subsequent columns. Split anyway?`)};function fV(e,t,n){let r=e.model.dispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:t,addNewColumns:n});return r.isCancelledBecause(`SplitWillOverwriteContent`)&&e.askConfirmation(dV.SplitIsDestructive,()=>{r=e.model.dispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:t,addNewColumns:n,force:!0})}),r}let pV=[{label:k(`Detect automatically`),value:`auto`},{label:k(`Custom separator`),value:`custom`},{label:k(`Space`),value:` `},{label:k(`Comma`),value:`,`},{label:k(`Semicolon`),value:`;`},{label:k(`Line Break`),value:`
84
- `}];var mV=class extends t.Component{static template=`o-spreadsheet-SplitIntoColumnsPanel`;static components={ValidationMessages:EI,Section:Q,Checkbox:eP,Select:EM};static props={onCloseSidePanel:Function};state=(0,t.useState)({separatorValue:`auto`,addNewColumns:!1,customSeparator:``});setup(){let e=D(xr);(0,t.useEffect)(e=>{e!==`inactive`&&this.props.onCloseSidePanel()},()=>[e.focusMode]),(0,t.onMounted)(()=>{e.activeComposer.stopEdition()})}onSeparatorChange(e){this.state.separatorValue=e}updateCustomSeparator(e){e.target&&(this.state.customSeparator=e.target.value)}updateAddNewColumnsCheckbox(e){this.state.addNewColumns=e}confirm(){fV(this.env,this.separatorValue,this.state.addNewColumns).isSuccessful&&this.props.onCloseSidePanel()}get errorMessages(){let e=this.env.model.canDispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:this.separatorValue,addNewColumns:this.state.addNewColumns,force:!0}).reasons,t=new Set;for(let n of e)switch(n){case`SplitWillOverwriteContent`:case`EmptySplitSeparator`:break;default:t.add(am.Errors[n]||am.Errors.Unexpected)}return Array.from(t)}get warningMessages(){let e=[];return this.env.model.canDispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:this.separatorValue,addNewColumns:this.state.addNewColumns,force:!1}).reasons.includes(`SplitWillOverwriteContent`)&&e.push(am.Errors.SplitWillOverwriteContent),e}get separatorValue(){return this.state.separatorValue===`custom`?this.state.customSeparator:this.state.separatorValue===`auto`?this.env.model.getters.getAutomaticSeparator():this.state.separatorValue}get separators(){return pV}get isConfirmDisabled(){return!this.separatorValue||this.errorMessages.length>0}},hV=class extends t.Component{static template=`o-spreadsheet-TablePanel`;static components={TableStylePicker:oV,SelectionInput:YN,ValidationMessages:EI,Checkbox:eP,Section:Q,NumberInput:RI};static props={onCloseSidePanel:Function,table:Object};state;setup(){let e=this.env.model.getters.getActiveSheetId();this.state=(0,t.useState)({tableZoneErrors:[],tableXc:this.env.model.getters.getRangeString(this.props.table.range,e),filtersEnabledIfPossible:this.props.table.config.hasFilters})}updateHasFilters(e){this.state.filtersEnabledIfPossible=e,this.updateTableConfig(`hasFilters`,e)}updateTableConfig(e,t){let n=this.env.model.getters.getActiveSheetId();return this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:n,zone:this.props.table.range.zone,config:{[e]:t}})}updateHasHeaders(e){let t=+!!e;this.updateNumberOfHeaders(t)}updateTableIsDynamic(e){let t=e?`dynamic`:`forceStatic`;if(t===this.props.table.type)return;let n=this.env.model.getters.getTable(GB(this.props.table));if(!n)return;let r=this.env.model.getters.getActiveSheetId(),i=this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:r,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeData(n.range),tableType:t}),a=this.env.model.getters.getCoreTable(GB(this.props.table));if(i.isSuccessful&&a){let e=a.range;this.state.tableXc=this.env.model.getters.getRangeString(e,r),this.state.tableZoneErrors=[]}}onChangeNumberOfHeaders(e){let t=parseInt(e);this.updateNumberOfHeaders(t)}updateNumberOfHeaders(e){let t=e>0&&(this.tableConfig.hasFilters||this.state.filtersEnabledIfPossible);return this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:this.env.model.getters.getActiveSheetId(),zone:this.props.table.range.zone,config:{numberOfHeaders:e,hasFilters:t}})}onRangeChanged(e){let t=this.env.model.getters.getActiveSheetId();this.state.tableXc=e[0];let n=this.env.model.getters.getRangeFromSheetXC(t,this.state.tableXc);this.state.tableZoneErrors=this.env.model.canDispatch(`UPDATE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeDataFromXc(t,this.state.tableXc),tableType:this.getNewTableType(n.zone)}).reasons}onRangeConfirmed(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getRangeFromSheetXC(e,this.state.tableXc);if(Gn(t.zone)===1){let n=this.env.model.getters.getContiguousZone(e,t.zone);t=this.env.model.getters.getRangeFromZone(e,n)}let n=t.zone,r=this.props.table.range.zone,i=n.top===r.top&&n.left===r.left?`RESIZE_TABLE`:`UPDATE_TABLE`,a=this.env.model.dispatch(i,{sheetId:e,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeData(t),tableType:this.getNewTableType(t.zone)}),o={sheetId:e,col:t.zone.left,row:t.zone.top},s=this.env.model.getters.getCoreTable(o);if(a.isSuccessful&&s){let t=GB(s);this.env.model.selection.selectZone({zone:E(t),cell:t});let n=s.range;this.state.tableXc=this.env.model.getters.getRangeString(n,e)}}onStylePicked(e){let t=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,config:{styleId:e}})}deleteTable(){let e=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`REMOVE_TABLE`,{sheetId:e,target:[this.props.table.range.zone]})}getNewTableType(e){if(this.props.table.type===`forceStatic`)return`forceStatic`;let t=this.env.model.getters.getActiveSheetId();return this.env.model.getters.canCreateDynamicTableOnZones(t,[e])?`dynamic`:`static`}get tableConfig(){return this.props.table.config}get errorMessages(){return(this.state.tableZoneErrors||[]).map(e=>sm.Errors[e]||sm.Errors.Unexpected)}getCheckboxLabel(e){return sm.Checkboxes[e]}get canHaveFilters(){return this.tableConfig.numberOfHeaders>0}get hasFilterCheckboxTooltip(){return this.canHaveFilters?void 0:sm.Tooltips.filterWithoutHeader}get canBeDynamic(){let e=this.env.model.getters.getActiveSheetId();return this.props.table.type===`dynamic`||this.env.model.getters.canCreateDynamicTableOnZones(e,[this.props.table.range.zone])}get dynamicTableTooltip(){return sm.Tooltips.isDynamic}};let gV=`#3C78D8`;var _V=class extends t.Component{static template=`o-spreadsheet-TableStyleEditorPanel`;static components={Section:Q,RoundColorPicker:BN,TableStylePreview:iV};static props={onCloseSidePanel:Function,onStylePicked:{type:Function,optional:!0},styleId:{type:String,optional:!0}};state=(0,t.useState)(this.getInitialState());setup(){(0,t.useExternalListener)(window,`click`,()=>this.state.pickerOpened=!1)}getInitialState(){let e=this.props.styleId?this.env.model.getters.getTableStyle(this.props.styleId):null;return{pickerOpened:!1,primaryColor:e?.primaryColor||gV,selectedTemplateName:e?.templateName||`lightColoredText`,styleName:e?.displayName||this.env.model.getters.getNewCustomTableStyleName()}}togglePicker(){this.state.pickerOpened=!this.state.pickerOpened}onColorPicked(e){this.state.primaryColor=kr(e)?e:gV,this.state.pickerOpened=!1}onTemplatePicked(e){this.state.selectedTemplateName=e}onConfirm(){let e=this.props.styleId||this.env.model.uuidGenerator.smallUuid();this.env.model.dispatch(`CREATE_TABLE_STYLE`,{tableStyleId:e,tableStyleName:this.state.styleName,templateName:this.state.selectedTemplateName,primaryColor:this.state.primaryColor}),this.props.onStylePicked?.(e),this.props.onCloseSidePanel()}onCancel(){this.props.onCloseSidePanel()}onDelete(){this.props.styleId&&(this.env.model.dispatch(`REMOVE_TABLE_STYLE`,{tableStyleId:this.props.styleId}),this.props.onCloseSidePanel())}get colorPreviewStyle(){return U({background:this.state.primaryColor})}get tableTemplates(){return Object.keys(ij).filter(e=>e!==`none`)}get previewTableConfig(){return{bandedColumns:!1,bandedRows:!0,firstColumn:!1,lastColumn:!1,numberOfHeaders:1,totalRow:!0,hasFilters:!0,styleId:``}}get selectedStyle(){return this.computeTableStyle(this.state.selectedTemplateName)}computeTableStyle(e){return aj(this.state.styleName,e,this.state.primaryColor)}};let vV=new B;vV.add(`ConditionalFormatting`,{title:k(`Conditional formatting`),Body:FL}),vV.add(`ConditionalFormattingEditor`,{title:k(`Conditional formatting`),Body:kL,computeState:(e,t)=>({isOpen:!0,props:t,key:`ConditionalFormattingEditor_${t.cf.id}`})}),vV.add(`ChartPanel`,{title:k(`Chart`),Body:EL,computeState:(e,t)=>{let n=e.getSelectedFigureId(),r=n&&e.getFigureSheetId(n),i=r?e.isSheetLocked(r):!1,a=n?e.getChartIdFromFigureId(n):t.chartId;return!a||!e.isChartDefined(a)||i?{isOpen:!1}:{isOpen:!0,props:{chartId:a}}}}),vV.add(`FindAndReplace`,{title:k(`Find and Replace`),Body:VL}),vV.add(`SplitToColumns`,{title:k(`Split text into columns`),Body:mV}),vV.add(`Settings`,{title:k(`Spreadsheet settings`),Body:uV}),vV.add(`RemoveDuplicates`,{title:k(`Remove duplicates`),Body:lV}),vV.add(`DataValidation`,{title:k(`Data validation`),Body:LL}),vV.add(`DataValidationEditor`,{title:k(`Data validation`),Body:RL,computeState:(e,t)=>({isOpen:!0,props:t,key:`DataValidationEditor_${t.ruleId}`})}),vV.add(`MoreFormats`,{title:k(`More formats`),Body:ZR}),vV.add(`TableSidePanel`,{title:k(`Edit table`),Body:hV,computeState:e=>{let t=e.getFirstTableInSelection();return!t||t.isPivotTable?{isOpen:!1}:{isOpen:!0,props:{table:e.getCoreTable(GB(t))},key:t.id}}}),vV.add(`TableStyleEditorPanel`,{title:k(`Create custom table style`),Body:_V,computeState:(e,t)=>({isOpen:!0,props:{...t},key:t.styleId??`new`})}),vV.add(`PivotSidePanel`,{title:(e,t)=>k(`Pivot #%s`,e.model.getters.getPivotFormulaId(t.pivotId)),Body:cV,computeState:(e,t)=>({isOpen:e.isExistingPivot(t.pivotId),props:t,key:`pivot_key_${t.pivotId}`})}),vV.add(`PivotMeasureDisplayPanel`,{title:(e,t)=>k(`Measure "%s" options`,e.model.getters.getPivot(t.pivotId).getMeasure(t.measure.id).displayName),Body:$R,computeState:(e,t)=>{try{return e.getPivot(t.pivotId).getMeasure(t.measure.id),{isOpen:!0,props:t,key:`pivot_measure_display_${t.pivotId}_${t.measure.id}`}}catch{return{isOpen:!1}}}}),vV.add(`CarouselPanel`,{title:k(`Carousel`),Body:CI,computeState:(e,t)=>{let n=t.figureId||e.getSelectedFigureId(),r=n&&e.getFigureSheetId(n),i=r?e.isSheetLocked(r):!1;return!n||!e.doesCarouselExist(n)||i?{isOpen:!1}:{isOpen:!0,props:{figureId:n}}}});var yV=class{mutators=[`setSmallThreshhold`];_isSmallCallback=()=>!1;get isSmall(){return this._isSmallCallback()}setSmallThreshhold(e){this._isSmallCallback=e}},bV=class extends yr{mutators=[`open`,`replace`,`toggle`,`close`,`changePanelSize`,`resetPanelSize`,`togglePinPanel`,`closeMainPanel`,`changeSpreadsheetWidth`,`toggleCollapsePanel`];mainPanel=void 0;secondaryPanel;availableWidth=0;screenWidthStore=this.get(yV);get isMainPanelOpen(){return this.mainPanel&&this.mainPanel.componentTag?this.computeState(this.mainPanel).isOpen:!1}get isSecondaryPanelOpen(){return this.secondaryPanel&&this.secondaryPanel.componentTag?this.computeState(this.secondaryPanel).isOpen:!1}get mainPanelProps(){return this.mainPanel?this.getPanelProps(this.mainPanel):void 0}get mainPanelKey(){return this.mainPanel?this.getPanelKey(this.mainPanel):void 0}get secondaryPanelProps(){return this.secondaryPanel?this.getPanelProps(this.secondaryPanel):void 0}get secondaryPanelKey(){return this.secondaryPanel?this.getPanelKey(this.secondaryPanel):void 0}get totalPanelSize(){return(this.mainPanel?.size||0)+(this.secondaryPanel?.size??0)}getPanelProps(e){let t=this.computeState(e);return t.isOpen?(e.currentPanelProps=t.props??e.currentPanelProps,t.props??{}):{}}getPanelKey(e){let t=this.computeState(e);if(t.isOpen)return t.key}open(e,t={}){if(this.screenWidthStore.isSmall)return;let n={currentPanelProps:t,componentTag:e,size:350},r=this.computeState(n);if(!r.isOpen)return;if(!this.mainPanel||!this.mainPanel.isPinned||this.mainPanelKey===r.key){this._openPanel(`mainPanel`,n,r);return}let i=this.mainPanel.isCollapsed?350:this.mainPanel.size;if(!this.secondaryPanel&&i+350>this.availableWidth){this.get(DN).notifyUser({sticky:!1,type:`warning`,text:k(`The window is too small to display multiple side panels.`)});return}this._openPanel(`secondaryPanel`,n,r)}replace(e,t,n={}){let r={currentPanelProps:n,componentTag:e,size:350},i=this.computeState(r);if(!i.isOpen)return;let a=()=>{this.mainPanel?.isCollapsed&&this.toggleCollapsePanel(`mainPanel`)},o=this.mainPanelKey===i.key,s=this.secondaryPanelKey===i.key;if(o&&this.secondaryPanel){this.close(),a();return}if(s){this.closeMainPanel(),this.togglePinPanel(),a();return}let c=this.mainPanelKey===t?`mainPanel`:`secondaryPanel`;this._openPanel(c,r,i)}_openPanel(e,t,n){let r=this[e];r&&t.componentTag!==r.componentTag&&r.currentPanelProps?.onCloseSidePanel?.(),this[e]={currentPanelProps:n.props??{},componentTag:t.componentTag,size:r?.size||350,isCollapsed:r?.isCollapsed||!1,isPinned:r&&`isPinned`in r?r.isPinned:!1},this[e].isCollapsed&&this.toggleCollapsePanel(e)}toggle(e,t){let n=this.mainPanel?.isPinned?this.secondaryPanel:this.mainPanel;n&&e===n.componentTag?this.close():this.open(e,t)}close(){if(this.mainPanel?.isPinned){this.secondaryPanel&&=(this.secondaryPanel.currentPanelProps.onCloseSidePanel?.(),void 0);return}this.mainPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=void 0}closeMainPanel(){this.mainPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=this.secondaryPanel||void 0,this.secondaryPanel=void 0}changePanelSize(e,t){let n=this[e];if(!n||`isCollapsed`in n&&n.isCollapsed)return;t=Math.max(t,350);let r=e===`mainPanel`?this.secondaryPanel?.size||0:this.mainPanel?.size||0;t>this.availableWidth-r&&(e===`mainPanel`&&this.secondaryPanel&&(this.secondaryPanel.size=Math.max(this.availableWidth-t,350),r=this.secondaryPanel.size),t=Math.max(this.availableWidth-r,350)),n.size=t}resetPanelSize(e){this[e]&&(this[e].size=350)}togglePinPanel(){this.mainPanel&&(this.mainPanel.isPinned=!this.mainPanel.isPinned,!this.mainPanel.isPinned&&this.secondaryPanel&&(this.secondaryPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=this.secondaryPanel,this.secondaryPanel=void 0))}toggleCollapsePanel(e){let t=this[e];t&&(t.isCollapsed?(t.isCollapsed=!1,this.changePanelSize(e,350)):(t.isCollapsed=!0,t.size=45))}computeState({componentTag:e,currentPanelProps:t}){let n=vV.get(e).computeState,r=n?n(this.getters,t):{isOpen:!0,props:t};return r.isOpen?{...r,key:r.key||e}:r}changeSpreadsheetWidth(e){this.availableWidth=e-150,this.secondaryPanel&&e-this.totalPanelSize<150&&(this.secondaryPanel?.currentPanelProps.onCloseSidePanel?.(),this.secondaryPanel=void 0),this.mainPanel&&e-this.totalPanelSize<150&&(this.mainPanel.size=Math.max(e-150,350))}};function xV(e,t,n){let r=e.model.getters.getActiveSheetId(),i=t===`COL`?`FREEZE_COLUMNS`:`FREEZE_ROWS`;e.model.dispatch(i,{sheetId:r,quantity:n}).isCancelledBecause(`MergeOverlap`)&&e.raiseError(rm)}var SV=class{map={};constructor(e=[]){for(let[t,n]of e)this.set(t,n)}set({sheetId:e,col:t,row:n},r){let i=this.map;i[e]||(i[e]={}),i[e][t]||(i[e][t]={}),i[e][t][n]=r}setMany(e){for(let[t,n]of e)this.set(t,n)}get({sheetId:e,col:t,row:n}){return this.map[e]?.[t]?.[n]}getSheet(e){return this.map[e]}clearSheet(e){delete this.map[e]}has({sheetId:e,col:t,row:n}){return this.map[e]?.[t]?.[n]!==void 0}delete({sheetId:e,col:t,row:n}){delete this.map[e]?.[t]?.[n]}keys(){let e=this.map,t=[];for(let n in e)for(let r in e[n])for(let i in e[n][r])t.push({sheetId:n,col:parseInt(r),row:parseInt(i)});return t}keysForSheet(e){let t=this.map[e];if(!t)return[];let n=[];for(let r in t)for(let i in t[r])n.push({sheetId:e,col:parseInt(r),row:parseInt(i)});return n}*entries(){let e=this.map;for(let t of this.keys()){let{sheetId:n,col:r,row:i}=t;yield[t,e[n][r][i]]}}},CV=class extends yr{mutators=[`enable`,`disable`];isInvalidated=!1;fingerprintColors={[TV]:`#D9D9D9`};isEnabled=!1;colors=new SV;handle(e){switch(qs(e)&&this.isEnabled&&(this.isInvalidated=!0),e.type){case`UNDO`:case`REDO`:case`ACTIVATE_SHEET`:this.isEnabled&&(this.isInvalidated=!0);break}}finalize(){this.isInvalidated&&(this.isInvalidated=!1,this.computeFingerprints())}enable(){this.isEnabled=!0,this.computeFingerprints()}disable(){this.isEnabled=!1,this.colors=new SV}computeFingerprints(){this.colors=new SV;let e=new SV,t=new Set,n=this.getters.getActiveSheetId(),r=this.getters.getCells(n);for(let n in r){let i=r[n],a=this.computeFingerprint(i);if(!a)continue;t.add(a);let o=this.getters.getCellPosition(i.id);e.set(o,a)}this.assignColors(t);for(let[t,n]of e.entries()){let e=this.fingerprintColors[n];this.colors.set(t,e),this.colorSpreadZone(t,e)}}colorSpreadZone(e,t){let n=this.getters.getSpreadZone(e);if(!n)return;let r=e.sheetId;for(let e=n.top;e<=n.bottom;e++)for(let i=n.left;i<=n.right;i++){let n={sheetId:r,col:i,row:e};this.colors.set(n,t)}}assignColors(e){let t=new ai(e.size);Object.keys(this.fingerprintColors).forEach(()=>t.next());for(let n of e)this.fingerprintColors[n]||(this.fingerprintColors[n]=Wr(t.next(),.8))}computeFingerprint(e){let t=this.getters.getCellPosition(e.id);return e.isFormula?this.computeFormulaFingerprint(t,e):this.getLiteralFingerprint(t)}computeFormulaFingerprint(e,t){let n=t.compiledFormula.rangeDependencies,r=e.col,i=e.row,a=this.getters.getSheetIds().indexOf(e.sheetId),o={dx:0,dy:0,dSheet:0};for(let e of n){let t=e.zone,[n,s]=e.parts;o.dSheet=this.getters.getSheetIds().indexOf(e.sheetId)-a;let c=$c(e)&&!e.unboundedZone.hasHeader,l=Qc(e)&&!e.unboundedZone.hasHeader,u=c||n?.colFixed?0:r,d=l||n?.rowFixed?0:i,f=!s&&n?.colFixed||s?.colFixed,p=!s&&n?.rowFixed||s?.rowFixed,m=e.unboundedZone.right===void 0,h=e.unboundedZone.bottom===void 0,g=m||f?0:r,_=h||p?0:i,v=Ln({top:t.top-d,left:t.left-u,right:t.right-g,bottom:t.bottom-_});for(let e=v.top;e<=v.bottom;e++)for(let t=v.left;t<=v.right;t++)o.dx+=t,o.dy+=e}let s=t.compiledFormula.normalizedFormula;return wV(o)+s}getLiteralFingerprint(e){switch(this.getters.getEvaluatedCell(e).type){case`number`:case`boolean`:return TV;case`text`:case`empty`:case`error`:return}}};function wV(e){return Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>t).join(`,`)}let TV=`DATA_FINGERPRINT`,EV={name:uF,execute:e=>{let t=e.model.getters.getElementsFromSelection(`COL`);e.model.dispatch(`HIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`COL`,elements:t})},isVisible:aF,icon:`o-spreadsheet-Icon.HIDE_COL`},DV={name:k(`Unhide columns`),execute:e=>{let t=e.model.getters.getElementsFromSelection(`COL`);e.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`COL`,elements:t})},isVisible:e=>{let 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`},OV={name:k(`Unhide all columns`),execute:e=>{let 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`},kV={name:dF,execute:e=>{let t=e.model.getters.getElementsFromSelection(`ROW`);e.model.dispatch(`HIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`ROW`,elements:t})},isVisible:rF,icon:`o-spreadsheet-Icon.HIDE_ROW`},AV={name:k(`Unhide rows`),execute:e=>{let t=e.model.getters.getElementsFromSelection(`ROW`);e.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`ROW`,elements:t})},isVisible:e=>{let 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`},jV={name:k(`Unhide all rows`),execute:e=>{let 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`},MV={name:k(`Unfreeze`),isVisible:e=>{let{xSplit:t,ySplit:n}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+n>0},execute:e=>e.model.dispatch(`UNFREEZE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId()}),icon:`o-spreadsheet-Icon.UNFREEZE`},NV={name:k(`Freeze`),icon:`o-spreadsheet-Icon.FREEZE`},PV={name:k(`No rows`),execute:e=>e.model.dispatch(`UNFREEZE_ROWS`,{sheetId:e.model.getters.getActiveSheetId()}),isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit},FV={name:k(`1 row`),execute:e=>xV(e,`ROW`,1)},IV={name:k(`2 rows`),execute:e=>xV(e,`ROW`,2)},LV={name:k(`Up to current row`),execute:e=>{let{bottom:t}=e.model.getters.getSelectedZone();xV(e,`ROW`,t+1)}},RV={name:k(`No columns`),execute:e=>e.model.dispatch(`UNFREEZE_COLUMNS`,{sheetId:e.model.getters.getActiveSheetId()}),isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit},zV={name:k(`1 column`),execute:e=>xV(e,`COL`,1)},BV={name:k(`2 columns`),execute:e=>xV(e,`COL`,2)},VV={name:k(`Up to current column`),execute:e=>{let{right:t}=e.model.getters.getSelectedZone();xV(e,`COL`,t+1)}},HV={name:k(`Gridlines`),execute:e=>{let t=e.model.getters.getActiveSheetId();e.model.dispatch(`SET_GRID_LINES_VISIBILITY`,{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},isActive:e=>{let t=e.model.getters.getActiveSheetId();return e.model.getters.getGridLinesVisibility(t)}},UV={name:k(`Irregularity map`),execute:e=>{let t=e.getStore(CV);t.isEnabled?t.disable():t.enable()},isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.IRREGULARITY_MAP`};function WV(e){return{name:k(`%(zoom_percentage)s%`,{zoom_percentage:e}),execute:t=>{t.model.dispatch(`SET_ZOOM`,{zoom:e/100})},isActive:t=>t.model.getters.getViewportZoomLevel()===e/100,isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,sequence:e}}let GV={name:k(`Formulas`),isActive:e=>e.model.getters.shouldShowFormulas(),execute:e=>e.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0},KV={name:e=>{let t=e.model.getters.getSelectedZone();return t.left===t.right?k(`Group column %s`,Kt(t.left)):k(`Group columns %s - %s`,Kt(t.left),Kt(t.right))},execute:e=>XV(e,`COL`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZone(),r=e.model.getters.getHeaderGroupsInZone(t,`COL`,n);return kF(e)&&!r.some(e=>e.start===n.left&&e.end===n.right)},icon:`o-spreadsheet-Icon.GROUP_COLUMNS`},qV={name:e=>{let t=e.model.getters.getSelectedZone();return t.top===t.bottom?k(`Group row %s`,String(t.top+1)):k(`Group rows %s - %s`,String(t.top+1),String(t.bottom+1))},execute:e=>XV(e,`ROW`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZone(),r=e.model.getters.getHeaderGroupsInZone(t,`ROW`,n);return kF(e)&&!r.some(e=>e.start===n.top&&e.end===n.bottom)},icon:`o-spreadsheet-Icon.GROUP_ROWS`},JV={name:e=>{let t=e.model.getters.getSelectedZone();return t.left===t.right?k(`Ungroup column %s`,Kt(t.left)):k(`Ungroup columns %s - %s`,Kt(t.left),Kt(t.right))},execute:e=>ZV(e,`COL`),icon:`o-spreadsheet-Icon.UNGROUP_COLUMNS`},YV={name:e=>{let t=e.model.getters.getSelectedZone();return t.top===t.bottom?k(`Ungroup row %s`,String(t.top+1)):k(`Ungroup rows %s - %s`,String(t.top+1),String(t.bottom+1))},execute:e=>ZV(e,`ROW`),icon:`o-spreadsheet-Icon.UNGROUP_ROWS`};function XV(e,t){let n=e.model.getters.getSelectedZone(),r=e.model.getters.getActiveSheetId();e.model.dispatch(`GROUP_HEADERS`,{sheetId:r,dimension:t,start:t===`COL`?n.left:n.top,end:t===`COL`?n.right:n.bottom})}function ZV(e,t){let n=e.model.getters.getSelectedZone(),r=e.model.getters.getActiveSheetId();e.model.dispatch(`UNGROUP_HEADERS`,{sheetId:r,dimension:t,start:t===`COL`?n.left:n.top,end:t===`COL`?n.right:n.bottom})}function QV(e,t){let n=e.model.getters.getActiveSheetId(),r=e.model.getters.getSelectedZones();return r.length===1&&e.model.getters.getHeaderGroupsInZone(n,t,r[0]).length>0}let $V={name:e=>{let t=e.getStore(bV);return t.mainPanel&&t.mainPanel.isPinned?k(`Unpin the side panel`):k(`Pin the side panel`)},isVisible:e=>e.getStore(bV).isMainPanelOpen,execute:e=>{e.getStore(bV).togglePinPanel()},icon:`o-spreadsheet-Icon.THUMB_TACK`};function eH(e){let t=e.model.dispatch(`CUT`);t.isSuccessful||t.isCancelledBecause(`WrongCutSelection`)&&e.raiseError(k(`This operation is not allowed with multiple selections.`))}let tH={MergeIsDestructive:k(`Merging these cells will only preserve the top-leftmost value. Merge anyway?`),MergeInFilter:k(`You can't merge cells inside of an existing filter.`)};function nH(e,t,n){let r=e.model.dispatch(`ADD_MERGE`,{sheetId:t,target:n});r.isCancelledBecause(`MergeInTable`)?e.raiseError(tH.MergeInFilter):r.isCancelledBecause(`MergeIsDestructive`)&&e.askConfirmation(tH.MergeIsDestructive,()=>{e.model.dispatch(`ADD_MERGE`,{sheetId:t,target:n,force:!0})})}let rH={name:k(`Undo`),shortcut:`Ctrl+Z`,execute:e=>e.model.dispatch(`REQUEST_UNDO`),isEnabled:e=>e.model.getters.canUndo(),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.UNDO`},iH={name:k(`Redo`),shortcut:`Ctrl+Y`,execute:e=>e.model.dispatch(`REQUEST_REDO`),isEnabled:e=>e.model.getters.canRedo(),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.REDO`},aH={name:k(`Copy`),shortcut:`Ctrl+C`,isReadonlyAllowed:!0,execute:async e=>{e.model.dispatch(`COPY`),await e.clipboard.write(await e.model.getters.getClipboardTextAndImageContent())},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.CLIPBOARD`},oH={name:k(`Cut`),shortcut:`Ctrl+X`,execute:async e=>{eH(e),await e.clipboard.write(await e.model.getters.getClipboardTextAndImageContent())},icon:`o-spreadsheet-Icon.CUT`},sH={name:k(`Paste`),shortcut:`Ctrl+V`,execute:GP,icon:`o-spreadsheet-Icon.PASTE`},cH={name:k(`Paste special`),isVisible:e=>!e.model.getters.isCutOperation(),icon:`o-spreadsheet-Icon.PASTE`},lH={name:k(`Paste as value`),shortcut:`Ctrl+Shift+V`,execute:KP},uH={name:k(`Paste format only`),execute:JP},dH={name:k(`Find and replace`),shortcut:`Ctrl+H`,isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,execute:e=>{e.openSidePanel(`FindAndReplace`,{})},isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.SEARCH`},fH={name:k(`Delete values`),execute:e=>e.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},pH={name:$P,execute:eF,isVisible:e=>tF(`ROW`,e)},mH={...pH,isVisible:kF},hH={name:YP,execute:XP},gH={name:nF,execute:iF,isVisible:e=>tF(`COL`,e)},_H={...gH,isVisible:kF},vH={name:ZP,execute:QP},yH={name:k(`Delete cells`),isVisible:kF},bH={name:k(`Delete cell and shift up`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`DELETE_CELL`,{zone:t,shiftDimension:`ROW`}))}},xH={name:k(`Delete cell and shift left`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`DELETE_CELL`,{zone:t,shiftDimension:`COL`}))}},SH={name:k(`Merge cells`),isEnabled:e=>!TH(e),isActive:e=>EH(e),execute:e=>DH(e),icon:`o-spreadsheet-Icon.MERGE_CELL`},CH={name:()=>k(`Edit table`),execute:e=>e.openSidePanel(`TableSidePanel`,{}),icon:`o-spreadsheet-Icon.EDIT_TABLE`},wH={name:()=>k(`Delete table`),execute:OF,icon:`o-spreadsheet-Icon.DELETE_TABLE`};function TH(e){let t=e.model.getters.getSelectedZones(),{sheetId:n}=e.model.getters.getActivePosition(),{xSplit:r,ySplit:i}=e.model.getters.getPaneDivisions(n);return t.every(e=>Gn(e)===1)||qn(t,r,i)||kn(t)}function EH(e){if(TH(e))return!1;let t=e.model.getters.getActiveSheetId();return e.model.getters.getSelectedZones().some(n=>e.model.getters.getMergesInZone(t,n).length>0)}function DH(e){if(TH(e))return;let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId();if(EH(e)){let r=t.flatMap(t=>e.model.getters.getMergesInZone(n,t));e.model.dispatch(`REMOVE_MERGE`,{sheetId:n,target:r})}else nH(e,n,t)}let OH={name:k(`See pivot properties`),execute(e){let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);e.openSidePanel(`PivotSidePanel`,{pivotId:n})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);return!e.isSmall&&n&&e.model.getters.isExistingPivot(n)||!1},isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.PIVOT`},kH={name:k(`Ascending`),execute:e=>VH(e,e.model.getters.getActivePosition(),`asc`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`asc`},AH={name:k(`Descending`),execute:e=>VH(e,e.model.getters.getActivePosition(),`desc`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`desc`},jH={name:k(`No sorting`),execute:e=>VH(e,e.model.getters.getActivePosition(),`none`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`none`},MH={name:k(`Convert to individual formulas`),execute(e){let t=e.model.getters.getActivePosition(),n=e.model.getters.getCorrespondingFormulaCell(t),r=e.model.getters.getPivotIdFromPosition(t);if(!n||!r)return;let{sheetId:i,col:a,row:o}=e.model.getters.getCellPosition(n.id),s=e.model.getters.getPivot(r);s.init(),s.isValid()&&e.model.dispatch(`SPLIT_PIVOT_FORMULA`,{sheetId:i,col:a,row:o,pivotId:r})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);if(!n)return!1;let r=e.model.getters.getPivot(n),i=e.model.getters.getEvaluatedCell(t);return r.isValid()&&e.model.getters.isSpillPivotFormula(t)&&i.type!==`error`},icon:`o-spreadsheet-Icon.PIVOT`},NH={name:k(`Group pivot dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=b(e.model.getters.getPivotCoreDefinition(n));if(!i.isCustomField)UH(o,r,i,a.getFields());else{let e=(o.customFields||{})[i.name];if(!e)return;WH(e,r)}e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:o})},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n);return r.length>1&&(i.isCustomField||uB.get(a.type).canHaveCustomGroup(i))}},PH={name:k(`Group all remaining dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,field:r}=t,i=e.model.getters.getPivot(n),a=b(e.model.getters.getPivotCoreDefinition(n)),o=r.isCustomField?(a.customFields||{})[r.name]:Lh(a,r,i.getFields());o&&(o.groups.push({name:Mh(k(`Others`),o),values:[],isOtherGroup:!0}),Ih(a,r.name,o.name),e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:a}))},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,field:r,values:i}=t;return qH(e,n,i,r)}},FH={name:k(`Ungroup pivot dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=b(e.model.getters.getPivotCoreDefinition(n));GH(o,r,i,a.getFields()),e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:o})},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=e.model.getters.getPivotCoreDefinition(n);if(!i.isCustomField){let e=Lh(o,i,a.getFields());if(![...o.rows,...o.columns].some(t=>t.fieldName===e.name))return!1}return KH(o,r,i,a.getFields())}},IH={name:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);return n.isPivotGroup?n.isCollapsed?k(`Expand`):k(`Collapse`):``},execute(e){Rh(e.model.getters.getActivePosition(),e)},isVisible:e=>{let t=e.model.getters.getActivePosition();return zH(e.model.getters,t).isPivotGroup}},LH={name:k(`Collapse all`),execute(e){let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=b(e.model.getters.getPivotCoreDefinition(i));o.collapsedDomains=o.collapsedDomains||{COL:[],ROW:[]};let s=[...o.collapsedDomains[r.dimension]||[],...a],c=s.filter((e,t)=>t===s.findIndex(t=>w(t,e)));o.collapsedDomains[r.dimension]=c,e.model.dispatch(`UPDATE_PIVOT`,{pivotId:i,pivot:o})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return!1;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=e.model.getters.getPivotCoreDefinition(i);return!a.every(e=>(o.collapsedDomains?.[r.dimension]||[]).some(t=>w(t,e)))}},RH={name:k(`Expand all`),execute(e){let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=b(e.model.getters.getPivotCoreDefinition(i));o.collapsedDomains=o.collapsedDomains||{COL:[],ROW:[]};let s=(o.collapsedDomains[r.dimension]||[]).filter(e=>!a.find(t=>w(t,e)));o.collapsedDomains[r.dimension]=s,e.model.dispatch(`UPDATE_PIVOT`,{pivotId:i,pivot:o})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return!1;let{pivotCell:r,pivotId:i,siblingDomains:a}=n;return(e.model.getters.getPivotCoreDefinition(i).collapsedDomains?.[r.dimension]||[]).some(e=>a.some(t=>w(t,e)))}};function zH(e,t){if(!e.isSpillPivotFormula(t))return{isPivotGroup:!1};let n=e.getPivotCellFromPosition(t),r=e.getPivotIdFromPosition(t);if(n.type!==`HEADER`||!r||!n.domain.length)return{isPivotGroup:!1};let i=e.getPivotCoreDefinition(r),a=e.isDashboard(),o=n.dimension===`COL`?i.columns:i.rows;if(!(!a&&n.domain.length!==o.length))return{isPivotGroup:!1};let s=(i.collapsedDomains?.[n.dimension]??[]).some(e=>w(e,n.domain)),c=e.getPivot(r).getExpandedTableStructure(),l=n.domain.length-1;return{isPivotGroup:!0,isCollapsed:s,pivotCell:n,pivotId:r,siblingDomains:n.dimension===`ROW`?c.getRowDomainsAtDepth(l):c.getColumnDomainsAtDepth(l)}}function BH(e,t){let n=e.getPivotIdFromPosition(t);if(!n||!e.isExistingPivot(n)||!e.isSpillPivotFormula(t)||!e.getPivot(n).isValid())return!1;let r=e.getPivotCellFromPosition(t);return r.type===`VALUE`||r.type===`MEASURE_HEADER`}function VH(e,t,n){let r=e.model.getters.getPivotIdFromPosition(t),i=e.model.getters.getPivotCellFromPosition(t);if(i.type===`EMPTY`||i.type===`HEADER`||!r)return;if(n===`none`){e.model.dispatch(`UPDATE_PIVOT`,{pivotId:r,pivot:{...e.model.getters.getPivotCoreDefinition(r),sortedColumn:void 0}});return}let a=Fz(e.model.getters.getPivot(r),i.domain).colDomain;e.model.dispatch(`UPDATE_PIVOT`,{pivotId:r,pivot:{...e.model.getters.getPivotCoreDefinition(r),sortedColumn:{domain:a,order:n,measure:i.measure}}})}function HH(e){let t,n,r=[];for(let i of e.model.getters.getSelectedZones()){let a=e.model.getters.getActiveSheetId();for(let o of In(a,i)){let i=e.model.getters.getPivotIdFromPosition(o);if(!t)t=i;else if(i&&t!==i)return;if(!t)continue;let a=e.model.getters.getPivotCellFromPosition(o);if(a.type!==`HEADER`||!e.model.getters.isSpillPivotFormula(o))continue;let s=a.domain.at(-1)?.field;if(!n&&s)n=s;else if(n&&s&&n!==s)return;r.push(a)}}if(!t||!n||r.length===0)return;let i=e.model.getters.getPivot(t).getFields()[n];if(!i)return;let a=r.map(e=>e.domain.at(-1)?.value).filter(e=>e!==void 0);return{pivotId:t,values:a,field:i}}function UH(e,t,n,r){let i=Lh(e,n,r);Fh(t,i);let a={name:Mh(k(`Group`),i),values:t};i.groups.push(a),e.customFields||={},e.customFields[i.name]=i,Ih(e,n.name,i.name)}function WH(e,t){let n=new Set,r=[];for(let i of t){let t=e.groups.find(e=>e.name===i);t?(r.push(t),t.values.forEach(e=>n.add(e))):n.add(i)}if(r.some(e=>e.isOtherGroup))e.groups=e.groups.filter(e=>e.isOtherGroup||!r.includes(e));else if(r.length===0){let n={name:Mh(k(`Group`),e),values:t};e.groups.push(n)}else{let t=r.slice(1);e.groups=e.groups.filter(e=>!t.includes(e)),r[0].values=Array.from(n)}}function GH(e,t,n,r){let i;if(!n.isCustomField)i=Lh(e,n,r),i.groups.some(e=>e.isOtherGroup)&&t.some(e=>!i?.groups.some(t=>t.values.includes(e)))&&(i.groups=i.groups.filter(e=>!e.isOtherGroup)),Fh(t,i);else{if(i=(e.customFields||{})[n.name],!i)return;i.groups=i.groups.filter(e=>!t.includes(e.name))}i.groups.every(e=>e.values.length===0&&!e.isOtherGroup)&&(JH(e,i.name),delete e.customFields?.[i.name])}function KH(e,t,n,r){if(n.isCustomField){let r=(e.customFields||{})[n.name];return r?r.groups.some(e=>t.includes(e.name)):!1}else return Lh(e,n,r).groups.some(e=>e.isOtherGroup||t.some(t=>e.values.includes(t)))}function qH(e,t,n,r){let i=e.model.getters.getPivot(t),a=e.model.getters.getPivotCoreDefinition(t),o=r.isCustomField?(a.customFields||{})[r.name]:Object.values(a.customFields||{}).find(e=>e.parentField===r.name),s=i.definition.getDimension(r.name);if(!s||!o||KH(a,n,r,i.getFields()))return!1;let c=new Set(i.getPossibleFieldValues(s).map(e=>e.value)),l=r.isCustomField?o.groups.map(e=>e.name):o.groups.flatMap(e=>e.values);for(let e of[...n,...l])c.delete(e);return c.size===0}function JH(e,t){let n=e.customFields?.[t];if(!n)return;let r=[...e.rows,...e.columns].some(e=>e.fieldName===n.parentField);for(let i of[e.rows,e.columns]){let e=i.findIndex(e=>e.fieldName===t);e!==-1&&(r?i.splice(e,1):i.splice(e,1,{fieldName:n.parentField}))}}let YH=new vP;YH.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`add_row_before`,{...FF,sequence:70}).add(`add_column_before`,{...VF,sequence:90}).add(`insert_cell`,{...WF,sequence:100,separator:!0}).addChild(`insert_cell_down`,[`insert_cell`],{...GF,name:k(`Shift down`),sequence:10}).addChild(`insert_cell_right`,[`insert_cell`],{...KF,name:k(`Shift right`),sequence:20}).add(`delete_row`,{...mH,sequence:110,icon:`o-spreadsheet-Icon.TRASH`}).add(`delete_column`,{..._H,sequence:120,icon:`o-spreadsheet-Icon.TRASH`}).add(`delete_cell`,{...yH,sequence:130,separator:!0,icon:`o-spreadsheet-Icon.TRASH`}).addChild(`delete_cell_up`,[`delete_cell`],{...bH,name:k(`Shift up`),sequence:10,icon:`o-spreadsheet-Icon.DELETE_CELL_SHIFT_UP`}).addChild(`delete_cell_left`,[`delete_cell`],{...xH,name:k(`Shift left`),sequence:20,icon:`o-spreadsheet-Icon.DELETE_CELL_SHIFT_LEFT`}).add(`edit_table`,{...CH,isVisible:CF,isEnabled:e=>!e.isSmall,sequence:140}).add(`delete_table`,{...wH,isVisible:CF,sequence:145,separator:!0}).add(`insert_link`,{...sI,name:xF,sequence:150,separator:!0}).add(`pivot_headers_group`,{sequence:155,icon:`o-spreadsheet-Icon.PLUS_IN_BOX`,...NH}).add(`pivot_group_remaining`,{sequence:155,icon:`o-spreadsheet-Icon.PLUS_IN_BOX`,...PH}).add(`pivot_headers_ungroup`,{sequence:155,icon:`o-spreadsheet-Icon.MINUS_IN_BOX`,...FH}).add(`collapse_pivot`,{sequence:156,name:k(`Expand/Collapse`),icon:`o-spreadsheet-Icon.COLLAPSE`}).addChild(`toggle_collapse_pivot_cell`,[`collapse_pivot`],{sequence:10,...IH}).addChild(`collapse_all_pivot`,[`collapse_pivot`],{sequence:20,...LH}).addChild(`expand_all_pivot`,[`collapse_pivot`],{sequence:30,...RH}).add(`pivot_sorting`,{name:k(`Sort pivot`),sequence:155,icon:`o-spreadsheet-Icon.SORT_RANGE`,isVisible:e=>{let t=e.model.getters.getActivePosition();return BH(e.model.getters,t)}}).add(`pivot_fix_formulas`,{...MH,sequence:160}).add(`pivot_properties`,{...OH,sequence:170,separator:!0}).addChild(`pivot_sorting_asc`,[`pivot_sorting`],{...kH,sequence:10}).addChild(`pivot_sorting_desc`,[`pivot_sorting`],{...AH,sequence:20}).addChild(`pivot_sorting_none`,[`pivot_sorting`],{...jH,sequence:30});let XH={name:k(`Sort range`),isVisible:kF,icon:`o-spreadsheet-Icon.SORT_RANGE`},ZH={name:k(`Ascending (A ⟶ Z)`),execute:e=>{let{anchor:t,zones:n}=e.model.getters.getSelection();SM(e,e.model.getters.getActiveSheetId(),t.cell,n[0],`asc`)},icon:`o-spreadsheet-Icon.SORT_ASCENDING`},QH={name:k(`Data cleanup`),icon:`o-spreadsheet-Icon.DATA_CLEANUP`},$H={name:k(`Remove duplicates`),execute:e=>{Gn(e.model.getters.getSelectedZone())===1&&e.model.selection.selectTableAroundSelection(),e.openSidePanel(`RemoveDuplicates`,{})},isEnabled:e=>!e.isSmall},eU={name:k(`Trim whitespace`),execute:e=>{e.model.dispatch(`TRIM_WHITESPACE`)}},tU={name:k(`Descending (Z ⟶ A)`),execute:e=>{let{anchor:t,zones:n}=e.model.getters.getSelection();SM(e,e.model.getters.getActiveSheetId(),t.cell,n[0],`desc`)},icon:`o-spreadsheet-Icon.SORT_DESCENDING`},nU={...jF},rU={...jF,isActive:e=>SF(e)},iU={name:k(`Split text to columns`),sequence:1,execute:e=>e.openSidePanel(`SplitToColumns`,{}),isEnabled:e=>!e.isSmall&&e.model.getters.isSingleColSelected(),icon:`o-spreadsheet-Icon.SPLIT_TEXT`},aU={id:`reinsert_dynamic_pivot`,name:k(`Re-insert dynamic pivot`),sequence:60,icon:`o-spreadsheet-Icon.INSERT_PIVOT`,children:[hF],isVisible:e=>e.model.getters.getPivotIds().some(t=>e.model.getters.getPivot(t).isValid())},oU={id:`reinsert_static_pivot`,name:k(`Re-insert static pivot`),sequence:70,icon:`o-spreadsheet-Icon.INSERT_PIVOT`,children:[gF],isVisible:e=>e.model.getters.getPivotIds().some(t=>e.model.getters.getPivot(t).isValid())},sU=new vP;sU.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`sort_columns`,{...XH,name:e=>e.model.getters.getActiveCols().size>1?k(`Sort columns`):k(`Sort column`),sequence:50,separator:!0}).addChild(`sort_ascending`,[`sort_columns`],{...ZH,sequence:10}).addChild(`sort_descending`,[`sort_columns`],{...tU,sequence:20}).add(`add_column_before`,{...zF,sequence:70}).add(`add_column_after`,{...HF,sequence:80}).add(`delete_column`,{...gH,sequence:90,icon:`o-spreadsheet-Icon.TRASH`}).add(`clear_column`,{...vH,sequence:100,icon:`o-spreadsheet-Icon.CLEAR`}).add(`hide_columns`,{...EV,sequence:105,separator:!0}).add(`unhide_columns`,{...DV,sequence:106,separator:!0}).add(`conditional_formatting`,{...IR,sequence:110,separator:!0}).add(`edit_table`,{...CH,isVisible:CF,sequence:120}).add(`delete_table`,{...wH,isVisible:CF,sequence:125,separator:!0}).add(`group_columns`,{sequence:150,...KV}).add(`ungroup_columns`,{sequence:155,...JV,isVisible:e=>QV(e,`COL`)});let cU={CannotHideAllRows:k(`Cannot hide all the rows of a sheet.`),CannotHideAllColumns:k(`Cannot hide all the columns of a sheet.`)};function lU(e,t,n,r,i){let a=e.model.getters.getHeaderGroup(t,n,r,i);if(!a)return;let o=a.isFolded?`UNFOLD_HEADER_GROUP`:`FOLD_HEADER_GROUP`,s=e.model.dispatch(o,{sheetId:t,dimension:n,start:a.start,end:a.end});if(!s.isSuccessful&&s.isCancelledBecause(`NotEnoughElements`)){let t=n===`ROW`?cU.CannotHideAllRows:cU.CannotHideAllColumns;e.raiseError(t)}}function uU(e,t){return p([{id:`unfold_all`,name:k(t===`ROW`?`Expand all row groups`:`Expand all column groups`),execute:n=>{n.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:e,dimension:t})},icon:`o-spreadsheet-Icon.EXPAND`},{id:`fold_all`,name:k(t===`ROW`?`Collapse all row groups`:`Collapse all column groups`),execute:n=>{n.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:e,dimension:t})},icon:`o-spreadsheet-Icon.COLLAPSE`}])}function dU(e,t,n,r){return[...p([{id:`toggle_group`,name:e=>{let i=e.model.getters.getActiveSheetId();return e.model.getters.isGroupFolded(i,t,n,r)?k(t===`ROW`?`Expand row group`:`Expand column group`):k(t===`ROW`?`Collapse row group`:`Collapse column group`)},execute:e=>{lU(e,e.model.getters.getActiveSheetId(),t,n,r)},icon:e=>{let i=e.model.getters.getActiveSheetId();return e.model.getters.isGroupFolded(i,t,n,r)?`o-spreadsheet-Icon.EXPAND`:`o-spreadsheet-Icon.COLLAPSE`}},{id:`remove_group`,name:k(t===`ROW`?`Remove row group`:`Remove column group`),execute:e=>{let i=e.model.getters.getActiveSheetId();e.model.dispatch(`UNGROUP_HEADERS`,{sheetId:i,dimension:t,start:n,end:r})},icon:`o-spreadsheet-Icon.TRASH`,separator:!0}]),...uU(e,t)]}let fU=new vP;fU.add(`group_columns`,{sequence:10,...KV,isVisible:()=>!0,isEnabled:KV.isVisible}).add(`group_rows`,{sequence:20,...qV,isVisible:()=>!0,isEnabled:qV.isVisible});let pU=new vP;pU.add(`ungroup_columns`,{sequence:10,...JV,isEnabled:e=>QV(e,`COL`)}).add(`ungroup_rows`,{sequence:20,...YV,isEnabled:e=>QV(e,`ROW`)});let mU=new vP;mU.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`add_row_before`,{...NF,sequence:50}).add(`add_row_after`,{...IF,sequence:60}).add(`delete_row`,{...pH,sequence:70,icon:`o-spreadsheet-Icon.TRASH`}).add(`clear_row`,{...hH,sequence:80,icon:`o-spreadsheet-Icon.CLEAR`}).add(`hide_rows`,{...kV,sequence:85,separator:!0}).add(`unhide_rows`,{...AV,sequence:86,separator:!0}).add(`conditional_formatting`,{...IR,sequence:90,separator:!0}).add(`group_rows`,{sequence:100,...qV}).add(`ungroup_rows`,{sequence:110,...YV,isVisible:e=>QV(e,`ROW`)});var hU=class extends yr{highlightStore=this.get(EN);constructor(e){super(e),this.highlightStore.register(this)}get highlights(){let e=this.model.getters.getActivePosition(),t=this.model.getters.getArrayFormulaSpreadingOn(e),n=t?this.model.getters.getSpreadZone(t,{ignoreSpillError:!0}):this.model.getters.getSpreadZone(e,{ignoreSpillError:!0});if(!n)return[];let r=this.getters.getPivotStyleAtPosition(e);if(r?.pivotStyle?.tableStyleId&&r.pivotStyle.tableStyleId!==`None`)return[];let i=this.model.getters.isArrayFormulaSpillBlocked(t??e);return[{range:this.model.getters.getRangeFromZone(e.sheetId,n),dashed:i,color:`#17A2B8`,noFill:!0,thinLine:!0}]}},gU=class extends yr{mutators=[`focusClient`,`unfocusClient`,`showClientTag`,`hideClientTag`,`jumpToClient`];_showClientTag=!1;clientFocusTimeout={};constructor(e){super(e),this.onDispose(()=>{for(let e in this.clientFocusTimeout)this.unfocusClient(e)})}get focusedClients(){let e=new Set;return this.model.getters.getConnectedClients().forEach(t=>{(this._showClientTag||this.clientFocusTimeout[t.id]!==void 0)&&e.add(t.id)}),e}jumpToClient(e){let t=this.model.getters.getClient(e);this.focusClient(e),t.position&&(this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdTo:t.position.sheetId,sheetIdFrom:this.getters.getActiveSheetId()}),this.model.dispatch(`SCROLL_TO_CELL`,{col:t.position.col,row:t.position.row}))}showClientTag(){this._showClientTag=!0}hideClientTag(){this._showClientTag=!1}focusClient(e){this.clientFocusTimeout[e]&&clearTimeout(this.clientFocusTimeout[e]),this.clientFocusTimeout[e]=setTimeout(()=>this.unfocusClient(e),3e3)}unfocusClient(e){this.clientFocusTimeout[e]&&clearTimeout(this.clientFocusTimeout[e]),this.clientFocusTimeout[e]=void 0}};function _U(e){let n=null,r,i,a,o,s=`all`,c=e.model.getters,l=e=>e.preventDefault(),u=()=>removeEventListener(`keydown`,l,{capture:!0}),d=[],f=()=>{clearTimeout(n),n=null,d.forEach(e=>e()),d=[]},p,m,h=t=>{if(r=t,n)return;let l=c.getActiveSheetId(),u=rp(e.model.getters.getViewportZoomLevel()),d=wp(e,r,u),{x:f,y:m}=c.getMainViewportCoordinates(),{top:g,left:_,bottom:v,right:y}=c.getActiveMainViewport(),{scrollX:ee,scrollY:te}=c.getActiveSheetScrollInfo(),{xSplit:ne,ySplit:re}=c.getPaneDivisions(l),ie=!1,ae=140,oe=d.clientX-u.x,se=c.getColIndex(oe);if(s!==`vertical`){let t=i.clientX-u.x,n=c.getEdgeScrollCol(oe,t,a);if(n.canEdgeScroll){ie=!0,ae=Math.min(ae,n.delay);let t=se;switch(n.direction){case`reset`:se=t=ne;break;case 1:se=y,t=_+1;break;case-1:for(se=_-1;e.model.getters.isColHidden(l,se);)se--;t=se;break}ee=c.getColDimensions(l,t).start-f}}let ce=d.clientY-u.y,le=c.getRowIndex(ce);if(s!==`horizontal`){let t=i.clientY-u.y,n=c.getEdgeScrollRow(ce,t,o);if(n.canEdgeScroll){ie=!0,ae=Math.min(ae,n.delay);let t=le;switch(n.direction){case`reset`:le=t=re;break;case 1:le=v,t=g+1;break;case-1:for(le=g-1;e.model.getters.isRowHidden(l,le);)le--;t=le;break}te=e.model.getters.getRowDimensions(l,t).start-m}}ie||(se=vU(se,oe,c.getNumberCols(l)-1),le=vU(le,ce,c.getNumberRows(l)-1)),p?.(se,le,r),ie&&(e.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:ee,offsetY:te}),n=setTimeout(()=>{n=null,h(r)},Math.round(ae))),i={clientX:d.clientX,clientY:d.clientY}},g=()=>{m?.(),f()};return(0,t.onWillUnmount)(()=>{f()}),(0,t.useEffect)(()=>{f()},()=>[c.getActiveSheetId()]),{start:(t,n,r,c=`all`)=>{f();let _=rp(e.model.getters.getViewportZoomLevel());s=c,a=t.clientX-_.x,o=t.clientY-_.y,i={clientX:t.clientX,clientY:t.clientY},p=n,m=r,addEventListener(`keydown`,l,{capture:!0}),d.push(RN(h,g),u)}}}function vU(e,t,n){return e===-1?t<0?0:n:e}var yU=class extends t.Component{static template=`o-spreadsheet-Autofill`;static props={position:Object,isVisible:Boolean};state=(0,t.useState)({position:{x:0,y:0},handler:!1});dragNDropGrid=_U(this.env);get style(){let{x:e,y:t}=this.props.position;return U({top:`${t}px`,left:`${e}px`,visibility:this.props.isVisible?`visible`:`hidden`})}get handlerStyle(){let{x:e,y:t}=this.state.handler?this.state.position:this.props.position;return U({top:`${t}px`,left:`${e}px`})}get styleNextValue(){let{x:e,y:t}=this.state.position;return U({top:`${t+5}px`,left:`${e+15}px`})}getTooltip(){let e=this.env.model.getters.getAutofillTooltip();return e&&!e.component&&(e.component=bU),e}onMouseDown(e){this.state.handler=!0;let t=wp(this.env,e),n=this.env.model.getters.getViewportZoomLevel(),r,i,a={x:e.clientX/n-this.props.position.x,y:e.clientY/n-this.props.position.y};this.dragNDropGrid.start(t,(e,t,o)=>{if(this.state.position={x:o.clientX/n-a.x,y:o.clientY/n-a.y},r!==e||i!==t){let n=this.env.model.getters.getActiveSheetId(),a=this.env.model.getters.getNumberCols(n),o=this.env.model.getters.getNumberRows(n);r=e===-1?r:x(e,0,a),i=t===-1?i:x(t,0,o),r!==void 0&&i!==void 0&&this.env.model.dispatch(`AUTOFILL_SELECT`,{col:r,row:i})}},()=>{this.state.handler=!1,this.state.position={...this.props.position},this.env.model.dispatch(`AUTOFILL`)})}onDblClick(){this.env.model.dispatch(`AUTOFILL_AUTO`)}},bU=class extends t.Component{static props={content:String};static template=t.xml`
83
+ `,e.endsWith(`{`)&&n++;return t.trim()}let mz=uO.content,hz={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},gz={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`,"#":`SPILLED.RANGE`},_z={},vz=new Intl.Collator(`en`,{sensitivity:`accent`});var yz=class e{sheetId;tokens;literalValues;symbols;isBadExpression;normalizedFormula;execute;rangeDependencies;hasDependencies;constructor(e,t,n,r,i,a,o,s){this.sheetId=e,this.tokens=t,this.literalValues=n,this.symbols=r,this.isBadExpression=a,this.normalizedFormula=o,this.execute=s,this.hasDependencies=i?.length>0,this.tokens.forEach(e=>{[`REFERENCE`,`NUMBER`,`STRING`,`INVALID_REFERENCE`].includes(e.type)&&(e.value=`__NO_REAL_VALUE__`)}),this.rangeDependencies=i}getTokens(e,t){let n=0,r=0,i=0;return this.isBadExpression||this.tokens.forEach(a=>{switch(a.type){case`REFERENCE`:case`INVALID_REFERENCE`:a.value=e.getRangeString(this.rangeDependencies[n++],this.sheetId,t);break;case`NUMBER`:a.value=this.literalValues.numbers[r++].value.toString();break;case`STRING`:a.value=`"${this.literalValues.strings[i++].value}"`;break}}),this.tokens}getAst(e){return uN(this.getTokens(e))}toFormulaString(e,t){return this.isBadExpression?this.normalizedFormula:gt(this.getTokens(e,t).filter(e=>e.type!==`SPACE`).map(e=>e.value))}usesSymbol(e){return this.symbols.some(t=>vz.compare(t,e)===0)}areAllFunctionsExportableToExcel(){return this.isBadExpression?!1:!fN(uN(this.tokens)).some(e=>e.type===`FUNCALL`&&!mz[e.value.toUpperCase()]?.isExported)}getFunctionsFromTokens(e,t){return this.isBadExpression||!e.some(e=>this.usesSymbol(e))?[]:fN(this.getAst(t)).filter(t=>t.type===`FUNCALL`&&e.includes(t.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}isFirstNonWhitespaceSymbol(e){let t=this.tokens.find((e,t)=>t>0&&e.type!==`SPACE`);return t?.type===`SYMBOL`&&t.value.toUpperCase()===e}static IsBadExpression(e){return bz(Ju(e)).isBadExpression}static CopyWithDependencies(t,n,r){return new e(n,t.tokens,t.literalValues,t.symbols,r,t.isBadExpression,t.normalizedFormula,t.execute)}static CopyWithDependenciesAndLiteral(t,n,r,i,a){return new e(n,t.tokens,{numbers:i,strings:a},t.symbols,r,t.isBadExpression,t.normalizedFormula,t.execute)}static CompileForSerializedFormula(t,n){let r=bz(n.tokens);return new e(t,n.tokens,n.literalValues,n.symbols,n.rangeDependencies,n.isBadExpression,n.normalizedFormula,r.execute)}static Compile(t,n,r){let i=bz(Ju(t));return new e(n,i.tokens,i.literalValues,i.symbols,i.dependencies.map(e=>r.getRangeFromSheetXC(n,e)),i.isBadExpression,i.normalizedFormula,i.execute)}areRangeShapesInLineWithNormalizedFormula(){return Array.from(this.normalizedFormula.matchAll(/\|C\||\|R\|/g)).every((e,t)=>this.rangeDependencies[t].parts.length===1&&e[0]===`|C|`||this.rangeDependencies[t].parts.length===2&&e[0]===`|R|`||this.rangeDependencies[t].invalidXc||this.rangeDependencies[t].invalidSheetName)}};function bz(e){try{return xz(e)}catch(t){return{tokens:e,literalValues:{numbers:[],strings:[]},symbols:[],dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function xz(e){let{dependencies:t,literalValues:n,symbols:r}=Cz(e),i=Sz(e);if(!_z[i]){let t=uN([...e]),n=new dz,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new ga(k(`Invalid formula`));let u=o(t),d=new lz;d.append(u),d.append(`return ${u.returnExpression};`),_z[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=mz[e.value.toUpperCase()];if(!n)throw new ba(k(`Unknown function: "%s"`,e.value));wz(e);let r=[],i=Kv(n,t.length);for(let e=0;e<t.length;e++){let a=n.args[i(e).index??-1],s=t[e],c=a.type||[],l=c.includes(`META`)||c.includes(`RANGE<META>`),u=c.some(e=>Tz(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new lz(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new ga(k(`Argument must be a reference to a cell or range.`));switch(e.debug&&(u.append(`debugger;`),u.append(`ctx["debug"] = true;`)),e.type){case`BOOLEAN`:return u.return(`{ value: ${e.value} }`);case`NUMBER`:return u.return(`this.literalValues.numbers[${c++}]`);case`STRING`:return u.return(`this.literalValues.strings[${s++}]`);case`REFERENCE`:return u.return(`${e.value.includes(`:`)||i?`range`:`ref`}(deps[${l++}], ${t?`true`:`false`})`);case`FUNCALL`:let n=a(e).map(e=>e.assignResultToVariable());u.append(...n);let d=e.value.toUpperCase();return u.return(`ctx['${d}'](${n.map(e=>e.returnExpression)})`);case`ARRAY`:return o({type:`FUNCALL`,value:`ARRAY.LITERAL`,args:e.value.map(e=>({type:`FUNCALL`,value:`ARRAY.ROW`,args:e,tokenStartIndex:0,tokenEndIndex:0})),tokenStartIndex:0,tokenEndIndex:0});case`UNARY_OPERATION`:{let t=gz[e.value],{isMeta:n,hasRange:r}=e.value===`#`?{isMeta:!0,hasRange:!0}:{isMeta:!1,hasRange:!1},i=o(e.operand,n,r).assignResultToVariable();return u.append(i),u.return(`ctx['${t}'](${i.returnExpression})`)}case`BIN_OPERATION`:{let t=hz[e.value],n=o(e.left,!1,!1).assignResultToVariable(),r=o(e.right,!1,!1).assignResultToVariable();return u.append(n),u.append(r),u.return(`ctx['${t}'](${n.returnExpression}, ${r.returnExpression})`)}case`SYMBOL`:let f=r.indexOf(e.value);return u.return(`getSymbolValue(this.symbols[${f}])`);case`EMPTY`:return u.return(`undefined`)}}}return{execute:_z[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function Sz(e){let t=``;for(let n of e)switch(n.type){case`STRING`:t+=`|S|`;break;case`NUMBER`:t+=`|N|`;break;case`REFERENCE`:case`INVALID_REFERENCE`:n.value.includes(`:`)?t+=`|R|`:t+=`|C|`;break;case`SPACE`:break;default:t+=n.value;break}return t}function Cz(e){let t={numbers:[],strings:[]},n=[],r=[];for(let i of e)switch(i.type){case`INVALID_REFERENCE`:case`REFERENCE`:n.push(i.value);break;case`STRING`:let e=Xe(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=aa(i.value,R);t.numbers.push({value:e});break}case`SYMBOL`:r.push(Xe(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function wz(e){let t=e.args.length,n=e.value.toUpperCase(),r=mz[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Expected %(minArgRequired)s minimum, but got %(nbrArgSupplied)s instead.`,{functionName:n,minArgRequired:a,nbrArgSupplied:t}));if(t>r.maxArgPossible)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Expected %(maxArgPossible)s maximum, but got %(nbrArgSupplied)s instead.`,{functionName:n,maxArgPossible:r.maxArgPossible,nbrArgSupplied:t}));if(i>1){let e=i*Math.floor((t-a)/i),o=t-a-e-r.nbrOptionalNonRepeatingArgs;if(o>0)throw new ga(k(`Invalid number of arguments for the %(functionName)s function. Repeatable arguments should be supplied in groups of %(nbrArgRepeating)s, with up to %(nbrArgOptional)s optional. Got %(nbrValueRemaining)s too many.`,{functionName:n,nbrArgRepeating:i,nbrArgOptional:r.nbrOptionalNonRepeatingArgs,nbrValueRemaining:o}))}}function Tz(e){return e.startsWith(`RANGE`)}function Ez(e,t){return{sequence:0,autoSelectFirstProposal:!0,getProposals(n){let r=e.measures.filter(e=>e!==t).map(e=>{let t=Ze(e.id);return{text:t,description:e.displayName,htmlContent:[{value:t,color:ge}],fuzzySearchKey:e.displayName+t+e.fieldName}}),i=e.rows.concat(e.columns).map(e=>{let t=Ze(e.nameWithGranularity);return{text:t,description:e.displayName,htmlContent:[{value:t,color:ge}],fuzzySearchKey:e.displayName+t+e.fieldName}});return r.concat(i)},selectProposal(e,t){let n=e.end;e.type===`SYMBOL`&&(n=e.start);let r=e.end;this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}}}var Dz=class extends t.Component{static template=`o-spreadsheet-PivotMeasureEditor`;static components={PivotDimension:oz,StandaloneComposer:jN,Select:EM};static props={definition:Object,measure:Object,onMeasureUpdated:Function,onRemoved:Function,generateMeasureId:Function,aggregators:Object,pivotId:String};getMeasureAutocomplete(){return Ez(this.props.definition,this.props.measure)}updateMeasureFormula(e){this.props.onMeasureUpdated({...this.props.measure,computedBy:{sheetId:this.env.model.getters.getActiveSheetId(),formula:e[0]===`=`?e:`=`+e}})}updateAggregator(e){this.props.onMeasureUpdated({...this.props.measure,aggregator:e,id:this.props.generateMeasureId(this.props.measure.fieldName,e)})}updateName(e,t){this.props.measure.computedBy&&t?this.props.onMeasureUpdated({...this.props.measure,userDefinedName:t,id:this.props.generateMeasureId(t,this.props.measure.aggregator),fieldName:t}):this.props.onMeasureUpdated({...this.props.measure,userDefinedName:t})}toggleMeasureVisibility(){this.props.onMeasureUpdated({...this.props.measure,isHidden:!this.props.measure.isHidden})}openShowValuesAs(){this.env.replaceSidePanel(`PivotMeasureDisplayPanel`,`pivot_key_${this.props.pivotId}`,{pivotId:this.props.pivotId,measure:this.props.measure})}getColoredSymbolToken(e){if(e.type!==`SYMBOL`)return;let t=Xe(e.value,`'`);if(this.props.definition.columns.some(e=>e.nameWithGranularity===t)||this.props.definition.rows.some(e=>e.nameWithGranularity===t)||this.props.definition.measures.some(e=>e.id===t&&e.id!==this.props.measure.id))return ge}get isCalculatedMeasureInvalid(){return yz.IsBadExpression(this.props.measure.computedBy?.formula??``)}get aggregatorOptions(){let e=this.props.aggregators[this.props.measure.type],t=Object.keys(e).map(t=>({value:t,label:e[t]}));return this.props.measure.computedBy?[...t,{value:``,label:k(`Compute from totals`)}]:t}getMeasureDescription(e){let t=e.display;if(!t||t.type===`no_calculations`)return``;let n=this.env.model.getters.getPivot(this.props.pivotId),r=[...n.definition.columns,...n.definition.rows].find(e=>e.nameWithGranularity===t.fieldNameWithGranularity),i=r?kh(r):``,a=t.value?.toString()||``;return cm.descriptions[t.type](i,a)}},Oz=class extends t.Component{static template=`o-spreadsheet-PivotSortSection`;static components={Section:Q};static props={definition:Object,pivotId:String};get hasValidSort(){let e=this.env.model.getters.getPivot(this.props.pivotId);return!!this.props.definition.sortedColumn&&jh(this.props.definition.sortedColumn,e)}get sortDescription(){return k(`Sorted on column (%(ascOrDesc)s):`,{ascOrDesc:this.props.definition.sortedColumn?.order===`asc`?k(`ascending`):k(`descending`)})}get sortValuesAndFields(){let e=this.props.definition.sortedColumn;if(!e)return[];let t=this.env.model.getters.getPivot(this.props.pivotId),n=this.env.model.getters.getLocale(),r=[],i=[];for(let a of e.domain){r.push(a);let{value:e,format:o}=t.getPivotHeaderValueAndFormat(r),s=z(e,{format:o,locale:n}),c=t.definition.getDimension(a.field);i.push({field:kh(c),value:s})}e.domain.length===0&&i.push({value:k(`Total`)});let a=t.getMeasure(e.measure).displayName;return i.push({value:a,field:k(`Measure`)}),i}},kz=class extends t.Component{static template=`o-spreadsheet-PivotLayoutConfigurator`;static components={AddDimensionButton:az,PivotDimension:oz,PivotDimensionOrder:cz,PivotDimensionGranularity:sz,PivotMeasureEditor:Dz,PivotSortSection:Oz,PivotCustomGroupsCollapsible:rz};static props={definition:Object,onDimensionsUpdated:Function,unusedGroupableFields:Array,measureFields:Array,unusedGranularities:Object,dateGranularities:Array,datetimeGranularities:Array,getScrollableContainerEl:{type:Function,optional:!0},pivotId:String};dimensionsRef=(0,t.useRef)(`pivot-dimensions`);dragAndDrop=HN();AGGREGATORS=ph;composerFocus;isDateOrDatetimeField=yh;setup(){this.composerFocus=D(xr)}startDragAndDrop(e,t){if(t.button!==0||t.target.tagName===`SELECT`)return;let n=this.getDimensionElementsRects(),{columns:r,rows:i}=this.props.definition,a=[...r.map(e=>e.nameWithGranularity),`__rows_title__`,...i.map(e=>e.nameWithGranularity)],o=r.concat(i),s=a.map((e,t)=>({id:e,size:n[t+1].height,position:n[t+1].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.nameWithGranularity,initialMousePosition:t.clientY,items:s,scrollableContainerEl:this.props.getScrollableContainerEl?.()||this.dimensionsRef.el,onDragEnd:(e,t)=>{let n=a.findIndex(t=>t===e);if(n===t)return;let r=[...a];r.splice(n,1),r.splice(t,0,e);let i=r.slice(0,r.indexOf(`__rows_title__`)),s=r.slice(r.indexOf(`__rows_title__`)+1);this.props.onDimensionsUpdated({columns:i.map(e=>o.find(t=>t.nameWithGranularity===e)).filter(C),rows:s.map(e=>o.find(t=>t.nameWithGranularity===e)).filter(C)})}})}getGranularitiesFor(e){return yh(e)?e.type===`date`?this.props.dateGranularities:this.props.datetimeGranularities:[]}startDragAndDropMeasures(e,t){if(t.button!==0||t.target.tagName===`SELECT`||t.target.tagName===`INPUT`||this.composerFocus.focusMode!==`inactive`)return;let n=this.getDimensionElementsRects(),{measures:r,columns:i,rows:a}=this.props.definition,o=r.map(e=>e.id),s=3+i.length+a.length,c=o.map((e,t)=>({id:e,size:n[t+s].height,position:n[t+s].y}));this.dragAndDrop.start(`vertical`,{draggedItemId:e.id,initialMousePosition:t.clientY,items:c,scrollableContainerEl:this.props.getScrollableContainerEl?.()||this.dimensionsRef.el,onDragEnd:(e,t)=>{let n=o.findIndex(t=>t===e);if(n===t)return;let i=[...o];i.splice(n,1),i.splice(t,0,e),this.props.onDimensionsUpdated({measures:i.map(e=>r.find(t=>t.id===e)).filter(C)})}})}getDimensionElementsRects(){return Array.from(this.dimensionsRef.el.children).map(e=>{let t=getComputedStyle(e),n=e.getBoundingClientRect();return{x:n.x,y:n.y,width:n.width+parseInt(t.marginLeft||`0`)+parseInt(t.marginRight||`0`),height:n.height+parseInt(t.marginTop||`0`)+parseInt(t.marginBottom||`0`)}})}removeDimension(e){let{columns:t,rows:n}=this.props.definition;this.props.onDimensionsUpdated({columns:t.filter(t=>t.nameWithGranularity!==e.nameWithGranularity),rows:n.filter(t=>t.nameWithGranularity!==e.nameWithGranularity)})}removeMeasureDimension(e){let{measures:t}=this.props.definition;this.props.onDimensionsUpdated({measures:t.filter(t=>t.id!==e.id)})}addColumnDimension(e){let{columns:t}=this.props.definition;this.props.onDimensionsUpdated({columns:t.concat([{fieldName:e,order:`asc`}])})}addRowDimension(e){let{rows:t}=this.props.definition;this.props.onDimensionsUpdated({rows:t.concat([{fieldName:e,order:`asc`}])})}addMeasureDimension(e){let{measures:t}=this.props.definition,n=this.getDefaultMeasureAggregator(e);this.props.onDimensionsUpdated({measures:t.concat([{id:this.getMeasureId(e,n),fieldName:e,aggregator:n}])})}updateMeasure(e,t){let{measures:n}=this.props.definition,r={measures:n.map(n=>n.id===e.id?t:n)};this.props.definition.sortedColumn?.measure===e.id&&(r.sortedColumn={...this.props.definition.sortedColumn,measure:t.id}),this.props.onDimensionsUpdated(r)}getMeasureId(e,t){let n=e.replaceAll(`'`,``)+(t?`:${t}`:``),r=n,i=2;for(;this.props.definition.measures.some(e=>e.id===r);)r=`${n}:${i}`,i++;return r}getDefaultMeasureAggregator(e){let t=this.props.measureFields.find(t=>t.name===e);return t?.aggregator?t.aggregator:`count`}addCalculatedMeasure(){let{measures:e}=this.props.definition,t=this.env.model.getters.generateNewCalculatedMeasureName(e);this.props.onDimensionsUpdated({measures:e.concat([{id:this.getMeasureId(t,`sum`),fieldName:t,aggregator:`sum`,computedBy:{sheetId:this.env.model.getters.getActiveSheetId(),formula:`=0`}}])})}getCustomField(e){return this.env.model.getters.getPivotCoreDefinition(this.props.pivotId).customFields?.[e.nameWithGranularity]}updateOrder(e,t){let{rows:n,columns:r}=this.props.definition;this.props.onDimensionsUpdated({rows:n.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,order:t||void 0}:n),columns:r.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,order:t||void 0}:n)})}updateGranularity(e,t){let{rows:n,columns:r}=this.props.definition;this.props.onDimensionsUpdated({rows:n.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,granularity:t}:n),columns:r.map(n=>n.nameWithGranularity===e.nameWithGranularity?{...n,granularity:t}:n)})}getHugeDimensionErrorMessage(e){let t=this.env.model.getters.getPivot(this.props.pivotId).getPossibleFieldValues(e);return t.length>100?k(`This dimension contains a lot of values (%s), and might slow down the pivot table.`,t.length):void 0}},Az=class extends t.Component{static template=`o-spreadsheet-PivotTitleSection`;static components={CogWheelMenu:SI,Section:Q,TextInput:gI};static props={pivotId:String,flipAxis:Function};get cogWheelMenuItems(){return[{name:k(`Flip axes`),icon:`o-spreadsheet-Icon.EXCHANGE`,execute:this.props.flipAxis,isEnabledOnLockedSheet:!0},{name:k(`Duplicate`),icon:`o-spreadsheet-Icon.COPY`,execute:()=>this.duplicatePivot(),isEnabledOnLockedSheet:!0},{name:k(`Delete`),icon:`o-spreadsheet-Icon.TRASH`,execute:()=>this.delete(),isEnabledOnLockedSheet:!0}]}get name(){return this.env.model.getters.getPivotName(this.props.pivotId)}get displayName(){return this.env.model.getters.getPivotDisplayName(this.props.pivotId)}duplicatePivot(){let e=this.env.model.uuidGenerator.smallUuid(),t=this.env.model.uuidGenerator.smallUuid(),n=this.env.model.dispatch(`DUPLICATE_PIVOT_IN_NEW_SHEET`,{pivotId:this.props.pivotId,newPivotId:e,newSheetId:t}),r;r=n.isSuccessful?k(`Pivot duplicated.`):n.isCancelledBecause(`PivotInError`)?k(`Cannot duplicate a pivot in error.`):k(`Pivot duplication failed.`);let i=n.isSuccessful?`success`:`danger`;this.env.notifyUser({text:r,sticky:!1,type:i}),n.isSuccessful&&this.env.openSidePanel(`PivotSidePanel`,{pivotId:e})}delete(){this.env.askConfirmation(k(`Are you sure you want to delete this pivot?`),()=>{this.env.model.dispatch(`REMOVE_PIVOT`,{pivotId:this.props.pivotId})})}onNameChanged(e){let t=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);this.env.model.dispatch(`UPDATE_PIVOT`,{pivotId:this.props.pivotId,pivot:{...t,name:e}})}},jz=class{measures;columns;rows;sortedColumn;collapsedDomains;customFields;constructor(e,t){this.columns=e.columns.map(e=>this.createPivotDimension(t,e)),this.rows=e.rows.map(e=>this.createPivotDimension(t,e)),this.measures=e.measures.map(e=>this.createMeasure(t,e)),this.sortedColumn=e.sortedColumn,this.collapsedDomains=e.collapsedDomains,this.customFields=e.customFields}getDimension(e){let t=this.columns.find(t=>t.nameWithGranularity===e)||this.rows.find(t=>t.nameWithGranularity===e);if(!t)throw new j(k(`Dimension %s does not exist`,e));return t}getMeasure(e){let t=this.measures.find(t=>t.id===e);if(!t)throw new j(k(`Field %s is not a measure`,e));return t}get invalidAggregatorsForCustomField(){return[]}createMeasure(e,t){let n=t.fieldName,r=n===`__count`?{name:`__count`,string:k(`Count`),type:`integer`,aggregator:`sum`}:e[n],i=t.aggregator,a=!!(r||t.computedBy);for(let t of[...this.rows,...this.columns])if(e[t.fieldName]?.isCustomField&&this.invalidAggregatorsForCustomField.includes(i)){a=!1;break}return{id:t.id,get displayName(){return t.userDefinedName??r?.string??t.fieldName},userDefinedName:t.userDefinedName,fieldName:n,aggregator:i,type:n===`__count`?`integer`:r?.type??`integer`,isValid:a,isHidden:t.isHidden,format:t.format,computedBy:t.computedBy,display:t.display}}createPivotDimension(e,t){let n=e[t.fieldName],r=n?.type??`integer`,i=n&&yh(n)?t.granularity:void 0;return{displayName:n?.string??t.fieldName,nameWithGranularity:t.fieldName+(i?`:${i}`:``),fieldName:t.fieldName,granularity:i,type:n?.isCustomField?`custom`:r,order:t.order,isValid:!!n,isCustomField:!!n?.isCustomField,customGroups:n?.customGroups,parentField:n?.parentField}}},Mz=class extends jz{range;constructor(e,t,n){if(super(e,t),e.dataSet){let{sheetId:t,zone:r}=e.dataSet;this.range=n.getRangeFromZone(t,r)}}};function Nz(e,t){let{colDomain:n,rowDomain:r}=Fz(e,t);return[...n,...r.slice(0,r.length-1)]}function Pz(e,t){let{colDomain:n,rowDomain:r}=Fz(e,t);return[...n.slice(0,n.length-1),...r]}function Fz(e,t){let n=e.definition.rows.map(e=>e.nameWithGranularity),r=t.filter(e=>n.includes(e.field)),i=e.definition.columns.map(e=>e.nameWithGranularity);return{colDomain:t.filter(e=>i.includes(e.field)),rowDomain:r}}function Iz(e,t,n){return t===`column`?Fz(e,n).colDomain:Fz(e,n).rowDomain}function Lz(e,t){return t.find(t=>t.field===e)?.value}function Rz(e,t){for(let n of t)if(e.definition.rows.find(e=>e.nameWithGranularity===n.field)===void 0&&e.definition.columns.find(e=>e.nameWithGranularity===n.field)===void 0)return!1;let{rowDomain:n,colDomain:r}=Fz(e,t);return zz(n,e.getExpandedTableStructure().getRowTree())&&zz(r,e.getExpandedTableStructure().getColTree())}function zz(e,t){return Bz(e,t)!==void 0}function Bz(e,t,n){let r=t;for(let t of e){let e=r.find(e=>e.value===t.value);if(!e)return;if(e.field===n)return r;r=e.children}return r}function Vz(e,t,n){let{rowDomain:r,colDomain:i}=Fz(e,n);if(Wz(e,t)===`row`){let e=r.findIndex(e=>e.field===t);if(e===-1)return n;r=r.slice(0,e+1)}else{let e=i.findIndex(e=>e.field===t);if(e===-1)return n;i=i.slice(0,e+1)}return[...r,...i]}function Hz(e,t,n){e=b(e);let r=e.find(e=>e.field===t);return r&&(r.value=n),e}function Uz(e,t){return t.some(t=>t.field===e)}function Wz(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 Error(`Field ${t} not found in pivot`)}function Gz(e,t,n,r){let i=Wz(e,n),a=i===`row`?e.getExpandedTableStructure().getRowTree():e.getExpandedTableStructure().getColTree(),o=Bz(Iz(e,i,t),a,n)?.map(e=>e.value)??[],s=Lz(n,t);if(s===void 0)return;let c=o.indexOf(s);if(!(s===void 0||c===-1))return Hz(t,n,o[x(c+(r===`(previous)`?-1:1),0,o.length-1)])}function Kz(e){return e?e.map(qz).join(`, `):``}function qz(e){return e?`${e.field}=${e.value}`:``}function Jz(e,t){let n=e.findIndex(e=>e.field===t);if(n===-1)return``;let r=e.slice(0,n),i=e.at(-1);return Kz(i.field===t?r:[...r,i])}function Yz(e,t){let n=e.findIndex(e=>e.field===t);return n===-1?``:Kz([...e.slice(0,n),...e.slice(n+1)])}function Xz(e,t,n){let r=[...e],i=[...t];r.sort((e,t)=>n([...i,e],[...i,t]));for(let t of e)t.children=Xz(t.children,[...i,t],n);return r}function Zz(e,t){return e.length>t.length&&t.every((t,n)=>w(t,e[n]))}var Qz=class{columns;rows;measures;fieldsType;maxIndent;pivotCells={};rowTree;colTree;isSorted=!1;constructor(e,t,n,r,i={COL:[],ROW:[]}){this.measures=n,this.fieldsType=r,i.COL.length&&(e=this.removeCollapsedColumns(e,n,i.COL)),this.columns=e.map(e=>{let t=1;return e.map(e=>(e={...e,offset:t},t+=e.width,e))}),this.rows=t.filter(e=>!this.isParentCollapsed(i.ROW,e)),this.maxIndent=Math.max(...this.rows.map(e=>e.indent)),this.rowTree=_t(()=>this.buildRowsTree()),this.colTree=_t(()=>this.buildColumnsTree())}removeCollapsedColumns(e,t,n){let r=(n,r)=>{let i=this.getDomain(n),a=e[r],o=a.findIndex(e=>Zz(this.getDomain(e),i)),s=a.findLastIndex(e=>Zz(this.getDomain(e),i)),c=r===e.length-1,l=t.map(e=>({fields:c?[...n.fields,`measure`]:[],values:c?[...n.values,e]:[],width:1,offset:0,collapsedHeader:!c}));a.splice(o,s-o+1,...l)};return e.map((i,a)=>{for(let o of i){if(a>=e.length-2)return i;let s=this.getDomain(o);if(n.some(e=>w(s,e))){o.width=t.length;for(let t=a+1;t<e.length;t++)r(o,t)}}return i})}isParentCollapsed(e,t){let n=this.getDomain(t);return e.some(e=>Zz(n,e))}getNumberOfDataColumns(){return this.columns.at(-1)?.length||0}getSkippedRows(e){let t=new Set;if(!e.displayColumnHeaders)for(let e=0;e<this.columns.length-1;e++)t.add(e);return e.displayMeasuresRow||t.add(this.columns.length-1),t}getPivotCells(e=lh){let t=JSON.stringify(e);if(!this.pivotCells[t]){let{displayTotals:n}=e,r=this.rows.length,i=this.getNumberOfDataColumns(),a=this.columns.length+r,o=1+i;!n&&r!==1&&--a,!n&&i!==this.measures.length&&(o-=this.measures.length);let s=[],c=this.getSkippedRows(e);for(let e=0;e<o;e++){s.push([]);for(let t=0;t<a;t++)c.has(t)||s[e].push(this.getPivotCell(e,t,n))}this.pivotCells[t]=s}return this.pivotCells[t]}getRowTree(){return this.rowTree()}getColTree(){return this.colTree()}isTotalRow(e){return this.rows[e].indent!==this.maxIndent}getPivotCell(e,t,n=!0){let r=this.columns.length;if(e>0&&t===r-1){let n=this.getColHeaderDomain(e,t);if(!n)return $z;let r=n.at(-1)?.value?.toString()||``;return{type:`MEASURE_HEADER`,domain:n.slice(0,-1),measure:r}}else if(t<=r-1){let n=this.getColHeaderDomain(e,t);return n?{type:`HEADER`,domain:n,dimension:`COL`}:$z}else if(e===0){let e=t-r;return{type:`HEADER`,domain:this.getDomain(this.rows[e]),dimension:`ROW`}}else{let i=t-r;return!n&&this.isTotalRow(i)?$z:{type:`VALUE`,domain:[...this.getDomain(this.rows[i]),...this.getColDomain(e)],measure:this.getColMeasure(e)}}}getColHeaderDomain(e,t){if(e===0)return;let n=this.columns[t].find(t=>t.offset===e);if(!(!n||n.collapsedHeader))return this.getDomain(n)}getDomain(e){return e.fields.map((t,n)=>{if(t===`measure`)return{type:`char`,field:t,value:Ch({displayName:`measure`,type:`char`},e.values[n])};{let{fieldName:r,granularity:i}=vh(t),a=this.fieldsType[r]||`char`;return{type:a,field:t,value:Ch({displayName:r,type:a,granularity:i},e.values[n])}}})}getColDomain(e){let t=this.getColHeaderDomain(e,this.columns.length-1);return t?t.slice(0,-1):[]}getColMeasure(e){let t=this.getColHeaderDomain(e,this.columns.length-1)?.at(-1)?.value;if(t==null)throw Error(`Measure is missing`);return t.toString()}buildRowsTree(){let e=[],t=0,n={};n[0]=e;for(let r of this.rows){if(r.fields.length===0||r.values.length===0)return e;let i=r.fields.length-1,a=r.fields[i],{fieldName:o,granularity:s}=vh(a),c=Ch({displayName:o,type:this.fieldsType[o]??`char`,granularity:s},r.values[i]);if(i>t){t=i,n[t]=[];let e=n[t-1].at(-1);e&&(e.children=n[t])}t=i;let l={value:c,field:r.fields[i],children:[],type:this.fieldsType[o]||`char`,width:0};n[t].push(l)}return e}buildColumnsTree(){let e=[],t=this.columns.at(-2)||[],n={};n[0]=e;for(let e of t)for(let t=0;t<e.fields.length;t++){let r=e.fields[t],{fieldName:i,granularity:a}=vh(r),o=Ch({displayName:i,type:this.fieldsType[i]??`char`,granularity:a},e.values[t]),s={value:o,field:e.fields[t],children:[],width:e.width,type:this.fieldsType[i]||`char`};n[t]?.at(-1)?.value!==o&&(n[t+1]=[],s.children=n[t+1],n[t].push(s))}return e}export(){return{cols:this.columns,rows:this.rows,measures:this.measures,fieldsType:this.fieldsType}}sort(e,t,n){if(this.isSorted)return;let r=(e,t)=>{let r=n(e,t).value;return typeof r==`number`?r:-1/0},i=t.domain,a=Xz(this.rowTree(),[],(n,a)=>{let o=r(e,[...n,...i]),s=r(e,[...a,...i]);return t.order===`asc`?o-s:s-o});this.rowTree=_t(a),this.rows=[...this.rowTreeToRows(a),this.rows[this.rows.length-1]],this.isSorted=!0}rowTreeToRows(e,t){return e.flatMap(e=>{let n={indent:t?t.indent+1:1,fields:[...t?.fields||[],e.field],values:[...t?.values||[],e.value]};return[n,...this.rowTreeToRows(e.children,n)]})}get numberOfCells(){return this.rows.length*this.getNumberOfDataColumns()}getColumnDomainsAtDepth(e){return e<0||e>=this.columns.length-1?[]:this.columns[e].map(e=>this.getDomain(e)).filter(e=>e.length)}getRowDomainsAtDepth(e){return e<0||e>this.maxIndent?[]:this.rows.filter(t=>t.indent===e+1).map(e=>this.getDomain(e))}getPivotTableDimensions(e){let t=this.getPivotCells(e),n=0;return e.displayColumnHeaders&&(n=this.columns.length-1),e.displayMeasuresRow&&n++,{numberOfCols:Math.min(1+e.numberOfColumns,t.length),numberOfRows:Math.min(n+e.numberOfRows,t[0].length),numberOfHeaderRows:n}}getNumberOfRowGroupBys(){return Math.max(...this.rows.map(e=>e.fields.length))}};let $z={type:`EMPTY`};function eB(e,t,n){let r=t.measures.filter(e=>!e.isHidden).map(e=>e.id),i=nB(e,t.columns,0);rB(i,r.length);let a=iB(i,t),o=tB(e,0,t.rows,[],[]);o.push({fields:[],values:[],indent:0});let s={};for(let e of t.columns)s[e.fieldName]=e.type;for(let e of t.rows)s[e.fieldName]=e.type;return new Qz(a,o,r,s,n===`collapsed`?t.collapsedDomains:void 0)}function tB(e,t,n,r,i){if(t>=n.length)return[];let a=n[t],o=a.nameWithGranularity,s=aB(e,a),c=sB(s,a),l=[],u=r.concat(o);for(let e of c){let r=i.concat(e);l.push({fields:u,values:r,indent:t+1});let a=s[e];a&&l.push(...tB(a,t+1,n,u,r))}return l}function nB(e,t,n){if(n>=t.length)return[];let r=t[n],i=t[n].nameWithGranularity,a=aB(e,r);return sB(a,t[n]).map(e=>({value:a[e]?.[0]?.[r.nameWithGranularity]?.value??null,field:i,children:nB(a[e]||[],t,n+1),type:r.type,width:0}))}function rB(e,t){for(let n in e){let r=e[n];r.children.length===0?r.width=t:(rB(r.children,t),r.width=r.children.reduce((e,t)=>e+t.width,0))}}function iB(e,t){let n=t.columns.map(e=>e.nameWithGranularity),r=n.length,i=t.measures.filter(e=>!e.isHidden),a=i.length,o=Array(r).fill(0).map(()=>[]);function s(e,t,i){let a=o[t];for(let o of e){let e=i.concat([o.value]),c={fields:n.slice(0,t+1),values:e,width:o.width,offset:0};a.push(c),t<=r-1&&s(o.children,t+1,e)}}s(e,0,[]);let c=n.length>0,l=[];return c&&o[o.length-1].forEach(e=>{i.forEach(t=>{let n={fields:[...e.fields,`measure`],values:[...e.values,t.id],width:1,offset:0};l.push(n)})}),i.forEach(e=>{let t={fields:[`measure`],values:[e.id],width:1,offset:0};l.push(t)}),o.push(l),o.length===1&&o.unshift([]),o[o.length-2].push({fields:[],values:[],width:a,offset:0}),o}function aB(e,t){return Object.groupBy(e,oB(t))}function oB(e){let t=e.nameWithGranularity;return e=>`${e[t]?.value??null}`}function sB(e,t){let n=t.order,r=t.customGroups?.find(e=>e.isOtherGroup);return!n&&!r?Object.keys(e):Object.keys(e).sort((e,i)=>r&&e===r.name?1:r&&i===r.name?-1:n?cB(t,e,i):0)}function cB(e,t,n){return t===`null`?e.order===`asc`?1:-1:n===`null`?e.order===`asc`?-1:1:e.type===`integer`||e.type===`datetime`?e.order===`asc`?N(t,R)-N(n,R):N(n,R)-N(t,R):e.order===`asc`?t.localeCompare(n):n.localeCompare(t)}var lB=class{type=`SPREADSHEET`;getters;_definition;coreDefinition;metaData={fields:{},fieldKeys:[]};dataEntries=[];collapsedTable;expandedTable;invalidRangeError;needsReevaluation=!0;constructor(e,t){this.getters=t.getters,this.coreDefinition=t.definition}init(e={}){(!this._definition||e.reload)&&(this.reload(4),this.needsReevaluation=!1)}reload(e){e===4&&(this.metaData=this.loadMetaData()),e>=3&&(this._definition=this.loadRuntimeDefinition()),e>=2&&(this.dataEntries=this.loadData()),e>=1&&(this.collapsedTable=void 0,this.expandedTable=void 0)}onDefinitionChange(e){let t=this.coreDefinition;if(this.coreDefinition=e,this._definition){let n=Math.max(this.computeShouldReload(t,e),0);this.reload(n)}}computeShouldReload(e,t){return w(e.dataSet,t.dataSet)?3:4}get isInvalidRange(){return!!this.invalidRangeError}get invalidRangeMessage(){return this.invalidRangeError?.message}get definition(){if(this._definition||this.init(),!this._definition)throw Error(`Pivot definition should be defined at this point.`);return this._definition}isValid(){if(this.invalidRangeError||!this.definition)return!1;for(let e of this.definition.measures)if(!e.isValid)return!1;for(let e of this.definition.columns)if(!e.isValid)return!1;for(let e of this.definition.rows)if(!e.isValid)return!1;return!0}assertIsValid({throwOnError:e}){if(!this.isValid()){if(e)throw this.invalidRangeError?this.invalidRangeError:new j(k(`At least one measure and/or dimension is not correct.`));return{value:A.GenericError,message:this.invalidRangeError?.message??k(`At least one measure and/or dimension is not correct.`)}}}areDomainArgsFieldsValid(e){let t=e.filter((e,t)=>t%2==0).map(P);return t.length&&t.at(-1)===`measure`&&(t=t.slice(0,-1)),xh(t,this.definition)}parseArgsToPivotDomain(e){let t=[];for(let n=0;n<e.length-1;n+=2){let r=P(e[n]),i=this.getTypeOfDimension(r),a=r===`measure`?P(e[n+1]):Ch(this.getDimension(r),e[n+1]);t.push({field:r,value:a,type:i})}return t}markAsDirtyForEvaluation(){this.needsReevaluation=!0}getMeasure(e){return this.definition.getMeasure(e)}getPivotMeasureValue(e){return{value:this.getMeasure(e).displayName}}getPivotHeaderValueAndFormat(e){let t=e.at(-1);if(!t)return{value:k(`Total`)};let n=this.getDimension(t.field),r=this.filterDataEntriesFromDomain(this.dataEntries,e)[0]?.[n.nameWithGranularity];return n.type===`datetime`?Xm(n.granularity||`month`).toValueAndFormat(t.value,this.getters.getLocale()):r?r.value===null?{value:k(`(Undefined)`)}:r:{value:``}}getPivotCellValueAndFormat(e,t){let n=this.filterDataEntriesFromDomain(this.dataEntries,t);if(n.length===0)return{value:``};let r=this.getMeasure(e),i=n.map(e=>e[r.fieldName]).filter(C),a=i.filter(e=>e.type!==`empty`),o=r.aggregator,s=mh[o];if(!s)throw Error(`Aggregator ${o} does not exist`);try{let e=s([i],this.getters.getLocale());return a.length===0?{...e,value:``}:e}catch(e){return Zv(e,o.toUpperCase())}}getPossibleFieldValues(e){let t=[],n=aB(this.dataEntries,e),r=sB(n,e);for(let i of r)t.push({value:n[i]?.[0]?.[e.nameWithGranularity]?.value??``,label:n[i]?.[0]?.[e.nameWithGranularity]?.formattedValue||``});return t}getCollapsedTableStructure(){if(!this.isValid())throw Error(`Pivot is not valid !`);return this.collapsedTable||=eB(this.dataEntries,this.definition,`collapsed`),this.collapsedTable}getExpandedTableStructure(){if(!this.isValid())throw Error(`Pivot is not valid !`);return this.expandedTable||=eB(this.dataEntries,this.definition,`expanded`),this.expandedTable}getFields(){return this.metaData.fields}get fields(){return this.getFields()}loadMetaData(){if(this.invalidRangeError=void 0,this.coreDefinition.dataSet){let{zone:e,sheetId:t}=this.coreDefinition.dataSet,n=this.getters.getRangeFromZone(t,e);try{let e=this.extractFieldsFromRange(n),t=Ph(this.coreDefinition,e.fields);return{...e,fields:{...e.fields,...t}}}catch(e){return this.invalidRangeError=e,{fields:{},fieldKeys:[]}}}else return this.invalidRangeError=new j(k(`The pivot cannot be created because the dataset is missing.`)),{fields:{},fieldKeys:[]}}loadRuntimeDefinition(){return new Mz(this.coreDefinition,this.fields,this.getters)}loadData(){let e=this._definition?.range;return this.isValid()&&e?this.extractDataEntriesFromRange(e):[]}getTypeOfDimension(e){if(e===`measure`)return`char`;let{fieldName:t}=vh(e),n=this.fields[t]?.type;if(!n)throw Error(`Field ${t} does not exist`);return n}filterDataEntriesFromDomain(e,t){return t.reduce((e,t)=>this.filterDataEntriesFromDomainNode(e,t),e)}filterDataEntriesFromDomainNode(e,t){let{field:n,value:r,type:i}=t,{nameWithGranularity:a}=this.getDimension(n);return e.filter(e=>{let t=e[a]?.value;return i===`char`?String(t)===String(r):t===r})}getDimension(e){return this.definition.getDimension(e)}getTypeFromZone(e,t){let n=this.getters.getEvaluatedCellsInZone(e,t).filter(e=>!(e.type===`empty`||e.value===``));return n.length===0?`integer`:n.every(e=>e.type===`number`&&e.format&&os(e.format))?`datetime`:n.every(e=>e.type===`boolean`)?`boolean`:n.every(e=>e.type===`number`)?`integer`:`char`}assertCellIsValidField(e,t,n){if(n.type===`error`)throw new j(k(`The pivot cannot be created because cell %s contains an error`,T(e,t)));if(n.type===`empty`||n.value===``)throw new j(k(`The pivot cannot be created because cell %s is empty`,T(e,t)));if(n.value===`__count`)throw new j(k(`The pivot cannot be created because cell %s contains a reserved value`,T(e,t)))}extractFieldsFromRange(e){let t={},n=[],r=e.sheetId,i=e.zone.top;for(let a=e.zone.left;a<=e.zone.right;a++){let o=this.getters.getEvaluatedCell({sheetId:r,col:a,row:i});this.assertCellIsValidField(a,i,o);let s=o.value?.toString();if(s){let i=this.getTypeFromZone(r,{top:e.zone.top+1,left:a,bottom:e.zone.bottom,right:a}),o=Nh(s,t);t[o]={name:o,type:i,string:o,aggregator:i===`integer`?`sum`:`count`},n.push(o)}}return{fields:t,fieldKeys:n}}extractDataEntriesFromRange(e){let t=[];for(let n=e.zone.top+1;n<=e.zone.bottom;n++){let r={top:n,bottom:n,left:e.zone.left,right:e.zone.right},i=this.getters.getEvaluatedCellsInZone(e.sheetId,r),a={};for(let e in i){let t=i[e],n=this.fields[this.metaData.fieldKeys[e]];if(!n)throw Error(`Field ${this.metaData.fieldKeys[e]} does not exist`);t.value===``?a[n.name]={value:null,type:`empty`,formattedValue:``}:a[n.name]=t}for(let e in this.definition.customFields||{}){let t=this.definition.customFields?.[e];if(!t)continue;let n=a[t.parentField],r=this.fields[t.parentField];if(!n||!r){a[e]={value:null,type:`empty`,formattedValue:``};continue}let i=t.groups.find(e=>e.values.some(e=>e===n?.value))||t.groups.find(e=>e.isOtherGroup);a[e]={...n,value:i?i.name:n.value}}a.__count={value:1,type:`number`,formattedValue:`1`},t.push(a)}let n=this.definition.columns.concat(this.definition.rows).filter(e=>e.type===`datetime`);if(n.length){let e=this.getters.getLocale();for(let r of t)for(let t of n){let n=Hh(t,r[t.fieldName]?.value||null,this.getters.getLocale()),{format:i,value:a}=Xm(t.granularity||`month`).toValueAndFormat(n,e);r[t.nameWithGranularity]={value:n,type:r[t.fieldName]?.type||`empty`,format:r[t.fieldName]?.format,formattedValue:z(a,{locale:e,format:i})}}}return t}};let uB=new B,dB=[`year`,`quarter_number`,`month_number`,`month`,`iso_week_number`,`day_of_month`,`day`,`day_of_week`],fB=[...dB,`hour_number`,`minute_number`,`second_number`];uB.add(`SPREADSHEET`,{ui:lB,definition:Mz,dateGranularities:[...dB],isMeasureCandidate:e=>e.type!==`boolean`,datetimeGranularities:[...fB],isGroupable:()=>!0,canHaveCustomGroup:e=>e.type===`char`&&!e.isCustomField,isPivotUnused:()=>!0,adaptRanges:(e,t,n)=>{if(t.type!==`SPREADSHEET`||!t.dataSet)return t;let{sheetId:r,zone:i}=t.dataSet,a=e.getRangeFromZone(r,i),o=pB(a,n);if(o===a)return t;let s=o&&{sheetId:o.sheetId,zone:o.zone};return{...t,dataSet:s}}});function pB(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}let mB=[`PIVOT.VALUE`,`PIVOT.HEADER`,`PIVOT`];function hB(e,t){return e.getFunctionsFromTokens(mB,t)[0]}function gB(e,t){return e.getFunctionsFromTokens(mB,t)}function _B(e,t){return e.getFunctionsFromTokens(mB,t).length}function vB(e,t){let n=`"${t?`${e.name}:${t}`:e.name}"`,r=e.string===e.name?n:e.string+n;return{text:n,description:e.string+(e.help?` (${e.help})`:``),htmlContent:[{value:n,color:We.STRING}],fuzzySearchKey:r}}function yB(e){let t=`"${e.id}"`,n=e.displayName+e.fieldName+t;return{text:t,description:e.displayName,htmlContent:[{value:t,color:We.STRING}],fuzzySearchKey:n}}function bB(e,t){let n=e.end,r=e.end;e.type!==`ARG_SEPARATOR`&&(n=e.start),this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}function xB(e,t){let n=e.end,r=e.end;e.type!==`LEFT_PAREN`&&(n=e.start),this.composer.changeComposerCursorSelection(n,r),this.composer.replaceComposerCursorSelection(t)}function SB(e){let t=e.functionContext?.args[0];if(!(!t||![`STRING`,`NUMBER`].includes(t.type)))return t.value}var CB=class extends yr{pivotId;updateMode;mutators=[`reset`,`deferUpdates`,`applyUpdate`,`discardPendingUpdate`,`update`];_updatesAreDeferred;draft=null;notification=this.get(DN);alreadyNotified=!1;alreadyNotifiedForPivotSize=!1;constructor(e,t,n=`canDefer`){super(e),this.pivotId=t,this.updateMode=n,this._updatesAreDeferred=this.getters.getPivotCoreDefinition(this.pivotId).deferUpdates??!1}handle(e){switch(e.type){case`UPDATE_PIVOT`:e.pivotId===this.pivotId&&this.getters.getPivot(this.pivotId).init()}}get updatesAreDeferred(){return this.updateMode===`neverDefer`?!1:this._updatesAreDeferred}get fields(){return this.pivot.getFields()}get pivot(){return this.getters.getPivot(this.pivotId)}get definition(){let e=uB.get(this.pivot.type).definition;return this.draft?new e(this.draft,this.fields,this.getters):this.pivot.definition}get isDirty(){return!!this.draft}get measureFields(){let e=[{name:`__count`,string:k(`Count`),type:`integer`,aggregator:`sum`}],t=this.fields;for(let n in t){let r=t[n];r&&uB.get(this.pivot.type).isMeasureCandidate(r)&&e.push(r)}return e.sort((e,t)=>e.string.localeCompare(t.string))}get unusedGroupableFields(){let e=[],t=this.fields;for(let n in t){let r=t[n];r&&uB.get(this.pivot.type).isGroupable(r)&&e.push(r)}let{columns:n,rows:r,measures:i}=this.definition,a=i.concat(r).concat(n).map(e=>e.fieldName),o=this.unusedGranularities;return e.filter(e=>yh(e)?!a.includes(e.name)||o[e.name].size>0:!a.includes(e.name)).sort((e,t)=>e.string.localeCompare(t.string))}get datetimeGranularities(){return uB.get(this.pivot.type).datetimeGranularities}get dateGranularities(){return uB.get(this.pivot.type).dateGranularities}get unusedGranularities(){return this.getUnusedGranularities(this.fields,this.draft??this.getters.getPivotCoreDefinition(this.pivotId))}reset(e){this.pivotId=e,this._updatesAreDeferred=!0,this.draft=null}deferUpdates(e){e===!1&&this.draft?(this.draft.deferUpdates=!1,this.applyUpdate()):this.update({deferUpdates:e}),this._updatesAreDeferred=e}applyUpdate(){if(this.draft){if(this.model.dispatch(`UPDATE_PIVOT`,{pivotId:this.pivotId,pivot:this.draft}),this.draft=null,!this.alreadyNotified&&this.isUpdatedPivotVisibleInViewportOnlyAsStaticPivot()){let e=`=PIVOT(${this.getters.getPivotFormulaId(this.pivotId)})`;this.alreadyNotified=!0,this.notification.notifyUser({type:`info`,text:k(`Pivot updates only work with dynamic pivot tables. Use the formula '%s' or re-insert the static pivot from the Data menu.`,e),sticky:!0})}let e=this.getters.getPivot(this.pivotId),t=e.isValid()?e.getExpandedTableStructure().numberOfCells:0;!this.alreadyNotifiedForPivotSize&&t>5e5&&(this.alreadyNotifiedForPivotSize=!0,this.notification.notifyUser({type:`warning`,text:lm(t,this.getters.getLocale()),sticky:!0}))}}discardPendingUpdate(){this.draft=null}update(e){let t=this.getters.getPivotCoreDefinition(this.pivotId),n={...t,...this.draft,...e},r={...n,columns:n.columns.map(e=>({fieldName:e.fieldName,order:e.order,granularity:e.granularity})),rows:n.rows.map(e=>({fieldName:e.fieldName,order:e.order,granularity:e.granularity})),measures:n.measures.map(e=>({id:e.id,fieldName:e.fieldName,aggregator:e.aggregator,userDefinedName:e.userDefinedName,computedBy:e.computedBy,isHidden:e.isHidden,format:e.format,display:e.display})),sortedColumn:this.shouldKeepSortedColumn(n)?n.sortedColumn:void 0};if(r.collapsedDomains){let{COL:e,ROW:t}=r.collapsedDomains;r.collapsedDomains={COL:e.filter(e=>this.areDomainFieldsValid(e,r.columns)),ROW:t.filter(e=>this.areDomainFieldsValid(e,r.rows))}}if(!this.draft&&w(t,r))return;let i=this.addDefaultDateTimeGranularity(this.fields,r);this.draft=i,this.updatesAreDeferred||this.applyUpdate()}isUpdatedPivotVisibleInViewportOnlyAsStaticPivot(){let e=0,t=this.getters.getPivotFormulaId(this.pivotId);for(let n of this.getters.getVisibleCellPositions()){let r=this.getters.getCell(n);if(r?.isFormula){let n=hB(r.compiledFormula,this.getters),i=n?.args[0]?.value;if(n&&t===i.toString()){if(n.functionName===`PIVOT`)return!1;e++}}}return e>0}addDefaultDateTimeGranularity(e,t){let{columns:n,rows:r}=t,i=b(n),a=b(r),o=this.getUnusedGranularities(e,t);for(let t of i.concat(a)){let n=e[t.fieldName]?.type;if((n===`date`||n===`datetime`)&&!t.granularity){let e=o[t.fieldName]?.values().next().value;o[t.fieldName]?.delete(e),t.granularity=e}}return{...t,columns:i,rows:a}}getUnusedGranularities(e,t){let{columns:n,rows:r,measures:i}=t,a=n.concat(r).concat(i).filter(t=>{let n=e[t.fieldName]?.type;return n===`date`||n===`datetime`}),o={};for(let t of a)o[t.fieldName]=new Set(e[t.fieldName]?.type===`date`?this.dateGranularities:this.datetimeGranularities);for(let e of a)o[e.fieldName].delete(e.granularity);return o}shouldKeepSortedColumn(e){let{sortedColumn:t}=e;if(!t)return!0;let n=this.getters.getPivotCoreDefinition(this.pivotId);return e.measures.find(e=>e.id===t.measure)&&w(n.columns,e.columns)}areDomainFieldsValid(e,t){let n=t.map(({fieldName:e,granularity:t})=>e+(t?`:${t}`:``));for(let t=0;t<e.length;t++)if(e[t].field!==n[t])return!1;return!0}},wB=class extends t.Component{static template=`o-spreadsheet-PivotSpreadsheetSidePanel`;static props={pivotId:String,onCloseSidePanel:Function};static components={PivotLayoutConfigurator:kz,Section:Q,SelectionInput:YN,Checkbox:eP,PivotDeferUpdate:nz,PivotTitleSection:Az};store;state;pivotSidePanelRef=(0,t.useRef)(`pivotSidePanel`);setup(){this.store=ur(CB,this.props.pivotId),this.state=(0,t.useState)({range:void 0,rangeHasChanged:!1})}get shouldDisplayInvalidRangeError(){return this.store.isDirty&&this.state.rangeHasChanged?!1:this.pivot.isInvalidRange}get ranges(){return this.state.range?[this.state.range]:this.definition.range?[this.env.model.getters.getRangeString(this.definition.range,`forceSheetReference`)]:[]}get pivot(){return this.store.pivot}get definition(){return this.store.definition}getScrollableContainerEl(){return this.pivotSidePanelRef.el}onSelectionChanged(e){this.state.rangeHasChanged=!0,this.state.range=e[0]}onSelectionConfirmed(){if(this.state.range){let e=this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(),this.state.range);if(e.invalidSheetName||e.invalidXc)return;let t={sheetId:e.sheetId,zone:e.zone};this.store.update({dataSet:t}),this.store.applyUpdate()}}flipAxis(){let{rows:e,columns:t}=this.definition;this.onDimensionsUpdated({rows:t,columns:e})}onDimensionsUpdated(e){this.store.update(e)}};let TB=new B;TB.add(`SPREADSHEET`,{editor:wB});let EB=e=>({category:`light`,templateName:`pivotLightWithLightBorders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{bold:!0},border:{top:{color:e.highlight,style:`thin`},bottom:{color:e.highlight,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:e.highlight}},totalRow:{border:{top:{color:e.highlight,style:`thin`},bottom:{color:e.highlight,style:`thin`}},style:{bold:!0,fillColor:`#FFFFFF`}},firstRowStripe:{style:{fillColor:e.light},border:{bottom:{color:e.medium,style:`thin`},top:{color:e.medium,style:`thin`},vertical:{color:e.medium,style:`thin`}}},secondColumnStripe:{style:{fillColor:e.light},border:{left:{color:e.medium,style:`thin`},right:{color:e.medium,style:`thin`},horizontal:{color:e.medium,style:`thin`}}}}),DB=e=>({category:`light`,templateName:`pivotLightWithMediumBorders`,primaryColor:e.highlight,wholeTable:{style:{textColor:e.coloredText,hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},firstColumn:{border:{right:{color:e.highlight,style:`thin`}}},headerRow:{style:{bold:!0,textColor:`#000000`},border:{top:{color:e.highlight,style:`medium`},bottom:{color:e.highlight,style:`medium`},left:{color:e.highlight,style:`medium`},right:{color:e.highlight,style:`medium`}}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,textColor:`#000000`,fillColor:e.light}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:`#000000`}},totalRow:{border:{top:{color:e.highlight,style:`medium`},bottom:{color:e.highlight,style:`medium`},left:{color:e.highlight,style:`medium`},right:{color:e.highlight,style:`medium`}},style:{bold:!0,textColor:`#000000`}},firstRowStripe:{border:{bottom:{color:e.highlight,style:`thin`},top:{color:e.highlight,style:`thin`}}},secondRowStripe:{border:{bottom:{color:e.highlight,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}},secondColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}}}),OB=e=>({category:`light`,templateName:`PivotLightWithGrayBands`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0}},headerRow:{style:{bold:!0,fillColor:e.light},border:{horizontal:{color:e.light,style:`thin`},vertical:{color:e.light,style:`thin`},bottom:{color:e.mediumBorder,style:`thin`}}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0},border:{bottom:{color:e.mediumBorder,style:`thin`}}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{border:{top:{color:e.mediumBorder,style:`medium`}},style:{bold:!0,fillColor:e.light}},firstRowStripe:{style:{fillColor:K.black.light}},secondColumnStripe:{style:{fillColor:K.black.light},border:{left:{color:K.black.medium,style:`thin`},right:{color:K.black.medium,style:`thin`}}}}),kB=e=>({category:`light`,templateName:`pivotLightWithColoredText`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,textColor:e.coloredText},border:{vertical:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`},bottom:{color:e.mediumBorder,style:`thin`},left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}},headerRow:{border:{bottom:{color:e.mediumBorder,style:`thin`},vertical:{color:e.mediumBorder,style:`thin`}}},totalRow:{border:{top:{color:e.mediumBorder,style:`thin`}}},firstRowStripe:{style:{fillColor:e.light},border:{top:{color:K.black.medium,style:`thin`},bottom:{color:K.black.medium,style:`thin`}}},secondColumnStripe:{style:{fillColor:e.light}}}),AB=e=>({category:`medium`,templateName:`pivotMediumHeavyColors`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{fillColor:e.highlight,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{fillColor:e.mediumBorder,textColor:`#FFFFFF`}},firstAlternatingSubHeaderRow:{style:{fillColor:e.light},border:{bottom:{color:e.highlight,style:`thin`}}},totalRow:{border:{top:{color:e.highlight,style:`medium`}},style:{bold:!0}},firstRowStripe:{border:{bottom:{color:e.highlight,style:`thin`},top:{color:e.highlight,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.highlight,style:`thin`},right:{color:e.highlight,style:`thin`}}}}),jB=e=>({category:`medium`,templateName:`pivotMediumLightColors`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0},border:{top:{color:e.dark,style:`medium`},bottom:{color:e.dark,style:`medium`}}},headerRow:{style:{fillColor:e.highlight,textColor:`#FFFFFF`,bold:!0}},measureHeader:{border:{top:{color:e.mediumBorder,style:`thin`}}},mainSubHeaderRow:{style:{fillColor:e.light,bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{border:{top:{color:e.dark,style:`thin`}},style:{bold:!0}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),MB=e=>({category:`medium`,templateName:`pivotMediumBlackHeaders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light},border:{vertical:{color:e.mediumBorder,style:`thin`}}},headerRow:{style:{fillColor:`#000000`,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0,textColor:`#808080`}},secondAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{fillColor:`#000000`,textColor:`#FFFFFF`},border:{vertical:null}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}}}),NB=e=>({category:`medium`,templateName:`pivotMediumBlackHeaders`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light,textColor:e.coloredText},border:{vertical:{color:`#FFFFFF`,style:`thin`}}},headerRow:{style:{bold:!0},border:{vertical:{color:`#FFFFFF`,style:`thin`},bottom:{color:`#FFFFFF`,style:`thin`}}},firstColumn:{style:{fillColor:e.medium}},measureHeader:{border:{top:{color:`#FFFFFF`,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,textColor:`#000000`}},firstAlternatingSubHeaderRow:{style:{bold:!0}},secondAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0}},firstRowStripe:{style:{fillColor:e.medium}},firstColumnStripe:{style:{fillColor:e.medium}}}),PB=e=>({category:`dark`,templateName:`pivotDarkWithDarkHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.medium},border:{horizontal:{color:e.light,style:`thin`}}},headerRow:{style:{bold:!0,fillColor:e.dark,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.light}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:e.dark,textColor:`#FFFFFF`}},secondRowStripe:{style:{fillColor:e.mediumBorder}},firstColumnStripe:{border:{left:{color:e.light,style:`thin`},right:{color:e.light,style:`thin`}}}}),FB=e=>({category:`dark`,templateName:`pivotDarkWithGrayHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.light}},headerRow:{style:{bold:!0,fillColor:K.black.dark,textColor:`#FFFFFF`}},measureHeader:{border:{top:{color:e.light,style:`medium`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.medium}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:K.black.dark,textColor:`#FFFFFF`}},firstRowStripe:{border:{bottom:{color:e.medium,style:`thin`},top:{color:e.medium,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),IB=e=>({category:`dark`,templateName:`pivotDarkWithBlackHeader`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.highlight,textColor:`#FFFFFF`}},headerRow:{style:{bold:!0,fillColor:`#000000`}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0,fillColor:e.dark}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:`#000000`}},firstRowStripe:{border:{bottom:{color:e.mediumBorder,style:`thin`},top:{color:e.mediumBorder,style:`thin`}}},firstColumnStripe:{border:{left:{color:e.mediumBorder,style:`thin`},right:{color:e.mediumBorder,style:`thin`}}}}),LB=e=>({category:`dark`,templateName:`pivotDarkWithFirstColumn`,primaryColor:e.highlight,wholeTable:{style:{hideGridLines:!0,fillColor:e.highlight,textColor:`#FFFFFF`},border:{vertical:{color:`#FFFFFF`,style:`thin`}}},headerRow:{style:{fillColor:e.dark},border:{bottom:{color:`#FFFFFF`,style:`medium`}}},firstColumn:{style:{fillColor:e.dark}},measureHeader:{border:{top:{color:e.light,style:`thin`}}},mainSubHeaderRow:{style:{bold:!0}},firstAlternatingSubHeaderRow:{style:{bold:!0}},totalRow:{style:{bold:!0,fillColor:e.dark},border:{top:{color:`#FFFFFF`,style:`medium`}}},secondRowStripe:{style:{fillColor:e.mediumBorder}},firstColumnStripe:{style:{fillColor:e.mediumBorder}}}),RB={None:{category:`light`,templateName:`none`,primaryColor:``,displayName:k(`None`)}},zB=[K.black,K.lightBlue,K.red,K.lightGreen,K.purple,K.gray,K.orange];function BB(e,t){let n=1;for(let r of t)for(let t of zB){let i=e+n++;RB[i]={...r(t),displayName:VB(t.name,e,n-1)}}}function VB(e,t,n){let r=``;return t.includes(`Light`)?r=UA.light:t.includes(`Medium`)?r=UA.medium:t.includes(`Dark`)&&(r=UA.dark),`${r} ${e} ${n}`}BB(`PivotTableStyleLight`,[EB,DB,OB,kB]),BB(`PivotTableStyleMedium`,[AB,jB,MB,NB]),BB(`PivotTableStyleDark`,[PB,FB,IB,LB]),RB.PivotTableStyleDark1={...RB.PivotTableStyleDark1,...PB({...K.black,mediumBorder:Kr(K.black.medium,.1)})},RB.PivotTableStyleDark15={...RB.PivotTableStyleDark15,...IB({...K.black,highlight:K.gray.dark,mediumBorder:K.black.medium})},RB.PivotTableStyleDark22={...RB.PivotTableStyleDark22,...LB({...K.black,highlight:K.gray.dark,mediumBorder:K.black.medium})};function HB(e){let t=RB[e];return t&&Object.keys(rj).find(e=>{let n=rj[e];return n.category===t.category&&n.primaryColor===t.primaryColor})||`None`}let UB=[`wholeTable`,`firstColumnStripe`,`secondColumnStripe`,`firstRowStripe`,`secondRowStripe`,`firstColumn`,`lastColumn`,`headerRow`,`measureHeader`,`firstAlternatingSubHeaderRow`,`secondAlternatingSubHeaderRow`,`mainSubHeaderRow`,`totalRow`];function WB(e,t){let n=t.numberOfHeaders,r={...e,top:e.top+n};return r.top<=r.bottom?r:void 0}function GB(e){let t=e.range;return{row:t.zone.top,col:t.zone.left,sheetId:t.sheetId}}function KB(e,t,n,r){let i=t.zone;if(i.left!==i.right)throw Error(`Can only define a filter on a single column`);let a={...i,top:i.top+n.numberOfHeaders},o=r(t.sheetId,a);return{id:e,rangeWithHeaders:t,col:i.left,filteredRange:a.top>a.bottom?void 0:o}}function qB(e){return e.type===`static`||e.type===`forceStatic`}function JB(e,t,n){return{borders:YB(e,t,n),styles:ZB(e,t,n)}}function YB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=Ja(r,i,()=>({}));for(let o of UB){let s=t[o]?.border;if(!s)continue;let c=QB(o,e,n);for(let t of c)for(let n=t.left;n<=t.right;n++)for(let c=t.top;c<=t.bottom;c++){let l=o===`wholeTable`&&c<=e.numberOfHeaders-1;c===t.top&&s?.top!==void 0?XB(a,`top`,s.top,n,c,r,i):c!==t.top&&!l&&s?.horizontal!==void 0&&XB(a,`top`,s.horizontal,n,c,r,i),c===t.bottom&&s?.bottom!==void 0&&XB(a,`bottom`,s.bottom,n,c,r,i),n===t.left&&s?.left!==void 0&&XB(a,`left`,s.left,n,c,r,i),n===t.right&&s?.right!==void 0?XB(a,`right`,s.right,n,c,r,i):n!==t.right&&!l&&s?.vertical!==void 0&&XB(a,`right`,s.vertical,n,c,r,i)}}return a}function XB(e,t,n,r,i,a,o){switch(t){case`top`:e[r][i].top=n??void 0,i!==0&&(e[r][i-1].bottom=n??void 0);return;case`bottom`:e[r][i].bottom=n??void 0,i!==o-1&&(e[r][i+1].top=n??void 0);return;case`left`:e[r][i].left=n??void 0,r!==0&&(e[r-1][i].right=n??void 0);return;case`right`:e[r][i].right=n??void 0,r!==a-1&&(e[r+1][i].left=n??void 0);return}}function ZB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=Ja(r,i,()=>({}));for(let r of UB){let i=t[r];if(!i)continue;let o=QB(r,e,n);for(let e of o)for(let t=e.left;t<=e.right;t++)for(let n=e.top;n<=e.bottom;n++)a[t][n]||(a[t][n]={}),a[t][n]={...a[t][n],...i?.style}}return a}function QB(e,t,n){let{numberOfCols:r,numberOfRows:i}=n,a=[],o=Math.min(t.numberOfHeaders,i),s=+!!t.totalRow,c=r-1,l=i-1;switch(e){case`wholeTable`:a.push({top:0,left:0,bottom:l,right:c});break;case`firstColumn`:if(!t.firstColumn)break;a.push({top:0,left:0,bottom:l,right:0});break;case`lastColumn`:if(!t.lastColumn)break;a.push({top:0,left:c,bottom:l,right:c});break;case`headerRow`:if(!t.numberOfHeaders)break;a.push({top:0,left:0,bottom:o-1,right:c});break;case`totalRow`:if(!t.totalRow)break;a.push({top:l,left:0,bottom:l,right:c});break;case`firstRowStripe`:if(!t.bandedRows)break;for(let e=o;e<i-s;e+=2)a.push({top:e,left:0,bottom:e,right:c});break;case`secondRowStripe`:if(!t.bandedRows)break;for(let e=o+1;e<i-s;e+=2)a.push({top:e,left:0,bottom:e,right:c});break;case`firstColumnStripe`:{if(!t.bandedColumns)break;let e=n.mode===`pivot`?l:l-s;for(let t=0;t<r;t+=2)a.push({top:o,left:t,bottom:e,right:t});break}case`secondColumnStripe`:{if(!t.bandedColumns)break;let e=n.mode===`pivot`?l:l-s;for(let t=1;t<r;t+=2)a.push({top:o,left:t,bottom:e,right:t});break}case`mainSubHeaderRow`:for(let e of n.mainSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`firstAlternatingSubHeaderRow`:for(let e of n.firstAlternatingSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`secondAlternatingSubHeaderRow`:for(let e of n.secondAlternatingSubHeaderRows||[])a.push({top:e,bottom:e,left:0,right:n.numberOfCols-1});break;case`measureHeader`:if(n.measureRow!==void 0&&n.numberOfCols>1){let e=n.measureRow;a.push({top:e,bottom:e,left:1,right:n.numberOfCols-1})}break}return a}function $B(e,t){return e.model.getters.isTableStyleEditable(t)?p([{id:`editTableStyle`,name:k(`Edit table style`),execute:e=>e.openSidePanel(`TableStyleEditorPanel`,{styleId:t}),isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.EDIT`},{id:`deleteTableStyle`,name:k(`Delete table style`),execute:e=>e.model.dispatch(`REMOVE_TABLE_STYLE`,{tableStyleId:t}),icon:`o-spreadsheet-Icon.TRASH`}]):[]}function eV(e,t,n){e.resetTransform(),tV(e,t,n),nV(e,t,n),rV(e,t,n)}function tV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save();for(let n=0;n<a;n++)for(let s=0;s<o;s++){e.fillStyle=t.styles[n][s].fillColor||`#fff`;let c=n===a-1?r+1:r,l=s===o-1?i+1:i;e.fillRect(n*r,s*i,c,l)}e.restore()}function nV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save(),e.translate(0,.5),e.lineWidth=1;for(let n=0;n<a;n++)for(let a=0;a<o;a++){let o=t.borders[n][a];o.top&&(e.strokeStyle=o.top.color,e.beginPath(),e.moveTo(n*r,a*i),e.lineTo(n*r+r,a*i),e.stroke()),o.bottom&&(e.strokeStyle=o.bottom.color,e.beginPath(),e.moveTo(n*r,a*i+i),e.lineTo(n*r+r,a*i+i),e.stroke())}e.resetTransform(),e.translate(.5,0);for(let n=0;n<a;n++)for(let a=0;a<o;a++){let o=t.borders[n][a];o.left&&(e.strokeStyle=o.left.color,e.beginPath(),e.moveTo(n*r,a*i),e.lineTo(n*r,a*i+i),e.stroke()),o.right&&(e.strokeStyle=o.right.color,e.beginPath(),e.moveTo(n*r+r,a*i),e.lineTo(n*r+r,a*i+i+1),e.stroke())}e.restore()}function rV(e,t,n){let{colWidth:r,rowHeight:i,numberOfCols:a,numberOfRows:o}=n;e.save(),e.translate(0,.5),e.lineWidth=1;let s=Math.floor(r/4),c=Math.floor(i/2);for(let n=0;n<a;n++)for(let a=0;a<o;a++)e.strokeStyle=t.styles[n][a].textColor||`#000`,e.beginPath(),e.moveTo(n*r+s+1,a*i+c),e.lineTo(n*r+r-s,a*i+c),e.stroke();e.restore()}var iV=class extends t.Component{static template=`o-spreadsheet-TableStylePreview`;static components={MenuPopover:Nv};static props={tableConfig:Object,tableStyle:Object,type:String,styleId:{type:String,optional:!0},selected:{type:Boolean,optional:!0},onClick:{type:Function,optional:!0}};canvasRef=(0,t.useRef)(`canvas`);menu=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]});setup(){(0,t.onWillUpdateProps)(e=>{(!w(this.props.tableConfig,e.tableConfig)||!w(this.props.tableStyle,e.tableStyle))&&this.drawTable(e)});let e=new ResizeObserver(()=>{this.drawTable(this.props)});(0,t.useEffect)(()=>(e.observe(this.canvasRef.el),()=>{e.disconnect()}),()=>[this.canvasRef.el])}drawTable(e){let t=this.canvasRef.el.getContext(`2d`),{width:n,height:r}=this.canvasRef.el.getBoundingClientRect();if(!n||!r)return;this.canvasRef.el.width=n,this.canvasRef.el.height=r;let i;i=e.type===`table`?{mode:`table`,numberOfCols:5,numberOfRows:5}:{mode:`pivot`,numberOfCols:5,numberOfRows:8,mainSubHeaderRows:new Set([e.tableConfig.numberOfHeaders,e.tableConfig.numberOfHeaders+3])},eV(t,JB(e.tableConfig,e.tableStyle,i),{...i,colWidth:(n-1)/i.numberOfCols,rowHeight:(r-1)/i.numberOfRows})}onContextMenu(e){this.props.styleId&&(this.menu.menuItems=$B(this.env,this.props.styleId),this.menu.isOpen=!0,this.menu.anchorRect={x:e.clientX,y:e.clientY,width:0,height:0})}closeMenu(){this.menu.isOpen=!1,this.menu.anchorRect=null,this.menu.menuItems=[]}get styleName(){return this.props.styleId?this.props.tableStyle.displayName:``}get isStyleEditable(){return this.props.styleId?this.env.model.getters.isTableStyleEditable(this.props.styleId):!1}editTableStyle(){this.env.openSidePanel(`TableStyleEditorPanel`,{styleId:this.props.styleId})}},aV=class extends t.Component{static template=`o-spreadsheet-TableStylesPopover`;static components={Popover:kv,TableStylePreview:iV};static props={tableConfig:Object,popoverProps:{type:Object,optional:!0},closePopover:Function,onStylePicked:Function,selectedStyleId:{type:String,optional:!0},tableStyles:Object,type:String};tableStyleListRef=(0,t.useRef)(`tableStyleList`);state=(0,t.useState)({selectedCategory:this.initialSelectedCategory});setup(){(0,t.useExternalListener)(window,`click`,this.onExternalClick,{capture:!0})}onExternalClick(e){this.tableStyleListRef.el&&!np(this.tableStyleListRef.el,e)&&(this.props.closePopover(),e.hasClosedTableStylesPopover=!0)}get displayedStyles(){let e=this.props.tableStyles;return Object.keys(e).filter(t=>e[t].category===this.state.selectedCategory)}get initialSelectedCategory(){return this.props.selectedStyleId?this.props.tableStyles[this.props.selectedStyleId].category:`medium`}get categories(){return this.props.type===`table`?{...UA,custom:k(`Custom`)}:UA}newTableStyle(){this.props.closePopover(),this.env.openSidePanel(`TableStyleEditorPanel`,{onStylePicked:this.props.onStylePicked})}},oV=class extends t.Component{static template=`o-spreadsheet-TableStylePicker`;static components={TableStylesPopover:aV,TableStylePreview:iV};static props={tableConfig:Object,onStylePicked:Function,tableStyles:Object,type:String};state=(0,t.useState)({popoverProps:void 0});getDisplayedTableStyles(){let e=this.props.tableStyles,t=e[this.props.tableConfig.styleId].category,n=Object.keys(e).filter(n=>e[n].category===t),r=n.indexOf(this.props.tableConfig.styleId);if(r===-1)return n;let i=Math.floor(r/4)*4;return n.slice(i)}onStylePicked(e){this.props.onStylePicked(e),this.closePopover()}onArrowButtonClick(e){if(e.hasClosedTableStylesPopover||this.state.popoverProps){this.closePopover();return}let{bottom:t,right:n}=e.currentTarget.getBoundingClientRect();this.state.popoverProps={anchorRect:{x:n,y:t,width:0,height:0},positioning:`top-right`,verticalOffset:0}}closePopover(){this.state.popoverProps=void 0}},sV=class extends t.Component{static template=`o-spreadsheet-PivotDesignPanel`;static props={pivotId:String};static components={Section:Q,Checkbox:eP,NumberInput:RI,TableStylePicker:oV};store;setup(){this.store=ur(CB,this.props.pivotId,`neverDefer`)}updatePivotStyleNumberProperty(e,t){let n=parseInt(e);this.store.update({style:{...this.pivotStyle,[t]:isNaN(n)?void 0:n}})}updatePivotStyleProperty(e,t){this.store.update({style:{...this.pivotStyle,[e]:t}})}get pivotStyle(){return this.env.model.getters.getPivotCoreDefinition(this.props.pivotId).style||{}}get defaultStyle(){return lh}get tableConfig(){let e=(this.pivotStyle.displayMeasuresRow??lh.displayMeasuresRow)||(this.pivotStyle.displayColumnHeaders??lh.displayColumnHeaders);return{hasFilters:!1,totalRow:this.pivotStyle.displayTotals??lh.displayTotals,firstColumn:!0,lastColumn:!1,styleId:this.pivotStyle.tableStyleId??lh.tableStyleId,bandedRows:this.pivotStyle.bandedRows??lh.bandedRows,bandedColumns:this.pivotStyle.bandedColumns??lh.bandedColumns,numberOfHeaders:+!!e}}onStylePicked(e){this.updatePivotStyleProperty(`tableStyleId`,e)}get tableStyles(){return RB}},cV=class extends t.Component{static template=`o-spreadsheet-PivotSidePanel`;static props={pivotId:String,onCloseSidePanel:Function,openTab:{type:String,optional:!0}};static defaultProps={openTab:`configuration`};static components={PivotLayoutConfigurator:kz,Section:Q,PivotDesignPanel:sV};state=(0,t.useState)({panel:this.props.openTab||`configuration`});setup(){NL(this),(0,t.onWillUpdateProps)(e=>{e.openTab&&e.openTab!==this.props.openTab&&this.switchPanel(e.openTab)})}get sidePanelEditor(){let e=this.env.model.getters.getPivotCoreDefinition(this.props.pivotId);if(!e)throw Error(`pivotId does not correspond to a pivot.`);return TB.get(e.type).editor}get highlights(){return this.state.panel===`configuration`?ez(this.env.model.getters,this.props.pivotId):[]}switchPanel(e){this.state.panel=e}},lV=class extends t.Component{static template=`o-spreadsheet-RemoveDuplicatesPanel`;static components={ValidationMessages:EI,Section:Q,Checkbox:eP};static props={onCloseSidePanel:Function};state=(0,t.useState)({hasHeader:!1,columns:{}});setup(){this.updateColumns(),(0,t.onWillUpdateProps)(()=>this.updateColumns())}toggleHasHeader(){this.state.hasHeader=!this.state.hasHeader}toggleAllColumns(){let e=!this.isEveryColumnSelected;for(let t in this.state.columns)this.state.columns[t]=e}toggleColumn(e){this.state.columns[e]=!this.state.columns[e]}onRemoveDuplicates(){this.env.model.dispatch(`REMOVE_DUPLICATES`,{hasHeader:this.state.hasHeader,columns:this.getColsToAnalyze()})}getColLabel(e){let t=parseInt(e),n=k(`Column %s`,Kt(t));if(this.state.hasHeader){let e=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getSelectedZone().top,i=this.env.model.getters.getEvaluatedCell({sheetId:e,col:t,row:r});i.type!==`empty`&&(n+=` - ${i.value}`)}return n}get isEveryColumnSelected(){return Object.values(this.state.columns).every(e=>e)}get errorMessages(){let e=this.env.model.canDispatch(`REMOVE_DUPLICATES`,{hasHeader:this.state.hasHeader,columns:this.getColsToAnalyze()}).reasons,t=new Set;for(let n of e)t.add(om.Errors[n]||om.Errors.Unexpected);return Array.from(t)}get selectionStatisticalInformation(){let e=Mn(this.env.model.getters.getSelectedZone());return k(`%(row_count)s rows and %(column_count)s columns selected`,{row_count:e.numberOfRows,column_count:e.numberOfCols})}get canConfirm(){return this.errorMessages.length===0}updateColumns(){let e=this.env.model.getters.getSelectedZone(),t=this.state.columns,n={};for(let r=e.left;r<=e.right;r++)n[r]=r in t?t[r]:!0;this.state.columns=n}getColsToAnalyze(){return Object.keys(this.state.columns).filter(e=>this.state.columns[e]).map(e=>parseInt(e))}},uV=class extends t.Component{static template=`o-spreadsheet-SettingsPanel`;static components={Section:Q,ValidationMessages:EI,BadgeSelection:jI,Select:EM};static props={onCloseSidePanel:Function};loadedLocales=[];setup(){(0,t.onWillStart)(()=>this.loadLocales())}onLocaleChange(e){let t=this.loadedLocales.find(t=>t.code===e);t&&this.env.model.dispatch(`UPDATE_LOCALE`,{locale:t})}async loadLocales(){this.loadedLocales=(await this.env.loadLocales()).filter(e=>{let t=wS(e);return t||console.warn(`Invalid locale: ${e.code} ${e}`),t}).sort((e,t)=>e.name.localeCompare(t.name))}get numberFormatPreview(){return z(1234567.89,{format:`#,##0.00`,locale:this.env.model.getters.getLocale()})}get dateFormatPreview(){let e=this.env.model.getters.getLocale();return z(1.6,{format:e.dateFormat,locale:e})}get dateTimeFormatPreview(){let e=this.env.model.getters.getLocale();return z(1.6,{format:VS(e),locale:e})}get firstDayOfWeek(){return Go[this.env.model.getters.getLocale().weekStart%7]}get currentLocale(){return this.env.model.getters.getLocale()}get supportedLocales(){let e=this.currentLocale,t=this.loadedLocales.find(t=>t.code===e.code);if(!t)return[...this.loadedLocales,e].sort((e,t)=>e.name.localeCompare(t.name));if(!w(e,t)){let n=this.loadedLocales.indexOf(t),r=[...this.loadedLocales];return r[n]=e,r.sort((e,t)=>e.name.localeCompare(t.name)),r}return this.loadedLocales}get selectOptions(){return this.supportedLocales.map(e=>({label:e.name,value:e.code}))}};let dV={SplitIsDestructive:k(`This will overwrite data in the subsequent columns. Split anyway?`)};function fV(e,t,n){let r=e.model.dispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:t,addNewColumns:n});return r.isCancelledBecause(`SplitWillOverwriteContent`)&&e.askConfirmation(dV.SplitIsDestructive,()=>{r=e.model.dispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:t,addNewColumns:n,force:!0})}),r}let pV=[{label:k(`Detect automatically`),value:`auto`},{label:k(`Custom separator`),value:`custom`},{label:k(`Space`),value:` `},{label:k(`Comma`),value:`,`},{label:k(`Semicolon`),value:`;`},{label:k(`Line Break`),value:`
84
+ `}];var mV=class extends t.Component{static template=`o-spreadsheet-SplitIntoColumnsPanel`;static components={ValidationMessages:EI,Section:Q,Checkbox:eP,Select:EM};static props={onCloseSidePanel:Function};state=(0,t.useState)({separatorValue:`auto`,addNewColumns:!1,customSeparator:``});setup(){let e=D(xr);(0,t.useEffect)(e=>{e!==`inactive`&&this.props.onCloseSidePanel()},()=>[e.focusMode]),(0,t.onMounted)(()=>{e.activeComposer.stopEdition()})}onSeparatorChange(e){this.state.separatorValue=e}updateCustomSeparator(e){e.target&&(this.state.customSeparator=e.target.value)}updateAddNewColumnsCheckbox(e){this.state.addNewColumns=e}confirm(){fV(this.env,this.separatorValue,this.state.addNewColumns).isSuccessful&&this.props.onCloseSidePanel()}get errorMessages(){let e=this.env.model.canDispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:this.separatorValue,addNewColumns:this.state.addNewColumns,force:!0}).reasons,t=new Set;for(let n of e)switch(n){case`SplitWillOverwriteContent`:case`EmptySplitSeparator`:break;default:t.add(am.Errors[n]||am.Errors.Unexpected)}return Array.from(t)}get warningMessages(){let e=[];return this.env.model.canDispatch(`SPLIT_TEXT_INTO_COLUMNS`,{separator:this.separatorValue,addNewColumns:this.state.addNewColumns,force:!1}).reasons.includes(`SplitWillOverwriteContent`)&&e.push(am.Errors.SplitWillOverwriteContent),e}get separatorValue(){return this.state.separatorValue===`custom`?this.state.customSeparator:this.state.separatorValue===`auto`?this.env.model.getters.getAutomaticSeparator():this.state.separatorValue}get separators(){return pV}get isConfirmDisabled(){return!this.separatorValue||this.errorMessages.length>0}},hV=class extends t.Component{static template=`o-spreadsheet-TablePanel`;static components={TableStylePicker:oV,SelectionInput:YN,ValidationMessages:EI,Checkbox:eP,Section:Q,NumberInput:RI};static props={onCloseSidePanel:Function,table:Object};state;setup(){let e=this.env.model.getters.getActiveSheetId();this.state=(0,t.useState)({tableZoneErrors:[],tableXc:this.env.model.getters.getRangeString(this.props.table.range,e),filtersEnabledIfPossible:this.props.table.config.hasFilters})}updateHasFilters(e){this.state.filtersEnabledIfPossible=e,this.updateTableConfig(`hasFilters`,e)}updateTableConfig(e,t){let n=this.env.model.getters.getActiveSheetId();return this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:n,zone:this.props.table.range.zone,config:{[e]:t}})}updateHasHeaders(e){let t=+!!e;this.updateNumberOfHeaders(t)}updateTableIsDynamic(e){let t=e?`dynamic`:`forceStatic`;if(t===this.props.table.type)return;let n=this.env.model.getters.getTable(GB(this.props.table));if(!n)return;let r=this.env.model.getters.getActiveSheetId(),i=this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:r,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeData(n.range),tableType:t}),a=this.env.model.getters.getCoreTable(GB(this.props.table));if(i.isSuccessful&&a){let e=a.range;this.state.tableXc=this.env.model.getters.getRangeString(e,r),this.state.tableZoneErrors=[]}}onChangeNumberOfHeaders(e){let t=parseInt(e);this.updateNumberOfHeaders(t)}updateNumberOfHeaders(e){let t=e>0&&(this.tableConfig.hasFilters||this.state.filtersEnabledIfPossible);return this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:this.env.model.getters.getActiveSheetId(),zone:this.props.table.range.zone,config:{numberOfHeaders:e,hasFilters:t}})}onRangeChanged(e){let t=this.env.model.getters.getActiveSheetId();this.state.tableXc=e[0];let n=this.env.model.getters.getRangeFromSheetXC(t,this.state.tableXc);this.state.tableZoneErrors=this.env.model.canDispatch(`UPDATE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeDataFromXc(t,this.state.tableXc),tableType:this.getNewTableType(n.zone)}).reasons}onRangeConfirmed(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getRangeFromSheetXC(e,this.state.tableXc);if(Gn(t.zone)===1){let n=this.env.model.getters.getContiguousZone(e,t.zone);t=this.env.model.getters.getRangeFromZone(e,n)}let n=t.zone,r=this.props.table.range.zone,i=n.top===r.top&&n.left===r.left?`RESIZE_TABLE`:`UPDATE_TABLE`,a=this.env.model.dispatch(i,{sheetId:e,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeData(t),tableType:this.getNewTableType(t.zone)}),o={sheetId:e,col:t.zone.left,row:t.zone.top},s=this.env.model.getters.getCoreTable(o);if(a.isSuccessful&&s){let t=GB(s);this.env.model.selection.selectZone({zone:E(t),cell:t});let n=s.range;this.state.tableXc=this.env.model.getters.getRangeString(n,e)}}onStylePicked(e){let t=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,config:{styleId:e}})}deleteTable(){let e=this.env.model.getters.getActiveSheetId();this.env.model.dispatch(`REMOVE_TABLE`,{sheetId:e,target:[this.props.table.range.zone]})}getNewTableType(e){if(this.props.table.type===`forceStatic`)return`forceStatic`;let t=this.env.model.getters.getActiveSheetId();return this.env.model.getters.canCreateDynamicTableOnZones(t,[e])?`dynamic`:`static`}get tableConfig(){return this.props.table.config}get errorMessages(){return(this.state.tableZoneErrors||[]).map(e=>sm.Errors[e]||sm.Errors.Unexpected)}getCheckboxLabel(e){return sm.Checkboxes[e]}get canHaveFilters(){return this.tableConfig.numberOfHeaders>0}get hasFilterCheckboxTooltip(){return this.canHaveFilters?void 0:sm.Tooltips.filterWithoutHeader}get canBeDynamic(){let e=this.env.model.getters.getActiveSheetId();return this.props.table.type===`dynamic`||this.env.model.getters.canCreateDynamicTableOnZones(e,[this.props.table.range.zone])}get dynamicTableTooltip(){return sm.Tooltips.isDynamic}};let gV=`#3C78D8`;var _V=class extends t.Component{static template=`o-spreadsheet-TableStyleEditorPanel`;static components={Section:Q,RoundColorPicker:BN,TableStylePreview:iV};static props={onCloseSidePanel:Function,onStylePicked:{type:Function,optional:!0},styleId:{type:String,optional:!0}};state=(0,t.useState)(this.getInitialState());setup(){(0,t.useExternalListener)(window,`click`,()=>this.state.pickerOpened=!1)}getInitialState(){let e=this.props.styleId?this.env.model.getters.getTableStyle(this.props.styleId):null;return{pickerOpened:!1,primaryColor:e?.primaryColor||gV,selectedTemplateName:e?.templateName||`lightColoredText`,styleName:e?.displayName||this.env.model.getters.getNewCustomTableStyleName()}}togglePicker(){this.state.pickerOpened=!this.state.pickerOpened}onColorPicked(e){this.state.primaryColor=kr(e)?e:gV,this.state.pickerOpened=!1}onTemplatePicked(e){this.state.selectedTemplateName=e}onConfirm(){let e=this.props.styleId||this.env.model.uuidGenerator.smallUuid();this.env.model.dispatch(`CREATE_TABLE_STYLE`,{tableStyleId:e,tableStyleName:this.state.styleName,templateName:this.state.selectedTemplateName,primaryColor:this.state.primaryColor}),this.props.onStylePicked?.(e),this.props.onCloseSidePanel()}onCancel(){this.props.onCloseSidePanel()}onDelete(){this.props.styleId&&(this.env.model.dispatch(`REMOVE_TABLE_STYLE`,{tableStyleId:this.props.styleId}),this.props.onCloseSidePanel())}get colorPreviewStyle(){return U({background:this.state.primaryColor})}get tableTemplates(){return Object.keys(ij).filter(e=>e!==`none`)}get previewTableConfig(){return{bandedColumns:!1,bandedRows:!0,firstColumn:!1,lastColumn:!1,numberOfHeaders:1,totalRow:!0,hasFilters:!0,styleId:``}}get selectedStyle(){return this.computeTableStyle(this.state.selectedTemplateName)}computeTableStyle(e){return aj(this.state.styleName,e,this.state.primaryColor)}};let vV=new B;vV.add(`ConditionalFormatting`,{title:k(`Conditional formatting`),Body:FL}),vV.add(`ConditionalFormattingEditor`,{title:k(`Conditional formatting`),Body:kL,computeState:(e,t)=>({isOpen:!0,props:t,key:`ConditionalFormattingEditor_${t.cf.id}`})}),vV.add(`ChartPanel`,{title:k(`Chart`),Body:EL,computeState:(e,t)=>{let n=e.getSelectedFigureId(),r=n&&e.getFigureSheetId(n),i=r?e.isSheetLocked(r):!1,a=n?e.getChartIdFromFigureId(n):t.chartId;return!a||!e.isChartDefined(a)||i?{isOpen:!1}:{isOpen:!0,props:{chartId:a}}}}),vV.add(`FindAndReplace`,{title:k(`Find and Replace`),Body:VL}),vV.add(`SplitToColumns`,{title:k(`Split text into columns`),Body:mV}),vV.add(`Settings`,{title:k(`Spreadsheet settings`),Body:uV}),vV.add(`RemoveDuplicates`,{title:k(`Remove duplicates`),Body:lV}),vV.add(`DataValidation`,{title:k(`Data validation`),Body:LL}),vV.add(`DataValidationEditor`,{title:k(`Data validation`),Body:RL,computeState:(e,t)=>({isOpen:!0,props:t,key:`DataValidationEditor_${t.ruleId}`})}),vV.add(`MoreFormats`,{title:k(`More formats`),Body:ZR}),vV.add(`TableSidePanel`,{title:k(`Edit table`),Body:hV,computeState:e=>{let t=e.getFirstTableInSelection();return!t||t.isPivotTable?{isOpen:!1}:{isOpen:!0,props:{table:e.getCoreTable(GB(t))},key:t.id}}}),vV.add(`TableStyleEditorPanel`,{title:k(`Create custom table style`),Body:_V,computeState:(e,t)=>({isOpen:!0,props:{...t},key:t.styleId??`new`})}),vV.add(`PivotSidePanel`,{title:(e,t)=>k(`Pivot #%s`,e.model.getters.getPivotFormulaId(t.pivotId)),Body:cV,computeState:(e,t)=>({isOpen:e.isExistingPivot(t.pivotId),props:t,key:`pivot_key_${t.pivotId}`})}),vV.add(`PivotMeasureDisplayPanel`,{title:(e,t)=>k(`Measure "%s" options`,e.model.getters.getPivot(t.pivotId).getMeasure(t.measure.id).displayName),Body:$R,computeState:(e,t)=>{try{return e.getPivot(t.pivotId).getMeasure(t.measure.id),{isOpen:!0,props:t,key:`pivot_measure_display_${t.pivotId}_${t.measure.id}`}}catch{return{isOpen:!1}}}}),vV.add(`CarouselPanel`,{title:k(`Carousel`),Body:CI,computeState:(e,t)=>{let n=t.figureId||e.getSelectedFigureId(),r=n&&e.getFigureSheetId(n),i=r?e.isSheetLocked(r):!1;return!n||!e.doesCarouselExist(n)||i?{isOpen:!1}:{isOpen:!0,props:{figureId:n}}}});var yV=class{mutators=[`setSmallThreshhold`];_isSmallCallback=()=>!1;get isSmall(){return this._isSmallCallback()}setSmallThreshhold(e){this._isSmallCallback=e}},bV=class extends yr{mutators=[`open`,`replace`,`toggle`,`close`,`changePanelSize`,`resetPanelSize`,`togglePinPanel`,`closeMainPanel`,`changeSpreadsheetWidth`,`toggleCollapsePanel`];mainPanel=void 0;secondaryPanel;availableWidth=0;screenWidthStore=this.get(yV);get isMainPanelOpen(){return this.mainPanel&&this.mainPanel.componentTag?this.computeState(this.mainPanel).isOpen:!1}get isSecondaryPanelOpen(){return this.secondaryPanel&&this.secondaryPanel.componentTag?this.computeState(this.secondaryPanel).isOpen:!1}get mainPanelProps(){return this.mainPanel?this.getPanelProps(this.mainPanel):void 0}get mainPanelKey(){return this.mainPanel?this.getPanelKey(this.mainPanel):void 0}get secondaryPanelProps(){return this.secondaryPanel?this.getPanelProps(this.secondaryPanel):void 0}get secondaryPanelKey(){return this.secondaryPanel?this.getPanelKey(this.secondaryPanel):void 0}get totalPanelSize(){return(this.mainPanel?.size||0)+(this.secondaryPanel?.size??0)}getPanelProps(e){let t=this.computeState(e);return t.isOpen?(e.currentPanelProps=t.props??e.currentPanelProps,t.props??{}):{}}getPanelKey(e){let t=this.computeState(e);if(t.isOpen)return t.key}open(e,t={}){if(this.screenWidthStore.isSmall)return;let n={currentPanelProps:t,componentTag:e,size:350},r=this.computeState(n);if(!r.isOpen)return;if(!this.mainPanel||!this.mainPanel.isPinned||this.mainPanelKey===r.key){this._openPanel(`mainPanel`,n,r);return}let i=this.mainPanel.isCollapsed?350:this.mainPanel.size;if(!this.secondaryPanel&&i+350>this.availableWidth){this.get(DN).notifyUser({sticky:!1,type:`warning`,text:k(`The window is too small to display multiple side panels.`)});return}this._openPanel(`secondaryPanel`,n,r)}replace(e,t,n={}){let r={currentPanelProps:n,componentTag:e,size:350},i=this.computeState(r);if(!i.isOpen)return;let a=()=>{this.mainPanel?.isCollapsed&&this.toggleCollapsePanel(`mainPanel`)},o=this.mainPanelKey===i.key,s=this.secondaryPanelKey===i.key;if(o&&this.secondaryPanel){this.close(),a();return}if(s){this.closeMainPanel(),this.togglePinPanel(),a();return}let c=this.mainPanelKey===t?`mainPanel`:`secondaryPanel`;this._openPanel(c,r,i)}_openPanel(e,t,n){let r=this[e];r&&t.componentTag!==r.componentTag&&r.currentPanelProps?.onCloseSidePanel?.(),this[e]={currentPanelProps:n.props??{},componentTag:t.componentTag,size:r?.size||350,isCollapsed:r?.isCollapsed||!1,isPinned:r&&`isPinned`in r?r.isPinned:!1},this[e].isCollapsed&&this.toggleCollapsePanel(e)}toggle(e,t){let n=this.mainPanel?.isPinned?this.secondaryPanel:this.mainPanel;n&&e===n.componentTag?this.close():this.open(e,t)}close(){if(this.mainPanel?.isPinned){this.secondaryPanel&&=(this.secondaryPanel.currentPanelProps.onCloseSidePanel?.(),void 0);return}this.mainPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=void 0}closeMainPanel(){this.mainPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=this.secondaryPanel||void 0,this.secondaryPanel=void 0}changePanelSize(e,t){let n=this[e];if(!n||`isCollapsed`in n&&n.isCollapsed)return;t=Math.max(t,350);let r=e===`mainPanel`?this.secondaryPanel?.size||0:this.mainPanel?.size||0;t>this.availableWidth-r&&(e===`mainPanel`&&this.secondaryPanel&&(this.secondaryPanel.size=Math.max(this.availableWidth-t,350),r=this.secondaryPanel.size),t=Math.max(this.availableWidth-r,350)),n.size=t}resetPanelSize(e){this[e]&&(this[e].size=350)}togglePinPanel(){this.mainPanel&&(this.mainPanel.isPinned=!this.mainPanel.isPinned,!this.mainPanel.isPinned&&this.secondaryPanel&&(this.secondaryPanel?.currentPanelProps.onCloseSidePanel?.(),this.mainPanel=this.secondaryPanel,this.secondaryPanel=void 0))}toggleCollapsePanel(e){let t=this[e];t&&(t.isCollapsed?(t.isCollapsed=!1,this.changePanelSize(e,350)):(t.isCollapsed=!0,t.size=45))}computeState({componentTag:e,currentPanelProps:t}){let n=vV.get(e).computeState,r=n?n(this.getters,t):{isOpen:!0,props:t};return r.isOpen?{...r,key:r.key||e}:r}changeSpreadsheetWidth(e){this.availableWidth=e-150,this.secondaryPanel&&e-this.totalPanelSize<150&&(this.secondaryPanel?.currentPanelProps.onCloseSidePanel?.(),this.secondaryPanel=void 0),this.mainPanel&&e-this.totalPanelSize<150&&(this.mainPanel.size=Math.max(e-150,350))}};function xV(e,t,n){let r=e.model.getters.getActiveSheetId(),i=t===`COL`?`FREEZE_COLUMNS`:`FREEZE_ROWS`;e.model.dispatch(i,{sheetId:r,quantity:n}).isCancelledBecause(`MergeOverlap`)&&e.raiseError(rm)}var SV=class{map={};constructor(e=[]){for(let[t,n]of e)this.set(t,n)}set({sheetId:e,col:t,row:n},r){let i=this.map;i[e]||(i[e]={}),i[e][t]||(i[e][t]={}),i[e][t][n]=r}setMany(e){for(let[t,n]of e)this.set(t,n)}get({sheetId:e,col:t,row:n}){return this.map[e]?.[t]?.[n]}getSheet(e){return this.map[e]}clearSheet(e){delete this.map[e]}has({sheetId:e,col:t,row:n}){return this.map[e]?.[t]?.[n]!==void 0}delete({sheetId:e,col:t,row:n}){delete this.map[e]?.[t]?.[n]}keys(){let e=this.map,t=[];for(let n in e)for(let r in e[n])for(let i in e[n][r])t.push({sheetId:n,col:parseInt(r),row:parseInt(i)});return t}keysForSheet(e){let t=this.map[e];if(!t)return[];let n=[];for(let r in t)for(let i in t[r])n.push({sheetId:e,col:parseInt(r),row:parseInt(i)});return n}*entries(){let e=this.map;for(let t of this.keys()){let{sheetId:n,col:r,row:i}=t;yield[t,e[n][r][i]]}}},CV=class extends yr{mutators=[`enable`,`disable`];isInvalidated=!1;fingerprintColors={[TV]:`#D9D9D9`};isEnabled=!1;colors=new SV;handle(e){switch(qs(e)&&this.isEnabled&&(this.isInvalidated=!0),e.type){case`UNDO`:case`REDO`:case`ACTIVATE_SHEET`:this.isEnabled&&(this.isInvalidated=!0);break}}finalize(){this.isInvalidated&&(this.isInvalidated=!1,this.computeFingerprints())}enable(){this.isEnabled=!0,this.computeFingerprints()}disable(){this.isEnabled=!1,this.colors=new SV}computeFingerprints(){this.colors=new SV;let e=new SV,t=new Set,n=this.getters.getActiveSheetId(),r=this.getters.getCells(n);for(let n in r){let i=r[n],a=this.computeFingerprint(i);if(!a)continue;t.add(a);let o=this.getters.getCellPosition(i.id);e.set(o,a)}this.assignColors(t);for(let[t,n]of e.entries()){let e=this.fingerprintColors[n];this.colors.set(t,e),this.colorSpreadZone(t,e)}}colorSpreadZone(e,t){let n=this.getters.getSpreadZone(e);if(!n)return;let r=e.sheetId;for(let e=n.top;e<=n.bottom;e++)for(let i=n.left;i<=n.right;i++){let n={sheetId:r,col:i,row:e};this.colors.set(n,t)}}assignColors(e){let t=new ai(e.size);Object.keys(this.fingerprintColors).forEach(()=>t.next());for(let n of e)this.fingerprintColors[n]||(this.fingerprintColors[n]=Wr(t.next(),.8))}computeFingerprint(e){let t=this.getters.getCellPosition(e.id);return e.isFormula?this.computeFormulaFingerprint(t,e):this.getLiteralFingerprint(t)}computeFormulaFingerprint(e,t){let n=t.compiledFormula.rangeDependencies,r=e.col,i=e.row,a=this.getters.getSheetIds().indexOf(e.sheetId),o={dx:0,dy:0,dSheet:0};for(let e of n){let t=e.zone,[n,s]=e.parts;o.dSheet=this.getters.getSheetIds().indexOf(e.sheetId)-a;let c=$c(e)&&!e.unboundedZone.hasHeader,l=Qc(e)&&!e.unboundedZone.hasHeader,u=c||n?.colFixed?0:r,d=l||n?.rowFixed?0:i,f=!s&&n?.colFixed||s?.colFixed,p=!s&&n?.rowFixed||s?.rowFixed,m=e.unboundedZone.right===void 0,h=e.unboundedZone.bottom===void 0,g=m||f?0:r,_=h||p?0:i,v=Ln({top:t.top-d,left:t.left-u,right:t.right-g,bottom:t.bottom-_});for(let e=v.top;e<=v.bottom;e++)for(let t=v.left;t<=v.right;t++)o.dx+=t,o.dy+=e}let s=t.compiledFormula.normalizedFormula;return wV(o)+s}getLiteralFingerprint(e){switch(this.getters.getEvaluatedCell(e).type){case`number`:case`boolean`:return TV;case`text`:case`empty`:case`error`:return}}};function wV(e){return Object.entries(e).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>t).join(`,`)}let TV=`DATA_FINGERPRINT`,EV={name:uF,execute:e=>{let t=e.model.getters.getElementsFromSelection(`COL`);e.model.dispatch(`HIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`COL`,elements:t})},isVisible:aF,icon:`o-spreadsheet-Icon.HIDE_COL`},DV={name:k(`Unhide columns`),execute:e=>{let t=e.model.getters.getElementsFromSelection(`COL`);e.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`COL`,elements:t})},isVisible:e=>{let 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`},OV={name:k(`Unhide all columns`),execute:e=>{let 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`},kV={name:dF,execute:e=>{let t=e.model.getters.getElementsFromSelection(`ROW`);e.model.dispatch(`HIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`ROW`,elements:t})},isVisible:rF,icon:`o-spreadsheet-Icon.HIDE_ROW`},AV={name:k(`Unhide rows`),execute:e=>{let t=e.model.getters.getElementsFromSelection(`ROW`);e.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId(),dimension:`ROW`,elements:t})},isVisible:e=>{let 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`},jV={name:k(`Unhide all rows`),execute:e=>{let 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`},MV={name:k(`Unfreeze`),isVisible:e=>{let{xSplit:t,ySplit:n}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+n>0},execute:e=>e.model.dispatch(`UNFREEZE_COLUMNS_ROWS`,{sheetId:e.model.getters.getActiveSheetId()}),icon:`o-spreadsheet-Icon.UNFREEZE`},NV={name:k(`Freeze`),icon:`o-spreadsheet-Icon.FREEZE`},PV={name:k(`No rows`),execute:e=>e.model.dispatch(`UNFREEZE_ROWS`,{sheetId:e.model.getters.getActiveSheetId()}),isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit},FV={name:k(`1 row`),execute:e=>xV(e,`ROW`,1)},IV={name:k(`2 rows`),execute:e=>xV(e,`ROW`,2)},LV={name:k(`Up to current row`),execute:e=>{let{bottom:t}=e.model.getters.getSelectedZone();xV(e,`ROW`,t+1)}},RV={name:k(`No columns`),execute:e=>e.model.dispatch(`UNFREEZE_COLUMNS`,{sheetId:e.model.getters.getActiveSheetId()}),isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit},zV={name:k(`1 column`),execute:e=>xV(e,`COL`,1)},BV={name:k(`2 columns`),execute:e=>xV(e,`COL`,2)},VV={name:k(`Up to current column`),execute:e=>{let{right:t}=e.model.getters.getSelectedZone();xV(e,`COL`,t+1)}},HV={name:k(`Gridlines`),execute:e=>{let t=e.model.getters.getActiveSheetId();e.model.dispatch(`SET_GRID_LINES_VISIBILITY`,{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},isActive:e=>{let t=e.model.getters.getActiveSheetId();return e.model.getters.getGridLinesVisibility(t)}},UV={name:k(`Irregularity map`),execute:e=>{let t=e.getStore(CV);t.isEnabled?t.disable():t.enable()},isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.IRREGULARITY_MAP`};function WV(e){return{name:k(`%(zoom_percentage)s%`,{zoom_percentage:e}),execute:t=>{t.model.dispatch(`SET_ZOOM`,{zoom:e/100})},isActive:t=>t.model.getters.getViewportZoomLevel()===e/100,isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,sequence:e}}let GV={name:k(`Formulas`),isActive:e=>e.model.getters.shouldShowFormulas(),execute:e=>e.model.dispatch(`SET_FORMULA_VISIBILITY`,{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0},KV={name:e=>{let t=e.model.getters.getSelectedZone();return t.left===t.right?k(`Group column %s`,Kt(t.left)):k(`Group columns %s - %s`,Kt(t.left),Kt(t.right))},execute:e=>XV(e,`COL`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZone(),r=e.model.getters.getHeaderGroupsInZone(t,`COL`,n);return kF(e)&&!r.some(e=>e.start===n.left&&e.end===n.right)},icon:`o-spreadsheet-Icon.GROUP_COLUMNS`},qV={name:e=>{let t=e.model.getters.getSelectedZone();return t.top===t.bottom?k(`Group row %s`,String(t.top+1)):k(`Group rows %s - %s`,String(t.top+1),String(t.bottom+1))},execute:e=>XV(e,`ROW`),isVisible:e=>{let t=e.model.getters.getActiveSheetId(),n=e.model.getters.getSelectedZone(),r=e.model.getters.getHeaderGroupsInZone(t,`ROW`,n);return kF(e)&&!r.some(e=>e.start===n.top&&e.end===n.bottom)},icon:`o-spreadsheet-Icon.GROUP_ROWS`},JV={name:e=>{let t=e.model.getters.getSelectedZone();return t.left===t.right?k(`Ungroup column %s`,Kt(t.left)):k(`Ungroup columns %s - %s`,Kt(t.left),Kt(t.right))},execute:e=>ZV(e,`COL`),icon:`o-spreadsheet-Icon.UNGROUP_COLUMNS`},YV={name:e=>{let t=e.model.getters.getSelectedZone();return t.top===t.bottom?k(`Ungroup row %s`,String(t.top+1)):k(`Ungroup rows %s - %s`,String(t.top+1),String(t.bottom+1))},execute:e=>ZV(e,`ROW`),icon:`o-spreadsheet-Icon.UNGROUP_ROWS`};function XV(e,t){let n=e.model.getters.getSelectedZone(),r=e.model.getters.getActiveSheetId();e.model.dispatch(`GROUP_HEADERS`,{sheetId:r,dimension:t,start:t===`COL`?n.left:n.top,end:t===`COL`?n.right:n.bottom})}function ZV(e,t){let n=e.model.getters.getSelectedZone(),r=e.model.getters.getActiveSheetId();e.model.dispatch(`UNGROUP_HEADERS`,{sheetId:r,dimension:t,start:t===`COL`?n.left:n.top,end:t===`COL`?n.right:n.bottom})}function QV(e,t){let n=e.model.getters.getActiveSheetId(),r=e.model.getters.getSelectedZones();return r.length===1&&e.model.getters.getHeaderGroupsInZone(n,t,r[0]).length>0}let $V={name:e=>{let t=e.getStore(bV);return t.mainPanel&&t.mainPanel.isPinned?k(`Unpin the side panel`):k(`Pin the side panel`)},isVisible:e=>e.getStore(bV).isMainPanelOpen,execute:e=>{e.getStore(bV).togglePinPanel()},icon:`o-spreadsheet-Icon.THUMB_TACK`};function eH(e){let t=e.model.dispatch(`CUT`);t.isSuccessful||t.isCancelledBecause(`WrongCutSelection`)&&e.raiseError(k(`This operation is not allowed with multiple selections.`))}let tH={MergeIsDestructive:k(`Merging these cells will only preserve the top-leftmost value. Merge anyway?`),MergeInFilter:k(`You can't merge cells inside of an existing filter.`)};function nH(e,t,n){let r=e.model.dispatch(`ADD_MERGE`,{sheetId:t,target:n});r.isCancelledBecause(`MergeInTable`)?e.raiseError(tH.MergeInFilter):r.isCancelledBecause(`MergeIsDestructive`)&&e.askConfirmation(tH.MergeIsDestructive,()=>{e.model.dispatch(`ADD_MERGE`,{sheetId:t,target:n,force:!0})})}let rH={name:k(`Undo`),shortcut:`Ctrl+Z`,execute:e=>e.model.dispatch(`REQUEST_UNDO`),isEnabled:e=>e.model.getters.canUndo(),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.UNDO`},iH={name:k(`Redo`),shortcut:`Ctrl+Y`,execute:e=>e.model.dispatch(`REQUEST_REDO`),isEnabled:e=>e.model.getters.canRedo(),isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.REDO`},aH={name:k(`Copy`),shortcut:`Ctrl+C`,isReadonlyAllowed:!0,execute:async e=>{e.model.dispatch(`COPY`),await e.clipboard.write(await e.model.getters.getClipboardTextAndImageContent())},isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.CLIPBOARD`},oH={name:k(`Cut`),shortcut:`Ctrl+X`,execute:async e=>{eH(e),await e.clipboard.write(await e.model.getters.getClipboardTextAndImageContent())},icon:`o-spreadsheet-Icon.CUT`},sH={name:k(`Paste`),shortcut:`Ctrl+V`,execute:GP,icon:`o-spreadsheet-Icon.PASTE`},cH={name:k(`Paste special`),isVisible:e=>!e.model.getters.isCutOperation(),icon:`o-spreadsheet-Icon.PASTE`},lH={name:k(`Paste as value`),shortcut:`Ctrl+Shift+V`,execute:KP},uH={name:k(`Paste format only`),execute:JP},dH={name:k(`Find and replace`),shortcut:`Ctrl+H`,isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,execute:e=>{e.openSidePanel(`FindAndReplace`,{})},isEnabled:e=>!e.isSmall,icon:`o-spreadsheet-Icon.SEARCH`},fH={name:k(`Delete values`),execute:e=>e.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},pH={name:$P,execute:eF,isVisible:e=>tF(`ROW`,e)},mH={...pH,isVisible:kF},hH={name:YP,execute:XP},gH={name:nF,execute:iF,isVisible:e=>tF(`COL`,e)},_H={...gH,isVisible:kF},vH={name:ZP,execute:QP},yH={name:k(`Delete cells`),isVisible:kF},bH={name:k(`Delete cell and shift up`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`DELETE_CELL`,{zone:t,shiftDimension:`ROW`}))}},xH={name:k(`Delete cell and shift left`),execute:e=>{let t=e.model.getters.getSelectedZone();gM(e,e.model.dispatch(`DELETE_CELL`,{zone:t,shiftDimension:`COL`}))}},SH={name:k(`Merge cells`),isEnabled:e=>!TH(e),isActive:e=>EH(e),execute:e=>DH(e),icon:`o-spreadsheet-Icon.MERGE_CELL`},CH={name:()=>k(`Edit table`),execute:e=>e.openSidePanel(`TableSidePanel`,{}),icon:`o-spreadsheet-Icon.EDIT_TABLE`},wH={name:()=>k(`Delete table`),execute:OF,icon:`o-spreadsheet-Icon.DELETE_TABLE`};function TH(e){let t=e.model.getters.getSelectedZones(),{sheetId:n}=e.model.getters.getActivePosition(),{xSplit:r,ySplit:i}=e.model.getters.getPaneDivisions(n);return t.every(e=>Gn(e)===1)||qn(t,r,i)||kn(t)}function EH(e){if(TH(e))return!1;let t=e.model.getters.getActiveSheetId();return e.model.getters.getSelectedZones().some(n=>e.model.getters.getMergesInZone(t,n).length>0)}function DH(e){if(TH(e))return;let t=e.model.getters.getSelectedZones(),n=e.model.getters.getActiveSheetId();if(EH(e)){let r=t.flatMap(t=>e.model.getters.getMergesInZone(n,t));e.model.dispatch(`REMOVE_MERGE`,{sheetId:n,target:r})}else nH(e,n,t)}let OH={name:k(`See pivot properties`),execute(e){let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);e.openSidePanel(`PivotSidePanel`,{pivotId:n})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);return!e.isSmall&&n&&e.model.getters.isExistingPivot(n)||!1},isReadonlyAllowed:!0,isEnabledOnLockedSheet:!0,icon:`o-spreadsheet-Icon.PIVOT`},kH={name:k(`Ascending`),execute:e=>VH(e,e.model.getters.getActivePosition(),`asc`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`asc`},AH={name:k(`Descending`),execute:e=>VH(e,e.model.getters.getActivePosition(),`desc`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`desc`},jH={name:k(`No sorting`),execute:e=>VH(e,e.model.getters.getActivePosition(),`none`),isActive:e=>e.model.getters.getPivotCellSortDirection(e.model.getters.getActivePosition())===`none`},MH={name:k(`Convert to individual formulas`),execute(e){let t=e.model.getters.getActivePosition(),n=e.model.getters.getCorrespondingFormulaCell(t),r=e.model.getters.getPivotIdFromPosition(t);if(!n||!r)return;let{sheetId:i,col:a,row:o}=e.model.getters.getCellPosition(n.id),s=e.model.getters.getPivot(r);s.init(),s.isValid()&&e.model.dispatch(`SPLIT_PIVOT_FORMULA`,{sheetId:i,col:a,row:o,pivotId:r})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=e.model.getters.getPivotIdFromPosition(t);if(!n)return!1;let r=e.model.getters.getPivot(n),i=e.model.getters.getEvaluatedCell(t);return r.isValid()&&e.model.getters.isSpillPivotFormula(t)&&i.type!==`error`},icon:`o-spreadsheet-Icon.PIVOT`},NH={name:k(`Group pivot dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=b(e.model.getters.getPivotCoreDefinition(n));if(!i.isCustomField)UH(o,r,i,a.getFields());else{let e=(o.customFields||{})[i.name];if(!e)return;WH(e,r)}e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:o})},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n);return r.length>1&&(i.isCustomField||uB.get(a.type).canHaveCustomGroup(i))}},PH={name:k(`Group all remaining dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,field:r}=t,i=e.model.getters.getPivot(n),a=b(e.model.getters.getPivotCoreDefinition(n)),o=r.isCustomField?(a.customFields||{})[r.name]:Lh(a,r,i.getFields());o&&(o.groups.push({name:Mh(k(`Others`),o),values:[],isOtherGroup:!0}),Ih(a,r.name,o.name),e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:a}))},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,field:r,values:i}=t;return qH(e,n,i,r)}},FH={name:k(`Ungroup pivot dimensions`),execute:e=>{let t=HH(e);if(!t)return;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=b(e.model.getters.getPivotCoreDefinition(n));GH(o,r,i,a.getFields()),e.model.dispatch(`UPDATE_PIVOT`,{pivotId:n,pivot:o})},isVisible:e=>{let t=HH(e);if(!t)return!1;let{pivotId:n,values:r,field:i}=t,a=e.model.getters.getPivot(n),o=e.model.getters.getPivotCoreDefinition(n);if(!i.isCustomField){let e=Lh(o,i,a.getFields());if(![...o.rows,...o.columns].some(t=>t.fieldName===e.name))return!1}return KH(o,r,i,a.getFields())}},IH={name:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);return n.isPivotGroup?n.isCollapsed?k(`Expand`):k(`Collapse`):``},execute(e){Rh(e.model.getters.getActivePosition(),e)},isVisible:e=>{let t=e.model.getters.getActivePosition();return zH(e.model.getters,t).isPivotGroup}},LH={name:k(`Collapse all`),execute(e){let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=b(e.model.getters.getPivotCoreDefinition(i));o.collapsedDomains=o.collapsedDomains||{COL:[],ROW:[]};let s=[...o.collapsedDomains[r.dimension]||[],...a],c=s.filter((e,t)=>t===s.findIndex(t=>w(t,e)));o.collapsedDomains[r.dimension]=c,e.model.dispatch(`UPDATE_PIVOT`,{pivotId:i,pivot:o})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return!1;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=e.model.getters.getPivotCoreDefinition(i);return!a.every(e=>(o.collapsedDomains?.[r.dimension]||[]).some(t=>w(t,e)))}},RH={name:k(`Expand all`),execute(e){let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return;let{pivotCell:r,pivotId:i,siblingDomains:a}=n,o=b(e.model.getters.getPivotCoreDefinition(i));o.collapsedDomains=o.collapsedDomains||{COL:[],ROW:[]};let s=(o.collapsedDomains[r.dimension]||[]).filter(e=>!a.find(t=>w(t,e)));o.collapsedDomains[r.dimension]=s,e.model.dispatch(`UPDATE_PIVOT`,{pivotId:i,pivot:o})},isVisible:e=>{let t=e.model.getters.getActivePosition(),n=zH(e.model.getters,t);if(!n.isPivotGroup)return!1;let{pivotCell:r,pivotId:i,siblingDomains:a}=n;return(e.model.getters.getPivotCoreDefinition(i).collapsedDomains?.[r.dimension]||[]).some(e=>a.some(t=>w(t,e)))}};function zH(e,t){if(!e.isSpillPivotFormula(t))return{isPivotGroup:!1};let n=e.getPivotCellFromPosition(t),r=e.getPivotIdFromPosition(t);if(n.type!==`HEADER`||!r||!n.domain.length)return{isPivotGroup:!1};let i=e.getPivotCoreDefinition(r),a=e.isDashboard(),o=n.dimension===`COL`?i.columns:i.rows;if(!(!a&&n.domain.length!==o.length))return{isPivotGroup:!1};let s=(i.collapsedDomains?.[n.dimension]??[]).some(e=>w(e,n.domain)),c=e.getPivot(r).getExpandedTableStructure(),l=n.domain.length-1;return{isPivotGroup:!0,isCollapsed:s,pivotCell:n,pivotId:r,siblingDomains:n.dimension===`ROW`?c.getRowDomainsAtDepth(l):c.getColumnDomainsAtDepth(l)}}function BH(e,t){let n=e.getPivotIdFromPosition(t);if(!n||!e.isExistingPivot(n)||!e.isSpillPivotFormula(t)||!e.getPivot(n).isValid())return!1;let r=e.getPivotCellFromPosition(t);return r.type===`VALUE`||r.type===`MEASURE_HEADER`}function VH(e,t,n){let r=e.model.getters.getPivotIdFromPosition(t),i=e.model.getters.getPivotCellFromPosition(t);if(i.type===`EMPTY`||i.type===`HEADER`||!r)return;if(n===`none`){e.model.dispatch(`UPDATE_PIVOT`,{pivotId:r,pivot:{...e.model.getters.getPivotCoreDefinition(r),sortedColumn:void 0}});return}let a=Fz(e.model.getters.getPivot(r),i.domain).colDomain;e.model.dispatch(`UPDATE_PIVOT`,{pivotId:r,pivot:{...e.model.getters.getPivotCoreDefinition(r),sortedColumn:{domain:a,order:n,measure:i.measure}}})}function HH(e){let t,n,r=[];for(let i of e.model.getters.getSelectedZones()){let a=e.model.getters.getActiveSheetId();for(let o of In(a,i)){let i=e.model.getters.getPivotIdFromPosition(o);if(!t)t=i;else if(i&&t!==i)return;if(!t)continue;let a=e.model.getters.getPivotCellFromPosition(o);if(a.type!==`HEADER`||!e.model.getters.isSpillPivotFormula(o))continue;let s=a.domain.at(-1)?.field;if(!n&&s)n=s;else if(n&&s&&n!==s)return;r.push(a)}}if(!t||!n||r.length===0)return;let i=e.model.getters.getPivot(t).getFields()[n];if(!i)return;let a=r.map(e=>e.domain.at(-1)?.value).filter(e=>e!==void 0);return{pivotId:t,values:a,field:i}}function UH(e,t,n,r){let i=Lh(e,n,r);Fh(t,i);let a={name:Mh(k(`Group`),i),values:t};i.groups.push(a),e.customFields||={},e.customFields[i.name]=i,Ih(e,n.name,i.name)}function WH(e,t){let n=new Set,r=[];for(let i of t){let t=e.groups.find(e=>e.name===i);t?(r.push(t),t.values.forEach(e=>n.add(e))):n.add(i)}if(r.some(e=>e.isOtherGroup))e.groups=e.groups.filter(e=>e.isOtherGroup||!r.includes(e));else if(r.length===0){let n={name:Mh(k(`Group`),e),values:t};e.groups.push(n)}else{let t=r.slice(1);e.groups=e.groups.filter(e=>!t.includes(e)),r[0].values=Array.from(n)}}function GH(e,t,n,r){let i;if(!n.isCustomField)i=Lh(e,n,r),i.groups.some(e=>e.isOtherGroup)&&t.some(e=>!i?.groups.some(t=>t.values.includes(e)))&&(i.groups=i.groups.filter(e=>!e.isOtherGroup)),Fh(t,i);else{if(i=(e.customFields||{})[n.name],!i)return;i.groups=i.groups.filter(e=>!t.includes(e.name))}i.groups.every(e=>e.values.length===0&&!e.isOtherGroup)&&(JH(e,i.name),delete e.customFields?.[i.name])}function KH(e,t,n,r){if(n.isCustomField){let r=(e.customFields||{})[n.name];return r?r.groups.some(e=>t.includes(e.name)):!1}else return Lh(e,n,r).groups.some(e=>e.isOtherGroup||t.some(t=>e.values.includes(t)))}function qH(e,t,n,r){let i=e.model.getters.getPivot(t),a=e.model.getters.getPivotCoreDefinition(t),o=r.isCustomField?(a.customFields||{})[r.name]:Object.values(a.customFields||{}).find(e=>e.parentField===r.name),s=i.definition.getDimension(r.name);if(!s||!o||KH(a,n,r,i.getFields()))return!1;let c=new Set(i.getPossibleFieldValues(s).map(e=>e.value)),l=r.isCustomField?o.groups.map(e=>e.name):o.groups.flatMap(e=>e.values);for(let e of[...n,...l])c.delete(e);return c.size===0}function JH(e,t){let n=e.customFields?.[t];if(!n)return;let r=[...e.rows,...e.columns].some(e=>e.fieldName===n.parentField);for(let i of[e.rows,e.columns]){let e=i.findIndex(e=>e.fieldName===t);e!==-1&&(r?i.splice(e,1):i.splice(e,1,{fieldName:n.parentField}))}}let YH=new vP;YH.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`add_row_before`,{...FF,sequence:70}).add(`add_column_before`,{...VF,sequence:90}).add(`insert_cell`,{...WF,sequence:100,separator:!0}).addChild(`insert_cell_down`,[`insert_cell`],{...GF,name:k(`Shift down`),sequence:10}).addChild(`insert_cell_right`,[`insert_cell`],{...KF,name:k(`Shift right`),sequence:20}).add(`delete_row`,{...mH,sequence:110,icon:`o-spreadsheet-Icon.TRASH`}).add(`delete_column`,{..._H,sequence:120,icon:`o-spreadsheet-Icon.TRASH`}).add(`delete_cell`,{...yH,sequence:130,separator:!0,icon:`o-spreadsheet-Icon.TRASH`}).addChild(`delete_cell_up`,[`delete_cell`],{...bH,name:k(`Shift up`),sequence:10,icon:`o-spreadsheet-Icon.DELETE_CELL_SHIFT_UP`}).addChild(`delete_cell_left`,[`delete_cell`],{...xH,name:k(`Shift left`),sequence:20,icon:`o-spreadsheet-Icon.DELETE_CELL_SHIFT_LEFT`}).add(`edit_table`,{...CH,isVisible:CF,isEnabled:e=>!e.isSmall,sequence:140}).add(`delete_table`,{...wH,isVisible:CF,sequence:145,separator:!0}).add(`insert_link`,{...sI,name:xF,sequence:150,separator:!0}).add(`pivot_headers_group`,{sequence:155,icon:`o-spreadsheet-Icon.PLUS_IN_BOX`,...NH}).add(`pivot_group_remaining`,{sequence:155,icon:`o-spreadsheet-Icon.PLUS_IN_BOX`,...PH}).add(`pivot_headers_ungroup`,{sequence:155,icon:`o-spreadsheet-Icon.MINUS_IN_BOX`,...FH}).add(`collapse_pivot`,{sequence:156,name:k(`Expand/Collapse`),icon:`o-spreadsheet-Icon.COLLAPSE`}).addChild(`toggle_collapse_pivot_cell`,[`collapse_pivot`],{sequence:10,...IH}).addChild(`collapse_all_pivot`,[`collapse_pivot`],{sequence:20,...LH}).addChild(`expand_all_pivot`,[`collapse_pivot`],{sequence:30,...RH}).add(`pivot_sorting`,{name:k(`Sort pivot`),sequence:155,icon:`o-spreadsheet-Icon.SORT_RANGE`,isVisible:e=>{let t=e.model.getters.getActivePosition();return BH(e.model.getters,t)}}).add(`pivot_fix_formulas`,{...MH,sequence:160}).add(`pivot_properties`,{...OH,sequence:170,separator:!0}).addChild(`pivot_sorting_asc`,[`pivot_sorting`],{...kH,sequence:10}).addChild(`pivot_sorting_desc`,[`pivot_sorting`],{...AH,sequence:20}).addChild(`pivot_sorting_none`,[`pivot_sorting`],{...jH,sequence:30});let XH={name:k(`Sort range`),isVisible:kF,icon:`o-spreadsheet-Icon.SORT_RANGE`},ZH={name:k(`Ascending (A ⟶ Z)`),execute:e=>{let{anchor:t,zones:n}=e.model.getters.getSelection();SM(e,e.model.getters.getActiveSheetId(),t.cell,n[0],`asc`)},icon:`o-spreadsheet-Icon.SORT_ASCENDING`},QH={name:k(`Data cleanup`),icon:`o-spreadsheet-Icon.DATA_CLEANUP`},$H={name:k(`Remove duplicates`),execute:e=>{Gn(e.model.getters.getSelectedZone())===1&&e.model.selection.selectTableAroundSelection(),e.openSidePanel(`RemoveDuplicates`,{})},isEnabled:e=>!e.isSmall},eU={name:k(`Trim whitespace`),execute:e=>{e.model.dispatch(`TRIM_WHITESPACE`)}},tU={name:k(`Descending (Z ⟶ A)`),execute:e=>{let{anchor:t,zones:n}=e.model.getters.getSelection();SM(e,e.model.getters.getActiveSheetId(),t.cell,n[0],`desc`)},icon:`o-spreadsheet-Icon.SORT_DESCENDING`},nU={...jF},rU={...jF,isActive:e=>SF(e)},iU={name:k(`Split text to columns`),sequence:1,execute:e=>e.openSidePanel(`SplitToColumns`,{}),isEnabled:e=>!e.isSmall&&e.model.getters.isSingleColSelected(),icon:`o-spreadsheet-Icon.SPLIT_TEXT`},aU={id:`reinsert_dynamic_pivot`,name:k(`Re-insert dynamic pivot`),sequence:60,icon:`o-spreadsheet-Icon.INSERT_PIVOT`,children:[hF],isVisible:e=>e.model.getters.getPivotIds().some(t=>e.model.getters.getPivot(t).isValid())},oU={id:`reinsert_static_pivot`,name:k(`Re-insert static pivot`),sequence:70,icon:`o-spreadsheet-Icon.INSERT_PIVOT`,children:[gF],isVisible:e=>e.model.getters.getPivotIds().some(t=>e.model.getters.getPivot(t).isValid())},sU=new vP;sU.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`sort_columns`,{...XH,name:e=>e.model.getters.getActiveCols().size>1?k(`Sort columns`):k(`Sort column`),sequence:50,separator:!0}).addChild(`sort_ascending`,[`sort_columns`],{...ZH,sequence:10}).addChild(`sort_descending`,[`sort_columns`],{...tU,sequence:20}).add(`add_column_before`,{...zF,sequence:70}).add(`add_column_after`,{...HF,sequence:80}).add(`delete_column`,{...gH,sequence:90,icon:`o-spreadsheet-Icon.TRASH`}).add(`clear_column`,{...vH,sequence:100,icon:`o-spreadsheet-Icon.CLEAR`}).add(`hide_columns`,{...EV,sequence:105,separator:!0}).add(`unhide_columns`,{...DV,sequence:106,separator:!0}).add(`conditional_formatting`,{...IR,sequence:110,separator:!0}).add(`edit_table`,{...CH,isVisible:CF,sequence:120}).add(`delete_table`,{...wH,isVisible:CF,sequence:125,separator:!0}).add(`group_columns`,{sequence:150,...KV}).add(`ungroup_columns`,{sequence:155,...JV,isVisible:e=>QV(e,`COL`)});let cU={CannotHideAllRows:k(`Cannot hide all the rows of a sheet.`),CannotHideAllColumns:k(`Cannot hide all the columns of a sheet.`)};function lU(e,t,n,r,i){let a=e.model.getters.getHeaderGroup(t,n,r,i);if(!a)return;let o=a.isFolded?`UNFOLD_HEADER_GROUP`:`FOLD_HEADER_GROUP`,s=e.model.dispatch(o,{sheetId:t,dimension:n,start:a.start,end:a.end});if(!s.isSuccessful&&s.isCancelledBecause(`NotEnoughElements`)){let t=n===`ROW`?cU.CannotHideAllRows:cU.CannotHideAllColumns;e.raiseError(t)}}function uU(e,t){return p([{id:`unfold_all`,name:k(t===`ROW`?`Expand all row groups`:`Expand all column groups`),execute:n=>{n.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:e,dimension:t})},icon:`o-spreadsheet-Icon.EXPAND`},{id:`fold_all`,name:k(t===`ROW`?`Collapse all row groups`:`Collapse all column groups`),execute:n=>{n.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:e,dimension:t})},icon:`o-spreadsheet-Icon.COLLAPSE`}])}function dU(e,t,n,r){return[...p([{id:`toggle_group`,name:e=>{let i=e.model.getters.getActiveSheetId();return e.model.getters.isGroupFolded(i,t,n,r)?k(t===`ROW`?`Expand row group`:`Expand column group`):k(t===`ROW`?`Collapse row group`:`Collapse column group`)},execute:e=>{lU(e,e.model.getters.getActiveSheetId(),t,n,r)},icon:e=>{let i=e.model.getters.getActiveSheetId();return e.model.getters.isGroupFolded(i,t,n,r)?`o-spreadsheet-Icon.EXPAND`:`o-spreadsheet-Icon.COLLAPSE`}},{id:`remove_group`,name:k(t===`ROW`?`Remove row group`:`Remove column group`),execute:e=>{let i=e.model.getters.getActiveSheetId();e.model.dispatch(`UNGROUP_HEADERS`,{sheetId:i,dimension:t,start:n,end:r})},icon:`o-spreadsheet-Icon.TRASH`,separator:!0}]),...uU(e,t)]}let fU=new vP;fU.add(`group_columns`,{sequence:10,...KV,isVisible:()=>!0,isEnabled:KV.isVisible}).add(`group_rows`,{sequence:20,...qV,isVisible:()=>!0,isEnabled:qV.isVisible});let pU=new vP;pU.add(`ungroup_columns`,{sequence:10,...JV,isEnabled:e=>QV(e,`COL`)}).add(`ungroup_rows`,{sequence:20,...YV,isEnabled:e=>QV(e,`ROW`)});let mU=new vP;mU.add(`cut`,{...oH,sequence:10}).add(`copy`,{...aH,sequence:20}).add(`paste`,{...sH,sequence:30}).add(`paste_special`,{...cH,sequence:40,separator:!0}).addChild(`paste_value_only`,[`paste_special`],{...lH,sequence:10}).addChild(`paste_format_only`,[`paste_special`],{...uH,sequence:20}).add(`add_row_before`,{...NF,sequence:50}).add(`add_row_after`,{...IF,sequence:60}).add(`delete_row`,{...pH,sequence:70,icon:`o-spreadsheet-Icon.TRASH`}).add(`clear_row`,{...hH,sequence:80,icon:`o-spreadsheet-Icon.CLEAR`}).add(`hide_rows`,{...kV,sequence:85,separator:!0}).add(`unhide_rows`,{...AV,sequence:86,separator:!0}).add(`conditional_formatting`,{...IR,sequence:90,separator:!0}).add(`group_rows`,{sequence:100,...qV}).add(`ungroup_rows`,{sequence:110,...YV,isVisible:e=>QV(e,`ROW`)});var hU=class extends yr{highlightStore=this.get(EN);constructor(e){super(e),this.highlightStore.register(this)}get highlights(){let e=this.model.getters.getActivePosition(),t=this.model.getters.getArrayFormulaSpreadingOn(e),n=t?this.model.getters.getSpreadZone(t,{ignoreSpillError:!0}):this.model.getters.getSpreadZone(e,{ignoreSpillError:!0});if(!n)return[];let r=this.getters.getPivotStyleAtPosition(e);if(r?.pivotStyle?.tableStyleId&&r.pivotStyle.tableStyleId!==`None`)return[];let i=this.model.getters.isArrayFormulaSpillBlocked(t??e);return[{range:this.model.getters.getRangeFromZone(e.sheetId,n),dashed:i,color:`#17A2B8`,noFill:!0,thinLine:!0}]}},gU=class extends yr{mutators=[`focusClient`,`unfocusClient`,`showClientTag`,`hideClientTag`,`jumpToClient`];_showClientTag=!1;clientFocusTimeout={};constructor(e){super(e),this.onDispose(()=>{for(let e in this.clientFocusTimeout)this.unfocusClient(e)})}get focusedClients(){let e=new Set;return this.model.getters.getConnectedClients().forEach(t=>{(this._showClientTag||this.clientFocusTimeout[t.id]!==void 0)&&e.add(t.id)}),e}jumpToClient(e){let t=this.model.getters.getClient(e);this.focusClient(e),t.position&&(this.model.dispatch(`ACTIVATE_SHEET`,{sheetIdTo:t.position.sheetId,sheetIdFrom:this.getters.getActiveSheetId()}),this.model.dispatch(`SCROLL_TO_CELL`,{col:t.position.col,row:t.position.row}))}showClientTag(){this._showClientTag=!0}hideClientTag(){this._showClientTag=!1}focusClient(e){this.clientFocusTimeout[e]&&clearTimeout(this.clientFocusTimeout[e]),this.clientFocusTimeout[e]=setTimeout(()=>this.unfocusClient(e),3e3)}unfocusClient(e){this.clientFocusTimeout[e]&&clearTimeout(this.clientFocusTimeout[e]),this.clientFocusTimeout[e]=void 0}};function _U(e){let n=null,r,i,a,o,s=`all`,c=e.model.getters,l=e=>e.preventDefault(),u=()=>removeEventListener(`keydown`,l,{capture:!0}),d=[],f=()=>{clearTimeout(n),n=null,d.forEach(e=>e()),d=[]},p,m,h=t=>{if(r=t,n)return;let l=c.getActiveSheetId(),u=rp(e.model.getters.getViewportZoomLevel()),d=wp(e,r,u),{x:f,y:m}=c.getMainViewportCoordinates(),{top:g,left:_,bottom:v,right:y}=c.getActiveMainViewport(),{scrollX:ee,scrollY:te}=c.getActiveSheetScrollInfo(),{xSplit:ne,ySplit:re}=c.getPaneDivisions(l),ie=!1,ae=140,oe=d.clientX-u.x,se=c.getColIndex(oe);if(s!==`vertical`){let t=i.clientX-u.x,n=c.getEdgeScrollCol(oe,t,a);if(n.canEdgeScroll){ie=!0,ae=Math.min(ae,n.delay);let t=se;switch(n.direction){case`reset`:se=t=ne;break;case 1:se=y,t=_+1;break;case-1:for(se=_-1;e.model.getters.isColHidden(l,se);)se--;t=se;break}ee=c.getColDimensions(l,t).start-f}}let ce=d.clientY-u.y,le=c.getRowIndex(ce);if(s!==`horizontal`){let t=i.clientY-u.y,n=c.getEdgeScrollRow(ce,t,o);if(n.canEdgeScroll){ie=!0,ae=Math.min(ae,n.delay);let t=le;switch(n.direction){case`reset`:le=t=re;break;case 1:le=v,t=g+1;break;case-1:for(le=g-1;e.model.getters.isRowHidden(l,le);)le--;t=le;break}te=e.model.getters.getRowDimensions(l,t).start-m}}ie||(se=vU(se,oe,c.getNumberCols(l)-1),le=vU(le,ce,c.getNumberRows(l)-1)),p?.(se,le,r),ie&&(e.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:ee,offsetY:te}),n=setTimeout(()=>{n=null,h(r)},Math.round(ae))),i={clientX:d.clientX,clientY:d.clientY}},g=()=>{m?.(),f()};return(0,t.onWillUnmount)(()=>{f()}),(0,t.useEffect)(()=>{f()},()=>[c.getActiveSheetId()]),{start:(t,n,r,c=`all`)=>{f();let _=rp(e.model.getters.getViewportZoomLevel());s=c,a=t.clientX-_.x,o=t.clientY-_.y,i={clientX:t.clientX,clientY:t.clientY},p=n,m=r,addEventListener(`keydown`,l,{capture:!0}),d.push(RN(h,g),u)}}}function vU(e,t,n){return e===-1?t<0?0:n:e}var yU=class extends t.Component{static template=`o-spreadsheet-Autofill`;static props={position:Object,isVisible:Boolean};state=(0,t.useState)({position:{x:0,y:0},handler:!1});dragNDropGrid=_U(this.env);get style(){let{x:e,y:t}=this.props.position;return U({top:`${t}px`,left:`${e}px`,visibility:this.props.isVisible?`visible`:`hidden`})}get handlerStyle(){let{x:e,y:t}=this.state.handler?this.state.position:this.props.position;return U({top:`${t}px`,left:`${e}px`,visibility:this.props.isVisible?`visible`:`hidden`})}get styleNextValue(){let{x:e,y:t}=this.state.position;return U({top:`${t+5}px`,left:`${e+15}px`})}getTooltip(){let e=this.env.model.getters.getAutofillTooltip();return e&&!e.component&&(e.component=bU),e}onMouseDown(e){this.state.handler=!0;let t=wp(this.env,e),n=this.env.model.getters.getViewportZoomLevel(),r,i,a={x:e.clientX/n-this.props.position.x,y:e.clientY/n-this.props.position.y};this.dragNDropGrid.start(t,(e,t,o)=>{if(this.state.position={x:o.clientX/n-a.x,y:o.clientY/n-a.y},r!==e||i!==t){let n=this.env.model.getters.getActiveSheetId(),a=this.env.model.getters.getNumberCols(n),o=this.env.model.getters.getNumberRows(n);r=e===-1?r:x(e,0,a),i=t===-1?i:x(t,0,o),r!==void 0&&i!==void 0&&this.env.model.dispatch(`AUTOFILL_SELECT`,{col:r,row:i})}},()=>{this.state.handler=!1,this.state.position={...this.props.position},this.env.model.dispatch(`AUTOFILL`)})}onDblClick(){this.env.model.dispatch(`AUTOFILL_AUTO`)}},bU=class extends t.Component{static props={content:String};static template=t.xml`
85
85
  <div t-esc="props.content"/>
86
86
  `},xU=class extends t.Component{static template=`o-spreadsheet-ClientTag`;static props={active:Boolean,name:String,color:String,col:Number,row:Number};get tagStyle(){let{col:e,row:t,color:n}=this.props,{height:r}=this.env.model.getters.getSheetViewDimensionWithHeaders(),i=this.env.model.getters.isVisibleInViewport({sheetId:this.env.model.getters.getActiveSheetId(),col:e,row:t}),{x:a,y:o}=this.env.model.getters.getVisibleRect({left:e,top:t,right:e,bottom:t});return U({bottom:`${r-o+15}px`,left:`${a-1}px`,border:`1px solid ${n}`,"background-color":n,visibility:i?`visible`:`hidden`})}};let SU=[`*`,`+`,`&`];function CU(e,t=60){return`=`+jU(IU(e),t-1)}function wU(){return{type:`insertLine`}}function TU(e,t){return{type:`nest`,indentLevel:e,doc:t}}function EU(e){return{type:`concat`,docs:e}}function DU(e){return OU(kU(e),e)}function OU(e,t){return{type:`chooseBetween`,doc1:e,doc2:t}}function kU(e){return typeof e==`string`?e:e.type===`chooseBetween`?kU(e.doc1):e.type===`concat`?EU(e.docs.map(kU)):e.type===`nest`?{type:`nest`,indentLevel:e.indentLevel,doc:kU(e.doc)}:e.type===`insertLine`?``:e}let AU=At(function(e){return`
87
87
  `+` `.repeat(e)});function jU(e,t){return MU(NU(t,e))}function MU(e){let t=``;for(;e;)t+=e.subString,e=e.next;return t}function NU(e,t){return PU(e,0,{indentLevel:0,doc:t,next:null})}function PU(e,t,n){if(n===null)return null;let{indentLevel:r,doc:i,next:a}=n;if(typeof i==`string`)return{subString:i,next:PU(e,t+i.length,a)};if(i.type===`concat`){let n=a;for(let e=i.docs.length-1;e>=0;e--)n={indentLevel:r,doc:i.docs[e],next:n};return PU(e,t,n)}if(i.type===`nest`)return PU(e,t,{indentLevel:r+i.indentLevel,doc:i.doc,next:a});if(i.type===`insertLine`)return{subString:AU(r),next:PU(e,r,a)};if(i.type===`chooseBetween`){let n=PU(e,t,{indentLevel:r,doc:i.doc1,next:a});return FU(e-t,n)?n:PU(e,t,{indentLevel:r,doc:i.doc2,next:a})}return null}function FU(e,t){for(;t;){if(t.subString[0]===`
88
88
  `)return!0;if(e-=t.subString.length,e<0)return!1;t=t.next}return!0}function IU(e){let t=e.debug?`?`:``;switch(e.type){case`NUMBER`:return t+String(e.value);case`STRING`:return t+`"${e.value}"`;case`BOOLEAN`:return t+(e.value?`TRUE`:`FALSE`);case`FUNCALL`:let n=uO.get(e.value.toUpperCase()),r=Kv(n,e.args.length),i=[],a=0;for(;a<e.args.length;)if(n.args[r(a).index??-1]?.repeating){let t=e.args.slice(a,a+n.nbrArgRepeating).map(e=>IU(e));i.push(DU(EU(LU(t)))),a+=n.nbrArgRepeating}else i.push(IU(e.args[a])),a++;return RU(EU(LU(i)),t+e.value);case`ARRAY`:return zU(EU(e.value.map(e=>EU(e.map((e,t)=>t===0?IU(e):EU([`, `,wU(),IU(e)])))).map((e,t)=>t===0?DU(e):EU([`; `,wU(),DU(e)]))));case`UNARY_OPERATION`:let o=IU(e.operand),s=(e.postfix?VU(e):HU(e))?RU(o):o;return e.postfix?EU([s,t+e.value]):EU([t+e.value,s]);case`BIN_OPERATION`:{let n=IU(e.left),r=VU(e)?RU(n):n,i=IU(e.right),a=HU(e)?RU(i):i;return DU(EU([r,`${t}${e.value}`,TU(1,EU([wU(),a]))]))}default:return t+e.value}}function LU(e){let t=e.length?[e[0]]:[];for(let n=1;n<e.length;n++)t.push(`, `,wU()),t.push(e[n]);return t}function RU(e,t=void 0){let n=[`(`,TU(1,EU([wU(),e])),wU(),`)`];return t&&n.unshift(t),DU(EU(n))}function zU(e){return DU(EU([`{`,TU(1,EU([wU(),e])),wU(),`}`]))}function BU(e){let t=e.debug?`?`:``;switch(e.type){case`FUNCALL`:let n=e.args.map(e=>BU(e));return`${t}${e.value}(${n.join(`,`)})`;case`NUMBER`:return t+e.value.toString();case`STRING`:return t+`"${e.value}"`;case`BOOLEAN`:return t+(e.value?`TRUE`:`FALSE`);case`UNARY_OPERATION`:if(e.postfix)return(VU(e)?`(${BU(e.operand)})`:BU(e.operand))+t+e.value;let r=HU(e)?`(${BU(e.operand)})`:BU(e.operand);return t+e.value+r;case`ARRAY`:return`{`+t+e.value.map(e=>e.map(e=>BU(e)).join(`,`)).join(`;`)+`}`;case`BIN_OPERATION`:let i=VU(e)?`(${BU(e.left)})`:BU(e.left),a=HU(e)?`(${BU(e.right)})`:BU(e.right);return i+t+e.value+a;default:return t+e.value}}function VU(e){let t=e.value,n=`left`in e?e.left:e.operand,r=n.value;return n.type===`BIN_OPERATION`&&nN[r]<nN[t]}function HU(e){let t=e.value,n=`right`in e?e.right:e.operand,r=nN[n.value],i=nN[t];return n.type===`BIN_OPERATION`?r<i?!0:r===i&&!SU.includes(t):!1}let UU=k(`The cell you are trying to edit has been deleted.`);var WU=class extends kN{canStopEdition(){return this.editionMode===`inactive`?!0:this.checkDataValidation()}stopEdition(e){if(this.canStopEdition()){let{col:t,row:n}=this.currentEditedCell;this._stopEdition(),e&&(this.getters.isSingleCellOrMerge(this.sheetId,this.getters.getSelectedZone())?(this.model.selection.selectCell(t,n),this.model.selection.moveAnchorCell(e,1)):RM(this.getters,this.model.selection,e));return}let t=this.currentEditedCell,n=T(t.col,t.row),r=this.getters.getValidationRuleForCell(t);if(!r)return;let i=Z.get(r.criterion.type).getErrorString(r.criterion,this.getters,t.sheetId);this.notificationStore.raiseError(k(`The data you entered in %s violates the data validation rule set on the cell:
89
- %s`,n,i)),this.cancelEdition()}handle(e){switch(super.handle(e),e.type){case`SET_FORMATTING`:this.cancelEdition();break;case`ADD_COLUMNS_ROWS`:this.onAddElements(e);break;case`REMOVE_COLUMNS_ROWS`:e.dimension===`COL`?this.onColumnsRemoved(e):this.onRowsRemoved(e);break;case`ACTIVATE_SHEET`:if(Ut(this._currentContent)||(this._cancelEdition(),this.resetContent()),e.sheetIdFrom!==e.sheetIdTo){let t=this.getters.getActivePosition(),{col:n,row:r}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:t.col,row:t.row}),i=this.getters.expandZone(e.sheetIdTo,E({col:n,row:r}));this.model.selection.resetAnchor(this,{cell:{col:n,row:r},zone:i})}break;case`DELETE_SHEET`:case`UNDO`:case`REDO`:!this.getters.tryGetSheet(this.sheetId)&&this.editionMode!==`inactive`&&(this.sheetId=this.getters.getActiveSheetId(),this.resetContent(),this.cancelEditionAndActivateSheet(),this.notificationStore.raiseError(UU));break}}get placeholder(){let e=this.getters.getActivePosition(),t=this.model.getters.getArrayFormulaSpreadingOn(e);if(t)return this.getters.getCellText(t,{showFormula:!0})}get currentEditedCell(){return{sheetId:this.sheetId,col:this.col,row:this.row}}onColumnsRemoved(e){if(e.elements.includes(this.col)&&this.editionMode!==`inactive`){this.cancelEdition(),this.notificationStore.raiseError(UU);return}let{top:t,left:n}=Sn({left:this.col,right:this.col,top:this.row,bottom:this.row},`left`,[...e.elements]);this.col=n,this.row=t}onRowsRemoved(e){if(e.elements.includes(this.row)&&this.editionMode!==`inactive`){this.cancelEdition(),this.notificationStore.raiseError(UU);return}let{top:t,left:n}=Sn({left:this.col,right:this.col,top:this.row,bottom:this.row},`top`,[...e.elements]);this.col=n,this.row=t}onAddElements(e){let{top:t,left:n}=xn({left:this.col,right:this.col,top:this.row,bottom:this.row},e.dimension===`COL`?`left`:`top`,e.base,e.position,e.quantity);this.col=n,this.row=t}confirmEdition(e){let t;if(e){let n={sheetId:this.getters.getActiveSheetId(),col:this.col,row:this.row},r=this.getters.getEvaluatedCell(n);r.link&&!Ut(e)&&(e=ot(e,r.link.url));let i=this.getters.getCell(n)?.format,a=i===`@`||i&&os(i)?void 0:ds(e,this.getters.getLocale());this.addHeadersForSpreadingFormula(e),t=this.model.dispatch(`UPDATE_CELL`,{...this.currentEditedCell,content:e,format:a})}else t=this.model.dispatch(`UPDATE_CELL`,{...this.currentEditedCell,content:``});t.isSuccessful&&this.model.dispatch(`AUTOFILL_TABLE_COLUMN`,{...this.currentEditedCell}),this.setContent(``)}getComposerContent(e,t){let n=this.getters.getLocale(),r=this.getters.getCell(e);if(r?.isFormula){let e=this.getPrettifiedFormula(r);function i(t){let n=0,r=0;for(;r<t;){n++;let t=e[n];t!==`
89
+ %s`,n,i)),this.cancelEdition()}handle(e){switch(super.handle(e),e.type){case`SET_FORMATTING`:this.cancelEdition();break;case`ADD_COLUMNS_ROWS`:this.onAddElements(e);break;case`REMOVE_COLUMNS_ROWS`:e.dimension===`COL`?this.onColumnsRemoved(e):this.onRowsRemoved(e);break;case`ACTIVATE_SHEET`:if(Ut(this._currentContent)||(this._cancelEdition(),this.resetContent()),this.model.selection.isListening(this)&&e.sheetIdFrom!==e.sheetIdTo){let t=this.getters.getActivePosition(),{col:n,row:r}=this.getters.getNextVisibleCellPosition({sheetId:e.sheetIdTo,col:t.col,row:t.row}),i=this.getters.expandZone(e.sheetIdTo,E({col:n,row:r}));this.model.selection.resetAnchor(this,{cell:{col:n,row:r},zone:i})}break;case`DELETE_SHEET`:case`UNDO`:case`REDO`:!this.getters.tryGetSheet(this.sheetId)&&this.editionMode!==`inactive`&&(this.sheetId=this.getters.getActiveSheetId(),this.resetContent(),this.cancelEditionAndActivateSheet(),this.notificationStore.raiseError(UU));break}}get placeholder(){let e=this.getters.getActivePosition(),t=this.model.getters.getArrayFormulaSpreadingOn(e);if(t)return this.getters.getCellText(t,{showFormula:!0})}get currentEditedCell(){return{sheetId:this.sheetId,col:this.col,row:this.row}}onColumnsRemoved(e){if(e.elements.includes(this.col)&&this.editionMode!==`inactive`){this.cancelEdition(),this.notificationStore.raiseError(UU);return}let{top:t,left:n}=Sn({left:this.col,right:this.col,top:this.row,bottom:this.row},`left`,[...e.elements]);this.col=n,this.row=t}onRowsRemoved(e){if(e.elements.includes(this.row)&&this.editionMode!==`inactive`){this.cancelEdition(),this.notificationStore.raiseError(UU);return}let{top:t,left:n}=Sn({left:this.col,right:this.col,top:this.row,bottom:this.row},`top`,[...e.elements]);this.col=n,this.row=t}onAddElements(e){let{top:t,left:n}=xn({left:this.col,right:this.col,top:this.row,bottom:this.row},e.dimension===`COL`?`left`:`top`,e.base,e.position,e.quantity);this.col=n,this.row=t}confirmEdition(e){let t;if(e){let n={sheetId:this.getters.getActiveSheetId(),col:this.col,row:this.row},r=this.getters.getEvaluatedCell(n);r.link&&!Ut(e)&&(e=ot(e,r.link.url));let i=this.getters.getCell(n)?.format,a=i===`@`||i&&os(i)?void 0:ds(e,this.getters.getLocale());this.addHeadersForSpreadingFormula(e),t=this.model.dispatch(`UPDATE_CELL`,{...this.currentEditedCell,content:e,format:a})}else t=this.model.dispatch(`UPDATE_CELL`,{...this.currentEditedCell,content:``});t.isSuccessful&&this.model.dispatch(`AUTOFILL_TABLE_COLUMN`,{...this.currentEditedCell}),this.setContent(``)}getComposerContent(e,t){let n=this.getters.getLocale(),r=this.getters.getCell(e);if(r?.isFormula){let e=this.getPrettifiedFormula(r);function i(t){let n=0,r=0;for(;r<t;){n++;let t=e[n];t!==`
90
90
  `&&t!==` `&&r++}return n}let a=t;return t&&(a={start:i(t.start),end:i(t.end)}),{text:AS(e,n),adjustedSelection:a}}if(this.model.getters.getArrayFormulaSpreadingOn(e))return{text:``};if(r?.content.startsWith(`'`))return{text:r.content};let{format:i,value:a,type:o,formattedValue:s}=this.getters.getEvaluatedCell(e);switch(o){case`empty`:return{text:``};case`text`:case`error`:return{text:a};case`boolean`:return{text:s};case`number`:return i&&os(i)?Di(s,n)===null?{text:z(a,{locale:n,format:Number.isInteger(a)?n.dateFormat:VS(n)})}:{text:s}:{text:this.numberComposerContent(a,i,n)}}}getPrettifiedFormula(e){if(e.compiledFormula.isBadExpression)return e.compiledFormula.toFormulaString(this.getters);let t=this.editionMode===`inactive`?1/0:80;return CU(e.compiledFormula.getAst(this.getters),t)}numberComposerContent(e,t,n){return t?.includes(`%`)?`${as(e*100,n.decimalSeparator)}%`:as(e,n.decimalSeparator)}addHeadersForSpreadingFormula(e){if(!Ut(e))return;let t=this.getters.evaluateFormula(this.sheetId,e,{sheetId:this.sheetId,col:this.col,row:this.row});if(!Ta(t))return;let n=this.getters.getNumberRows(this.sheetId),r=this.getters.getNumberCols(this.sheetId),i=this.row+t[0].length-n,a=this.col+t.length-r;a>0&&this.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:this.sheetId,sheetName:this.getters.getSheetName(this.sheetId),dimension:`COL`,base:r-1,position:`after`,quantity:a+20}),i>0&&this.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:this.sheetId,sheetName:this.getters.getSheetName(this.sheetId),dimension:`ROW`,base:n-1,position:`after`,quantity:i+50})}checkDataValidation(){let e={sheetId:this.sheetId,col:this.col,row:this.row},t=this.getCurrentCanonicalContent(),n=Ut(t)?this.getters.evaluateFormula(this.sheetId,t):sc(t,this.getters.getLocale());if(Sm(n))return!0;let r=this.getters.getValidationResultForCellValue(bm(n),e);return!(!r.isValid&&r.rule.isBlocking)}startEdition(e,t){return this.getters.isCurrentSheetLocked()?(this.model.trigger(`command-rejected`,{result:new Ys(`SheetLocked`),command:{sheetId:this.getters.getActiveSheetId()}}),`NoStateChange`):super.startEdition(e,t)}evaluateCanonicalFormula(e){return this.getters.evaluateFormulaResult(this.sheetId,e,{sheetId:this.sheetId,col:this.col,row:this.row})}};let GU=3*.4*globalThis.devicePixelRatio||1;var KU=class extends t.Component{static template=`o-spreadsheet-GridComposer`;static props={gridDims:Object,onInputContextMenu:Function};static components={Composer:ZM};rect=this.defaultRect;isEditing=!1;isCellReferenceVisible=!1;currentEditedCell={col:0,row:0,sheetId:this.env.model.getters.getActiveSheetId()};composerStore;composerFocusStore;composerInterface;get defaultRect(){return{x:0,y:0,width:0,height:0}}setup(){let e=D(WU);this.composerStore=e,this.composerFocusStore=D(xr),this.composerInterface={id:`gridComposer`,get editionMode(){return e.editionMode},startEdition:this.composerStore.startEdition,setCurrentContent:this.composerStore.setCurrentContent,stopEdition:this.composerStore.stopEdition},this.composerFocusStore.focusComposer(this.composerInterface,{focusMode:`inactive`}),(0,t.onWillUpdateProps)(()=>{this.updateComponentPosition(),this.updateCellReferenceVisibility()})}get shouldDisplayCellReference(){return!this.env.isMobile()&&this.isCellReferenceVisible}get cellReference(){let{col:e,row:t,sheetId:n}=this.composerStore.currentEditedCell;return Bc(n===this.env.model.getters.getActiveSheetId()?void 0:this.env.model.getters.getSheetName(n),T(e,t))}get cellReferenceStyle(){let{x:e,y:t}=this.rect;return U({left:`${e-GU}px`,top:`${t-28}px`})}get focus(){return this.composerFocusStore.activeComposer===this.composerInterface?this.composerFocusStore.focusMode:`inactive`}get composerProps(){let{width:e,height:t}=this.env.model.getters.getSheetViewDimensionWithHeaders(),n=this.props.gridDims.height-this.rect.y-2*GU;return{rect:{...this.rect},delimitation:{width:e,height:t},focus:this.focus,isDefaultFocus:!0,onComposerContentFocused:e=>this.composerFocusStore.focusComposer(this.composerInterface,{focusMode:`contentFocus`,selection:e}),onComposerCellFocused:e=>this.composerFocusStore.focusComposer(this.composerInterface,{focusMode:`cellFocus`,content:e}),onInputContextMenu:this.props.onInputContextMenu,composerStore:this.composerStore,inputStyle:`max-height: ${n}px;`,inputMode:this.composerStore.editionMode===`inactive`?`none`:void 0}}get containerStyle(){if(this.composerStore.editionMode===`inactive`||this.env.isMobile())return`z-index: -1000; opacity: 0;`;let e=Ut(this.composerStore.currentContent),t=this.env.model.getters.getActiveCell(),n=this.env.model.getters.getActivePosition(),r=this.env.model.getters.getCellComputedStyle(n),{x:i,y:a,width:o,height:s}=this.rect,c=!e&&r.fillColor||`#ffffff`,l=!e&&r.textColor||`#000000`,u=!e&&r.fontSize||10,d=!e&&r.bold?`bold`:void 0,f=!e&&r.italic?`italic`:`normal`,p=e?`none`:nv(r),m=`left`;e||(m=r.align||t.defaultAlign);let h=this.props.gridDims.height-this.rect.y,g=this.props.gridDims.width-this.rect.x,_=Math.min(s+1,h),v=Math.min(o+1,g);return U({left:`${i-1}px`,top:`${a}px`,border:`${GU}px solid ${ae}`,"min-width":`${v}px`,"min-height":`${_}px`,"max-width":`${g}px`,"max-height":`${h}px`,background:c,color:l,"font-size":`${Ll(u)}px`,"font-weight":d,"font-style":f,"text-decoration":p,"text-align":m})}updateComponentPosition(){let e=this.composerFocusStore.activeComposer.editionMode!==`inactive`;!e&&this.composerFocusStore.activeComposer!==this.composerInterface&&this.composerFocusStore.focusComposer(this.composerInterface,{focusMode:`inactive`});let t=!w(this.currentEditedCell,this.composerStore.currentEditedCell);if(this.isEditing!==e){if(this.isEditing=e,!e){this.rect=this.defaultRect;return}this.currentEditedCell=this.composerStore.currentEditedCell,t=!0}if(t){let e=this.env.model.getters.getActivePosition(),t=this.env.model.getters.expandZone(e.sheetId,E(e));this.rect=this.env.model.getters.getVisibleRect(t)}}updateCellReferenceVisibility(){if(this.composerStore.editionMode===`inactive`){this.isCellReferenceVisible=!1;return}if(this.isCellReferenceVisible)return;let e=this.env.model.getters.getActiveSheetId(),t=E(this.env.model.getters.getSelection().anchor.cell);(!w(this.env.model.getters.getVisibleRect(t),this.rect)||e!==this.composerStore.currentEditedCell.sheetId)&&(this.isCellReferenceVisible=!0)}onFocus(){this.composerFocusStore.focusComposer(this.composerInterface,{focusMode:`contentFocus`})}};function qU({x:e,y:t},{x:n,y:r},i,{maxX:a,maxY:o},{scrollX:s,scrollY:c},{scrollX:l,scrollY:u}){let d=e-n+l-s,f=x(i.x+d,0,a-i.width),p=t-r+u-c,m=x(i.y+p,0,o-i.height);return{...i,x:f,y:m}}function JU(e,t,n,{x:r,y:i},{x:a,y:o},s,c,{scrollX:l,scrollY:u},{scrollX:d,scrollY:f},{maxX:p,maxY:m}){let{x:h,y:g,width:_,height:v}=e;if(s&&t!==0&&n!==0){let e=Math.min(t*(a-r+d-l),_-c),s=Math.min(n*(o-i+f-u),v-c),p=Math.min(e/_,s/v);t<0&&(h+=_*p),n<0&&(g+=v*p),_*=1-p,v*=1-p}else{let e=Math.max(t*(r-a+d-l),c-_),s=Math.max(n*(i-o+f-u),c-v);_+=e,v+=s,t<0&&(h-=e),n<0&&(g-=s)}return h+d<=0?(_=_+h+d,h=-d):h+_>p&&(_=p-h),g+f<=0?(v=v+g+f,g=-f):g+v>m&&(v=m-g),{...e,x:h,y:g,width:_,height:v}}function YU(e,t,n){let r=$U(e,t,[`hCenter`,`right`,`left`],n,[`hCenter`,`right`,`left`]),i=$U(e,t,[`vCenter`,`bottom`,`top`],n,[`vCenter`,`bottom`,`top`]),{y:a,x:o}=e.getMainViewportCoordinates(),{scrollY:s,scrollX:c}=e.getActiveSheetScrollInfo();if(i){t.y-=i.snapOffset;let e=t.y<a,n=t.y<a;e&&!n?t.y+=s:!e&&n&&(t.y-=s)}if(r){t.x-=r.snapOffset;let e=t.x<o,n=t.x<o;e&&!n?t.x+=c:!e&&n&&(t.x-=c)}return{snappedFigure:t,verticalSnapLine:r,horizontalSnapLine:i}}function XU(e,t,n,r,i){let a=$U(e,r,[t===-1?`left`:`right`],i,[`right`,`left`]);a&&(t===1?r.width-=a.snapOffset:t===-1&&(r.x-=a.snapOffset,r.width+=a.snapOffset));let o=$U(e,r,[n===-1?`top`:`bottom`],i,[`bottom`,`top`]);return o&&(n===1?r.height-=o.snapOffset:n===-1&&(r.y-=o.snapOffset,r.height+=o.snapOffset)),r.x=Math.round(r.x),r.y=Math.round(r.y),r.height=Math.round(r.height),r.width=Math.round(r.width),{snappedFigure:r,verticalSnapLine:a,horizontalSnapLine:o}}function ZU(e,t,n){return n.map(n=>tW(e,t,!1,n)).filter(n=>QU(e,t,n))}function QU(e,t,n){let{x:r,y:i}=e.getMainViewportCoordinates(),a=[];switch(n.axisType){case`top`:case`bottom`:case`vCenter`:if(t.y<i)return!0;a.push({x:t.x,y:n.position}),a.push({x:t.x+t.width,y:n.position});break;case`left`:case`right`:case`hCenter`:if(t.x<r)return!0;a.push({x:n.position,y:t.y}),a.push({x:n.position,y:t.y+t.height});break}return a.some(e.isPixelPositionVisible)}function $U(e,t,n,r,i){let a=n.map(n=>tW(e,t,!0,n)),o;for(let t of r){let n=ZU(e,t,i);for(let e of a)for(let r of n){if(!eW(e.position,r.position))continue;let n=e.position-r.position;o&&n===o.snapOffset?o.matchedFigIds.push(t.id):(!o||Math.abs(n)<=Math.abs(o.snapOffset))&&(o={matchedFigIds:[t.id],snapOffset:n,snappedAxisType:e.axisType,position:r.position})}}return o}function eW(e,t){return Math.abs(e-t)<=5}function tW(e,t,n,r){let i=0,{scrollX:a,scrollY:o}=e.getActiveSheetScrollInfo(),{x:s,y:c}=e.getMainViewportCoordinates(),l=!n&&t.y<c?t.y+o:t.y,u=!n&&t.x<s?t.x+a:t.x;switch(r){case`top`:i=l;break;case`bottom`:i=l+t.height-1;break;case`vCenter`:i=l+Math.floor(t.height/2)-1;break;case`left`:i=u;break;case`right`:i=u+t.width-1;break;case`hCenter`:i=u+Math.floor(t.width/2)-1;break}return{position:i,axisType:r}}var nW=class extends t.Component{static template=`o-spreadsheet-FiguresContainer`;static props={};static components={FigureComponent:zv};dnd=(0,t.useState)({draggedFigure:void 0,horizontalSnap:void 0,verticalSnap:void 0,cancelDnd:void 0,overlappingCarousel:void 0});setup(){(0,t.onMounted)(()=>{this.render()}),(0,t.onWillUpdateProps)(()=>{let e=this.env.model.getters.getActiveSheetId(),t=this.dnd.draggedFigure?.id;t&&!this.env.model.getters.getFigure(e,t)&&(this.dnd.cancelDnd&&this.dnd.cancelDnd(),this.dnd.draggedFigure=void 0,this.dnd.horizontalSnap=void 0,this.dnd.verticalSnap=void 0,this.dnd.overlappingCarousel=void 0,this.dnd.cancelDnd=void 0)})}getVisibleFigures(){let e=this.env.model.getters.getVisibleFigures();return this.dnd.draggedFigure&&!e.some(e=>e.id===this.dnd.draggedFigure?.id)&&this.dnd.draggedFigure&&e.push(this.dnd.draggedFigure),e}get containers(){let e=this.getVisibleFigures(),t=[];for(let n of[`topLeft`,`topRight`,`bottomLeft`,`bottomRight`]){let r=e.filter(e=>this.getFigureContainer(e)===n);r.length>0&&t.push({type:n,figures:r,style:this.getContainerStyle(n),inverseViewportStyle:this.getInverseViewportPositionStyle(n)})}return this.dnd.draggedFigure&&t.push({type:`dnd`,figures:[this.getDndFigure()],style:this.getContainerStyle(`dnd`),inverseViewportStyle:this.getInverseViewportPositionStyle(`dnd`)}),t}getContainerStyle(e){return this.rectToCss(this.getContainerRect(e))}rectToCss(e){return U({left:`${e.x}px`,top:`${e.y}px`,width:`${e.width}px`,height:`${e.height}px`})}getContainerRect(e){let{width:t,height:n}=this.env.model.getters.getSheetViewDimension(),{x:r,y:i}=this.env.model.getters.getMainViewportCoordinates(),a=[`bottomRight`,`topRight`].includes(e)?r:0,o=t-a,s=[`bottomRight`,`bottomLeft`].includes(e)?i:0;return{x:a,y:s,width:o,height:n-s}}getInverseViewportPositionStyle(e){let{scrollX:t,scrollY:n}=this.env.model.getters.getActiveSheetScrollInfo(),{x:r,y:i}=this.env.model.getters.getMainViewportCoordinates(),a=0,o=0;return e===`dnd`&&(a=-t,o=-n),[`bottomRight`,`topRight`].includes(e)&&(a=-t-r),[`bottomRight`,`bottomLeft`].includes(e)&&(o=-n-i),U({left:`${a}px`,top:`${o}px`})}getFigureContainer(e){let{x:t,y:n}=this.env.model.getters.getMainViewportCoordinates();return e.id===this.dnd.draggedFigure?.id?`dnd`:e.x<t&&e.y<n?`topLeft`:e.x<t?`bottomLeft`:e.y<n?`topRight`:`bottomRight`}toBottomRightViewport(e){let t=this.getFigureContainer(e),n=this.env.model.getters.getActiveSheetScrollInfo(),r={...e};return[`bottomLeft`,`topLeft`].includes(t)&&(r.x+=n.scrollX),[`topLeft`,`topRight`].includes(t)&&(r.y+=n.scrollY),r}startDraggingFigure(e,t){if(t.button>0||this.env.model.getters.isReadonly()||!this.env.model.dispatch(`SELECT_FIGURE`,{figureId:e.id}).isSuccessful||this.env.isMobile()||this.env.model.getters.isCurrentSheetLocked())return;let n=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getViewportZoomLevel(),i={x:t.clientX/r,y:t.clientY/r},a=this.env.model.getters.getActiveSheetScrollInfo(),o=this.toBottomRightViewport(e),s={maxX:this.env.model.getters.getColDimensions(n,this.env.model.getters.getNumberCols(n)-1).end,maxY:this.env.model.getters.getRowDimensions(n,this.env.model.getters.getNumberRows(n)-1).end},c=!1,l=e=>{let t=this.env.model.getters,n={x:e.clientX/r,y:e.clientY/r},l=Math.abs(n.x-i.x),u=Math.abs(n.y-i.y);if(!c&&l<5&&u<5)return;c=!0;let d=qU(n,i,o,s,a,t.getActiveSheetScrollInfo()),f=this.getOtherFigures(o.id),p=this.getCarouselOverlappingChart(d,f);if(this.dnd.overlappingCarousel=p,p)this.dnd.draggedFigure=d,this.dnd.horizontalSnap=void 0,this.dnd.verticalSnap=void 0;else{let e=YU(t,d,f);this.dnd.draggedFigure=e.snappedFigure,this.dnd.horizontalSnap=this.getSnap(e.horizontalSnapLine),this.dnd.verticalSnap=this.getSnap(e.verticalSnapLine)}},u=t=>{if(!this.dnd.draggedFigure)return;let{col:r,row:i,offset:a}=this.env.model.getters.getPositionAnchorOffset(this.dnd.draggedFigure);this.dnd.overlappingCarousel?this.env.model.dispatch(`ADD_FIGURE_CHART_TO_CAROUSEL`,{sheetId:n,carouselFigureId:this.dnd.overlappingCarousel.id,chartFigureId:e.id}):this.env.model.dispatch(`UPDATE_FIGURE`,{sheetId:n,figureId:e.id,offset:a,col:r,row:i}),this.dnd.draggedFigure=void 0,this.dnd.horizontalSnap=void 0,this.dnd.verticalSnap=void 0,this.dnd.overlappingCarousel=void 0};this.dnd.cancelDnd=RN(l,u)}startResize(e,t,n,r){r.stopPropagation();let i=this.env.model.getters.getActiveSheetScrollInfo(),a=Rv.get(e.tag).keepRatio||!1,o=Rv.get(e.tag).minFigSize||80,s=this.env.model.getters.getViewportZoomLevel(),c=this.env.model.getters.getActiveSheetId(),l={x:r.clientX/s,y:r.clientY/s},u={maxX:this.env.model.getters.getColDimensions(c,this.env.model.getters.getNumberCols(c)-1).end,maxY:this.env.model.getters.getRowDimensions(c,this.env.model.getters.getNumberRows(c)-1).end},d=r=>{let c=JU(e,t,n,{x:r.clientX/s,y:r.clientY/s},l,a,o,i,this.env.model.getters.getActiveSheetScrollInfo(),u),d=this.getOtherFigures(e.id),f=XU(this.env.model.getters,t,n,c,d);this.dnd.draggedFigure=f.snappedFigure,this.dnd.horizontalSnap=this.getSnap(f.horizontalSnapLine),this.dnd.verticalSnap=this.getSnap(f.verticalSnapLine)},f=r=>{if(!this.dnd.draggedFigure)return;let i=this.env.model.getters.getPositionAnchorOffset(this.dnd.draggedFigure);t&&(i.width=this.dnd.draggedFigure.width),n&&(i.height=this.dnd.draggedFigure.height),this.env.model.dispatch(`UPDATE_FIGURE`,{sheetId:this.env.model.getters.getActiveSheetId(),figureId:e.id,...i}),this.dnd.draggedFigure=void 0,this.dnd.horizontalSnap=void 0,this.dnd.verticalSnap=void 0,this.dnd.overlappingCarousel=void 0};this.dnd.cancelDnd=RN(d,f)}getOtherFigures(e){return this.getVisibleFigures().filter(t=>t.id!==e)}getDndFigure(){let e=this.dnd.draggedFigure;if(!e)throw Error(`Dnd figure not found`);return e}getFigureStyle(e){return e.id===this.dnd.draggedFigure?.id?U({opacity:this.dnd.overlappingCarousel?.id?`0.6`:`0.9`,cursor:`grabbing`}):``}getFigureClass(e){return e.id===this.dnd.overlappingCarousel?.id?`o-add-to-carousel`:``}getSnap(e){if(!e||!this.dnd.draggedFigure)return;let{scrollX:t,scrollY:n}=this.env.model.getters.getActiveSheetScrollInfo(),r=e.matchedFigIds.map(e=>this.getVisibleFigures().find(t=>t.id===e)).filter(C).map(e=>({x:e.x-t,y:e.y-n,width:e.width,height:e.height})).filter(C),i=Cv({...this.dnd.draggedFigure,x:this.dnd.draggedFigure.x-t,y:this.dnd.draggedFigure.y-n},...r);return{line:e,containerStyle:this.rectToCss(i),lineStyle:this.getSnapLineStyle(e,i)}}getSnapLineStyle(e,t){if(!e)return``;let{scrollX:n,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();return[`top`,`vCenter`,`bottom`].includes(e.snappedAxisType)?U({top:`${e.position-t.y-r}px`,left:`0px`,width:`100%`}):U({top:`0px`,left:`${e.position-t.x-n}px`,height:`100%`})}getCarouselOverlappingChart(e,t){if(e.tag!==`chart`)return;let n=e.x+e.width/2,r=e.y+e.height/2,i,a=1/0;for(let o of t){if(o.tag!==`carousel`)continue;let t=o.x+o.width/2,s=o.y+o.height/2,c=Math.abs(n-t),l=Math.abs(r-s),u=c**2+l**2;c<=e.width/2&&l<=e.height/2&&u<a&&(a=u,i=o)}return i}},rW=class extends t.Component{static template=`o-spreadsheet-GridAddRowsFooter`;static props={};static components={ValidationMessages:EI};DOMFocusableElementStore;inputRef=(0,t.useRef)(`inputRef`);state=(0,t.useState)({inputValue:`100`,errorFlag:!1});setup(){this.DOMFocusableElementStore=D(FM),(0,t.useExternalListener)(window,`click`,this.onExternalClick,{capture:!0})}get addRowsPosition(){let e=this.env.model.getters.getActiveSheetId(),{numberOfRows:t}=this.env.model.getters.getSheetSize(e),{scrollY:n}=this.env.model.getters.getActiveSheetScrollInfo();return U({top:`${this.env.model.getters.getRowDimensions(e,t-1).end-n}px`})}get errorMessages(){return[k(`Please enter a number between 0 and 10000.`)]}onKeydown(e){e.key.toUpperCase()===`ESCAPE`?this.focusDefaultElement():e.key.toUpperCase()===`ENTER`&&this.onConfirm()}onInput(e){let t=e.target.value;this.state.inputValue=t;let n=Number(t);this.state.errorFlag=Number.isNaN(n)||n<=0||n>1e4}onConfirm(){if(this.state.errorFlag)return;let e=Number(this.state.inputValue),t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getNumberRows(t);this.env.model.dispatch(`ADD_COLUMNS_ROWS`,{sheetId:t,sheetName:this.env.model.getters.getSheetName(t),position:`after`,base:n-1,quantity:e,dimension:`ROW`}),this.focusDefaultElement();let{scrollX:r}=this.env.model.getters.getActiveSheetScrollInfo(),{end:i}=this.env.model.getters.getRowDimensions(t,n+e-1);this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:r,offsetY:i})}onExternalClick(e){this.inputRef.el!==document.activeElement||e.target===this.inputRef.el||this.focusDefaultElement()}focusDefaultElement(){document.activeElement===this.inputRef.el&&this.DOMFocusableElementStore.focus()}};let iW={figureHandlers:new B,cellHandlers:new B},aW=[`cell`,`border`,`table`,`conditionalFormat`,`merge`];var oW=class extends yr{mutators=[`activate`,`cancel`,`pasteFormat`];highlightStore=this.get(EN);status=`inactive`;copiedData;constructor(e){super(e),this.highlightStore.register(this),this.onDispose(()=>{this.highlightStore.unRegister(this)})}handle(e){switch(e.type){case`PAINT_FORMAT`:this.paintFormat(e.sheetId,e.target);break}}activate(e){this.copiedData=this.copyFormats(),this.status=e.persistent?`persistent`:`oneOff`}cancel(){this.status=`inactive`,this.copiedData=void 0}pasteFormat(e){this.model.dispatch(`PAINT_FORMAT`,{target:e,sheetId:this.getters.getActiveSheetId()})}get isActive(){return this.status!==`inactive`}get clipboardHandlers(){return aW.map(e=>({handlerName:e,handler:new(iW.cellHandlers.get(e))(this.getters,this.model.dispatch)}))}copyFormats(){let e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZones(),n={zones:t,sheetId:e};for(let{handlerName:r,handler:i}of this.clipboardHandlers){let a=i.copy(SP(e,t),!1);a!==void 0&&(n[r]=a)}return n}paintFormat(e,t){if(!this.copiedData)return;let n={isCutOperation:!1,pasteOption:`onlyFormat`},{target:r,selectedZones:i}=OP(e,t,this.copiedData,this.clipboardHandlers,n);DP(this.clipboardHandlers,this.copiedData,r,n),kP(this.model.selection,t,i),this.status===`oneOff`&&this.cancel()}get highlights(){let e=this.copiedData;return e?e.zones.map(t=>({range:this.model.getters.getRangeFromZone(e.sheetId,t),color:ae,dashed:!0,sheetId:e.sheetId,noFill:!0,thinLine:!0,interactive:!1})):[]}},sW=class extends yr{mutators=[`clear`,`hover`];col;row;overlayColors=new SV;handle(e){switch(e.type){case`ACTIVATE_SHEET`:this.clear()}}hover(e){if(!this.getters.isDashboard()||e.col===this.col&&e.row===this.row)return`noStateChange`;this.col=e.col,this.row=e.row,this.computeOverlay()}clear(){this.col=void 0,this.row=void 0}computeOverlay(){this.overlayColors=new SV;let{col:e,row:t}=this;if(e===void 0||t===void 0)return;let n=this.getters.getActiveSheetId(),r=this.getters.getTable({sheetId:n,col:e,row:t});if(!r)return;let{left:i,right:a,top:o}=r.range.zone,s=t<o+r.config.numberOfHeaders,c=S(i,a+1).some(e=>!this.getters.isColHidden(n,e)&&this.getters.getEvaluatedCell({sheetId:n,col:e,row:t}).formattedValue);if(!s&&c)for(let e=i;e<=a;e++)this.overlayColors.set({sheetId:n,col:e,row:t},`#017E8414`)}},cW=class extends yr{mutators=[`setHoveredIcon`];hoveredIcon=void 0;setHoveredIcon(e){this.hoveredIcon=e}};function lW(e,n){let r=D(Bv),i=D(sW),a={col:void 0,row:void 0},{Date:o}=window,s,c,l=0;function u(){return s===void 0||c===void 0?{col:-1,row:-1}:{col:e.model.getters.getColIndex(s),row:e.model.getters.getRowIndex(c)}}function d(e){let t=op(n.el);return{x:e.clientX-t.x,y:e.clientY-t.y}}let{pause:f,resume:p}=yv(m,200);function m(){let{col:e,row:t}=u(),n=o.now()-l;if(n>300&&(e!==a.col||t!==a.row)&&y(void 0,void 0),n>300){if(e<0||t<0)return;y(e,t)}}function h(e){np(n.el,e.ev)&&({x:s,y:c}=d(e),l=o.now(),i.hover(u()))}function g(){let{col:e,row:t}=u();(e!==a.col||t!==a.row)&&y(void 0,void 0)}function _(t){let r=wp(e,t),{x:i,y:a}=d(r),o=op(n.el);return a<0||a>o.height||i<0||i>o.width?h(r):f()}AL(n,`pointermove`,t=>!e.isMobile()&&h(wp(e,t))),AL(n,`mouseleave`,_),AL(n,`mouseenter`,p),AL(n,`pointerdown`,g),AL(n,`pointerdown`,t=>e.isMobile()&&h(wp(e,t))),(0,t.useExternalListener)(window,`click`,v);function v(e){let t=e.target;n.el.contains(t)||y(void 0,void 0)}function y(e,t){(e!==a.col||t!==a.row)&&(a.col=e,a.row=t,r.hover({col:e,row:t}))}return a}var uW=class extends t.Component{static template=`o-spreadsheet-GridOverlay`;static props={onCellDoubleClicked:{type:Function,optional:!0},onCellClicked:{type:Function,optional:!0},onCellRightClicked:{type:Function,optional:!0},onGridResized:{type:Function,optional:!0},onGridMoved:Function,gridOverlayDimensions:String,slots:{type:Object,optional:!0}};static components={FiguresContainer:nW,GridAddRowsFooter:rW};static defaultProps={onCellDoubleClicked:()=>{},onCellClicked:()=>{},onCellRightClicked:()=>{},onGridResized:()=>{}};gridOverlay=(0,t.useRef)(`gridOverlay`);cellPopovers;paintFormatStore;hoveredIconStore;setup(){lW(this.env,this.gridOverlay);let e=new ResizeObserver(()=>{this.props.onGridResized()});(0,t.onMounted)(()=>{e.observe(this.gridOverlayEl)}),(0,t.onWillUnmount)(()=>{e.disconnect()}),this.cellPopovers=D(aP),this.paintFormatStore=D(oW),this.hoveredIconStore=D(cW)}get gridOverlayEl(){if(!this.gridOverlay.el)throw Error(`GridOverlay el is not defined.`);return this.gridOverlay.el}get style(){return this.props.gridOverlayDimensions+U({cursor:this.hoveredIconStore.hoveredIcon?`pointer`:`default`})}get isPaintingFormat(){return this.paintFormatStore.isActive}onPointerMove(e){if(this.env.isMobile())return;let t=this.getInteractiveIconAtEvent(wp(this.env,e)),n=t?.type?{id:t.type,position:t.position}:void 0;w(n,this.hoveredIconStore.hoveredIcon)||this.hoveredIconStore.setHoveredIcon(n)}onPointerDown(e){e.button>0||this.env.isMobile()||this.onCellClicked(wp(this.env,e))}onClick(e){e.button>0||!this.env.isMobile()||this.onCellClicked(wp(this.env,e))}onCellClicked(e){let t=this.cellPopovers.persistentCellPopover,[n,r]=this.getCartesianCoordinates(e),i=this.getInteractiveIconAtEvent(e);if(i&&this.env.model.selection.getBackToDefault(),this.props.onCellClicked(n,r,{expandZone:e.ev.shiftKey,addZone:hp(e.ev)},e),i?.onClick&&i.onClick(i.position,this.env),e.ev.target===this.gridOverlay.el&&this.cellPopovers.isOpen&&w(t,this.cellPopovers.persistentCellPopover)){this.cellPopovers.close();return}}onDoubleClick(e){let t=wp(this.env,e);if(this.getInteractiveIconAtEvent(t))return;let[n,r]=this.getCartesianCoordinates(t);this.props.onCellDoubleClicked(n,r)}onContextMenu(e){let[t,n]=this.getCartesianCoordinates(wp(this.env,e));this.props.onCellRightClicked(t,n,{x:e.clientX,y:e.clientY})}getCartesianCoordinates(e){return[this.env.model.getters.getColIndex(e.offsetX),this.env.model.getters.getRowIndex(e.offsetY)]}getInteractiveIconAtEvent(e){let t=ap(this.gridOverlay),n=this.env.model.getters.getGridOffset(),r=e.clientX-t.x+n.x,i=e.clientY-t.y+n.y,[a,o]=this.getCartesianCoordinates(e),s=this.env.model.getters.getActiveSheetId(),c={col:a,row:o,sheetId:s},l=this.env.model.getters.getMerge(c);l&&(c={col:l.left,row:l.top,sheetId:s});let u=this.env.model.getters.getCellIcons(c).find(e=>{let t=this.env.model.getters.getMerge(c)||E(c),n=this.env.model.getters.getRect(t);return Ev(r,i,this.env.model.getters.getCellIconRect(e,n))});return u?.onClick?u:void 0}},dW=class extends t.Component{static template=`o-spreadsheet-GridPopover`;static props={onClosePopover:Function,onMouseWheel:Function,gridRect:Object};static components={Popover:kv};cellPopovers;setup(){this.cellPopovers=D(aP)}get cellPopover(){let e=this.cellPopovers.cellPopover;if(!e.isOpen)return{isOpen:!1};let t=Ep(this.env.model.getters.getViewportZoomLevel(),e.anchorRect);return{...e,anchorRect:{...t,x:t.x+this.props.gridRect.x,y:t.y+this.props.gridRect.y}}}},fW=class extends t.Component{static template=`o-spreadsheet-UnhideRowHeaders`;static props={headersGroups:Array,headerRange:Object,offset:{type:Number,optional:!0}};static defaultProps={offset:0};get sheetId(){return this.env.model.getters.getActiveSheetId()}getUnhidePreviousButtonStyle(e){let t=this.env.model.getters.getRect(E({col:0,row:e}));return U({top:t.y+t.height-26-this.props.offset+`px`,"margin-right":`1px`})}getUnhideNextButtonStyle(e){return U({top:this.env.model.getters.getRect(E({col:0,row:e})).y-26-this.props.offset+`px`,"margin-right":`1px`})}unhide(e){this.env.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:this.sheetId,dimension:`ROW`,elements:e})}isVisible(e){return e>=this.props.headerRange.start&&e<=this.props.headerRange.end}},pW=class extends t.Component{static template=`o-spreadsheet-UnhideColumnHeaders`;static props={headersGroups:Array,headerRange:Object,offset:{type:Number,optional:!0}};static defaultProps={offset:0};get sheetId(){return this.env.model.getters.getActiveSheetId()}getUnhidePreviousButtonStyle(e){let t=this.env.model.getters.getRect(E({col:e,row:0}));return U({left:t.x+t.width-48-this.props.offset+`px`})}getUnhideNextButtonStyle(e){return U({left:this.env.model.getters.getRect(E({col:e,row:0})).x-48-this.props.offset+`px`})}unhide(e){this.env.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:this.sheetId,dimension:`COL`,elements:e})}isVisible(e){return e>=this.props.headerRange.start&&e<=this.props.headerRange.end}},mW=class extends t.Component{static props={onOpenContextMenu:Function};composerFocusStore;PADDING=0;MAX_SIZE_MARGIN=0;MIN_ELEMENT_SIZE=0;lastSelectedElementIndex=null;state=(0,t.useState)({resizerIsActive:!1,isResizing:!1,isMoving:!1,isSelecting:!1,waitingForMove:!1,activeElement:0,draggerLinePosition:0,draggerShadowPosition:0,draggerShadowThickness:0,delta:0,base:0,position:`before`});dragNDropGrid=_U(this.env);setup(){this.composerFocusStore=D(xr)}_computeHandleDisplay(e){let t=this._getEvOffset(e),n=this._getElementIndex(t);if(n<0)return;let r=this._getDimensionsInViewport(n);t-r.start<this.PADDING&&n!==this._getViewportOffset()?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=r.start,this.state.activeElement=this._getPreviousVisibleElement(n)):r.end-t<this.PADDING?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=r.end,this.state.activeElement=n):this.state.resizerIsActive=!1}_computeGrabDisplay(e){if(hp(e.ev)){this.state.waitingForMove=!1;return}let t=this._getElementIndex(this._getEvOffset(e)),n=this._getActiveElements(),r=this._getSelectedZoneStart(),i=this._getSelectedZoneEnd();if(n.has(r)&&r<=t&&t<=i){this.state.waitingForMove=!0;return}this.state.waitingForMove=!1}onMouseMove(e){if(this.env.isMobile()||this.env.model.getters.isReadonly()||this.state.isResizing||this.state.isMoving||this.state.isSelecting)return;let t=wp(this.env,e);this._computeHandleDisplay(t),this._computeGrabDisplay(t)}onMouseLeave(){this.state.resizerIsActive=this.state.isResizing,this.state.waitingForMove=!1}onDblClick(e){let t=wp(this.env,e);this._fitElementSize(this.state.activeElement),this.state.isResizing=!1,this._computeHandleDisplay(t),this._computeGrabDisplay(t)}onMouseDown(e){this.state.isResizing=!0,this.state.delta=0;let t=wp(this.env,e),n=this._getClientPosition(t),r=this.state.draggerLinePosition,i=this._getElementSize(this.state.activeElement),a=r-i+this.MIN_ELEMENT_SIZE,o=this._getMaxSize();RN(e=>{this.state.delta=this._getClientPosition(wp(this.env,e))-n,this.state.draggerLinePosition=r+this.state.delta,this.state.draggerLinePosition<a&&(this.state.draggerLinePosition=a,this.state.delta=this.MIN_ELEMENT_SIZE-i),this.state.draggerLinePosition>o&&(this.state.draggerLinePosition=o,this.state.delta=o-r)},e=>{this.state.isResizing=!1,this.state.delta!==0&&this._updateSize()})}onClick(e){if(!this.env.isMobile()||e.button>0)return;let t=wp(this.env,e),n=this._getElementIndex(this._getEvOffset(t));this._selectElement(n,!1)}select(e){if(this.env.isMobile()||e.button>0)return;let t=wp(this.env,e),n=this._getElementIndex(this._getEvOffset(t));if(!(n<0)){if(this.env.model.getters.isReadonly()){this._selectElement(n,!1);return}if(!hp(e)&&this.state.waitingForMove){this.env.model.getters.isGridSelectionActive()?this.startMovement(e):this._selectElement(n,!1);return}this.composerFocusStore.activeComposer.editionMode===`editing`&&this.env.model.selection.getBackToDefault(),this.startSelection(e,n)}}startMovement(e){this.state.waitingForMove=!1,this.state.isMoving=!0;let t=wp(this.env,e),n=this._getDimensionsInViewport(this._getSelectedZoneStart()),r=this._getDimensionsInViewport(this._getSelectedZoneEnd()),i=n.start;this.state.draggerLinePosition=i,this.state.base=this._getSelectedZoneStart(),this.state.draggerShadowPosition=i,this.state.draggerShadowThickness=r.end-n.start,this.dragNDropGrid.start(t,(e,t)=>{let r=this._getType()===`COL`?e:t;if(r>=0){let e=this._getDimensionsInViewport(r);r<=this._getSelectedZoneStart()?(this.state.draggerLinePosition=e.start,this.state.draggerShadowPosition=e.start,this.state.base=r,this.state.position=`before`):this._getSelectedZoneEnd()<r?(this.state.draggerLinePosition=e.end,this.state.draggerShadowPosition=e.end-this.state.draggerShadowThickness,this.state.base=r,this.state.position=`after`):(this.state.draggerLinePosition=n.start,this.state.draggerShadowPosition=n.start,this.state.base=this._getSelectedZoneStart())}},()=>{this.state.isMoving=!1,this.state.base!==this._getSelectedZoneStart()&&this._moveElements();let t=wp(this.env,e);this._computeGrabDisplay(t)})}startSelection(e,t){if(this.env.isMobile())return;this.state.isSelecting=!0,e.shiftKey?this._increaseSelection(t):this._selectElement(t,hp(e)),this.lastSelectedElementIndex=t;let n=wp(this.env,e);this.dragNDropGrid.start(n,(e,t)=>{let n=this._getType()===`COL`?e:t;n!==this.lastSelectedElementIndex&&n!==-1&&(this._increaseSelection(n),this.lastSelectedElementIndex=n)},()=>{this.env.model.selection.commitSelection(),this.state.isSelecting=!1,this.lastSelectedElementIndex=null,this._computeGrabDisplay(n)})}onContextMenu(e){e.preventDefault();let t=this._getElementIndex(this._getEvOffset(wp(this.env,e)));if(t<0)return;this._getActiveElements().has(t)||this._selectElement(t,!1);let n=this._getType();this.props.onOpenContextMenu(n,e.clientX,e.clientY)}},hW=class extends mW{static props={onOpenContextMenu:Function};static template=`o-spreadsheet-ColResizer`;static components={UnhideColumnHeaders:pW};colResizerRef;setup(){super.setup(),this.colResizerRef=(0,t.useRef)(`colResizer`),this.PADDING=15,this.MAX_SIZE_MARGIN=90,this.MIN_ELEMENT_SIZE=5}get sheetId(){return this.env.model.getters.getActiveSheetId()}_getEvOffset(e){return e.offsetX}_getViewportOffset(){return this.env.model.getters.getActiveMainViewport().left}_getClientPosition(e){return e.clientX}_getElementIndex(e){return this.env.model.getters.getColIndex(e)}_getSelectedZoneStart(){return this.env.model.getters.getSelectedZone().left}_getSelectedZoneEnd(){return this.env.model.getters.getSelectedZone().right}_getEdgeScroll(e){return this.env.model.getters.getEdgeScrollCol(e,e,e)}_getDimensionsInViewport(e){return this.env.model.getters.getColDimensionsInViewport(this.sheetId,e)}_getElementSize(e){return this.env.model.getters.getColSize(this.sheetId,e)}_getMaxSize(){return this.colResizerRef.el.clientWidth}_updateSize(){let e=this.state.activeElement,t=this.state.delta+this._getElementSize(e),n=this.env.model.getters.getActiveCols();this.env.model.dispatch(`RESIZE_COLUMNS_ROWS`,{dimension:`COL`,sheetId:this.sheetId,elements:n.has(e)?[...n]:[e],size:t})}_moveElements(){let e=[],t=this._getSelectedZoneStart(),n=this._getSelectedZoneEnd();for(let r=t;r<=n;r++)e.push(r);let r=this.env.model.dispatch(`MOVE_COLUMNS_ROWS`,{sheetId:this.sheetId,sheetName:this.env.model.getters.getActiveSheetName(),dimension:`COL`,base:this.state.base,elements:e,position:this.state.position});!r.isSuccessful&&r.reasons.includes(`WillRemoveExistingMerge`)&&this.env.raiseError(rm)}_selectElement(e,t){this.env.model.selection.selectColumn(e,t?`newAnchor`:`overrideSelection`)}_increaseSelection(e){this.env.model.selection.selectColumn(e,`updateAnchor`)}_fitElementSize(e){let t=this.env.model.getters.getActiveCols();this.env.model.dispatch(`AUTORESIZE_COLUMNS`,{sheetId:this.sheetId,cols:t.has(e)?[...t]:[e]})}_getType(){return`COL`}_getActiveElements(){return this.env.model.getters.getActiveCols()}_getPreviousVisibleElement(e){let t=this.sheetId,n;for(n=e-1;n>=0&&this.env.model.getters.isColHidden(t,n);n--);return n}unhide(e){this.env.model.dispatch(`UNHIDE_COLUMNS_ROWS`,{sheetId:this.sheetId,elements:e,dimension:`COL`})}get mainUnhideHeadersProps(){let{left:e,right:t}=this.env.model.getters.getActiveMainViewport(),{xSplit:n}=this.env.model.getters.getPaneDivisions(this.sheetId),r=this.env.model.getters.getHiddenColsGroups(this.sheetId),i=r.findIndex(e=>e[0]>=n-1);return{headersGroups:i===-1?[]:r.slice(i),offset:this.env.model.getters.getMainViewportCoordinates().x,headerRange:{start:e,end:t}}}get frozenUnhideHeadersProps(){let{xSplit:e}=this.env.model.getters.getPaneDivisions(this.sheetId),t=this.env.model.getters.getHiddenColsGroups(this.sheetId),n=t.findIndex(t=>t[0]>=e-1);return{headersGroups:n===-1?t:t.slice(0,n+1),headerRange:{start:0,end:e-1}}}get frozenContainerStyle(){return U({width:this.env.model.getters.getMainViewportCoordinates().x+`px`})}get hasFrozenPane(){return this.env.model.getters.getPaneDivisions(this.sheetId).xSplit>0}},gW=class extends mW{static props={onOpenContextMenu:Function};static template=`o-spreadsheet-RowResizer`;static components={UnhideRowHeaders:fW};setup(){super.setup(),this.rowResizerRef=(0,t.useRef)(`rowResizer`),this.PADDING=5,this.MAX_SIZE_MARGIN=60,this.MIN_ELEMENT_SIZE=10}rowResizerRef;get sheetId(){return this.env.model.getters.getActiveSheetId()}_getEvOffset(e){return e.offsetY}_getViewportOffset(){return this.env.model.getters.getActiveMainViewport().top}_getClientPosition(e){return e.clientY}_getElementIndex(e){return this.env.model.getters.getRowIndex(e)}_getSelectedZoneStart(){return this.env.model.getters.getSelectedZone().top}_getSelectedZoneEnd(){return this.env.model.getters.getSelectedZone().bottom}_getEdgeScroll(e){return this.env.model.getters.getEdgeScrollRow(e,e,e)}_getDimensionsInViewport(e){return this.env.model.getters.getRowDimensionsInViewport(this.sheetId,e)}_getElementSize(e){return this.env.model.getters.getRowSize(this.sheetId,e)}_getMaxSize(){return this.rowResizerRef.el.clientHeight}_updateSize(){let e=this.state.activeElement,t=this.state.delta+this._getElementSize(e),n=this.env.model.getters.getActiveRows();this.env.model.dispatch(`RESIZE_COLUMNS_ROWS`,{dimension:`ROW`,sheetId:this.sheetId,elements:n.has(e)?[...n]:[e],size:t})}_moveElements(){let e=[],t=this._getSelectedZoneStart(),n=this._getSelectedZoneEnd();for(let r=t;r<=n;r++)e.push(r);let r=this.env.model.dispatch(`MOVE_COLUMNS_ROWS`,{sheetId:this.sheetId,sheetName:this.env.model.getters.getActiveSheetName(),dimension:`ROW`,base:this.state.base,elements:e,position:this.state.position});r.isSuccessful||(r.reasons.includes(`WillRemoveExistingMerge`)?this.env.raiseError(rm):r.reasons.includes(`CannotMoveTableHeader`)&&this.env.raiseError(im))}_selectElement(e,t){this.env.model.selection.selectRow(e,t?`newAnchor`:`overrideSelection`)}_increaseSelection(e){this.env.model.selection.selectRow(e,`updateAnchor`)}_fitElementSize(e){let t=this.env.model.getters.getActiveRows();this.env.model.dispatch(`AUTORESIZE_ROWS`,{sheetId:this.sheetId,rows:t.has(e)?[...t]:[e]})}_getType(){return`ROW`}_getActiveElements(){return this.env.model.getters.getActiveRows()}_getPreviousVisibleElement(e){let t=this.sheetId,n;for(n=e-1;n>=0&&this.env.model.getters.isRowHidden(t,n);n--);return n}get mainUnhideHeadersProps(){let{top:e,bottom:t}=this.env.model.getters.getActiveMainViewport(),{ySplit:n}=this.env.model.getters.getPaneDivisions(this.sheetId),r=this.env.model.getters.getHiddenRowsGroups(this.sheetId),i=r.findIndex(e=>e[0]>=n-1);return{headersGroups:i===-1?[]:r.slice(i),offset:this.env.model.getters.getMainViewportCoordinates().y,headerRange:{start:e,end:t}}}get frozenUnhideHeadersProps(){let{ySplit:e}=this.env.model.getters.getPaneDivisions(this.sheetId),t=this.env.model.getters.getHiddenRowsGroups(this.sheetId),n=t.findIndex(t=>t[0]>=e-1);return{headersGroups:n===-1?t:t.slice(0,n+1),headerRange:{start:0,end:e-1}}}get frozenContainerStyle(){return U({height:this.env.model.getters.getMainViewportCoordinates().y+`px`})}get hasFrozenPane(){return this.env.model.getters.getPaneDivisions(this.sheetId).ySplit>0}},_W=class extends t.Component{static props={onOpenContextMenu:Function};static template=`o-spreadsheet-HeadersOverlay`;static components={ColResizer:hW,RowResizer:gW};selectAll(){this.env.model.selection.selectAll()}},vW=class extends yr{fingerprints;hoveredTables;hoveredIcon;lastRenderBoxes=new Map;preventNewAnimationsInNextFrame=!1;zonesWithPreventedAnimationsInNextFrame=[];animations=new Map;constructor(e){super(e),this.getters=e(mr).getters,this.fingerprints=e(CV),this.hoveredTables=e(sW),this.hoveredIcon=e(cW)}handle(e){switch(e.type){case`START`:case`ACTIVATE_SHEET`:case`ADD_COLUMNS_ROWS`:case`REMOVE_COLUMNS_ROWS`:this.animations.clear(),this.preventNewAnimationsInNextFrame=!0;break;case`RESIZE_COLUMNS_ROWS`:this.preventNewAnimationsInNextFrame=!0;break;case`REDO`:this.zonesWithPreventedAnimationsInNextFrame=[];break;case`UNDO`:for(let t of e.commands)if(t.type===`ADD_COLUMNS_ROWS`||t.type===`REMOVE_COLUMNS_ROWS`||t.type===`RESIZE_COLUMNS_ROWS`){this.animations.clear(),this.preventNewAnimationsInNextFrame=!0;break}break;case`PASTE`:this.zonesWithPreventedAnimationsInNextFrame.push(...this.getters.getSelectedZones());break;case`UPDATE_CELL`:let t=this.getters.getCommandZones(e);this.zonesWithPreventedAnimationsInNextFrame.push(...t);break}}finalize(){this.zonesWithPreventedAnimationsInNextFrame=nn(this.zonesWithPreventedAnimationsInNextFrame)}get renderingLayers(){return[`Background`,`Headers`]}drawLayer(e,t,n){switch(t){case`Background`:this.drawGlobalBackground(e);let t=this.lastRenderBoxes;this.lastRenderBoxes=new Map;for(let{zone:r,rect:i}of this.getters.getAllActiveViewportsZonesAndRect()){let{ctx:a}=e;a.save(),a.beginPath(),a.rect(i.x,i.y,i.width,i.height),a.clip();let o=this.getGridBoxes(r),s=this.getBoxesWithAnimations(o,t,n);this.drawBackground(e,s),this.drawOverflowingCellBackground(e,s),this.drawCellBackground(e,s),this.drawBorders(e,s),this.drawTexts(e,s),this.drawIcon(e,s),a.restore()}this.drawFrozenPanes(e),this.preventNewAnimationsInNextFrame=!1,this.zonesWithPreventedAnimationsInNextFrame=[];break;case`Headers`:this.getters.isDashboard()||(this.drawHeaders(e),this.drawFrozenPanesHeaders(e));break}}drawGlobalBackground(e){let{ctx:t}=e,{width:n,height:r}=this.getters.getSheetViewDimensionWithHeaders();t.fillStyle=`#ffffff`,t.fillRect(0,0,n+y,r+y)}drawBackground(e,t){let{ctx:n,thinLineWidth:r}=e,i=!this.getters.isDashboard()&&this.getters.getGridLinesVisibility(this.getters.getActiveSheetId()),a=i?.1*r:0;if(i)for(let e of t)e.style.hideGridLines||(n.strokeStyle=`#E2E3E3`,n.lineWidth=r,n.strokeRect(e.x+a,e.y+a,e.width-2*a,e.height-2*a))}drawCellBackground(e,t){let{ctx:n}=e;for(let e of t){let t=e.style;if(t.fillColor&&t.fillColor!==`#ffffff`&&(n.fillStyle=t.fillColor||`#ffffff`,n.fillRect(e.x-y,e.y-y,e.width+y*2,e.height+y*2)),e.dataBarFill){n.fillStyle=e.dataBarFill.color;let t=e.dataBarFill.percentage,r=e.width*(t/100);n.fillRect(e.x,e.y,r,e.height)}if(e.overlayColor&&(n.fillStyle=Vr(t.fillColor||`#ffffff`,e.overlayColor),n.fillRect(e.x-y,e.y-y,e.width+y*2,e.height+y*2)),e?.chip){n.save(),n.beginPath(),n.rect(e.x,e.y,e.width,e.height),n.clip();let t=e.chip;n.fillStyle=e.overlayColor?Vr(t.color,e.overlayColor):t.color,n.beginPath(),n.roundRect(t.x,t.y,t.width,t.height,10),n.fill(),n.restore()}e.isError&&(n.fillStyle=`red`,n.beginPath(),n.moveTo(e.x+e.width-5,e.y),n.lineTo(e.x+e.width,e.y),n.lineTo(e.x+e.width,e.y+5),n.fill())}}drawOverflowingCellBackground(e,t){let{ctx:n,thinLineWidth:r}=e;for(let e of t)if(e.content&&e.isOverflow){let t=e.content.align||`left`,i,a,o=e.y+r/2,s=e.height-r,c=Math.min(e.clipRect?.width||1/0,e.content.width);t===`left`?(i=e.x+r/2,a=c-2*r):t===`right`?(i=e.x+e.width-r/2,a=-c+2*r):(i=(e.clipRect?.x||e.x+e.width/2-e.content.width/2)+r/2,a=c-2*r),n.fillStyle=`#ffffff`,n.fillRect(i,o,a,s)}}drawBorders(e,t){let{ctx:n}=e;for(let e of t){let t=e.border;if(t){let{x:n,y:i,width:a,height:o}=e;t.left&&r(t.left,n,i,n,i+o),t.top&&r(t.top,n,i,n+a,i),t.right&&r(t.right,n+a,i,n+a,i+o),t.bottom&&r(t.bottom,n,i+o,n+a,i+o)}}function r({color:e,style:t,opacity:r},i,a,o,s){switch(n.globalAlpha=r??1,n.strokeStyle=e,t){case`medium`:n.lineWidth=2,i+=a===s?-.5:.5,o+=a===s?1.5:.5,a+=i===o?-.5:.5,s+=i===o?1.5:.5;break;case`thick`:n.lineWidth=3,a===s&&(i--,o++),i===o&&(a--,s++);break;case`dashed`:n.lineWidth=1,n.setLineDash([1,3]);break;case`dotted`:n.lineWidth=1,a===s&&(i+=.5,o+=.5),i===o&&(a+=.5,s+=.5),n.setLineDash([1,1]);break;default:n.lineWidth=1;break}n.beginPath(),n.moveTo(i,a),n.lineTo(o,s),n.stroke(),n.lineWidth=1,n.setLineDash([]),n.globalAlpha=1}}drawTexts(e,t){let{ctx:n}=e;n.textBaseline=`top`;let r;for(let e of t)if(e.content){n.globalAlpha=e.textOpacity??1;let t=e.content.align||`left`,i=e.chip?0:e.style.rotation,a={...e.style,align:t,rotation:i},o=Rl(a);if(o!==r&&(r=o,n.font=o),n.fillStyle=a.textColor||`#000`,n.textAlign=t,e.clipRect){n.save(),n.beginPath();let{x:t,y:r,width:i,height:a}=e.clipRect;n.rect(t,r,i,a),n.clip()}let s=e.content.x,c=e.content.y;a.rotation&&(n.save(),n.rotate(a.rotation),{x:s,y:c}=Yl(e.content,a));for(let t of e.content.textLines)ql(n,t,{x:s,y:c},a.underline,a.strikethrough),c+=4+e.content.fontSizePx;a.rotation&&n.restore(),e.clipRect&&n.restore(),n.globalAlpha=1}}drawIcon(e,t){let{ctx:n}=e;for(let e of t)for(let t of Object.values(e.icons)){if(!t)continue;let r=w({id:t.type,position:t.position},this.hoveredIcon.hoveredIcon)&&t.hoverSvg||t.svg;if(!r)continue;n.save(),n.globalAlpha=t.opacity??1,n.beginPath();let i=t.clipRect||e;n.rect(i.x,i.y,i.width,i.height),n.clip();let a=t.size,{x:o,y:s}=this.getters.getCellIconRect(t,e);n.translate(o,s),n.scale(a/r.width,a/r.height);for(let e of r.paths)n.fillStyle=e.fillColor,n.fill(IO(e.path));n.restore()}}drawHeaders(e){let{ctx:t,thinLineWidth:n}=e,r=this.getters.getSheetViewVisibleCols(),i=r[0],a=this.getters.getSheetViewVisibleRows(),o=a[0],{width:s,height:c}=this.getters.getSheetViewDimensionWithHeaders(),l=this.getters.getSelectedZones(),u=Xn(l),d=Qn(l),f=this.getters.getActiveSheetId(),p=this.getters.getNumberCols(f),m=this.getters.getNumberRows(f),h=this.getters.getActiveCols(),g=this.getters.getActiveRows();t.font=`400 11px ${Te}`,t.textAlign=`center`,t.textBaseline=`middle`,t.lineWidth=n,t.strokeStyle=`#333`;for(let e of r){let n={left:e,right:e,top:0,bottom:m-1},{x:r,width:i}=this.getters.getVisibleRect(n),a=h.has(e),o=u.has(e);a?t.fillStyle=re:o?t.fillStyle=ne:t.fillStyle=te,t.fillRect(r,0,i,26)}for(let e of a){let n={top:e,bottom:e,left:0,right:p-1},{y:r,height:i}=this.getters.getVisibleRect(n),a=g.has(e),o=d.has(e);a?t.fillStyle=re:o?t.fillStyle=ne:t.fillStyle=te,t.fillRect(0,r,48,i)}t.beginPath(),t.moveTo(48,0),t.lineTo(48,c),t.moveTo(0,26),t.lineTo(s,26),t.strokeStyle=`#C0C0C0`,t.stroke();for(let e of r){let n=Kt(e);t.fillStyle=h.has(e)?`#fff`:ie;let r={left:e,right:e,top:o,bottom:o},{x:i,width:a}=this.getters.getRect(r),{x:s,width:c}=this.getters.getVisibleRect(r);t.save(),t.beginPath(),t.rect(s,0,c,26),t.clip(),t.fillText(n,i+a/2,26/2),t.restore(),t.beginPath(),t.moveTo(i+a,0),t.lineTo(i+a,26),t.stroke()}for(let e of a){t.fillStyle=g.has(e)?`#fff`:ie;let n={top:e,bottom:e,left:i,right:i},{y:r,height:a}=this.getters.getRect(n),{y:o,height:s}=this.getters.getVisibleRect(n);t.save(),t.beginPath(),t.rect(0,o,48,s),t.clip(),t.fillText(String(e+1),48/2,r+a/2),t.restore(),t.beginPath(),t.moveTo(0,r+a),t.lineTo(48,r+a),t.stroke()}}drawFrozenPanesHeaders(e){let{ctx:t,thinLineWidth:n}=e,{x:r,y:i}=this.getters.getMainViewportCoordinates(),a=this.getters.isDashboard()?0:48,o=this.getters.isDashboard()?0:26;t.lineWidth=6*n,t.strokeStyle=`#BCBCBC`,t.beginPath(),r&&(t.moveTo(a+r,0),t.lineTo(a+r,o)),i&&(t.moveTo(0,o+i),t.lineTo(a,o+i)),t.stroke()}drawFrozenPanes(e){let{ctx:t,thinLineWidth:n}=e,{x:r,y:i}=this.getters.getMainViewportCoordinates(),a=this.getters.getSheetViewVisibleCols(),o=a[0],s=a[a.length-1],c=this.getters.getSheetViewVisibleRows(),l={left:o,right:s,top:c[0],bottom:c[c.length-1]},u=this.getters.getVisibleRect(l),d=this.getters.isDashboard()?0:48,f=this.getters.isDashboard()?0:26;t.lineWidth=6*n,t.strokeStyle=`#DADFE8`,t.beginPath(),r&&(t.moveTo(d+r,f),t.lineTo(d+r,u.height+f)),i&&(t.moveTo(d,f+i),t.lineTo(u.width+d,f+i)),t.stroke()}findNextEmptyCol(e,t,n){let r=this.getters.getActiveSheetId(),i=e;for(;i<t;){let e={sheetId:r,col:i+1,row:n},t=this.getters.getEvaluatedCell(e),a=this.getters.getCellComputedBorder(e),o=this.getters.doesCellHaveGridIcon(e);if(t.type!==`empty`||this.getters.isInMerge(e)||a?.left||o)return i;i++}return i}findPreviousEmptyCol(e,t,n){let r=this.getters.getActiveSheetId(),i=e;for(;i>t;){let e={sheetId:r,col:i-1,row:n},t=this.getters.getEvaluatedCell(e),a=this.getters.getCellComputedBorder(e),o=this.getters.doesCellHaveGridIcon(e);if(t.type!==`empty`||this.getters.isInMerge(e)||a?.right||o)return i;i--}return i}computeCellAlignment(e,t){if(this.getters.getCell(e)?.isFormula&&this.getters.shouldShowFormulas())return`left`;let{align:n}=this.getters.getCellStyle(e),r=this.getters.getEvaluatedCell(e);return!n&&ks(r.value,r.format)?`left`:t&&r.type===`number`?n===`center`?n:`left`:n||r.defaultAlign}createZoneBox(e,t,n){let{left:r,right:i}=n,a=t.left,o=t.top,s={sheetId:e,col:a,row:o},c=this.getters.getEvaluatedCell(s),l=this.getters.shouldShowFormulas(),{x:u,y:d,width:f,height:p}=this.getters.getRect(t),m=this.getters.getDataValidationChipStyle(s),h=this.getters.getCellComputedStyle(s);if(this.fingerprints.isEnabled){let e=this.fingerprints.colors.get(s);h={...h,fillColor:e}}m?.textColor&&(h={...h,textColor:m.textColor});let g=this.fingerprints.isEnabled?void 0:this.getters.getConditionalDataBar(s),_=this.getters.getCellIcons(s),v={left:_.find(e=>e?.horizontalAlign===`left`),right:_.find(e=>e?.horizontalAlign===`right`),center:_.find(e=>e?.horizontalAlign===`center`)},y={id:yn(t),x:u,y:d,width:f,height:p,border:this.getters.getCellComputedBorder(s)||void 0,style:h,dataBarFill:g,overlayColor:this.hoveredTables.overlayColors.get(s),isError:c.type===`error`&&!!c.message||this.getters.isDataValidationInvalid(s),icons:v,disabledAnimation:this.zonesWithPreventedAnimationsInNextFrame.some(e=>jn(t,e)||On(t,e))},ee=zl(y.style);if(c.type===`empty`||y.icons.center)return y;let te=h.wrapping||`overflow`,ne=te===`wrap`&&!l,re=f-8,ie=h.align?0:re,ae=this.getters.getCellMultiLineText(s,{maxWidth:re,formatWidth:ie,wrapText:ne}),oe={...h,align:`left`,rotation:0},se=Math.max(...ae.map(e=>this.getters.getTextWidth(e,oe)))+4,ce=this.getters.getMultilineTextSize(ae,h),le=m?5:0,ue=(y.icons.left?y.icons.left.size+y.icons.left.margin:0)+le,de=(y.icons.right?y.icons.right.size+y.icons.right.margin:0)+le,fe=ue+ce.width+de+4,pe=this.computeCellAlignment(s,fe>f),me=ae.length,he=Math.round(this.getters.computeTextYCoordinate(y,ee,h.verticalAlign,me)),ge=y.x;pe===`left`?ge+=4+ue:pe===`right`?ge+=y.width-4-de:ge+=y.width/2,ge=Math.round(ge);let _e=El(ee,me);if(y.content={textLines:ae,width:te===`overflow`?se:f,textHeight:_e,textWidth:se,align:pe,x:ge,y:he,fontSizePx:ee},m?.fillColor){let e=ue;y.chip={color:m.fillColor,width:y.width-e-5,height:_e+2,x:y.x+e,y:he-2}}let ve=fe>f||ce.height>p;if(y.icons.left||y.icons.right||y.chip)y.clipRect={x:y.x+ue,y:y.y,width:Math.max(0,f-ue-de),height:p};else if(ve&&te===`overflow`){let e,n;switch(this.getters.isInMerge(s)?(e=this.getters.getMerge(s).right,n=a):(e=y.border?.right?t.right:this.findNextEmptyCol(a,i,o),n=y.border?.left?t.left:this.findPreviousEmptyCol(a,r,o),y.isOverflow=!0),pe){case`left`:{let n=E({col:e,row:o}),{x:r,y:i,width:a,height:s}=this.getters.getVisibleRect(wn(t,n));(a<fe||ee>s||ae.length>1)&&(y.clipRect={x:r,y:i,width:a,height:s});break}case`right`:{let e=E({col:n,row:o}),{x:r,y:i,width:a,height:s}=this.getters.getVisibleRect(wn(t,e));(a<fe||ee>s||ae.length>1)&&(y.clipRect={x:r,y:i,width:a,height:s});break}case`center`:{let r={...t,left:n,right:e},{x:i,y:a,height:o,width:s}=this.getters.getVisibleRect(r),c=fe/2,l=y.x+y.width/2;if(i+s<l+c||i>l-c||ee>o||ae.length>1){let e=i>l-c?i:l-c;y.clipRect={x:e,y:a,width:i+s-e,height:o}}break}}}else(te===`clip`||te===`wrap`||ae.length>1)&&(y.clipRect={x:y.x,y:y.y,width:f,height:p});return y}getGridBoxes(e){let t=[],n=this.getters.getSheetViewVisibleCols().filter(t=>t>=e.left&&t<=e.right),r=n[0],i=n[n.length-1],a=this.getters.getSheetViewVisibleRows().filter(t=>t>=e.top&&t<=e.bottom),o={left:r,right:i,top:a[0],bottom:a[a.length-1]},s=this.getters.getActiveSheetId();for(let e of a)for(let r of n){let n={sheetId:s,col:r,row:e};this.getters.isInMerge(n)||t.push(this.createZoneBox(s,E(n),o))}for(let e of this.getters.getMerges(s))if(!this.getters.isMergeHidden(s,e)&&On(e,o)){let n=this.createZoneBox(s,e,o),r=this.getters.getCellComputedBorder({sheetId:s,col:e.right,row:e.bottom});n.border={...n.border,bottom:r?r.bottom:void 0,right:r?r.right:void 0},n.isMerge=!0,t.push(n)}return t}getBoxesWithAnimations(e,t,n){return this.updateAnimationsProgress(n),this.addNewAnimations(e,t,n),this.animations.size>0?(this.renderer.startAnimation(`grid_renderer_animation`),this.updateBoxesWithAnimations(e)):(this.renderer.stopAnimation(`grid_renderer_animation`),e)}updateBoxesWithAnimations(e){let t=[];for(let n of e){let e=this.animations.get(n.id);if(!e){t.push(n);continue}let r=b(n);t.push(r);for(let i of e.animationTypes){let a=uv.get(i).updateAnimation(e.progress,r,e.oldBox,n);a&&t.push(...a.newBoxes)}}return t}updateAnimationsProgress(e){if(e!==void 0)for(let t of this.animations.keys()){let n=this.animations.get(t);if(n.startTime===void 0){n.startTime=e;continue}let r=e-n.startTime,i=Math.min(1,r/200);i>=1&&this.animations.delete(t),n.progress=i}}addNewAnimations(e,t,n){for(let r of e){this.lastRenderBoxes.set(r.id,r);let e=t.get(r.id);if(this.preventNewAnimationsInNextFrame||!e||r.disabledAnimation)continue;let i=[];for(let t of uv.getAll())t.hasAnimation(e,r)&&i.push(t.id);let a=i.length>0?{animationTypes:i,oldBox:e,progress:0,startTime:n}:void 0;a&&this.animations.set(r.id,a)}}};function yW(e,n,r){let i=(0,t.useRef)(e);(0,t.useEffect)(o);let a=D(vr);D(vW);function o(){let e=i.el,t=window.devicePixelRatio||1,o=e.getContext(`2d`,{alpha:!1}),s=Math.max(n.getters.getViewportZoomLevel(),1),c={ctx:o,dpr:t,thinLineWidth:.4*t},{width:l,height:u}=r();l=s*l,u=s*u,e.style.width=`${l}px`,e.style.height=`${u}px`,e.width=l*t,e.height=u*t,e.setAttribute(`style`,`width:${l}px;height:${u}px;zoom:${1/s};`),!(l===0||u===0)&&(o.translate(-.5,-.5),o.scale(t*s,t*s),a.draw(c))}}let bW=.95;function xW(e,{updateScroll:n,canMoveUp:r,canMoveDown:i,getZoom:a,setZoom:o}){let s=0,c=0,l=0,u=0,d=!1,f=0,p=null,m=!1,h=[],g=-1;AL(e,`touchstart`,_,{capture:!1}),AL(e,`touchmove`,v,{capture:!1}),AL(e,`touchend`,y,{capture:!1}),AL(e,`pointerdown`,te,{passive:!1,capture:!1}),AL(e,`pointermove`,re,{passive:!1,capture:!1}),(0,t.useExternalListener)(window,`pointerup`,ne,{passive:!1,capture:!0}),AL(e,`pointercancel`,ne,{passive:!1});function _(e){d=!0,{clientX:s,clientY:c}=e.touches[0],l=0,u=0}function v(e){if(!d||m){e.cancelable&&e.preventDefault(),e.stopPropagation();return}p&&=(clearTimeout(p),null);let t=Date.now(),{clientX:a,clientY:o}=e.touches[0],h=s-a,g=c-o,_=t-f;_&&(l=h/_,u=g/_,s=a,c=o,f=t,(g<0&&r()||g>0&&i())&&(e.cancelable&&e.preventDefault(),e.stopPropagation()),p=setTimeout(()=>{l=0,u=0},100),n(h*1,g*1))}function y(e){d=!1,s=c=0,p&&clearTimeout(p),l*=1.2,u*=1.2,requestAnimationFrame(ee)}function ee(){if(Math.abs(l)<.05&&(l=0),Math.abs(u)<.05&&(u=0),!l&&!u)return;let e=Date.now(),t=Math.abs(e-f),r=l*t,i=u*t;n(r*1,i*1),f=e,l*=bW,u*=bW,requestAnimationFrame(ee)}function te(e){e.button===0&&h.findIndex(t=>t.pointerId===e.pointerId)===-1&&(h.push(e),h.length<2?g=-1/0:h.length===2&&(g=SW(h[0],h[1])))}function ne(e){let t=h.findIndex(t=>t.pointerId===e.pointerId);t!==-1&&(h.splice(t,1),h.length<2&&(g=-1/0,m=!1))}function re(e){let t=h.findIndex(t=>t.pointerId===e.pointerId);if(t!==-1&&(h[t]=e,h.length===2)){let e=SW(h[0],h[1]);if(!m&&Math.abs(e-g)>=30&&(m=!0,g=e),m){let t=(e/g)**.5;o(Math.round(a()*t*1e3)/1e3),g=e}}}}function SW(e,t){let n=e.clientX-t.clientX,r=e.clientY-t.clientY;return Math.sqrt(n*n+r*r)}function CW(e){function t(e,t){return e*(t===0?1:23)}return n=>{e(t(n.shiftKey&&!mp()?n.deltaY:n.deltaX,n.deltaMode),t(n.shiftKey&&!mp()?n.deltaX:n.deltaY,n.deltaMode))}}var wW=class extends t.Component{static template=`o-spreadsheet-Border`;static props={zone:Object,orientation:String,isMoving:Boolean,onMoveHighlight:Function};get style(){let e=[`n`,`w`,`e`].includes(this.props.orientation),t=[`n`,`w`,`s`].includes(this.props.orientation),n=[`n`,`s`].includes(this.props.orientation),r=[`w`,`e`].includes(this.props.orientation),i=this.props.zone,a=this.env.model.getters.getVisibleRect(i),o=a.x,s=a.x+a.width-4,c=a.y,l=a.y+a.height-4,u=t?o:s,d=e?c:l,f=n?s-o:4,p=r?l-c:4;return U({left:`${u}px`,top:`${d}px`,width:`${f}px`,height:`${p}px`})}onMouseDown(e){this.props.onMoveHighlight(e)}},TW=class extends t.Component{static template=`o-spreadsheet-Corner`;static props={zone:Object,color:String,orientation:String,isResizing:Boolean,onResizeHighlight:Function};dirX;dirY;setup(){let{dirX:e,dirY:t}=EW(this.props.orientation);this.dirX=e,this.dirY=t}get handlerStyle(){let e=this.props.zone,t=this.env.model.getters.getVisibleRect({left:this.dirX===1?e.right:e.left,right:this.dirX===-1?e.left:e.right,top:this.dirY===1?e.bottom:e.top,bottom:this.dirY===-1?e.top:e.bottom});if(t.width*t.height===0)return`display: none !important;`;let n=t.x+t.width/2+this.dirX*t.width/2,r=t.y+t.height/2+this.dirY*t.height/2,i=this.getHandlerEdgeLength(),a={left:`${n-i/2}px`,top:`${r-i/2}px`,height:`${i}px`,width:`${i}px`};return this.env.isMobile()&&(a[`border-radius`]=`${i/2}px`),U(a)}getHandlerEdgeLength(){return this.env.isMobile()?40:8}get buttonLook(){let e={"background-color":this.props.color,cursor:`${this.props.orientation}-resize`};return this.env.isMobile()&&(e[`border-radius`]=`${8/2}px`),U(e)}onMouseDown(e){this.props.onResizeHighlight(e,this.dirX,this.dirY)}};function EW(e){return{dirX:e.includes(`w`)?-1:+!!e.includes(`e`),dirY:e.includes(`n`)?-1:+!!e.includes(`s`)}}var DW=class extends t.Component{static template=`o-spreadsheet-Highlight`;static props={range:Object,color:String};static components={Corner:TW,Border:wW};highlightState=(0,t.useState)({shiftingMode:`none`});dragNDropGrid=_U(this.env);get cornerOrientations(){if(!this.env.isMobile())return[`nw`,`ne`,`sw`,`se`];let e=this.props.range.unboundedZone;return e.bottom===void 0?[`w`,`e`]:e.right===void 0?[`n`,`s`]:[`nw`,`se`]}onResizeHighlight(e,t,n){let r=this.env.model.getters.getActiveSheetId(),i=wp(this.env,e);this.highlightState.shiftingMode=`isResizing`;let a=this.props.range.zone,o=t===1?a.left:a.right,s=n===1?a.top:a.bottom,c=t===1?a.right:a.left,l=n===1?a.bottom:a.top,u=a,d=`all`;this.env.isMobile()&&(d=t===0?`vertical`:n===0?`horizontal`:`all`),this.env.model.dispatch(`START_CHANGE_HIGHLIGHT`,{zone:u}),this.dragNDropGrid.start(i,(e,t)=>{if(c!==e||l!==t){let{left:n,right:i,top:a,bottom:f}=u;d!==`horizontal`&&(l=l=x(t===-1?l:t,0,this.env.model.getters.getNumberRows(r)-1),a=Math.min(s,l),f=Math.max(s,l)),d!==`vertical`&&(c=x(e===-1?c:e,0,this.env.model.getters.getNumberCols(r)-1),n=Math.min(o,c),i=Math.max(o,c));let p={left:n,right:i,top:a,bottom:f};Dn(p,u)||(this.env.model.selection.selectZone({cell:{col:p.left,row:p.top},zone:p},{unbounded:!0}),u=p)}},()=>{this.highlightState.shiftingMode=`none`},d)}onMoveHighlight(e){this.highlightState.shiftingMode=`isMoving`;let t=this.props.range.zone,n=rp(this.env.model.getters.getViewportZoomLevel()),r=wp(this.env,e,n),i=this.env.model.getters.getActiveSheetId(),a=this.env.model.getters.getColIndex(r.clientX-n.x),o=this.env.model.getters.getRowIndex(r.clientY-n.y),s=-t.left,c=this.env.model.getters.getNumberCols(i)-t.right-1,l=-t.top,u=this.env.model.getters.getNumberRows(i)-t.bottom-1,d=t;this.env.model.dispatch(`START_CHANGE_HIGHLIGHT`,{zone:d});let f=a,p=o;this.dragNDropGrid.start(r,(e,n)=>{if(f!==e||p!==n){f=e===-1?f:e,p=n===-1?p:n;let r=x(f-a,s,c),i=x(p-o,l,u),m={left:t.left+r,top:t.top+i,right:t.right+r,bottom:t.bottom+i};Dn(m,d)||(this.env.model.selection.selectZone({cell:{col:m.left,row:m.top},zone:m},{unbounded:!0}),d=m)}},()=>{this.highlightState.shiftingMode=`none`})}},OW=class{direction;el;constructor(e,t){this.el=e,this.direction=t}get scroll(){return this.direction===`horizontal`?this.el.scrollLeft:this.el.scrollTop}set scroll(e){this.direction===`horizontal`?this.el.scrollLeft=e:this.el.scrollTop=e}},kW=class extends t.Component{static props={width:{type:Number,optional:!0},height:{type:Number,optional:!0},direction:String,position:Object,offset:Number,onScroll:Function};static template=t.xml`
91
91
  <div
92
92
  t-attf-class="o-scrollbar {{props.direction}}"
@@ -111,10 +111,10 @@ stores.inject(MyMetaStore, storeInstance);
111
111
  offset="offset"
112
112
  direction="'vertical'"
113
113
  onScroll.bind="onScroll"
114
- />`;static defaultProps={topOffset:0};get offset(){return this.env.model.getters.getActiveSheetScrollInfo().scrollY}get height(){return this.env.model.getters.getMainViewportRect().height}get isDisplayed(){let{yRatio:e}=this.env.model.getters.getFrozenSheetViewRatio(this.env.model.getters.getActiveSheetId());return e<1}get position(){let{y:e}=this.env.model.getters.getMainViewportRect(),t=this.env.model.getters.getScrollBarWidth();return{top:`${this.props.topOffset+e}px`,right:`0px`,width:`${t}px`,bottom:vp()?`${t}px`:`0`}}onScroll(e){let{scrollX:t}=this.env.model.getters.getActiveSheetScrollInfo();this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:t,offsetY:e})}},MW=class extends t.Component{static template=`o-spreadsheet-Selection`;static props={};static components={Highlight:DW};get highlightProps(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getUnboundedZone(e,this.env.model.getters.getSelectedZone());return{range:this.env.model.getters.getRangeFromZone(e,t),color:ae}}},NW=class extends t.Component{static template=`o-spreadsheet-TableResizer`;static props={table:Object};state=(0,t.useState)({highlightZone:void 0});dragNDropGrid=_U(this.env);setup(){NL(this)}get containerStyle(){let e=this.props.table.range.zone,t=this.props.table.range.sheetId;if(this.env.model.getters.isReadonly()||this.env.model.getters.isSheetLocked(t))return U({display:`none`});let n={...e,left:e.right,top:e.bottom},r=this.env.model.getters.getVisibleRect(n);return r.height===0||r.width===0?U({display:`none`}):U({top:`${r.y+r.height-6}px`,left:`${r.x+r.width-6}px`})}onMouseDown(e){let t=this.props.table.range.zone,n={col:t.left,row:t.top};document.body.style.cursor=`nwse-resize`;let r=wp(this.env,e);this.dragNDropGrid.start(r,(e,t,r)=>{this.state.highlightZone={left:n.col,top:n.row,right:Math.max(e,n.col),bottom:Math.max(t,n.row)}},()=>{document.body.style.cursor=``;let e=this.state.highlightZone;if(!e)return;let t=this.props.table.range.sheetId;this.env.model.dispatch(`RESIZE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeDataFromZone(t,e)}),this.state.highlightZone=void 0})}get highlights(){return this.state.highlightZone?[{range:this.env.model.getters.getRangeFromZone(this.props.table.range.sheetId,this.state.highlightZone),color:`#777`,noFill:!0}]:[]}};let PW={ROW:mU,COL:sU,CELL:YH,GROUP_HEADERS:fU,UNGROUP_HEADERS:pU};var FW=class extends t.Component{static template=`o-spreadsheet-Grid`;static props={exposeFocus:Function,getGridSize:Function};static components={GridComposer:KU,GridOverlay:uW,GridPopover:dW,HeadersOverlay:_W,MenuPopover:Nv,Autofill:yU,ClientTag:xU,Highlight:DW,Popover:kv,VerticalScrollBar:jW,HorizontalScrollBar:AW,TableResizer:NW,Selection:MW};HEADER_HEIGHT=26;HEADER_WIDTH=48;menuState;gridRef;highlightStore;cellPopovers;composerFocusStore;DOMFocusableElementStore;paintFormatStore;clientFocusStore;dragNDropGrid=_U(this.env);onMouseWheel;hoveredCell;sidePanel;setup(){this.highlightStore=D(EN),this.menuState=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]}),this.gridRef=(0,t.useRef)(`grid`),this.hoveredCell=D(Bv),this.composerFocusStore=D(xr),this.DOMFocusableElementStore=D(FM),this.sidePanel=D(bV),this.paintFormatStore=D(oW),this.clientFocusStore=D(gU),D(hU),(0,t.useChildSubEnv)({getPopoverContainerRect:()=>this.getGridRect()}),(0,t.useExternalListener)(document.body,`cut`,this.copy.bind(this,!0)),(0,t.useExternalListener)(document.body,`copy`,this.copy.bind(this,!1)),(0,t.useExternalListener)(document.body,`paste`,this.paste),(0,t.onMounted)(()=>this.focusDefaultElement()),this.props.exposeFocus(()=>this.focusDefaultElement()),yW(`canvas`,this.env.model,()=>this.env.model.getters.getSheetViewDimensionWithHeaders()),this.onMouseWheel=CW((e,t)=>{this.moveCanvas(e,t),this.hoveredCell.clear()}),this.cellPopovers=D(aP),(0,t.useEffect)((e,t)=>{!e&&!t&&this.DOMFocusableElementStore.focus()},()=>[this.sidePanel.isMainPanelOpen,this.sidePanel.isSecondaryPanelOpen]),xW(this.gridRef,{updateScroll:this.moveCanvas.bind(this),canMoveUp:()=>{let{scrollY:e}=this.env.model.getters.getActiveSheetScrollInfo();return e>0},canMoveDown:()=>{let{maxOffsetY:e}=this.env.model.getters.getMaximumSheetOffset(),{scrollY:t}=this.env.model.getters.getActiveSheetScrollInfo();return t<e},getZoom:()=>this.env.model.getters.getViewportZoomLevel(),setZoom:e=>this.env.model.dispatch(`SET_ZOOM`,{zoom:e})})}get highlights(){return this.highlightStore.highlights}get gridOverlayDimensions(){let e=this.env.model.getters.getScrollBarWidth();return U({top:`26px`,left:`48px`,height:`calc(100% - ${26+e}px)`,width:`calc(100% - ${48+e}px)`})}onClosePopover(){this.cellPopovers.isOpen&&this.cellPopovers.close(),this.focusDefaultElement()}keyDownMapping={Enter:()=>this.editOrMoveInSelection(`down`),"Shift+Enter":()=>this.editOrMoveInSelection(`up`),Tab:()=>this.moveInSelection(`right`),"Shift+Tab":()=>this.moveInSelection(`left`),F2:()=>{this.focusComposerFromActiveCell()},Delete:()=>{this.env.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},Backspace:()=>{this.env.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},Escape:()=>{this.cellPopovers.isOpen?this.cellPopovers.close():this.menuState.isOpen?this.closeMenu():this.paintFormatStore.isActive?this.paintFormatStore.cancel():this.env.model.dispatch(`CLEAN_CLIPBOARD_HIGHLIGHT`)},"Ctrl+A":()=>this.env.model.selection.loopSelection(),"Ctrl+Z":()=>this.env.model.dispatch(`REQUEST_UNDO`),"Ctrl+Y":()=>this.env.model.dispatch(`REQUEST_REDO`),F4:()=>this.env.model.dispatch(`REQUEST_REDO`),"Ctrl+B":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{bold:!this.env.model.getters.getCurrentStyle().bold}}),"Ctrl+I":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{italic:!this.env.model.getters.getCurrentStyle().italic}}),"Ctrl+U":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{underline:!this.env.model.getters.getCurrentStyle().underline}}),"Ctrl+O":()=>_F(this.env),"Alt+=":()=>{let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZone(),{anchor:n}=this.env.model.getters.getSelection(),r=this.env.model.getters.getAutomaticSums(e,t,n.cell);if(this.env.model.getters.isSingleCellOrMerge(e,t)||this.env.model.getters.isEmpty(e,t)&&r.length<=1){let t=r[0]?.zone?this.env.model.getters.zoneToXC(e,r[0].zone):``,n=`=SUM(${t})`;this.onComposerCellFocused(n,{start:5,end:5+t.length})}else this.env.model.dispatch(`SUM_SELECTION`)},"Alt+Enter":()=>{let e=this.env.model.getters.getActiveCell();e.link&&ic(e.link,this.env)},"Ctrl+Home":()=>{let e=this.env.model.getters.getActiveSheetId(),{col:t,row:n}=this.env.model.getters.getNextVisibleCellPosition({sheetId:e,col:0,row:0});this.env.model.selection.selectCell(t,n)},"Ctrl+End":()=>{let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.findVisibleHeader(e,`COL`,this.env.model.getters.getNumberCols(e)-1,0),n=this.env.model.getters.findVisibleHeader(e,`ROW`,this.env.model.getters.getNumberRows(e)-1,0);this.env.model.selection.selectCell(t,n)},"Shift+ ":()=>{let e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),left:0,right:this.env.model.getters.getNumberCols(e)-1},n=this.env.model.getters.getActivePosition();this.env.model.selection.selectZone({cell:n,zone:t})},"Ctrl+ ":()=>{let e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),top:0,bottom:this.env.model.getters.getNumberRows(e)-1},n=this.env.model.getters.getActivePosition();this.env.model.selection.selectZone({cell:n,zone:t})},"Ctrl+D":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ABOVE`})},"Ctrl+R":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ON_LEFT`})},"Ctrl+Enter":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ON_ZONE`})},"Ctrl+H":()=>this.sidePanel.open(`FindAndReplace`,{}),"Ctrl+F":()=>this.sidePanel.open(`FindAndReplace`,{}),"Ctrl+Shift+E":()=>this.setHorizontalAlign(`center`),"Ctrl+Shift+L":()=>this.setHorizontalAlign(`left`),"Ctrl+Shift+R":()=>this.setHorizontalAlign(`right`),"Ctrl+Shift+V":()=>KP(this.env),"Ctrl+Shift+<":()=>this.clearFormatting(),"Ctrl+<":()=>this.clearFormatting(),"Ctrl+Shift+ ":()=>{this.env.model.selection.selectAll()},"Ctrl+Alt+=":()=>{let e=this.env.model.getters.getActiveCols(),t=this.env.model.getters.getActiveRows(),n=this.env.model.getters.getSelectedZones().length===1,r=e.size>0&&n,i=t.size>0&&n;r&&!i?cF(this.env):i&&!r&&oF(this.env)},"Ctrl+Alt+-":()=>{let e=[...this.env.model.getters.getActiveCols()],t=[...this.env.model.getters.getActiveRows()];e.length>0&&t.length===0?this.env.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:this.env.model.getters.getActiveSheetId(),sheetName:this.env.model.getters.getActiveSheetName(),dimension:`COL`,elements:e}):t.length>0&&e.length===0&&this.env.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:this.env.model.getters.getActiveSheetId(),sheetName:this.env.model.getters.getActiveSheetName(),dimension:`ROW`,elements:t})},"Shift+PageDown":()=>{this.env.model.dispatch(`ACTIVATE_NEXT_SHEET`)},"Shift+PageUp":()=>{this.env.model.dispatch(`ACTIVATE_PREVIOUS_SHEET`)},"Shift+F11":()=>{uI.execute?.(this.env)},"Alt+T":()=>{ZF.execute?.(this.env)},PageDown:()=>this.env.model.dispatch(`SHIFT_VIEWPORT_DOWN`),PageUp:()=>this.env.model.dispatch(`SHIFT_VIEWPORT_UP`),"Ctrl+K":()=>bF(this.env),"Alt+Shift+ArrowRight":()=>this.processHeaderGroupingKey(`right`),"Alt+Shift+ArrowLeft":()=>this.processHeaderGroupingKey(`left`),"Alt+Shift+ArrowUp":()=>this.processHeaderGroupingKey(`up`),"Alt+Shift+ArrowDown":()=>this.processHeaderGroupingKey(`down`)};focusComposerFromActiveCell(){this.env.model.getters.getActiveCell().type===`empty`?this.onComposerCellFocused():this.onComposerContentFocused()}editOrMoveInSelection(e){if(this.isSingleCellOrMergeSelection()){this.focusComposerFromActiveCell();return}RM(this.env.model.getters,this.env.model.selection,e)}moveInSelection(e){if(this.isSingleCellOrMergeSelection()){this.env.model.selection.moveAnchorCell(e,1);return}RM(this.env.model.getters,this.env.model.selection,e)}isSingleCellOrMergeSelection(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZone();return this.env.model.getters.isSingleCellOrMerge(e,t)}focusDefaultElement(){!this.env.model.getters.getSelectedFigureId()&&this.composerFocusStore.activeComposer.editionMode===`inactive`&&this.DOMFocusableElementStore.focus()}get gridEl(){if(!this.gridRef.el)throw Error(`Grid el is not defined.`);return this.gridRef.el}getAutofillPosition(){let e=this.env.model.getters.getSelectedZone(),t=this.env.model.getters.getVisibleRect(e);return{x:t.x+t.width-8/2,y:t.y+t.height-8/2}}get isAutofillVisible(){if(this.env.model.getters.isCurrentSheetLocked())return!1;let e=this.env.model.getters.getSelectedZone(),t=this.env.model.getters.getVisibleRect({left:e.right,right:e.right,top:e.bottom,bottom:e.bottom});return!(t.width===0||t.height===0)}onGridResized(){let{height:e,width:t}=this.props.getGridSize();this.env.model.dispatch(`RESIZE_SHEETVIEW`,{width:t-48,height:e-26,gridOffsetX:48,gridOffsetY:26})}moveCanvas(e,t){let{scrollX:n,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:n+e,offsetY:r+t})}processSpaceKey(e){this.env.model.getters.hasBooleanValidationInZones(this.env.model.getters.getSelectedZones())&&(e.preventDefault(),e.stopPropagation(),this.env.model.dispatch(`TOGGLE_CHECKBOX`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()}))}getClientPositionKey(e){return`${e.id}-${e.position?.sheetId}-${e.position?.col}-${e.position?.row}`}isCellHovered(e,t){return this.hoveredCell.col===e&&this.hoveredCell.row===t}get focusedClients(){return this.clientFocusStore.focusedClients}getGridRect(){let e=this.env.model.getters.getViewportZoomLevel(),{width:t,height:n}=this.env.model.getters.getSheetViewDimensionWithHeaders();return{...ap(this.gridRef),width:t*e,height:n*e}}onCellClicked(e,t,n,r){if(r.ev.preventDefault(),this.composerFocusStore.activeComposer.editionMode===`editing`&&this.composerFocusStore.activeComposer.stopEdition(),n.expandZone?this.env.model.selection.setAnchorCorner(e,t):n.addZone?this.env.model.selection.addCellToSelection(e,t):this.env.model.selection.selectCell(e,t),this.env.isMobile())return;let i=e,a=t;this.dragNDropGrid.start(r,(e,t,n)=>{n.preventDefault(),(e!==i&&e!==-1||t!==a&&t!==-1)&&(i=e===-1?i:e,a=t===-1?a:t,this.env.model.selection.setAnchorCorner(i,a))},()=>{this.env.model.selection.commitSelection(),this.paintFormatStore.isActive&&this.paintFormatStore.pasteFormat(this.env.model.getters.getSelectedZones())})}onCellDoubleClicked(e,t){let n=this.env.model.getters.getActiveSheetId();({col:e,row:t}=this.env.model.getters.getMainCellPosition({sheetId:n,col:e,row:t})),this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t}).type===`empty`?this.onComposerCellFocused():this.onComposerContentFocused()}processArrows(e){e.preventDefault(),e.stopPropagation(),this.cellPopovers.isOpen&&this.cellPopovers.close(),LM(e,this.env.model.selection),this.paintFormatStore.isActive&&this.paintFormatStore.pasteFormat(this.env.model.getters.getSelectedZones())}onKeydown(e){let t=pp(e),n=this.keyDownMapping[t];if(n){e.preventDefault(),e.stopPropagation(),n();return}if(t===` `){this.processSpaceKey(e);return}if(e.key.startsWith(`Arrow`)){this.processArrows(e);return}}onInputContextMenu(e){e.preventDefault();let t=this.env.model.getters.getSelectedZone(),{left:n,top:r}=t,i=`CELL`;this.composerFocusStore.activeComposer.stopEdition(),this.env.model.getters.getActiveCols().has(n)?i=`COL`:this.env.model.getters.getActiveRows().has(r)&&(i=`ROW`);let{x:a,y:o,width:s}=this.env.model.getters.getVisibleRectWithZoom(t),c=this.getGridRect();this.toggleContextMenu(i,c.x+a+s,c.y+o)}onCellRightClicked(e,t,{x:n,y:r}){let i=this.env.model.getters.getSelectedZones(),a=i[i.length-1],o=`CELL`;An(e,t,a)?this.env.model.getters.getActiveCols().has(e)?o=`COL`:this.env.model.getters.getActiveRows().has(t)&&(o=`ROW`):(this.env.model.selection.getBackToDefault(),this.env.model.selection.selectCell(e,t)),this.toggleContextMenu(o,n,r)}toggleContextMenu(e,t,n){this.cellPopovers.isOpen&&this.cellPopovers.close(),this.menuState.isOpen=!0,this.menuState.anchorRect={x:t,y:n,width:0,height:0},this.menuState.menuItems=PW[e].getMenuItems()}async copy(e,t){if(!this.gridEl.contains(document.activeElement)||this.composerFocusStore.activeComposer.editionMode!==`inactive`)return;e?eH(this.env):this.env.model.dispatch(`COPY`);let n=await this.env.model.getters.getClipboardTextAndImageContent();await this.env.clipboard.write(n),t.preventDefault()}async paste(e){if(!this.gridEl.contains(document.activeElement))return;e.preventDefault();let t=e.clipboardData;if(!t)return;let n=[...t.files].find(e=>xP.includes(e.type)),r={content:{"text/plain":t?.getData(`text/plain`),"text/html":t?.getData(`text/html`)}};n&&(r.content[n.type]=n);let i=this.env.model.getters.getSelectedZones(),a=this.env.model.getters.isCutOperation(),o=this.env.model.getters.getClipboardId(),s=TP(r.content);o===s.data?.clipboardId?_M(this.env,i):await vM(this.env,i,s),a&&await this.env.clipboard.write({"text/plain":``})}clearFormatting(){this.env.model.dispatch(`CLEAR_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})}setHorizontalAlign(e){this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{align:e}})}closeMenu(){this.menuState.isOpen=!1,this.focusDefaultElement()}processHeaderGroupingKey(e){if(this.env.model.getters.getSelectedZones().length!==1)return;let t=this.env.model.getters.getActiveRows().size>0,n=this.env.model.getters.getActiveCols().size>0;n&&t?this.processHeaderGroupingEventOnWholeSheet(e):n?this.processHeaderGroupingEventOnHeaders(e,`COL`):t?this.processHeaderGroupingEventOnHeaders(e,`ROW`):this.processHeaderGroupingEventOnGrid(e)}processHeaderGroupingEventOnHeaders(e,t){let n=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getSelectedZone(),i=t===`COL`?r.left:r.top,a=t===`COL`?r.right:r.bottom;switch(e){case`right`:this.env.model.dispatch(`GROUP_HEADERS`,{sheetId:n,dimension:t,start:i,end:a});break;case`left`:this.env.model.dispatch(`UNGROUP_HEADERS`,{sheetId:n,dimension:t,start:i,end:a});break;case`down`:this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:n,dimension:t,zone:r});break;case`up`:this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:n,dimension:t,zone:r});break}}processHeaderGroupingEventOnWholeSheet(e){let t=this.env.model.getters.getActiveSheetId();e===`up`?(this.env.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`ROW`}),this.env.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`COL`})):e===`down`&&(this.env.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`ROW`}),this.env.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`COL`}))}processHeaderGroupingEventOnGrid(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getSelectedZone();switch(e){case`down`:this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`ROW`,zone:n}),this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`COL`,zone:n});break;case`up`:this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`ROW`,zone:n}),this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`COL`,zone:n});break;case`right`:{let{x:e,y:t,width:r}=this.env.model.getters.getVisibleRectWithZoom(n),i=this.getGridRect();this.toggleContextMenu(`GROUP_HEADERS`,e+r+i.x,t+i.y);break}case`left`:{if(!QV(this.env,`COL`)&&!QV(this.env,`ROW`))return;let{x:e,y:t,width:r}=this.env.model.getters.getVisibleRectWithZoom(n),i=this.getGridRect();this.toggleContextMenu(`UNGROUP_HEADERS`,e+r+i.x,t+i.y);break}}}onComposerCellFocused(e,t){this.composerFocusStore.focusActiveComposer({content:e,selection:t,focusMode:`cellFocus`})}onComposerContentFocused(){this.composerFocusStore.focusActiveComposer({focusMode:`contentFocus`})}get staticTables(){let e=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getCoreTables(e).filter(qB)}get displaySelectionHandler(){return this.env.isMobile()&&this.composerFocusStore.activeComposer.editionMode===`inactive`}};let IW=new B;IW.add(`SPREADSHEET`,!1);var LW=class extends t.Component{static template=`o-spreadsheet-ClickableCellSortIcon`;static props={position:Object,sortDirection:String};hoveredTableStore;setup(){this.hoveredTableStore=D(sW)}get style(){let e=this.env.model.getters.getCellComputedStyle(this.props.position),t=zl(e);return U({height:`${t}px`,width:`${t}px`,color:e.textColor||`#374151C2`,"background-color":this.getBackgroundColor(e)})}get verticalJustifyClass(){switch(this.env.model.getters.getCellComputedStyle(this.props.position).verticalAlign){case`top`:return`justify-content-start`;case`middle`:return`justify-content-center`;default:return`justify-content-end`}}getBackgroundColor(e){let t=this.hoveredTableStore.overlayColors.get(this.props.position);return t?Vr(e.fillColor||`#FFFFFF`,t):e.fillColor||`#FFFFFF`}},RW=class extends t.Component{static template=`o-spreadsheet-FullScreenFigure`;static props={};static components={ChartFigure:Iv};fullScreenFigureStore;ref=(0,t.useRef)(`fullScreenFigure`);spreadsheetRect=Dv();figureRegistry=Rv;setup(){this.fullScreenFigureStore=D(vv);let e=D(tu),n;(0,t.onWillUpdateProps)(()=>{n!==this.figureUI?.id&&e.enableAnimationForChart(this.chartId+`-fullscreen`),n=this.figureUI?.id}),(0,t.useEffect)(e=>e?.focus(),()=>[this.ref.el])}get figureUI(){return this.fullScreenFigureStore.fullScreenFigure}get chartId(){if(this.figureUI)return this.env.model.getters.getChartIdFromFigureId(this.figureUI?.id)}exitFullScreen(){this.figureUI&&this.fullScreenFigureStore.toggleFullScreenFigure(this.figureUI.id)}onKeyDown(e){e.key===`Escape`&&this.exitFullScreen()}get figureComponent(){if(this.figureUI)return Rv.get(this.figureUI.tag).Component}},zW=class extends t.Component{static template=`o_spreadsheet.PivotHTMLRenderer`;static components={Checkbox:eP};static props={pivotId:String,onCellClicked:Function};pivot=this.env.model.getters.getPivot(this.props.pivotId);data={columns:[],rows:[],values:[]};state=(0,t.useState)({showMissingValuesOnly:!1});setup(){let e=this.pivot.getExpandedTableStructure(),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;let e=this.getColumnsIndexes(),t=this.getRowsIndexes();return{columns:this.buildColumnsMissing(e),rows:this.buildRowsMissing(t),values:this.buildValuesMissing(e,t)}}addRecursiveRow(e){let t=this.pivot.getExpandedTableStructure().rows,n=[...t[e].values];if(n.length<=1)return[e];n.pop();let r=t.findIndex(e=>JSON.stringify(e.values)===JSON.stringify(n));return[e].concat(this.addRecursiveRow(r))}buildColumnsMissing(e){let t=[];for(let e of this.data.columns){let n=[];for(let t in e)for(let r=0;r<e[t].span;r++)n.push(parseInt(t,10));t.push(n)}for(let n=t[t.length-1].length;n>=0;n--)if(!e.includes(n))for(let e of t)e.splice(n,1);let n=[];for(let e in t){let r=[],i,a=1;for(let n=0;n<t[e].length;n++)i===t[e][n]?a++:(i!==void 0&&r.push(Object.assign({},this.data.columns[e][i],{span:a})),i=t[e][n],a=1);i!==void 0&&r.push(Object.assign({},this.data.columns[e][i],{span:a})),n.push(r)}return n}buildRowsMissing(e){return e.map(e=>this.data.rows[e])}buildValuesMissing(e,t){let n=e.map(()=>[]);for(let r of t)for(let t in e)n[t].push(this.data.values[e[t]][r]);return n}getColumnsIndexes(){let e=new Set;for(let t=0;t<this.data.columns.length;t++){let n=[];for(let e=0;e<this.data.columns[t].length;e++)for(let r=0;r<this.data.columns[t][e].span;r++)n.push(this.data.columns[t][e]);for(let t=0;t<n.length;t++)n[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(){let e=new Set;for(let t=0;t<this.data.rows.length;t++){this.data.rows[t].isMissing&&e.add(t);for(let n of this.data.values)n[t].isMissing&&this.addRecursiveRow(t).forEach(t=>e.add(t))}return Array.from(e).sort((e,t)=>e-t)}_buildColHeaders(e,t){let n=[];for(let r of t.columns){let t=[];for(let n of r){let r=[];for(let e=0;e<n.fields.length;e++)r.push({value:n.fields[e]},{value:n.values[e]});let i=this.pivot.parseArgsToPivotDomain(r),a=this.env.model.getters.getLocale();if(i.at(-1)?.field===`measure`){let{value:r,format:o}=this.pivot.getPivotMeasureValue(P(i.at(-1).value),i);t.push({formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(r,{format:o,locale:a}),span:n.width,isMissing:!this.tracker?.isHeaderPresent(i)})}else{let{value:r,format:o}=this.pivot.getPivotHeaderValueAndFormat(i);t.push({formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(r,{format:o,locale:a}),span:n.width,isMissing:!this.tracker?.isHeaderPresent(i)})}}n.push(t)}let r=n[n.length-1];return n[n.length-1]=r.map(e=>(e.isMissing||(e.style=`color: #756f6f;`),e)),n}_buildRowHeaders(e,t){let n=[];for(let r of t.rows){let t=[];for(let e=0;e<r.fields.length;e++)t.push({value:r.fields[e]},{value:r.values[e]});let i=this.pivot.parseArgsToPivotDomain(t),{value:a,format:o}=this.pivot.getPivotHeaderValueAndFormat(i),s=this.env.model.getters.getLocale(),c={formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(a,{format:o,locale:s}),isMissing:!this.tracker?.isHeaderPresent(i)};r.indent>1&&(c.style=`padding-left: ${r.indent-10}px`),n.push(c)}return n}_buildValues(e,t){let n=[];for(let r of t.columns.at(-1)||[]){let i=[],a=P(r.values[r.values.length-1]);for(let n of t.rows){let t=[];for(let e=0;e<n.fields.length;e++)t.push({value:n.fields[e]},{value:n.values[e]});for(let e=0;e<r.fields.length-1;e++)t.push({value:r.fields[e]},{value:r.values[e]});let o=this.pivot.parseArgsToPivotDomain(t),{value:s,format:c}=this.pivot.getPivotCellValueAndFormat(a,o),l=this.env.model.getters.getLocale();i.push({formula:`=PIVOT.VALUE(${bh(e,o,a).join(`,`)})`,value:z(s,{format:c,locale:l}),isMissing:!this.tracker?.isValuePresent(a,o)})}n.push(i)}return n}},BW=class{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(let n of e){let e=n.call(this,t);Array.isArray(e)||(e=[e]);let r=e.filter(e=>e!==`Success`);if(r.length)return r}return`Success`}}checkValidations(e,...t){return this.batchValidations(...t)(e)}},VW=class extends BW{getters;dispatch;canDispatch;constructor({getters:e,stateObserver:t,range:n,dispatch:r,canDispatch:i}){super(t),n.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.dispatch=r,this.canDispatch=i}import(e){}export(e,t){}adaptRanges(e,t,n){}},HW=class extends VW{static getters=[`getCellBorder`,`getBordersColors`];borders={};allowDispatch(e){switch(e.type){case`SET_BORDER`:return this.checkBordersUnchanged(e);default:return`Success`}}handle(e){switch(e.type){case`ADD_MERGE`:for(let t of e.target)this.addBordersToMerge(e.sheetId,t);break;case`DUPLICATE_SHEET`:let t=this.borders[e.sheetId];if(t){let n=t.slice().map(e=>e?.slice().map(e=>b(e)));this.history.update(`borders`,e.sheetIdTo,n)}break;case`DELETE_SHEET`:let n={...this.borders};delete n[e.sheetId],this.history.update(`borders`,n);break;case`SET_BORDER`:this.setBorder(e.sheetId,e.col,e.row,e.border);break;case`SET_BORDERS_ON_TARGET`:for(let t of e.target)for(let n=t.top;n<=t.bottom;n++)for(let r=t.left;r<=t.right;r++)this.setBorder(e.sheetId,r,n,e.border);break;case`SET_ZONE_BORDERS`:if(e.border){let 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||Ee.style,color:e.border.color||Ee.color})}break;case`CLEAR_FORMATTING`:this.clearBorders(e.sheetId,e.target);break;case`REMOVE_COLUMNS_ROWS`:let r=[...e.elements].sort((e,t)=>t-e);for(let t of $e(r))if(e.dimension===`COL`){let n=this.getters.getColsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[n]),this.shiftBordersHorizontally(e.sheetId,t[0]+1,-t.length)}else{let n=this.getters.getRowsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[n]),this.shiftBordersVertically(e.sheetId,t[0]+1,-t.length)}break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?this.handleAddColumns(e):this.handleAddRows(e);break}}handleAddColumns(e){let t,n;e.position===`before`?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity),t=e.base-1,n=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity),t=e.base,n=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,n)}handleAddRows(e){let t,n;e.position===`before`?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity),t=e.base-1,n=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity),t=e.base,n=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,n)}getCellBorder({sheetId:e,col:t,row:n}){let r=this.borders[e]?.[t]?.[n];return r?.top||r?.bottom||r?.left||r?.right?b(r):null}getBordersColors(e){let t=[],n=this.borders[e];if(n){for(let e of n.filter(C))for(let n of e)if(n)for(let e of[`top`,`bottom`,`left`,`right`]){let r=n[e]?.color;r&&t.push(r)}}return t}ensureColumnBorderContinuity(e,t,n){let r=S(t+1,n);for(let i=0;i<this.getters.getNumberRows(e);i++){let a=this.getCellBorder({sheetId:e,col:t,row:i}),o=this.getCellBorder({sheetId:e,col:n,row:i});if(a&&o){let t=this.getCommonSides(a,o);for(let n of r)this.addBorder(e,n,i,t)}}}ensureRowBorderContinuity(e,t,n){let r=S(t+1,n);for(let i=0;i<this.getters.getNumberCols(e);i++){let a=this.getCellBorder({sheetId:e,col:i,row:t}),o=this.getCellBorder({sheetId:e,col:i,row:n});if(a&&o){let t=this.getCommonSides(a,o);for(let n of r)this.addBorder(e,i,n,t)}}}getCommonSides(e,t){let n={};for(let r of[`top`,`bottom`,`left`,`right`])e[r]&&w(e[r],t[r])&&(n[r]=e[r]);return n}getColumnsWithBorders(e){let t=this.borders[e];return t?Object.keys(t).map(e=>parseInt(e,10)):[]}getRowsWithBorders(e){let t=this.borders[e]?.filter(C);if(!t)return[];let n=new Set;for(let e of t)for(let t in e)n.add(parseInt(t,10));return Array.from(n)}getRowsRange(e){return this.borders[e]?S(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,n){this.borders[e]&&this.getColumnsWithBorders(e).filter(e=>e>=t).sort((e,t)=>n<0?e-t:t-e).forEach(t=>{this.moveBordersOfColumn(e,t,n)})}shiftBordersVertically(e,t,n){this.borders[e]&&(n<0&&this.moveBordersOfRow(e,t,n,{destructive:!1}),this.getRowsWithBorders(e).filter(e=>e>=t).sort((e,t)=>n<0?e-t:t-e).forEach(t=>{this.moveBordersOfRow(e,t,n)}))}moveBordersOfRow(e,t,n,{destructive:r}={destructive:!0}){let i=this.borders[e];i&&this.getColumnsWithBorders(e).forEach(a=>{let o=i[a]?.[t+n],s=i[a]?.[t];this.history.update(`borders`,e,a,t+n,r?s:s||o),this.history.update(`borders`,e,a,t,void 0)})}moveBordersOfColumn(e,t,n,{destructive:r}={destructive:!0}){let i=this.borders[e];i&&this.getRowsRange(e).forEach(a=>{let o=i[t+n]?.[a],s=i[t]?.[a];this.history.update(`borders`,e,t+n,a,r?s:s||o),r&&this.history.update(`borders`,e,t,a,void 0)})}setBorder(e,t,n,r,i=!0){let a=this.getters.getNumberCols(e)-1,o=this.getters.getNumberRows(e)-1;(i||!this.borders[e]?.[t]?.[n]?.left)&&(this.history.update(`borders`,e,t,n,`left`,r?.left),r?.left&&t>0&&!w(this.borders[e]?.[t-1]?.[n]?.right,r?.left)&&this.history.update(`borders`,e,t-1,n,`right`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.top)&&(this.history.update(`borders`,e,t,n,`top`,r?.top),r?.top&&n>0&&!w(this.borders[e]?.[t]?.[n-1]?.bottom,r?.top)&&this.history.update(`borders`,e,t,n-1,`bottom`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.right)&&(this.history.update(`borders`,e,t,n,`right`,r?.right),r?.right&&t<a&&!w(this.borders[e]?.[t+1]?.[n]?.left,r?.right)&&this.history.update(`borders`,e,t+1,n,`left`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.bottom)&&(this.history.update(`borders`,e,t,n,`bottom`,r?.bottom),r?.bottom&&n<o&&!w(this.borders[e]?.[t]?.[n+1]?.top,r?.bottom)&&this.history.update(`borders`,e,t,n+1,`top`,void 0))}clearBorders(e,t,n=!1){let r=this.getters.getNumberCols(e)-1,i=this.getters.getNumberRows(e)-1;for(let a of nn(t))for(let t=a.top;t<=a.bottom;t++){n&&(a.left>0&&this.history.update(`borders`,e,a.left-1,t,`right`,void 0),a.right<r&&this.history.update(`borders`,e,a.right+1,t,`left`,void 0));for(let r=a.left;r<=a.right;r++)this.history.update(`borders`,e,r,t,void 0),n&&(a.top>0&&this.history.update(`borders`,e,r,a.top-1,`bottom`,void 0),a.bottom<i&&this.history.update(`borders`,e,r,a.bottom+1,`top`,void 0))}}clearInsideBorders(e,t){for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let r=n.left;r<=n.right;r++)this.history.update(`borders`,e,r,t,void 0)}addBorder(e,t,n,r){this.setBorder(e,t,n,{...this.getCellBorder({sheetId:e,col:t,row:n}),...r})}setBorders(e,t,n,r){if(n===`clear`)return this.clearBorders(e,t,!0);for(let i of nn(t)){if(n===`all`)for(let t=i.top;t<=i.bottom;t++)for(let n=i.left;n<=i.right;n++)this.addBorder(e,n,t,{top:r,right:r,bottom:r,left:r});if(n===`h`||n===`hv`){if(i.top===i.bottom)continue;for(let t=i.left;t<=i.right;t++){this.addBorder(e,t,i.top,{bottom:r});for(let n=i.top+1;n<i.bottom;n++)this.addBorder(e,t,n,{top:r,bottom:r});this.addBorder(e,t,i.bottom,{top:r})}}if(n===`v`||n===`hv`){if(i.left===i.right)continue;for(let t=i.top;t<=i.bottom;t++){this.addBorder(e,i.left,t,{right:r});for(let n=i.left+1;n<i.right;n++)this.addBorder(e,n,t,{left:r,right:r});this.addBorder(e,i.right,t,{left:r})}}if(n===`left`||n===`external`)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.left,t,{left:r});if(n===`right`||n===`external`)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.right,t,{right:r});if(n===`top`||n===`external`)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.top,{top:r});if(n===`bottom`||n===`external`)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.bottom,{bottom:r})}}addBordersToMerge(e,t){let{left:n,right:r,top:i,bottom:a}=t,o=this.getCellBorder({sheetId:e,col:n,row:i}),s=this.getCellBorder({sheetId:e,col:r,row:a});this.clearBorders(e,[t]),o?.top&&this.setBorders(e,[{...t,bottom:i}],`top`,o.top),o?.left&&this.setBorders(e,[{...t,right:n}],`left`,o.left),s?.bottom?this.setBorders(e,[{...t,top:a}],`bottom`,s.bottom):o?.bottom&&this.setBorders(e,[{...t,top:a}],`bottom`,o.bottom),s?.right?this.setBorders(e,[{...t,left:r}],`right`,s.right):o?.right&&this.setBorders(e,[{...t,left:r}],`right`,o.right)}checkBordersUnchanged(e){let t=this.getCellBorder(e),n=!e.border?.bottom&&!e.border?.left&&!e.border?.right&&!e.border?.top;return!t&&n||w(t,e.border)?`NoChanges`:`Success`}import(e){if(Object.keys(e.borders||{}).length)for(let t of e.sheets)for(let[n,r]of wc(t.id,t.borders)){let{sheetId:t,col:i,row:a}=n,o=e.borders[r];this.setBorder(t,i,a,o,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,mn(e))}export(e){let t={};for(let n of e.sheets){let e={};for(let r=0;r<n.colNumber;r++)for(let i=0;i<n.rowNumber;i++){let a=this.getCellBorder({sheetId:n.id,col:r,row:i});if(a){let o=Sc(a,t),s={sheetId:n.id,col:r,row:i};e[o]??=[],e[o].push(s)}}n.borders=Cc(e)}e.borders=t}exportForExcel(e){this.export(e)}},UW=class extends VW{static getters=[`getCarousel`,`doesCarouselExist`];carousels={};allowDispatch(e){switch(e.type){case`CREATE_CAROUSEL`:return this.getters.getFigure(e.sheetId,e.figureId)?`DuplicatedFigureId`:`Success`;case`UPDATE_CAROUSEL`:return this.carousels[e.sheetId]?.[e.figureId]?`Success`:`InvalidFigureId`}return`Success`}handle(e){switch(e.type){case`CREATE_CAROUSEL`:this.getters.getFigure(e.sheetId,e.figureId)||this.dispatch(`CREATE_FIGURE`,{...e,tag:`carousel`}),this.history.update(`carousels`,e.sheetId,e.figureId,e.definition);break;case`UPDATE_CAROUSEL`:this.removeDeletedCharts(e,this.getters.getCarousel(e.figureId).items),this.history.update(`carousels`,e.sheetId,e.figureId,e.definition);break;case`DUPLICATE_SHEET`:{let t=this.getters.getFigures(e.sheetId);for(let n of t)if(n.tag===`carousel`){let t=n.id.split(`??`).pop(),r=`${e.sheetIdTo}??${t}`,i=this.getCarousel(n.id);if(i){let t={width:n.width,height:n.height};this.dispatch(`CREATE_CAROUSEL`,{sheetId:e.sheetIdTo,figureId:r,offset:n.offset,col:n.col,row:n.row,size:t,definition:{items:i.items.map(t=>{if(t.type===`carouselDataView`)return{...t};let n=t.chartId.split(`??`).pop(),r=`${e.sheetIdTo}??${n}`;return{...t,chartId:r}})}})}}break}case`DELETE_FIGURE`:this.history.update(`carousels`,e.sheetId,e.figureId,void 0);break;case`DELETE_SHEET`:this.history.update(`carousels`,e.sheetId,void 0);break}}doesCarouselExist(e){for(let t in this.carousels)if(this.carousels[t]?.[e])return!0;return!1}getCarousel(e){for(let t in this.carousels)if(this.carousels[t]?.[e])return this.carousels[t][e];throw Error(`There is no carousel with the given figureId: ${e}`)}removeDeletedCharts(e,t){let n=new Set(e.definition.items.filter(e=>e.type===`chart`).map(e=>e.chartId));for(let r of t)r.type===`chart`&&!n.has(r.chartId)&&this.dispatch(`DELETE_CHART`,{chartId:r.chartId,sheetId:e.sheetId})}import(e){for(let t of e.sheets){let e=(t.figures||[]).filter(e=>e.tag===`carousel`);for(let n of e)this.history.update(`carousels`,t.id,n.id,{items:n.data.items,title:n.data.title})}}export(e){for(let t of e.sheets){let e=t.figures.filter(e=>e.tag===`carousel`);for(let n of e)this.carousels[t.id]?.[n.id]&&(n.data={...n.data,...this.carousels[t.id]?.[n.id]})}}},WW=class{getters;baseFormula;alreadyAppliedNumberOffsets=[];previousStrings=[];baseFormulaWasTransformed=!1;constructor(e){this.getters=e}buildResult(e,t,n){let r={};if(e.length&&(r.N=e.join(`|`)),t.length&&(r.S=t),n.length){let e;e=n.some(e=>e.includes(`|`))?n:n.join(`|`),r.R=e}return r}resetBaseTo(e){this.baseFormula=yz.CopyWithDependenciesAndLiteral(e,e.sheetId,b(e.rangeDependencies),e.literalValues.numbers,e.literalValues.strings),this.alreadyAppliedNumberOffsets=e.literalValues.numbers.map(e=>0),this.previousStrings=e.literalValues.strings.map(e=>e.value),this.baseFormulaWasTransformed=!1}resetBase(){this.baseFormula&&(this.baseFormula=void 0,this.alreadyAppliedNumberOffsets=[],this.previousStrings=[],this.baseFormulaWasTransformed=!1)}squish(e,t){if(!e.isFormula)return this.resetBase(),e.content;let n=[],r=[],i=[];return!this.baseFormula||this.baseFormula.normalizedFormula!==e.compiledFormula.normalizedFormula?(this.resetBaseTo(e.compiledFormula),e.compiledFormula.toFormulaString(this.getters)):!this.baseFormulaWasTransformed&&w(e.compiledFormula.literalValues,this.baseFormula.literalValues)&&w(e.compiledFormula.rangeDependencies,this.baseFormula.rangeDependencies)?e.compiledFormula.toFormulaString(this.getters):(n=this.squishNumbers(e.compiledFormula.literalValues.numbers),r=this.squishStrings(e.compiledFormula.literalValues.strings),i=this.squishReferences(e.compiledFormula.rangeDependencies,t),this.baseFormulaWasTransformed=!0,this.buildResult(n,r,i))}squishSheet(e){let t=Object.keys(e),n={};for(let r=0;r<t.length;r++){let i=tn(t[r]),a=0;for(a=0;a+r+1<t.length;a++){let n=tn(t[a+r+1]);if(n.col!==i.col||n.row!==i.row+a+1||!w(e[t[a+r+1]],e[t[r]]))break}if(a>0){let o=`${t[r]}:${T(i.col,i.row+a)}`;n[o]=e[t[r]],r+=a}else n[t[r]]=e[t[r]]}return n}squishReferences(e,t){if(!this.baseFormula)throw Error(`No previous cell to squish against`);return e.map((e,n)=>this.squishOneReference(e,this.baseFormula.rangeDependencies,n,t))}squishOneReference(e,t,n,r){let i=t[n];if(w(i,e))return`=`;if(i.sheetId!==e.sheetId||i.prefixSheet!==e.prefixSheet||i.invalidSheetName!==e.invalidSheetName||i.invalidXc!==e.invalidXc||i.unboundedZone.bottom===void 0||i.unboundedZone.right===void 0||e.unboundedZone.bottom===void 0||e.unboundedZone.right===void 0)return t[n]=b(e),el(e,r,this.getters.getSheetName);for(let a=0;a<e.parts.length;a++)if(i.parts[a].colFixed!==e.parts[a].colFixed||i.parts[a].rowFixed!==e.parts[a].rowFixed)return t[n]=b(e),el(e,r,this.getters.getSheetName);let a=e.zone,o=i.zone;if(a.top!==a.bottom||a.left!==a.right||o.top!==o.bottom||o.left!==o.right)return t[n]=b(e),el(e,r,this.getters.getSheetName);let s=e.zone.left-i.zone.left,c=e.zone.top-i.zone.top;return i.zone=b(e.zone),i.unboundedZone=b(e.unboundedZone),s!==0&&c===0?`${s>0?`+`:`-`}C${Math.abs(s)}`:c!==0&&s===0?`${c>0?`+`:`-`}R${Math.abs(c)}`:el(e,r,this.getters.getSheetName)}squishNumbers(e){let t=e.map(e=>`=`);for(let n=0;n<e.length;n++){let r=e[n].value-(this.baseFormula.literalValues.numbers[n].value+this.alreadyAppliedNumberOffsets[n]||0);r!==0&&(t[n]=`+`+r.toString(),this.alreadyAppliedNumberOffsets[n]=(this.alreadyAppliedNumberOffsets[n]||0)+r)}return t}squishStrings(e){let t=e.map(e=>`=`);for(let n=0;n<e.length;n++){let r=e[n].value;r!==this.previousStrings[n]&&(t[n]=r,this.previousStrings[n]=r)}return t}};function GW(e){return[tn(e)]}function*KW(e,t){let n=tn(e),r=tn(t);for(let e=Math.min(n.col,r.col);e<=Math.max(n.col,r.col);e++)for(let t=Math.min(n.row,r.row);t<=Math.max(n.row,r.row);t++)yield{col:e,row:t}}var qW=class{previousCell;alreadyAppliedNumberOffset=[];previousString=[];alreadyAppliedReferenceOffset=[];previousOffset=void 0;*unsquishSheet(e,t,n){let r=Object.keys(e).map(e=>({cartesian:tn(e.split(`:`)[0]),key:e})).sort((e,t)=>e.cartesian.col===t.cartesian.col?e.cartesian.row-t.cartesian.row:e.cartesian.col-t.cartesian.col),i;for(let{key:a}of r){let r=e[a];if(r==null||r===``)continue;if(typeof r==`string`)if(r.startsWith(`=`)){i=`NEW_FORMULA`;let e=yz.Compile(r,t,n);this.previousCell=e,this.alreadyAppliedNumberOffset=e.literalValues.numbers.map(e=>e.value),this.previousString=e.literalValues.strings.map(e=>e.value),this.alreadyAppliedReferenceOffset=[...e.rangeDependencies],this.previousOffset=void 0}else i=`NOT_A_FORMULA`;else i=r.N||r.S||r.R?!i||i===`NEW_FORMULA`?`FIRST_OFFSET`:`COMBINE_OFFSET`:`NO_CHANGE`;let o=a.split(`:`),s=o.length===1?GW(a):KW(o[0],o[1]);switch(i){case`NEW_FORMULA`:case`NO_CHANGE`:for(let e of s)yield{position:e,compiled:this.previousCell};break;case`NOT_A_FORMULA`:for(let e of s)yield{position:e,content:r};break;case`FIRST_OFFSET`:this.previousOffset=r;for(let e of s)yield{position:e,compiled:this.unsquish(r,t,n)};break;case`COMBINE_OFFSET`:if(!this.previousOffset)throw Error(`No previous offset to combine with`);let e=r;this.previousOffset.N=e.N??this.previousOffset.N,this.previousOffset.S=e.S??this.previousOffset.S,this.previousOffset.R=e.R??this.previousOffset.R;for(let e of s)yield{position:e,compiled:this.unsquish(this.previousOffset,t,n)};break}}}unsquish(e,t,n){if(typeof e==`object`&&this.previousCell){let r={numbers:[],strings:[],dependencies:[]};if(e.N!==void 0&&e.N.length>0?r.numbers=e.N.split(`|`).map(this.adjustNumbers):r.numbers=this.previousCell.literalValues.numbers,e.S!==void 0&&e.S.length>0?r.strings=e.S.map(this.adjustStrings):r.strings=this.previousCell.literalValues.strings,e.R!==void 0&&this.previousCell){let i;i=typeof e.R==`string`?e.R.split(`|`):e.R,r.dependencies=i.map((e,r)=>{if(e===`=`)return{...this.alreadyAppliedReferenceOffset[r]};if(e.startsWith(`+`)||e.startsWith(`-`)){let t=parseInt(e.slice(2),10),n=e[0]===`+`?1:-1;if(e[1]===`R`){let e=this.alreadyAppliedReferenceOffset[r].zone.top+t*n,i={...this.alreadyAppliedReferenceOffset[r]};return i.zone=i.unboundedZone={...i.zone,top:e,bottom:e},this.alreadyAppliedReferenceOffset[r]=i,i}else if(e[1]===`C`){let e=this.alreadyAppliedReferenceOffset[r].zone.left+t*n,i=Object.assign({},this.alreadyAppliedReferenceOffset[r]);return i.zone=i.unboundedZone=Object.assign({},i.zone,{left:e,right:e}),this.alreadyAppliedReferenceOffset[r]=i,i}else throw Error(`Invalid reference offset format: ${e}`)}else{let i=n.getRangeFromSheetXC(t,e);return this.alreadyAppliedReferenceOffset[r]=i,i}})}else r.dependencies=this.previousCell.rangeDependencies;return yz.CopyWithDependenciesAndLiteral(this.previousCell,t,r.dependencies,r.numbers,r.strings)}throw Error(`Invalid squished element or no previous cell to unsquish against`)}adjustStrings=(e,t)=>e===`=`?{value:this.previousString[t]}:(this.previousString[t]=e,{value:e});adjustNumbers=(e,t)=>{if(e===`=`)return{value:this.alreadyAppliedNumberOffset[t]};{let n=parseFloat(e.slice(1)),r=(this.alreadyAppliedNumberOffset[t]||0)+n;return this.alreadyAppliedNumberOffset[t]=r,{value:r}}}},JW=class extends VW{static getters=[`zoneToXC`,`getCells`,`getTranslatedCellFormula`,`getCellStyle`,`getCellById`,`getFormulaString`,`getFormulaMovedInSheet`];nextId=1;cells={};adaptRanges({applyChange:e},t,n){for(let r of Object.keys(this.cells))for(let i of Object.values(this.cells[r]||{}))if(i.isFormula){for(let a of i.compiledFormula.rangeDependencies)if(a.sheetId===t||a.invalidSheetName===n.old){let t=e(a);t.changeType!==`NONE`&&this.history.update(`cells`,r,i.id,`compiledFormula`,`rangeDependencies`,i.compiledFormula.rangeDependencies.indexOf(a),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`;case`SET_FORMATTING`:return this.checkUselessSetFormatting(e);default:return`Success`}}handle(e){switch(e.type){case`SET_FORMATTING`:this.setStyleFormat(e.sheetId,e.target,e.style,e.format);break;case`CLEAR_FORMATTING`:this.clearFormatting(e.sheetId,e.target);break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?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 n of nn(t))for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++){let n=this.getters.getCell({sheetId:e,col:t,row:r});(n?.isFormula||n?.content)&&this.dispatch(`UPDATE_CELL`,{sheetId:e,content:``,col:t,row:r})}}clearFormatting(e,t){for(let n of nn(t))for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,style:null,format:``})}clearCells(e,t){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,content:``,style:null,format:``})}handleAddColumnsRows(e,t){let n,r;e.position===`before`?(n=S(e.base,e.base+e.quantity),r=e.base+e.quantity):(n=S(e.base+1,e.base+e.quantity+1),r=e.base),t(e.sheetId,r,n)}import(e){let t=performance.now();for(let t of e.sheets){let n=t.id,r=new SV,i=new qW;for(let e of i.unsquishSheet(t.cells,t.id,this.getters))if(e.content||e.compiled){let n={sheetId:t.id,col:e.position.col,row:e.position.row};e.compiled?r.set(n,{compiledFormula:e.compiled}):r.set(n,{content:e.content})}for(let[e,n]of[[`style`,t.styles],[`format`,t.formats]])for(let[i,a]of wc(t.id,n)){let t=r.get(i);t?t[e]=a:r.set(i,{[e]:a})}for(let i of r.keysForSheet(n)){let n=r.get(i);if(n?.content||n?.format||n?.style||n?.compiledFormula){let r=this.importCell(t.id,n?.content,n?.style?e.styles[n?.style]:void 0,n?.format?e.formats[n?.format]:void 0,n?.compiledFormula);this.history.update(`cells`,t.id,r.id,r),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:r.id,...i})}}}console.debug(`cells imported in`,performance.now()-t,`ms`)}export(e,t){let n={},r={};for(let i of e.sheets){let e=new WW(this.getters),a=[],o=[],s={},c=Object.values(this.cells[i.id]||{}).map(e=>this.getters.getCellPosition(e.id)).sort((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col);for(let l of c){let c=this.getters.getCell(l),u=this.extractCustomStyle(c);if(Object.keys(u).length){let e=Sc(u,n);a[e]??=[],a[e].push(l)}if(c.format){let e=Sc(c.format,r);o[e]??=[],o[e].push(l)}let d=T(l.col,l.row);c.isFormula?s[d]=t?e.squish(c,i.id):c.compiledFormula.toFormulaString(this.getters):c.content&&(s[d]=t?e.squish(c,i.id):c.content)}i.styles=Cc(a),i.formats=Cc(o),i.cells=t?e.squishSheet(s):s}e.styles=n,e.formats=r}importCell(e,t,n,r,i){let a=this.getNextCellId();return i?this.createFormulaCellFromCompiledFormula(a,i,r,n):this.createCell(a,t||``,r,n,e)}exportForExcel(e){this.export(e,!1);let t=[];for(let n in e.formats||[])Ds(e.formats[n])||(t.push(Number(n)),delete e.formats[n]);if(t.length)for(let n of e.sheets)for(let e in n.formats){let r=n.formats[e];r&&t.includes(r)&&delete n.formats[e]}}extractCustomStyle(e){let t={...e.style},n=!e.isFormula&&ra(e.content,R)?xe:ye;for(let r in t)(r!==`align`||!e.isFormula)&&t[r]===n[r]&&delete t[r];return t}getCells(e){return Object.values(this.cells[e]||{})}getCellById(e){let t=this.getters.getCellPosition(e);return this.cells[t.sheetId][e]}getFormulaString(e,t,n,r=!1){return yz.CopyWithDependencies(t,e,n).toFormulaString(this.getters,{useBoundedReference:r})}getTranslatedCellFormula(e,t,n,r){r instanceof yz||(r=yz.CompileForSerializedFormula(e,r));let i=this.getters.createAdaptedRanges(r.rangeDependencies,t,n,e);return this.getFormulaString(e,r,i)}getFormulaMovedInSheet(e,t){let n=this.getters.removeRangesSheetPrefix(e,t.rangeDependencies);return yz.CopyWithDependencies(t,e,n).toFormulaString(this.getters)}getCellStyle(e){return this.getters.getCell(e)?.style||{}}zoneToXC(e,t,n=[{colFixed:!1,rowFixed:!1}]){t=this.getters.expandZone(e,t);let r=T(t.left,t.top,n[0]),i=T(t.right,t.bottom,n.length>1?n[1]:n[0]),a=this.getters.getMainCellPosition({sheetId:e,col:t.left,row:t.top}),o=this.getters.getMainCellPosition({sheetId:e,col:t.right,row:t.bottom}),s=a.col===o.col&&a.row===o.row;return r!==i&&!s?r+`:`+i:r}setStyleFormat(e,t,n,r){if(!(n===void 0&&r===void 0))for(let i of nn(t))for(let t=i.left;t<=i.right;t++)for(let a=i.top;a<=i.bottom;a++){let i=this.getters.getCell({sheetId:e,col:t,row:a});this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:a,style:n?{...i?.style,...n}:void 0,format:r})}}copyColumnStyle(e,t,n){for(let r=0;r<this.getters.getNumberRows(e);r++){let i=this.getFormat(e,t,r);if(i.style||i.format)for(let t of n)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,...i})}}copyRowStyle(e,t,n){for(let r=0;r<this.getters.getNumberCols(e);r++){let i=this.getFormat(e,r,t);if(i.style||i.format)for(let t of n)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:r,row:t,...i})}}getFormat(e,t,n){let r={},i=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),a=this.getters.getCell(i);return a&&(a.style&&(r.style=a.style),a.format&&(r.format=a.format)),r}getNextCellId(){let e=this.nextId;return this.history.update(`nextId`,this.nextId+1),e}updateCell(e,t,n,r){let i=this.getters.getCell({sheetId:e,col:t,row:n}),a=r.content!==void 0||`formula`in r,o;o=a?Ot(r?.content):i?.isFormula?i.compiledFormula.toFormulaString(this.getters):i?.content||``;let s;s=r.style===void 0?i?i.style:void 0:r.style||void 0;let c=r.format===void 0?i&&i.format:r.format;if((a&&!o&&!r.formula||!a&&(!i||!i.isFormula&&i.content===``))&&!s&&!c){i&&(this.history.update(`cells`,e,i.id,void 0),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:void 0,col:t,row:n,sheetId:e}));return}let l=i?.id||this.getNextCellId(),u=this.createCell(l,o,c,s,e);this.history.update(`cells`,e,u.id,u),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:u.id,col:t,row:n,sheetId:e})}createCell(e,t,n,r,i){return t.startsWith(`=`)?this.createFormulaCell(e,t,n,r,i):this.createLiteralCell(e,t,n,r)}createLiteralCell(e,t,n,r){let i=this.getters.getLocale(),a=sc(t,i);return n||=typeof a==`number`?ds(t,i)||fs(t):void 0,!Os(n)&&!t.startsWith(`'`)&&!M(t)&&(t=P(a)),{id:e,content:t,style:r,format:n,isFormula:!1,parsedValue:a}}createFormulaCell(e,t,n,r,i){let a=yz.Compile(t,i,this.getters);return this.createFormulaCellFromCompiledFormula(e,a,n,r)}createFormulaCellFromCompiledFormula(e,t,n,r){return{id:e,format:n,style:r,isFormula:!0,compiledFormula:t}}checkCellOutOfSheet(e){let{sheetId:t,col:n,row:r}=e;return this.getters.tryGetSheet(t)?An(n,r,this.getters.getSheetZone(t))?`Success`:`TargetOutOfSheet`:`InvalidSheetId`}checkUselessClearCell(e){let t=this.getters.getCell(e);return!t||!t.isFormula&&!t.content&&!t.style&&!t.format?`NoChanges`:`Success`}checkUselessUpdateCell(e){let t=this.getters.getCell(e),n=`content`in e||`formula`in e,r=`style`in e,i=`format`in e;return(!n||t?.isFormula&&t.compiledFormula.toFormulaString(this.getters)===e.content||!t?.isFormula&&t?.content===e.content)&&(!r||w(t?.style,e.style))&&(!i||t?.format===e.format)?`NoChanges`:`Success`}checkUselessSetFormatting(e){let{sheetId:t,target:n}=e,r=`style`in e,i=`format`in e;if(!r&&!i)return`NoChanges`;for(let a of nn(n))for(let n=a.left;n<=a.right;n++)for(let o=a.top;o<=a.bottom;o++){let a={sheetId:t,col:n,row:o},s=this.getters.getCell(a);if(r&&!w(s?.style,e.style)||i&&s?.format!==e.format)return`Success`}return`NoChanges`}},YW=class extends VW{static getters=[`isChartDefined`,`getChartDefinition`,`getChartType`,`getChartIds`,`getChart`,`getFigureIdFromChartId`,`getContextCreationChart`];charts={};createChart=b_(this.getters);validateChartDefinition=e=>S_(this,e.definition);adaptRanges(e){for(let[t,n]of Object.entries(this.charts)){if(!n)continue;let r=n.chart.updateRanges(e);this.history.update(`charts`,t,r?{figureId:n.figureId,chart:r}:void 0)}}allowDispatch(e){switch(e.type){case`CREATE_CHART`:return this.checkValidations(e,this.chainValidations(this.checkFigureArguments,this.validateChartDefinition,this.checkChartDuplicate));case`UPDATE_CHART`:return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartExists,this.checkChartChanged));case`DELETE_CHART`:return`SubCommandOnly`;default:return`Success`}}handle(e){switch(e.type){case`CREATE_CHART`:let{col:t,row:n,offset:r,size:i,sheetId:a,figureId:o}=e;!this.getters.getFigure(a,o)&&r!==void 0&&t!==void 0&&n!==void 0&&this.addFigure(o,a,t,n,r,i),this.addChart(e.figureId,e.chartId,e.definition);break;case`UPDATE_CHART`:this.addChart(e.figureId,e.chartId,e.definition);break;case`DUPLICATE_SHEET`:for(let t of this.getChartIds(e.sheetId)){let{chart:n,figureId:r}=this.charts[t]||{};if(!n||!r)continue;let i=this.getters.getFigure(e.sheetId,r);if(!i)continue;let a=r.split(`??`).pop(),o=`${e.sheetIdTo}??${a}`,s=t.split(`??`).pop(),c=`${e.sheetIdTo}??${s}`,l=n.duplicateInDuplicatedSheet(e.sheetIdTo);l&&this.dispatch(`CREATE_CHART`,{figureId:o,chartId:c,col:i.col,row:i.row,offset:i.offset,size:{width:i.width,height:i.height},definition:l.getDefinition(),sheetId:e.sheetIdTo})}break;case`DELETE_FIGURE`:for(let t in this.charts)this.charts[t]?.figureId===e.figureId&&this.dispatch(`DELETE_CHART`,{chartId:t,sheetId:e.sheetId});break;case`DELETE_CHART`:this.isChartDefined(e.chartId)&&this.history.update(`charts`,e.chartId,void 0);break;case`DELETE_SHEET`:for(let t of this.getChartIds(e.sheetId))this.history.update(`charts`,t,void 0);break}}getContextCreationChart(e){return this.charts[e]?.chart.getContextCreation()}getChart(e){return this.charts[e]?.chart}getFigureIdFromChartId(e){if(!this.charts[e])throw Error(`Chart with id ${e} does not exist.`);return this.charts[e].figureId}getChartType(e){let t=this.charts[e]?.chart.type;if(!t)throw Error(`Chart not defined.`);return t}isChartDefined(e){return e in this.charts&&this.charts!==void 0}getChartIds(e){return Object.entries(this.charts).filter(([,t])=>t?.chart.sheetId===e).map(([e])=>e)}getChartDefinition(e){let t=this.charts[e]?.chart.getDefinition();if(!t)throw Error(`There is no chart with the given id: ${e}`);return t}import(e){for(let t of e.sheets)if(t.figures){for(let e of t.figures)if(e.tag===`chart`){let n=e.data.chartId,r=this.createChart(e.id,e.data,t.id);this.charts[n]={chart:r,figureId:e.id}}else if(e.tag===`carousel`)for(let n in e.data.chartDefinitions||{}){let r=e.data.chartDefinitions[n],i=this.createChart(e.id,r,t.id);this.charts[n]={chart:i,figureId:e.id}}}}export(e){if(e.sheets)for(let t of e.sheets){let e=this.getters.getFigures(t.id),n=[];for(let t of e){let e=t,r=Object.keys(this.charts).find(e=>this.charts[e]?.figureId===t.id);if(e&&e.tag===`chart`&&r){let t=this.charts[r]?.chart.getDefinition();t&&(e.data={...t,chartId:r},n.push(e))}else if(e&&e.tag===`carousel`){let r=Object.keys(this.charts).filter(e=>this.charts[e]?.figureId===t.id),i={};for(let e of r)i[e]=this.charts[e]?.chart.getDefinition();e.data={chartDefinitions:i},n.push(e)}else n.push(e)}t.figures=n}}addFigure(e,t,n,r,i,a={width:536,height:335}){this.dispatch(`CREATE_FIGURE`,{sheetId:t,figureId:e,col:n,row:r,offset:i,size:a,tag:`chart`})}addChart(e,t,n){let r=this.getters.getFigureSheetId(e);if(r){let i=this.createChart(e,n,r);this.history.update(`charts`,t,{figureId:e,chart:i})}}checkChartDuplicate(e){return this.isChartDefined(e.chartId)?`DuplicatedChartId`:`Success`}checkChartExists(e){return this.isChartDefined(e.chartId)?`Success`:`ChartDoesNotExist`}checkChartChanged(e){return e.figureId===this.charts[e.chartId]?.figureId&&w(this.getChartDefinition(e.chartId),e.definition)?`NoChanges`:`Success`}checkFigureArguments(e){return this.getters.getFigure(e.sheetId,e.figureId)||e.offset!==void 0&&e.col!==void 0&&e.row!==void 0?`Success`:`MissingFigureArguments`}};function XW(e){return e===``?NaN:Number(e)}var ZW=class extends VW{static getters=[`getConditionalFormats`,`getRulesSelection`,`getRulesByCell`,`getAdaptedCfRanges`];cfRules={};adaptCFFormulas({applyChange:e,adaptFormulaString:t}){for(let n in this.cfRules)for(let r of this.cfRules[n])if(r.rule.type===`DataBarRule`&&r.rule.rangeValues){let t=e(r.rule.rangeValues);switch(t.changeType){case`REMOVE`:this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`rangeValues`,void 0);break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`rangeValues`,t.range);break}}else if(r.rule.type===`CellIsRule`)for(let e=0;e<r.rule.values.length;e++)this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`values`,e,t(n,r.rule.values[e]));else if(r.rule.type===`IconSetRule`)for(let e of[`lowerInflectionPoint`,`upperInflectionPoint`])r.rule[e].type===`formula`&&this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,e,`value`,t(n,r.rule[e].value));else if(r.rule.type===`ColorScaleRule`)for(let e of[`minimum`,`maximum`,`midpoint`]){let i=r.rule[e];i?.type===`formula`&&i?.value&&this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,e,`value`,t(n,i.value))}}adaptCFRanges(e,{applyChange:t}){for(let n of this.cfRules[e])for(let r of n.ranges){let i=t(r);switch(i.changeType){case`REMOVE`:let t=n.ranges.slice();t.splice(n.ranges.indexOf(r),1),t.length>=1?this.history.update(`cfRules`,e,this.cfRules[e].indexOf(n),`ranges`,t):this.removeConditionalFormatting(n.id,e);break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`cfRules`,e,this.cfRules[e].indexOf(n),`ranges`,n.ranges.indexOf(r),i.range);break}}}adaptRanges(e,t){let n=t?[t]:Object.keys(this.cfRules);for(let t of n)this.adaptCFRanges(t,e);this.adaptCFFormulas(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(let t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case`DELETE_SHEET`:let t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update(`cfRules`,t);break;case`ADD_CONDITIONAL_FORMAT`:let n={...e.cf,ranges:e.ranges.map(t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId))};this.addConditionalFormatting(n,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);break}}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){let n=new Set;return t.forEach(t=>{this.getRulesByZone(e,t).forEach(e=>{n.add(e)})}),Array.from(n)}getRulesByZone(e,t){let n=new Set;for(let r=t.top;r<=t.bottom;r++)for(let i=t.left;i<=t.right;i++)this.getRulesByCell(e,i,r).forEach(e=>{n.add(e.id)});return n}getRulesByCell(e,t,n){let r=[];for(let i of this.cfRules[e])for(let e of i.ranges)An(t,n,e.zone)&&r.push(i);return new Set(r.map(t=>this.mapToConditionalFormat(e,t)))}getAdaptedCfRanges(e,t,n,r){if(n.length===0&&r.length===0)return;let i=this.getters.getConditionalFormats(e),a=i.findIndex(e=>e.id===t.id),o=[];a>-1&&(o=i[a].ranges.map(pn));let s=nn(o,r);return nn([...n,...s],[]).map(t=>this.getters.getRangeDataFromZone(e,t))}mapToConditionalFormat(e,t,{useBoundedReference:n}={useBoundedReference:!1}){let r=t.ranges.map(t=>this.getters.getRangeString(t,e,{useBoundedReference:n}));return t.rule.type===`DataBarRule`?{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues&&this.getters.getRangeString(t.rule.rangeValues,e,{useBoundedReference:n})},ranges:r}:{...t,rule:{...t.rule},ranges:r}}mapToConditionalFormatInternal(e,t){let n=t.ranges.map(t=>this.getters.getRangeFromSheetXC(e,t));return t.rule.type===`DataBarRule`?{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues?this.getters.getRangeFromSheetXC(e,t.rule.rangeValues):void 0},ranges:n}:{...t,rule:{...t.rule},ranges:n}}addConditionalFormatting(e,t){let n=this.cfRules[t].slice(),r=n.findIndex(t=>t.id===e.id),i=this.mapToConditionalFormatInternal(t,e);r>-1?n.splice(r,1,i):n.push(i),this.history.update(`cfRules`,t,n)}checkValidPriorityChange(e,t,n){if(!this.cfRules[n])return`InvalidSheetId`;let r=this.cfRules[n].findIndex(t=>t.id===e);if(r===-1)return`InvalidConditionalFormatId`;let i=r-t;return i<0||i>=this.cfRules[n].length?`InvalidConditionalFormatId`:`Success`}checkEmptyRange(e){return e.ranges.length?`Success`:`EmptyRange`}checkCFRule(e){let t=e.cf.rule;switch(t.type){case`CellIsRule`:return zm.has(t.operator)?this.checkValidations(t,this.checkOperatorArgsNumber,this.checkCFValues):`InvalidConditionalFormatType`;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)));case`DataBarRule`:return`Success`}return`InvalidConditionalFormatType`}checkCFHasChanged(e){let t=this.mapToConditionalFormatInternal(e.sheetId,{...e.cf,ranges:e.ranges.map(t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId))}),n=this.cfRules[e.sheetId]?.find(t=>t.id===e.cf.id);return n&&w(t,n)?`NoChanges`:`Success`}checkOperatorArgsNumber(e){let t=Z.get(e.operator).numberOfValues({type:e.operator,values:e.values});if(t===void 0||t>2)throw Error(`Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.`);let n=[],r=e=>e===void 0||e===``;return t>=1&&r(e.values[0])&&n.push(`FirstArgMissing`),t>=2&&r(e.values[1])&&n.push(`SecondArgMissing`),n.length?n:`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(e.type!==`formula`)return`Success`;if(yz.IsBadExpression(e.value||``))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){let t=e.lowerInflectionPoint.value,n=e.upperInflectionPoint.value;return[`number`,`percentage`,`percentile`].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(n)?`LowerBiggerThanUpper`:`Success`}checkMinBiggerThanMax(e){let t=e.minimum.value,n=e.maximum.value;return[`number`,`percentage`,`percentile`].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&XW(t)>=XW(n)?`MinBiggerThanMax`:`Success`}checkMidBiggerThanMax(e){let t=e.midpoint?.value,n=e.maximum.value;return e.midpoint&&[`number`,`percentage`,`percentile`].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&XW(t)>=XW(n)?`MidBiggerThanMax`:`Success`}checkMinBiggerThanMid(e){let t=e.minimum.value,n=e.midpoint?.value;return e.midpoint&&[`number`,`percentage`,`percentile`].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&XW(t)>=XW(n)?`MinBiggerThanMid`:`Success`}checkCFValues(e){for(let t of e.values)if(t.startsWith(`=`)&&yz.IsBadExpression(t))return`ValueCellIsInvalidFormula`;return`Success`}removeConditionalFormatting(e,t){let n=this.cfRules[t].findIndex(t=>t.id===e);if(n!==-1){let e=this.cfRules[t].slice();e.splice(n,1),this.history.update(`cfRules`,t,e)}}changeCFPriority(e,t,n){let r=this.cfRules[n].findIndex(t=>t.id===e),i=this.cfRules[n][r],a=r-t,o=[...this.cfRules[n]];o.splice(r,1),o.splice(a,0,i),this.history.update(`cfRules`,n,o)}},QW=class extends VW{static getters=[`cellHasListDataValidationIcon`,`getDataValidationRule`,`getDataValidationRules`,`getValidationRuleForCell`];rules={};adaptRanges(e,t){this.adaptDVRanges(t,e),this.adaptDVFormulas(e)}adaptDVFormulas({adaptFormulaString:e}){for(let t in this.rules){let n=this.rules[t];for(let r=n.length-1;r>=0;r--){let n=this.rules[t][r];for(let i=0;i<n.criterion.values.length;i++){let a=e(t,n.criterion.values[i]);this.history.update(`rules`,t,r,`criterion`,`values`,i,a)}}}}adaptDVRanges(e,{applyChange:t}){let n=this.rules[e];for(let r=n.length-1;r>=0;r--){let n=this.rules[e][r];for(let i=n.ranges.length-1;i>=0;i--){let a=n.ranges[i],o=t(a);switch(o.changeType){case`REMOVE`:if(n.ranges.length===1)this.removeDataValidationRule(e,n.id);else{let t=n.ranges.slice();t.splice(i,1),this.history.update(`rules`,e,r,`ranges`,t)}break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`rules`,e,r,`ranges`,i,o.range);break}}}}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));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`;break}return`Success`}handle(e){switch(e.type){case`CREATE_SHEET`:this.history.update(`rules`,e.sheetId,[]);break;case`DUPLICATE_SHEET`:{let t=b(this.rules[e.sheetId]).map(t=>({...t,ranges:t.ranges.map(t=>tl(e.sheetId,e.sheetIdTo,t))}));this.history.update(`rules`,e.sheetIdTo,t);break}case`DELETE_SHEET`:{let 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`:{let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e));this.addDataValidationRule(e.sheetId,{...e.rule,ranges:t});break}case`DELETE_CONTENT`:{let t=nn(e.target),n=e.sheetId;for(let e of t)for(let t=e.top;t<=e.bottom;t++)for(let r=e.left;r<=e.right;r++){let e=this.getValidationRuleForCell({sheetId:n,col:r,row:t});if(!e)continue;let i=this.getters.getCell({sheetId:n,col:r,row:t});if(e.criterion.type===`isBoolean`||e.criterion.type===`isValueInList`&&!i?.isFormula&&!i?.content){let e=this.rules[n],i=[this.getters.getRangeFromSheetXC(n,T(r,t))],a=this.removeRangesFromRules(n,i,e);this.history.update(`rules`,n,a)}}}}}getDataValidationRules(e){return this.rules[e]}getDataValidationRule(e,t){return this.rules[e].find(e=>e.id===t)}getValidationRuleForCell({sheetId:e,col:t,row:n}){if(this.rules[e]){for(let r of this.rules[e])for(let e of r.ranges)if(An(t,n,e.zone))return r}}cellHasListDataValidationIcon(e){let t=this.getValidationRuleForCell(e);return t?(t.criterion.type===`isValueInList`||t.criterion.type===`isValueInRange`)&&(t.criterion.displayStyle===`arrow`||t.criterion.displayStyle===`chip`):!1}addDataValidationRule(e,t){let n=this.rules[e];t.criterion.type===`isBoolean`?this.setCenterStyleToBooleanCells(t):t.criterion.type===`isValueInList`&&(t.criterion.values=Array.from(new Set(t.criterion.values)));let r=this.removeRangesFromRules(e,t.ranges,n,t.id),i=r.findIndex(e=>e.id===t.id);i===-1?this.history.update(`rules`,e,[...r,t]):(r[i]=t,this.history.update(`rules`,e,r))}removeRangesFromRules(e,t,n,r){n=b(n);for(let e of n)e.id!==r&&(e.ranges=this.getters.recomputeRanges(e.ranges,t));return n.filter(e=>e.ranges.length>0)}removeDataValidationRule(e,t){let n=this.rules[e].filter(e=>e.id!==t);this.history.update(`rules`,e,n)}setCenterStyleToBooleanCells(e){for(let t of rl(e.ranges)){let e=this.getters.getCell(t),n={...e?.style,align:e?.style?.align??`center`,verticalAlign:e?.style?.verticalAlign??`middle`};this.dispatch(`UPDATE_CELL`,{...t,style:n})}}checkEmptyRange(e){return e.ranges.length?`Success`:`EmptyRange`}import(e){for(let t of e.sheets)if(this.rules[t.id]=[],t.dataValidationRules)for(let 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(let t of e.sheets){t.dataValidationRules=[];for(let 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(let t of e.sheets){t.dataValidationRules=[];for(let e of this.rules[t.id]){let n={...b(e),ranges:e.ranges.map(e=>this.getters.getRangeString(e,t.id,{useBoundedReference:!0}))};e.criterion.type===`isValueInRange`&&(n.criterion.values=e.criterion.values.map(e=>{let n=this.getters.getRangeFromSheetXC(t.id,e);return this.getters.getRangeString(n,t.id,{useBoundedReference:!0,useFixedReference:!0})})),t.dataValidationRules.push(n)}}}checkCriterionTypeIsValid(e){return Z.contains(e.rule.criterion.type)?`Success`:`UnknownDataValidationCriterionType`}checkCriterionHasValidNumberOfValues(e){let t=e.rule.criterion,n=Z.get(t.type).numberOfValues(t);return n!==void 0&&t.values.length!==n?`InvalidNumberOfCriterionValues`:`Success`}checkCriterionValuesAreValid(e){let t=e.rule.criterion,n=Z.get(t.type);return t.values.some(e=>n.allowedValues===`onlyFormulas`&&!e.startsWith(`=`)?!0:e.startsWith(`=`)?n.allowedValues===`onlyLiterals`||yz.IsBadExpression(e):!n.isCriterionValueValid(e))?`InvalidDataValidationCriterionValue`:`Success`}checkValidRange(e){return e.ranges.map(e=>this.getters.getRangeFromRangeData(e)).map(t=>this.getters.getRangeString(t,e.sheetId)).some(e=>!this.getters.isRangeValid(e))?`InvalidRange`:`Success`}},$W=class extends VW{static getters=[`getFigures`,`getFigure`,`getFigureSheetId`];figures={};insertionOrders=[];adaptRanges({applyChange:e},t){for(let n of this.getFigures(t)){let r=e(this.getters.getRangeFromZone(t,{left:n.col,right:n.col,top:n.row,bottom:n.row}));if(r.changeType===`MOVE`)this.history.update(`figures`,t,n.id,`col`,r.range.zone.right),this.history.update(`figures`,t,n.id,`row`,r.range.zone.bottom);else if(r.changeType===`REMOVE`){let r=e(this.getters.getRangeFromZone(t,{left:0,right:n.col-1,top:0,bottom:n.row-1})),{offset:i,col:a,row:o}=n;r.changeType!==`NONE`&&(a=r.range.zone.right+1,o=r.range.zone.bottom+1),{offset:i,col:a,row:o}=this.getPositionInSheet(t,{...n,col:a,row:o}),this.history.update(`figures`,t,n.id,`offset`,i),this.history.update(`figures`,t,n.id,`col`,a),this.history.update(`figures`,t,n.id,`row`,o)}}}allowDispatch(e){switch(e.type){case`CREATE_FIGURE`:return this.checkValidations(e,this.checkFigureDuplicate,this.checkFigureAnchorOffset);case`UPDATE_FIGURE`:return this.checkValidations(e,this.checkFigureExists,this.checkFigureAnchorOffset);case`DELETE_FIGURE`:return this.checkFigureExists(e);default:return`Success`}}beforeHandle(e){switch(e.type){case`DELETE_SHEET`:this.getters.getFigures(e.sheetId).forEach(t=>{this.dispatch(`DELETE_FIGURE`,{figureId:t.id,sheetId:e.sheetId})});break}}handle(e){switch(e.type){case`CREATE_SHEET`:this.figures[e.sheetId]={};break;case`DELETE_SHEET`:this.deleteSheet(e.sheetId);break;case`CREATE_FIGURE`:let t={id:e.figureId,col:e.col,row:e.row,offset:e.offset,width:e.size.width,height:e.size.height,tag:e.tag};this.addFigure(t,e.sheetId);break;case`UPDATE_FIGURE`:this.updateFigure(e);break;case`DELETE_FIGURE`:this.removeFigure(e.figureId,e.sheetId);break;case`REMOVE_COLUMNS_ROWS`:e.dimension===`COL`?this.onColRemove(e.sheetId):this.onRowRemove(e.sheetId);break;case`DUPLICATE_SHEET`:for(let t of this.getFigures(e.sheetId)){let n=t.id,r=this.figures[e.sheetId]?.[n];if(!r)continue;let i=n.split(`??`).pop(),a=`${e.sheetIdTo}??${i}`;this.dispatch(`CREATE_FIGURE`,{figureId:a,...r,size:{width:r.width,height:r.height},sheetId:e.sheetIdTo})}break}}onColRemove(e){let t=this.getters.getNumberCols(e),n=Array(t+1);n[t]=0;for(let r=t-1;r>=0;r--)n[r]=n[r+1]+this.getters.getColSize(e,r);for(let t of this.getFigures(e))if(t.offset.x+t.width>n[t.col]){let r=t.offset.x,i=t.col;for(r=Math.min(r,n[i]-t.width);r<0&&i>0;)i--,r=n[i]-t.width;r!==t.offset.x&&this.history.update(`figures`,e,t.id,`offset`,{x:Math.max(r,0),y:t.offset.y}),i!==t.col&&this.history.update(`figures`,e,t.id,`col`,i)}}onRowRemove(e){let t=this.getters.getNumberRows(e),n=Array(t+1);n[t]=0;for(let r=t-1;r>=0;r--)n[r]=n[r+1]+(this.getters.getUserRowSize(e,r)??23);for(let t of this.getFigures(e))if(t.offset.y+t.height>n[t.row]){let r=t.offset.y,i=t.row;for(let t=this.getters.getUserRowSize(e,i)??23;t<r;t=this.getters.getUserRowSize(e,i)??23)i+=1,r-=t;for(r=Math.min(r,n[i]-t.height);r<0&&i>0;)i--,r=n[i]-t.height;r!==t.offset.y&&this.history.update(`figures`,e,t.id,`offset`,{x:t.offset.x,y:Math.max(0,r)}),i!==t.row&&this.history.update(`figures`,e,t.id,`row`,i)}else t.offset.y+t.height>n[0]&&this.history.update(`figures`,e,t.id,`offset`,{x:t.offset.x,y:Math.max(n[0]-t.height,0)})}getPositionInSheet(e,t){let{numberOfRows:n,numberOfCols:r}=this.getters.getSheetSize(e),i=0,a=0,o,s,{col:c,row:l}=t,u={...t.offset};for(o=n;i<t.height&&o>0;o--)i+=this.getters.getUserRowSize(e,o-1)??23;for(l>o?(l=o,u.y=Math.max(i-t.height,0)):l===o&&(u.y=x(u.y,0,Math.max(i-t.height,0))),s=r;a<t.width&&s>0;s--)a+=this.getters.getColSize(e,s-1);return c>s?(c=s,u.x=Math.max(a-t.width,0)):s===c&&(u.x=x(u.x,0,Math.max(a-t.width,0))),{col:c,row:l,offset:u}}updateFigure(e){if(!(`figureId`in e)||!(`sheetId`in e))return;let{figureId:t,sheetId:n,...r}=e,i={...this.getFigure(n,t),...r};for(let[e,t]of Object.entries(r))switch(e){case`tag`:this.history.update(`figures`,n,i.id,e,t);break;case`offset`:this.history.update(`figures`,n,i.id,e,t);break;case`col`:case`row`:case`width`:case`height`:t!==void 0&&this.history.update(`figures`,n,i.id,e,t);break}}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){return this.figures[e.sheetId]?.[e.figureId]===void 0?`FigureDoesNotExist`:`Success`}checkFigureDuplicate(e){return Object.values(this.figures).find(t=>t?.[e.figureId])?`DuplicatedFigureId`:`Success`}checkFigureAnchorOffset(e){return e.col<0||e.row<0||e.offset&&(e.offset.x<0||e.offset.y<0)?`WrongSheetPosition`:`Success`}getFigures(e){let t=[];for(let n of this.insertionOrders){let r=this.figures[e]?.[n];r&&t.push(r)}return t}getFigure(e,t){return this.figures[e]?.[t]}getFigureSheetId(e){return Object.keys(this.figures).find(t=>this.figures[t]?.[e]!==void 0)}import(e){for(let t of e.sheets)for(let e of t.figures)this.addFigure(e,t.id)}export(e){for(let t of e.sheets)for(let e of this.getFigures(t.id))t.figures.push({...e,data:void 0})}exportForExcel(e){return this.export(e)}},eG=class extends VW{static getters=[`getHeaderGroups`,`getGroupsLayers`,`getVisibleGroupLayers`,`getHeaderGroup`,`getHeaderGroupsInZone`,`isGroupFolded`,`isRowFolded`,`isColFolded`];groups={};allowDispatch(e){switch(e.type){case`GROUP_HEADERS`:{let{start:t,end:n,sheetId:r}=e;if(!this.getters.tryGetSheet(r))return`InvalidSheetId`;if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,n])||t>n)return`InvalidHeaderGroupStartEnd`;if(this.findGroupWithStartEnd(e.sheetId,e.dimension,t,n))return`HeaderGroupAlreadyExists`;break}case`UNGROUP_HEADERS`:{let{start:t,end:n,sheetId:r}=e;if(!this.getters.tryGetSheet(r))return`InvalidSheetId`;if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,n])||t>n)return`InvalidHeaderGroupStartEnd`;break}case`UNFOLD_HEADER_GROUP`:case`FOLD_HEADER_GROUP`:if(!this.getters.tryGetSheet(e.sheetId))return`InvalidSheetId`;let t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);if(!t)return`UnknownHeaderGroup`;if(S(0,this.getters.getNumberHeaders(e.sheetId,e.dimension)).every(n=>n>=t.start&&n<=t.end||this.getters.isHeaderHiddenByUser(e.sheetId,e.dimension,n)))return`NotEnoughElements`;break}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`:{let t=b(this.groups[e.sheetId]);this.history.update(`groups`,e.sheetIdTo,t);break}case`DELETE_SHEET`:{let t={...this.groups};delete t[e.sheetId],this.history.update(`groups`,t);break}case`ADD_COLUMNS_ROWS`:let t=yt(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`:{let t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.unfoldHeaderGroup(e.sheetId,e.dimension,t);break}case`FOLD_HEADER_GROUP`:{let 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`:{let t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(let n of t)this.unfoldHeaderGroup(e.sheetId,e.dimension,n);break}case`FOLD_ALL_HEADER_GROUPS`:{let t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(let n of t)this.foldHeaderGroup(e.sheetId,e.dimension,n);break}case`FOLD_HEADER_GROUPS_IN_ZONE`:case`UNFOLD_HEADER_GROUPS_IN_ZONE`:{let t=e.type===`UNFOLD_HEADER_GROUPS_IN_ZONE`?`unfold`:`fold`,n=this.getGroupsLayers(e.sheetId,e.dimension);t===`fold`&&n.reverse();let r=n.flat(),i=e.dimension===`ROW`?e.zone.top:e.zone.left,a=e.dimension===`ROW`?e.zone.bottom:e.zone.right,o=new Set;for(let e=i;e<=a;e++){let n=r.filter(t=>t.start-1<=e&&e<=t.end);for(let e of n)if(!(t===`fold`&&e.isFolded||t===`unfold`&&!e.isFolded)){o.add(e);break}}for(let n of o)t===`unfold`?this.unfoldHeaderGroup(e.sheetId,e.dimension,n):this.foldHeaderGroup(e.sheetId,e.dimension,n);break}}}getHeaderGroups(e,t){return this.groups[e][t]}getHeaderGroup(e,t,n,r){return this.getHeaderGroups(e,t).find(e=>e.start===n&&e.end===r)}getHeaderGroupsInZone(e,t,n){return this.getHeaderGroups(e,t).filter(e=>{let r=t===`ROW`?n.top:n.left,i=t===`ROW`?n.bottom:n.right;return this.doGroupOverlap(e,r,i)})}getGroupsLayers(e,t){let n=this.getHeaderGroups(e,t);return this.bricksFallingAlgorithm(n,0,0)}getVisibleGroupLayers(e,t){let n=this.getGroupsLayers(e,t);for(let r of n)for(let n=r.length-1;n>=0;n--){let i=r[n];i.start!==0&&S(i.start-1,i.end+1).every(n=>this.getters.isHeaderHiddenByUser(e,t,n))&&r.splice(n,1)}return n.filter(e=>e.length>0)}isGroupFolded(e,t,n,r){return this.getHeaderGroup(e,t,n,r)?.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,n,r=0){let i={};for(let t of e)i[this.getGroupId(t)]=t.isFolded;let a={};for(let t of e)for(let e=t.start;e<=t.end;e++)a[e]=a[e]?a[e]+1:1;for(let e=t;e<=n;e++)a[e]=a[e]?a[e]+r:r;let o=Math.max(...Object.values(a),0),s=Array.from({length:o},()=>[]),c=Math.max(n,...e.map(e=>e.end)),l=Math.min(t,...e.map(e=>e.start));for(let e=l;e<=c;e++){let t=a[e]||0;for(let n=0;n<t;n++){let t=s[n].at(-1);if(t&&kt([t.end,e]))t.end++;else{let t={start:e,end:e};s[n].push(t)}}}for(let e of s)for(let t of e)t.isFolded=i[this.getGroupId(t)];return s}groupHeaders(e,t,n,r){let i=this.getHeaderGroups(e,t),a=this.bricksFallingAlgorithm(i,n,r,1).flat();this.history.update(`groups`,e,t,this.removeDuplicateGroups(a))}unGroupHeaders(e,t,n,r){let i=this.getHeaderGroups(e,t),a=this.bricksFallingAlgorithm(i,n,r,-1).flat();this.history.update(`groups`,e,t,this.removeDuplicateGroups(a))}moveGroupsOnHeaderInsertion(e,t,n,r){let i=this.groups[e][t];for(let a=0;a<i.length;a++){let o=i[a],[s,c]=yl(n,r,[o.start,o.end]);(s!==o.start||c!==o.end)&&this.history.update(`groups`,e,t,a,{...o,start:s,end:c})}}moveGroupsOnHeaderDeletion(e,t,n){let r=this.getHeaderGroups(e,t),i=[];for(let e of r){let t=bl(n,S(e.start,e.end+1));t.length!==0&&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,n){return e.start<=n&&e.end>=t}removeDuplicateGroups(e){let t={};for(let n of e)t[this.getGroupId(n)]=n;return Object.values(t)}findGroupWithStartEnd(e,t,n,r){return this.getHeaderGroups(e,t).find(e=>e.start===n&&e.end===r)}foldHeaderGroup(e,t,n){let r=this.getGroupIndex(e,t,n.start,n.end);if(r===void 0)return;this.history.update(`groups`,e,t,r,`isFolded`,!0);let i=this.getters.getHeaderGroups(e,t);for(let r=0;r<i.length;r++){let a=i[r];a.start===n.start&&a.end<=n.end&&this.history.update(`groups`,e,t,r,`isFolded`,!0)}}unfoldHeaderGroup(e,t,n){let r=this.getGroupIndex(e,t,n.start,n.end);if(r===void 0)return;this.history.update(`groups`,e,t,r,`isFolded`,!1);let i=this.getters.getHeaderGroups(e,t);for(let r=0;r<i.length;r++){let a=i[r];a.start===n.start&&a.end>=n.end&&this.history.update(`groups`,e,t,r,`isFolded`,!1)}}getGroupIndex(e,t,n,r){let i=this.groups[e][t].findIndex(e=>e.start===n&&e.end===r);return i===-1?void 0:i}import(e){for(let t of e.sheets)if(this.groups[t.id]={ROW:[],COL:[]},t.headerGroups)for(let e of[`ROW`,`COL`])for(let n of t.headerGroups[e]||[])this.groups[t.id][e].push({...n})}export(e){for(let t of e.sheets)t.headerGroups=this.groups[t.id]}exportForExcel(e){for(let t of e.sheets)for(let e of[`ROW`,`COL`]){let n=this.getGroupsLayers(t.id,e);for(let r=0;r<n.length;r++){let i=n[r];for(let n of i){for(let i=n.start;i<=n.end;i++){let a=BO(t,e,i);a.outlineLevel=r+1,n.isFolded&&(a.isHidden=!0)}if(n.isFolded){let r=BO(t,e,n.end+1);r.collapsed=!0}}}}}},tG=class extends VW{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,b(this.sizes[e.sheetId]));break;case`DELETE_SHEET`:let t={...this.sizes};delete t[e.sheetId],this.history.update(`sizes`,t);break;case`REMOVE_COLUMNS_ROWS`:{let t=this.sizes[e.sheetId][e.dimension],n=jt(t,e.elements);this.history.update(`sizes`,e.sheetId,e.dimension,n);break}case`ADD_COLUMNS_ROWS`:{let t=this.sizes[e.sheetId][e.dimension],n=yt(e.position,e.base),r=t[e.base],i=Mt(t,Array(e.quantity).fill(r),n);this.history.update(`sizes`,e.sheetId,e.dimension,i);break}case`RESIZE_COLUMNS_ROWS`:if(e.dimension===`ROW`)for(let t of e.elements)this.history.update(`sizes`,e.sheetId,e.dimension,t,e.size||void 0);else for(let t of e.elements)this.history.update(`sizes`,e.sheetId,e.dimension,t,e.size||void 0);break}}getColSize(e,t){return Math.round(this.sizes[e]?.COL[t]||96)}getUserRowSize(e,t){let n=this.sizes[e]?.ROW[t];return n?Math.round(n):void 0}import(e){for(let t of e.sheets){let e={COL:Array(t.colNumber).fill(void 0),ROW:Array(t.rowNumber).fill(void 0)};for(let[n,r]of Object.entries(t.rows))r.size&&(e.ROW[n]=r.size);for(let[n,r]of Object.entries(t.cols))r.size&&(e.COL[n]=r.size);this.sizes[t.id]=e}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let n of e.sheets){n.rows===void 0&&(n.rows={});for(let e of S(0,this.getters.getNumberRows(n.id)))(t||this.sizes[n.id].ROW[e])&&(n.rows[e]={...n.rows[e],size:this.getUserRowSize(n.id,e)??23});n.cols===void 0&&(n.cols={});for(let e of S(0,this.getters.getNumberCols(n.id)))(t||this.sizes[n.id].COL[e])&&(n.cols[e]={...n.cols[e],size:this.getColSize(n.id,e)})}}},nG=class extends VW{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`;let t=e.dimension===`COL`?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),n=e.dimension===`COL`?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return new Set((t||[]).flat().concat(e.elements)).size>=n?`TooManyHiddenElements`:Rt(e.elements)<0||Lt(e.elements)>n?`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`:let 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,b(this.hiddenHeaders[e.sheetId]));break;case`DELETE_SHEET`:this.history.update(`hiddenHeaders`,e.sheetId,void 0);break;case`REMOVE_COLUMNS_ROWS`:{let t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let n of[...e.elements].sort((e,t)=>t-e))t.splice(n,1);this.history.update(`hiddenHeaders`,e.sheetId,e.dimension,t);break}case`ADD_COLUMNS_ROWS`:{let t=yt(e.position,e.base),n=Mt([...this.hiddenHeaders[e.sheetId][e.dimension]],Array(e.quantity).fill(!1),t);this.history.update(`hiddenHeaders`,e.sheetId,e.dimension,n);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);break}}checkElementsIncludeAllVisibleHeaders(e,t,n){return St(n,this.getAllVisibleHeaders(e,t))}isHeaderHiddenByUser(e,t,n){return t===`COL`?this.isColHiddenByUser(e,n):this.isRowHiddenByUser(e,n)}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){let t=[[]],n=this.hiddenHeaders[e].COL;for(let e=0;e<n.length;e++)n[e]?t[t.length-1].push(e):t[t.length-1].length!==0&&t.push([]);return t[t.length-1].length===0&&t.pop(),t}getHiddenRowsGroups(e){let t=[[]],n=this.hiddenHeaders[e].ROW;for(let e=0;e<n.length;e++)n[e]?t[t.length-1].push(e):t[t.length-1].length!==0&&t.push([]);return t[t.length-1].length===0&&t.pop(),t}getAllVisibleHeaders(e,t){let n=S(0,this.getters.getNumberHeaders(e,t)),r=[];return this.getters.getHeaderGroups(e,t).forEach(e=>{e.isFolded&&r.push(...S(e.start,e.end+1))}),n.filter(n=>!this.hiddenHeaders[e][t][n]&&!r.includes(n))}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]=!!t.rows[e]?.isHidden;for(let e=0;e<t.colNumber;e++)this.hiddenHeaders[t.id].COL[e]=!!t.cols[e]?.isHidden}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let n of e.sheets){n.rows===void 0&&(n.rows={});for(let e=0;e<this.getters.getNumberRows(n.id);e++)(t||this.hiddenHeaders[n.id].ROW[e])&&(n.rows[e]===void 0&&(n.rows[e]={}),n.rows[e].isHidden||=this.hiddenHeaders[n.id].ROW[e]);n.cols===void 0&&(n.cols={});for(let e=0;e<this.getters.getNumberCols(n.id);e++)(t||this.hiddenHeaders[n.id].COL[e])&&(n.cols[e]===void 0&&(n.cols[e]={}),n.cols[e].isHidden||=this.hiddenHeaders[n.id].COL[e])}}},rG=class extends VW{static getters=[`getImage`,`getImagePath`,`getImageSize`];fileStore;images={};syncedImages=new Set;constructor(e){super(e),this.fileStore=e.external.fileStore}allowDispatch(e){switch(e.type){case`CREATE_IMAGE`:return this.getters.getFigure(e.sheetId,e.figureId)?`InvalidFigureId`:`Success`;default:return`Success`}}handle(e){switch(e.type){case`CREATE_IMAGE`:this.getters.getFigure(e.sheetId,e.figureId)||this.addFigure(e.figureId,e.sheetId,e.col,e.row,e.offset,e.size),this.history.update(`images`,e.sheetId,e.figureId,e.definition),this.syncedImages.add(e.definition.path);break;case`DUPLICATE_SHEET`:{let t=this.getters.getFigures(e.sheetId);for(let n of t)if(n.tag===`image`){let t=n.id.split(`??`).pop(),r=`${e.sheetIdTo}??${t}`,i=this.getImage(n.id);if(i){let t={width:n.width,height:n.height};this.dispatch(`CREATE_IMAGE`,{sheetId:e.sheetIdTo,figureId:r,offset:n.offset,col:n.col,row:n.row,size:t,definition:b(i)})}}break}case`DELETE_FIGURE`:this.history.update(`images`,e.sheetId,e.figureId,void 0);break;case`DELETE_SHEET`:this.history.update(`images`,e.sheetId,void 0);break}}getImage(e){for(let t of Object.values(this.images))if(t&&t[e])return t[e];throw Error(`There is no image with the given figureId: ${e}`)}getImagePath(e){return this.getImage(e).path}getImageSize(e){return this.getImage(e).size}addFigure(e,t,n,r,i,a){this.dispatch(`CREATE_FIGURE`,{sheetId:t,figureId:e,col:n,row:r,offset:i,size:a,tag:`image`})}import(e){for(let t of e.sheets){let e=(t.figures||[]).filter(e=>e.tag===`image`);for(let n of e)this.history.update(`images`,t.id,n.id,n.data),this.syncedImages.add(n.data.path)}}export(e){for(let t of e.sheets){let e=t.figures.filter(e=>e.tag===`image`);for(let n of e)n.data=this.images[t.id]?.[n.id]}}exportForExcel(e){for(let t of e.sheets){t.images||=[];let e=this.getters.getFigures(t.id),n=[];for(let t of e)if(t?.tag===`image`){let e=this.getImage(t.id);e&&n.push({...t,data:b(e)})}t.images=[...t.images,...n]}}},iG=class extends VW{static getters=[`isInMerge`,`isInSameMerge`,`isMergeHidden`,`getMainCellPosition`,`expandZone`,`doesIntersectMerge`,`doesColumnsHaveCommonMerges`,`doesRowsHaveCommonMerges`,`getMerges`,`getMerge`,`getMergesInZone`,`isSingleCellOrMerge`,`isMainCellPosition`];nextId=1;merges={};mergeCellMap={};allowDispatch(e){let t=`force`in e?!!e.force:!1;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`:this.history.update(`merges`,e.sheetId,{}),this.history.update(`mergeCellMap`,e.sheetId,{});break;case`DELETE_SHEET`:this.history.update(`merges`,e.sheetId,{}),this.history.update(`mergeCellMap`,e.sheetId,{});break;case`DUPLICATE_SHEET`:let t=this.merges[e.sheetId];if(!t)break;for(let n of Object.values(t).filter(C))this.addMerge(e.sheetIdTo,n.zone);break;case`ADD_MERGE`:for(let t of e.target)this.addMerge(e.sheetId,t);break;case`REMOVE_MERGE`:for(let t of e.target)this.removeMerge(e.sheetId,t);break}}adaptRanges(e,t){this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map(t=>this.getMergeById(e,parseInt(t,10))).filter(C)}getMerge({sheetId:e,col:t,row:n}){let r=this.mergeCellMap[e],i=r?t in r&&r[t]?.[n]:void 0;return i?this.getMergeById(e,i):void 0}getMergesInZone(e,t){let n=this.mergeCellMap[e];if(!n)return[];let r=new Set;for(let e=t.left;e<=t.right;e++)for(let i=t.top;i<=t.bottom;i++){let t=n[e]?.[i];t&&r.add(t)}return Array.from(r).map(t=>this.getMergeById(e,t)).filter(C)}doesIntersectMerge(e,t){for(let n of this.getMerges(e))if(On(t,n))return!0;return!1}doesColumnsHaveCommonMerges(e,t,n){let r=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(r.id,t,i,n,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,n){let r=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(r.id,i,t,i,n))return!0;return!1}expandZone(e,t){let{left:n,right:r,top:i,bottom:a}=t,o={left:n,right:r,top:i,bottom:a};for(let t in this.merges[e]){let n=this.getMergeById(e,parseInt(t));n&&On(n,o)&&(o=wn(n,o))}return Dn(o,t)?o:this.expandZone(e,o)}isInSameMerge(e,t,n,r,i){let a=this.getMerge({sheetId:e,col:t,row:n}),o=this.getMerge({sheetId:e,col:r,row:i});return!a||!o?!1:Dn(a,o)}isInMerge({sheetId:e,col:t,row:n}){let r=this.mergeCellMap[e];return r?t in r&&!!r[t]?.[n]:!1}getMainCellPosition(e){let t=this.getMerge(e);return t?{sheetId:e.sheetId,col:t.left,row:t.top}:e}isMergeHidden(e,t){let n=this.getters.getHiddenColsGroups(e),r=this.getters.getHiddenRowsGroups(e);for(let e of n)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of r)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){let n=this.getMerge({sheetId:e,col:t.left,row:t.top});if(n)return Dn(t,n);let{numberOfCols:r,numberOfRows:i}=Mn(t);return r===1&&i===1}isMainCellPosition(e){return w(this.getMainCellPosition(e),e)}isMergeDestructive(e,t){let{left:n,right:r,top:i,bottom:a}=t;r=x(r,0,this.getters.getNumberCols(e)-1),a=x(a,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=a;t++)for(let a=n;a<=r;a++)if(a!==n||t!==i){let n=this.getters.getCell({sheetId:e,col:a,row:t});if(n&&(n.isFormula||n.content!==``))return!0}return!1}getMergeById(e,t){let n=this.merges[e]?.[t];return n===void 0?void 0:oG(t,n)}checkDestructiveMerge({sheetId:e,target:t}){return this.getters.tryGetSheet(e)&&t.some(t=>this.isMergeDestructive(e,t))?`MergeIsDestructive`:`Success`}checkOverlap({target:e}){for(let t of e)for(let n of e)if(t!==n&&On(t,n))return`MergeOverlap`;return`Success`}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return`Success`;let{xSplit:n,ySplit:r}=this.getters.getPaneDivisions(e);return qn(t,n,r)?`FrozenPaneOverlap`:`Success`}checkMergedContentUpdate(e){let{col:t,row:n,content:r}=e;if(r===void 0)return`Success`;let{col:i,row:a}=this.getMainCellPosition(e);return i===t&&a===n?`Success`:`CellIsMerged`}checkMergeExists(e){let{sheetId:t,target:n}=e;for(let e of n){let{left:n,top:r}=e,i=this.getMerge({sheetId:t,col:n,row:r});if(i===void 0||!Dn(e,i))return`InvalidTarget`}return`Success`}addMerge(e,t){let{left:n,right:r,top:i,bottom:a}=t;if(r=x(r,0,this.getters.getNumberCols(e)-1),a=x(a,0,this.getters.getNumberRows(e)-1),T(n,i)===T(r,a))return;let o=this.getters.getCell({sheetId:e,col:n,row:i}),s=this.nextId++;this.history.update(`merges`,e,s,this.getters.getRangeFromSheetXC(e,yn({left:n,top:i,right:r,bottom:a})));let c=new Set;for(let t=i;t<=a;t++)for(let a=n;a<=r;a++){(a!==n||t!==i)&&this.dispatch(`UPDATE_CELL`,{sheetId:e,col:a,row:t,style:o?o.style:null,content:``});let r=this.getMerge({sheetId:e,col:a,row:t});r&&c.add(r.id),this.history.update(`mergeCellMap`,e,a,t,s)}for(let t of c){let{top:n,bottom:r,left:i,right:a}=this.getMergeById(e,t);for(let t=n;t<=r;t++)for(let n=i;n<=a;n++){let r={sheetId:e,col:n,row:t},i=this.getMerge(r);(!i||i.id!==s)&&(this.history.update(`mergeCellMap`,e,n,t,void 0),this.dispatch(`CLEAR_CELL`,r))}this.history.update(`merges`,e,t,void 0)}}removeMerge(e,t){let{left:n,top:r,bottom:i,right:a}=t,o=this.getMerge({sheetId:e,col:n,row:r});if(!(o===void 0||!Dn(t,o))){this.history.update(`merges`,e,o.id,void 0);for(let t=r;t<=i;t++)for(let r=n;r<=a;r++)this.history.update(`mergeCellMap`,e,r,t,void 0)}}applyRangeChangeOnSheet(e,{applyChange:t}){let n=Object.entries(this.merges[e]||{});for(let[r,i]of n)if(i){let n=i.zone,a=t(i);switch(a.changeType){case`NONE`:break;case`REMOVE`:this.removeMerge(e,n);break;default:let{numberOfCols:t,numberOfRows:i}=Mn(a.range.zone);t===1&&i===1?this.removeMerge(e,n):this.history.update(`merges`,e,parseInt(r,10),a.range);break}}this.history.update(`mergeCellMap`,e,{});for(let t of this.getMerges(e))for(let{col:n,row:r}of Fn(t))this.history.update(`mergeCellMap`,e,n,r,t.id)}import(e){let 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 n of t)this.addMerge(e,mn(n))}export(e){for(let t of e.sheets){let e=this.merges[t.id];e&&t.merges.push(...aG(e))}}exportForExcel(e){this.export(e)}};function aG(e){return Object.entries(e).map(([e,t])=>t?oG(parseInt(e,10),t):void 0).filter(C).map(e=>T(e.left,e.top)+`:`+T(e.right,e.bottom))}function oG(e,t){return{...t.zone,id:e}}var sG=class extends VW{static getters=[`getPivotCoreDefinition`,`getPivotDisplayName`,`getPivotId`,`getPivotFormulaId`,`getPivotIds`,`getMeasureCompiledFormula`,`getPivotName`,`isExistingPivot`,`getMeasureFullDependencies`];nextFormulaId=1;pivots={};formulaIds={};compiledMeasureFormulas={};allowDispatch(e){switch(e.type){case`ADD_PIVOT`:return e.pivotId in this.pivots?`PivotIdTaken`:this.checkValidations(e.pivot,this.checkDuplicatedMeasureIds,this.checkSortedColumnInMeasures,this.checkCustomFieldsAreValid);case`UPDATE_PIVOT`:return e.pivotId in this.pivots?w(e.pivot,this.pivots[e.pivotId]?.definition)?`NoChanges`:e.pivot.name===``?`EmptyName`:this.checkValidations(e.pivot,this.checkDuplicatedMeasureIds,this.checkSortedColumnInMeasures,this.checkCustomFieldsAreValid):`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`:if(!(e.pivotId in this.pivots))return`PivotIdNotFound`;break;case`DUPLICATE_PIVOT`:if(!(e.pivotId in this.pivots))return`PivotIdNotFound`}return`Success`}handle(e){switch(e.type){case`ADD_PIVOT`:{let{pivotId:t,pivot:n}=e;this.addPivot(t,n);break}case`INSERT_PIVOT`:{let{sheetId:t,col:n,row:r,pivotId:i,table:a}=e,o={sheetId:t,col:n,row:r},{cols:s,rows:c,measures:l,fieldsType:u}=a,d=new Qz(s,c,l,u||{}),f=this.getPivotFormulaId(i);this.insertPivot(o,f,d);break}case`RENAME_PIVOT`:this.history.update(`pivots`,e.pivotId,`definition`,`name`,e.name);break;case`REMOVE_PIVOT`:{let t={...this.pivots};delete t[e.pivotId];let n=this.getPivotFormulaId(e.pivotId);this.history.update(`formulaIds`,n,void 0),this.history.update(`pivots`,t);break}case`DUPLICATE_PIVOT`:{let{pivotId:t,newPivotId:n}=e,r=b(this.getPivotCore(t).definition);r.name=e.duplicatedPivotName??r.name+` (copy)`,this.addPivot(n,r);break}case`UPDATE_PIVOT`:this.history.update(`pivots`,e.pivotId,`definition`,b(e.pivot)),this.compileCalculatedMeasures(e.pivotId,e.pivot.measures);break}}adaptRanges({applyChange:e,adaptFormulaString:t}){for(let t in this.pivots){let n=b(this.pivots[t]?.definition);if(!n)continue;let r=uB.get(n.type)?.adaptRanges?.(this.getters,n,e);r&&!w(n,r)&&this.history.update(`pivots`,t,`definition`,r)}for(let n in this.compiledMeasureFormulas)for(let r in this.compiledMeasureFormulas[n]){let i=this.pivots[n]?.definition.measures.find(e=>e.id===r);if(!i||!i.computedBy)continue;let a=i.computedBy.sheetId,{formula:o,dependencies:s}=this.compiledMeasureFormulas[n][r];for(let t=0;t<o.rangeDependencies.length;t++){let i=o.rangeDependencies[t],a=e(i);a.changeType!==`NONE`&&this.history.update(`compiledMeasureFormulas`,n,r,`formula`,`rangeDependencies`,t,a.range)}this.history.update(`compiledMeasureFormulas`,n,i.id,`dependencies`,s.map(t=>e(t).range));let c=i.computedBy.formula,l=t(a,c);l!==c&&this.replaceMeasureFormula(n,i,l)}}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,t){if(!t.computedBy)throw Error(`Measure ${t.fieldName} is not computed by formula`);return this.compiledMeasureFormulas[e][t.id].formula}getMeasureFullDependencies(e,t){if(!t.computedBy)throw Error(`Measure ${t.fieldName} is not computed by formula`);return this.compiledMeasureFormulas[e][t.id].dependencies}addPivot(e,t,n=this.nextFormulaId.toString()){this.history.update(`pivots`,e,{definition:b(t),formulaId:n}),this.compileCalculatedMeasures(e,t.measures),this.history.update(`formulaIds`,n,e),this.history.update(`nextFormulaId`,this.nextFormulaId+1)}compileCalculatedMeasures(e,t){for(let n of t)if(n.computedBy){let t=yz.Compile(n.computedBy.formula,n.computedBy.sheetId,this.getters);this.history.update(`compiledMeasureFormulas`,e,n.id,`formula`,t)}for(let n of t)if(n.computedBy){let t=this.computeMeasureFullDependencies(e,n);this.history.update(`compiledMeasureFormulas`,e,n.id,`dependencies`,t)}}computeMeasureFullDependencies(e,t,n=new Set){let r=[],i=this.getPivotCoreDefinition(e),a=this.getMeasureCompiledFormula(e,t);n.add(t.id);for(let o of a.symbols){let a=i.measures.find(e=>Ze(e.id)===o&&t.id!==e.id);!a||n.has(a.id)||!a.computedBy||r.push(...this.computeMeasureFullDependencies(e,a,n))}return r.push(...a.rangeDependencies.filter(e=>!e.invalidXc)),r}insertPivot(e,t,n){this.resizeSheet(e.sheetId,e,n);let r=n.getPivotCells();for(let n=0;n<r.length;n++)for(let i=0;i<r[n].length;i++){let a=r[n][i];this.dispatch(`UPDATE_CELL`,{sheetId:e.sheetId,col:e.col+n,row:e.row+i,content:Sh(t,a)})}}resizeSheet(e,{col:t,row:n},r){let i=r.getNumberOfDataColumns()+1,a=this.getters.getNumberCols(e),o=a-t;o<i&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:a-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:i-o,position:`after`});let s=r.columns.length+r.rows.length,c=this.getters.getNumberRows(e),l=c-n;l<s&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`ROW`,base:c-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:s-l,position:`after`})}getPivotCore(e){let t=this.pivots[e];if(!t)throw Error(`Pivot with id ${e} not found`);return t}replaceMeasureFormula(e,t,n){let r=this.pivots[e];if(!r)return;let i=r.definition.measures.indexOf(t);this.history.update(`pivots`,e,`definition`,`measures`,i,`computedBy`,{formula:n,sheetId:t.computedBy.sheetId})}checkSortedColumnInMeasures(e){let t=e.measures.map(e=>e.id);return e.sortedColumn&&!t.includes(e.sortedColumn.measure)?`InvalidDefinition`:`Success`}checkDuplicatedMeasureIds(e){let t=new Set(e.measures.map(e=>e.id));return e.measures.length===t.size?`Success`:`InvalidDefinition`}checkCustomFieldsAreValid(e){for(let t in e.customFields){let n=e.customFields[t],r=new Set,i=new Set,a=!1;for(let e of n.groups){if(!e.name||i.has(e.name)||e.values.some(e=>r.has(e))||e.isOtherGroup&&a)return`InvalidPivotCustomField`;e.values.forEach(e=>r.add(e)),i.add(e.name),a||=!!e.isOtherGroup}}return`Success`}import(e){if(e.pivots)for(let[t,n]of Object.entries(e.pivots))this.addPivot(t,n,n.formulaId);this.history.update(`nextFormulaId`,e.pivotNextId||hh(this.pivots)+1)}export(e){e.pivots={};for(let t in this.pivots)e.pivots[t]={...this.getPivotCoreDefinition(t),formulaId:this.getPivotFormulaId(t)};e.pivotNextId=this.nextFormulaId}},cG=class extends VW{static getters=[`getLocale`];locale=R;allowDispatch(e){switch(e.type){case`UPDATE_LOCALE`:return wS(e.locale)?`Success`:`InvalidLocale`}return`Success`}handle(e){switch(e.type){case`UPDATE_LOCALE`:let t=this.locale,n=e.locale;this.history.update(`locale`,n),this.changeCellsDateFormatWithLocale(t,n);break}}getLocale(){return this.locale}changeCellsDateFormatWithLocale(e,t){for(let n of this.getters.getSheetIds())for(let r of this.getters.getCells(n)){let n;if(r.format===e.dateFormat&&(n=t.dateFormat),r.format===e.timeFormat&&(n=t.timeFormat),r.format===VS(e)&&(n=VS(t)),n){let{col:e,row:t,sheetId:i}=this.getters.getCellPosition(r.id);this.dispatch(`UPDATE_CELL`,{col:e,row:t,sheetId:i,format:n})}}}import(e){this.locale=e.settings?.locale??R}export(e){e.settings={locale:this.locale}}},lG=class extends VW{static getters=`getSheetName.tryGetSheetName.getSheet.tryGetSheet.getSheetIdByName.getSheetIds.getVisibleSheetIds.isSheetVisible.doesHeaderExist.doesHeadersExist.getCell.getCellPosition.getColsZone.getRowCellIds.getRowsZone.getNumberCols.getNumberRows.getNumberHeaders.getGridLinesVisibility.getNextSheetName.getSheetSize.getSheetZone.getPaneDivisions.checkZonesExistInSheet.getCommandZones.getUnboundedZone.checkElementsIncludeAllNonFrozenHeaders.getDuplicateSheetName.tryGetCellPosition.isSheetLocked`.split(`.`);sheetIdsMapName={};orderedSheetIds=[];sheets={};cellPosition={};allowDispatch(e){let t=this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e);if(t!==`Success`)return t;switch(e.type){case`HIDE_SHEET`:return this.getVisibleSheetIds().length===1?`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{let t=this.orderedSheetIds.findIndex(t=>t===e.sheetId);return this.findIndexOfTargetSheet(t,e.delta),`Success`}catch{return`WrongSheetMove`}case`RENAME_SHEET`:return this.isRenameAllowed(e);case`COLOR_SHEET`:return!e.color||kr(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`:{let t=Rt(e.elements),n=Lt(e.elements);return t<0||!this.doesHeaderExist(e.sheetId,e.dimension,n)?`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`:let t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update(`sheetIdsMapName`,Cl(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.newName);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`:e.dimension===`COL`?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?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`);break;case`LOCK_SHEET`:this.history.update(`sheets`,e.sheetId,`isLocked`,!0);break;case`UNLOCK_SHEET`:this.history.update(`sheets`,e.sheetId,`isLocked`,!1);break}}import(e){for(let t of e.sheets)this.sheetIdsMapName[Cl(t.name)]=t.id;for(let t of e.sheets){let e=t.name||`Sheet`+(Object.keys(this.sheets).length+1),{colNumber:n,rowNumber:r}=this.getImportedSheetSize(t),i={id:t.id,name:e,numberOfCols:n,rows:vl(r),areGridLinesVisible:t.areGridLinesVisible===void 0?!0:t.areGridLinesVisible,isVisible:t.isVisible,panes:{xSplit:t.panes?.xSplit||0,ySplit:t.panes?.ySplit||0},color:t.color,isLocked:t.isLocked};this.orderedSheetIds.push(i.id),this.sheets[i.id]=i}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(C).map(e=>{let t=this.sheets[e],n={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:t.areGridLinesVisible===void 0?!0:t.areGridLinesVisible,isVisible:t.isVisible,isLocked:t.isLocked,color:t.color};return(t.panes.xSplit||t.panes.ySplit)&&(n.panes=t.panes),n})}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}isSheetLocked(e){return this.tryGetSheet(e)?.isLocked||!1}tryGetSheet(e){return this.sheets[e]}getSheet(e){let t=this.sheets[e];if(!t)throw 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)return this.sheetIdsMapName[Cl(e)]}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}doesHeaderExist(e,t,n){return t===`COL`?n>=0&&n<this.getNumberCols(e):n>=0&&n<this.getNumberRows(e)}doesHeadersExist(e,t,n){return n.every(n=>this.doesHeaderExist(e,t,n))}getCell({sheetId:e,col:t,row:n}){let r=this.tryGetSheet(e)?.rows[n]?.cells[t];if(r!==void 0)return this.getters.getCellById(r)}getColsZone(e,t,n){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:n}}getRowCellIds(e,t){return Object.values(this.getSheet(e).rows[t]?.cells).filter(C)}getRowsZone(e,t,n){return{top:t,bottom:n,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){let t=this.cellPosition[e];if(!t)throw Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}tryGetCellPosition(e){return this.cellPosition[e]}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return t===`COL`?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e=`Sheet`){return xl(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(t.bottom===void 0||t.right===void 0)return t;let n=t.left===0&&t.right===this.getNumberCols(e)-1,r=t.top===0&&t.bottom===this.getNumberRows(e)-1;return{...t,bottom:r?void 0:t.bottom,right:n&&!r?void 0:t.right}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,n){let r={...this.getPaneDivisions(e)};n===`COL`?r.xSplit=t:n===`ROW`&&(r.ySplit=t),this.history.update(`sheets`,e,`panes`,r)}checkElementsIncludeAllNonFrozenHeaders(e,t,n){let r=this.getters.getPaneDivisions(e),i=t===`ROW`?r.ySplit:r.xSplit,a=this.getters.getNumberHeaders(e,t);return i?St(n,S(i,a)):!1}getCommandZones(e){let 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&&e.col!==void 0&&`row`in e&&e.row!==void 0&&t.push({top:e.row,left:e.col,bottom:e.row,right:e.col}),t}checkZonesExistInSheet(e,t){if(!t.every(_n))return`InvalidRange`;if(t.length){let n=this.getSheetZone(e);return t.every(e=>jn(e,n))?`Success`:`TargetOutOfSheet`}return`Success`}updateCellPosition(e){let{sheetId:t,cellId:n,col:r,row:i}=e;n?this.setNewPosition(n,t,r,i):this.clearPosition(t,r,i)}setNewPosition(e,t,n,r){let i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update(`cellPosition`,e,{row:r,col:n,sheetId:t}),this.history.update(`sheets`,t,`rows`,r,`cells`,n,e)}clearPosition(e,t,n){let r=this.sheets[e]?.rows[n].cells[t];r&&(this.history.update(`cellPosition`,r,void 0),this.history.update(`sheets`,e,`rows`,n,`cells`,t,void 0))}setGridLinesVisibility(e,t){this.history.update(`sheets`,e,`areGridLinesVisible`,t)}createSheet(e,t,n,r,i){let a={id:e,name:t,numberOfCols:n,rows:vl(r),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0},isLocked:!1},o=this.orderedSheetIds.slice();o.splice(i,0,a.id);let s=this.sheets;return this.history.update(`orderedSheetIds`,o),this.history.update(`sheets`,Object.assign({},s,{[a.id]:a})),a}moveSheet(e,t){let n=this.orderedSheetIds.slice(),r=n.findIndex(t=>t===e),i=n.splice(r,1),a=this.findIndexOfTargetSheet(r,t);n.splice(a,0,i[0]),this.history.update(`orderedSheetIds`,n)}findIndexOfTargetSheet(e,t){for(;t!==0&&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(t===0)return e;throw Error(`There is not enough visible sheets`)}checkSheetName(e){let t=this.getters.tryGetSheetName(e.sheetId),n=e.type===`RENAME_SHEET`?e.newName:e.name;if(t!==void 0&&n===t)return`UnchangedSheetName`;let{orderedSheetIds:r,sheets:i}=this,a=n&&n.trim().toLowerCase();return r.find(t=>wl(i[t]?.name,a)&&t!==e.sheetId)?`DuplicatedSheetName`:Ne.test(a)?`ForbiddenCharactersInSheetName`:`Success`}checkSheetPosition(e){let{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){let t=this.getters.getMerges(e.sheetId);for(let n of t)if(n.top<e.quantity&&e.quantity<=n.bottom)return`MergeOverlap`;return`Success`}checkColFreezeOverlapMerge(e){let t=this.getters.getMerges(e.sheetId);for(let n of t)if(n.left<e.quantity&&e.quantity<=n.right)return`MergeOverlap`;return`Success`}isRenameAllowed(e){return e.newName&&e.newName.trim().toLowerCase()?this.checkSheetName(e):`MissingSheetName`}renameSheet(e,t){let n=e.name;this.history.update(`sheets`,e.id,`name`,t.trim());let r=Object.assign({},this.sheetIdsMapName);delete r[Cl(n)],r[Cl(t)]=e.id,this.history.update(`sheetIdsMapName`,r)}hideSheet(e){this.history.update(`sheets`,e,`isVisible`,!1)}showSheet(e){this.history.update(`sheets`,e,`isVisible`,!0)}duplicateSheet(e,t,n){let r=b(this.getSheet(e));r.id=t,r.name=n,r.isLocked=!1;for(let e=0;e<=r.numberOfCols;e++)for(let t=0;t<=r.rows.length;t++)r.rows[t]&&(r.rows[t].cells[e]=void 0);let i=this.orderedSheetIds.slice(),a=i.indexOf(e);i.splice(a+1,0,r.id),this.history.update(`orderedSheetIds`,i),this.history.update(`sheets`,Object.assign({},this.sheets,{[r.id]:r}));for(let t of Object.values(this.getters.getCells(e))){let{col:e,row:n}=this.getCellPosition(t.id);this.dispatch(`UPDATE_CELL`,{sheetId:r.id,col:e,row:n,content:t.isFormula?t.compiledFormula.toFormulaString(this.getters):t.content,format:t.format,style:t.style})}let o=Object.assign({},this.sheetIdsMapName);o[Cl(r.name)]=r.id,this.history.update(`sheetIdsMapName`,o)}getDuplicateSheetName(e){return Sl(e,this.orderedSheetIds.map(this.getSheetName.bind(this)))}deleteSheet(e){let t=e.name,n=Object.assign({},this.sheets);delete n[e.id],this.history.update(`sheets`,n);let r=this.orderedSheetIds.slice(),i=r.indexOf(e.id);r.splice(i,1),this.history.update(`orderedSheetIds`,r);let a=Object.assign({},this.sheetIdsMapName);delete a[Cl(t)],this.history.update(`sheetIdsMapName`,a)}removeColumns(e,t){t.sort((e,t)=>t-e);for(let n of t)this.moveCellOnColumnsDeletion(e,n);let n=this.sheets[e.id].numberOfCols;this.history.update(`sheets`,e.id,`numberOfCols`,n-t.length);let r=t.filter(t=>t<e.panes.xSplit).length;r&&this.setPaneDivisions(e.id,e.panes.xSplit-r,`COL`)}removeRows(e,t){t.sort((e,t)=>t-e);for(let n of $e(t)){let t=n[n.length-1],r=n[0];this.moveCellOnRowsDeletion(e,t,r),this.updateRowsStructureOnDeletion(e,t,r)}let n=t.filter(t=>t<e.panes.ySplit).length;n&&this.setPaneDivisions(e.id,e.panes.ySplit-n,`ROW`)}addColumns(e,t,n,r){let i=n===`before`?t:t+1;this.moveCellsOnAddition(e,i,r,`columns`);let a=this.sheets[e.id].numberOfCols;this.history.update(`sheets`,e.id,`numberOfCols`,a+r),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+r,`COL`)}addRows(e,t,n,r){let i=n===`before`?t:t+1;this.addEmptyRows(e,r),this.moveCellsOnAddition(e,i,r,`rows`),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+r,`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 n=0;n<e.rows.length;n++){let r=e.rows[n];for(let i in r.cells){let a=Number(i),o=r.cells[i];o&&a>t&&this.setNewPosition(o,e.id,a-1,n)}}}moveCellsOnAddition(e,t,n,r){let i=[];for(let a=0;a<e.rows.length;a++){let o=e.rows[a];if(r!==`rows`||a>=t)for(let s in o.cells){let c=Number(s),l=o.cells[s];l&&(r===`rows`||c>=t)&&i.push({sheetId:e.id,cellId:l,col:c+(r===`columns`?n:0),row:a+(r===`rows`?n:0),type:`UPDATE_CELL_POSITION`})}}for(let e of i.reverse())this.updateCellPosition(e)}moveCellOnRowsDeletion(e,t,n){this.dispatch(`CLEAR_CELLS`,{sheetId:e.id,target:[{left:0,top:t,right:this.getters.getNumberCols(e.id),bottom:n}]});let r=n-t+1;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];if(t>n)for(let n in i.cells){let a=Number(n),o=i.cells[n];o&&this.setNewPosition(o,e.id,a,t-r)}}}updateRowsStructureOnDeletion(e,t,n){let r=[],i=e.rows.map(e=>e.cells).reverse();for(let a in e.rows){let e=Number(a);e>=t&&e<=n||r.push({cells:i.pop()})}this.history.update(`sheets`,e.id,`rows`,r)}addEmptyRows(e,t){let n=e.rows.slice();for(let e=0;e<t;e++)n.push({cells:{}});this.history.update(`sheets`,e.id,`rows`,n)}getImportedSheetSize(e){let t=Object.keys(e.cells).map(mn),n=e.rowNumber,r=e.colNumber;for(let{right:e,bottom:i}of t)n=Math.max(n,i+1),r=Math.max(r,e+1);return{rowNumber:n,colNumber:r}}checkSheetExists(e){return e.type!==`CREATE_SHEET`&&`sheetId`in e&&this.sheets[e.sheetId]===void 0?`InvalidSheetId`:e.type===`CREATE_SHEET`&&this.sheets[e.sheetId]!==void 0?`DuplicatedSheetId`:`Success`}checkZonesAreInSheet(e){return Fs(e)&&e.ranges.length===0?`EmptyRange`:`sheetId`in e?`ranges`in e&&e.ranges.some(e=>e._sheetId!==``&&!this.getters.tryGetSheet(e._sheetId))?`InvalidSheetId`:Ps(e)&&e.target.length===0?`EmptyTarget`:this.checkZonesExistInSheet(e.sheetId,this.getCommandZones(e)):`Success`}},uG=class extends VW{allowDispatch(e){switch(e.type){case`ADD_PIVOT`:case`UPDATE_PIVOT`:let t=e.pivot;return this.checkDataSetValidity(t)}return`Success`}checkDataSetValidity(e){if(e.type===`SPREADSHEET`&&e.dataSet){let{zone:t,sheetId:n}=e.dataSet;return!n||!this.getters.tryGetSheet(n)||!t||!_n(t)?`InvalidDataSet`:this.getters.checkZonesExistInSheet(n,[t])}return`Success`}},dG=class extends VW{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(!ij[e.templateName])return`InvalidTableStyle`;try{Or(e.primaryColor)}catch{return`InvalidTableStyle`}break}return`Success`}handle(e){switch(e.type){case`CREATE_TABLE_STYLE`:let t=aj(e.tableStyleName,e.templateName,e.primaryColor);this.history.update(`styles`,e.tableStyleId,t);break;case`REMOVE_TABLE_STYLE`:let n={...this.styles};delete n[e.tableStyleId],this.history.update(`styles`,n);for(let t of this.getters.getSheetIds())for(let n of this.getters.getCoreTables(t))n.config.styleId===e.tableStyleId&&this.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{styleId:HA.styleId}});break}}getTableStyle(e){if(RB[e])return RB[e];if(!this.styles[e])throw Error(`Table style ${e} does not exist`);return this.styles[e]}getTableStyles(){return this.styles}getNewCustomTableStyleName(){return Ht(k(`Custom Table Style`),Object.values(this.styles).map(e=>e.displayName),{compute:(e,t)=>`${e} ${t}`,start:2})}isTableStyleEditable(e){return!rj[e]&&!RB[e]}import(e){for(let e in rj)this.styles[e]=rj[e];for(let t in e.customTableStyles){let n=e.customTableStyles[t];this.styles[t]=aj(n.displayName,n.templateName,n.primaryColor)}}export(e){let t={};for(let e in this.styles)rj[e]||(t[e]={displayName:this.styles[e].displayName,templateName:this.styles[e].templateName,primaryColor:this.styles[e].primaryColor});e.customTableStyles=t}},fG=class extends VW{static getters=[`getCoreTable`,`getCoreTables`,`getCoreTableMatchingTopLeft`];tables={};nextTableId=1;adaptRanges({applyChange:e},t){for(let n of this.getCoreTables(t))this.applyRangeChangeOnTable(t,n,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`;let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e).zone);return Yn(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(let t of this.getCoreTables(e.sheetId)){let n=t.range.zone;for(let t of e.target)if(On(n,t))return`MergeInTable`}break}return`Success`}handle(e){switch(e.type){case`CREATE_SHEET`:this.history.update(`tables`,e.sheetId,{});break;case`DELETE_SHEET`:{let t={...this.tables};delete t[e.sheetId],this.history.update(`tables`,t);break}case`DUPLICATE_SHEET`:{let t={};for(let n of this.getCoreTables(e.sheetId))t[n.id]=n.type===`dynamic`?this.copyDynamicTableForSheet(e.sheetIdTo,n):this.copyStaticTableForSheet(e.sheetIdTo,n);this.history.update(`tables`,e.sheetIdTo,t);break}case`CREATE_TABLE`:{let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e)),n=this.getters.getRangesUnion(t),r=this.getters.getMergesInZone(e.sheetId,n.zone);r.length&&this.dispatch(`REMOVE_MERGE`,{sheetId:e.sheetId,target:r});let i=this.consumeNextId(),a=e.config||HA,o=e.tableType===`dynamic`?this.createDynamicTable(i,n,a):this.createStaticTable(i,e.tableType,n,a);this.history.update(`tables`,e.sheetId,o.id,o);break}case`REMOVE_TABLE`:{let t={};for(let n of this.getCoreTables(e.sheetId))e.target.every(e=>!En(n.range.zone,e))&&(t[n.id]=n);this.history.update(`tables`,e.sheetId,t);break}case`UPDATE_TABLE`:this.updateTable(e);break;case`UPDATE_CELL`:{let t=e.sheetId;for(let n of this.getCoreTables(t)){if(n.type===`dynamic`)continue;let r=this.canUpdateCellCmdExtendTable(e,n);r===`down`?this.extendTableDown(t,n):r===`right`&&this.extendTableRight(t,n)}break}case`DELETE_CONTENT`:{let t={...this.tables[e.sheetId]};for(let n in t){let r=t[n];r&&e.target.some(e=>jn(r.range.zone,e))&&this.dispatch(`REMOVE_TABLE`,{sheetId:e.sheetId,target:[r.range.zone]})}break}}}getCoreTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(C):[]}getCoreTable({sheetId:e,col:t,row:n}){return this.getCoreTables(e).find(e=>An(t,n,e.range.zone))}getTablesOverlappingZones(e,t){return this.getCoreTables(e).filter(e=>t.some(t=>On(e.range.zone,t)))}extendTableDown(e,t){let n=this.getters.extendRange(t.range,`ROW`,1);this.history.update(`tables`,e,t.id,this.updateStaticTable(t,n))}extendTableRight(e,t){let n=this.getters.extendRange(t.range,`COL`,1);this.history.update(`tables`,e,t.id,this.updateStaticTable(t,n))}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:n,row:r},i){if(!e||this.isPivotFormula(e,t))return`none`;let a=i.range.zone,o=`none`;if(a.bottom+1===r&&n>=a.left&&n<=a.right?o=`down`:a.right+1===n&&r>=a.top&&r<=a.bottom&&(o=`right`),o===`none`)return`none`;let s=o===`down`?{...a,bottom:a.bottom+1,top:a.bottom+1}:{...a,right:a.right+1,left:a.right+1};for(let e=s.top;e<=s.bottom;e++)for(let n=s.left;n<=s.right;n++){let r={sheetId:t,col:n,row:e},i=this.getters.getCell(r);if(i?.isFormula||i?.content||this.getters.isInMerge(r)||this.getTablesOverlappingZones(t,[E(r)]).length)return`none`}return o}isPivotFormula(e,t){return e.startsWith(`=`)?hB(yz.Compile(e,t,this.getters),this.getters)?.functionName===`PIVOT`:!1}getCoreTableMatchingTopLeft(e,t){for(let n of this.getCoreTables(e)){let e=n.range.zone;if(e.left===t.left&&e.top===t.top)return n}}checkUpdatedTableZoneIsValid(e){if(!e.newTableRange)return`Success`;let t=this.getters.getRangeFromRangeData(e.newTableRange).zone,n=this.getters.checkZonesExistInSheet(e.sheetId,[t]);if(n!==`Success`)return n;let r=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);return r?this.getTablesOverlappingZones(e.sheetId,[t]).filter(e=>e.id!==r.id).length?`TableOverlap`:`Success`:`TableNotFound`}checkTableConfigUpdateIsValid(e){return e&&(e.numberOfHeaders!==void 0&&e.numberOfHeaders<0||e.hasFilters&&e.numberOfHeaders===0)?`InvalidTableConfig`:`Success`}createStaticTable(e,t,n,r,i){let a=n.zone;if(!i){i=[];for(let e of S(a.left,a.right+1)){let t={...a,left:e,right:e},o=this.consumeNextId();i.push(this.createFilterFromZone(o,n.sheetId,t,r))}}return{id:e,range:n,filters:i,config:r,type:t}}createDynamicTable(e,t,n){let r=Hn(t.zone);return{id:e,range:this.getters.getRangeFromZone(t.sheetId,r),config:n,type:`dynamic`}}updateTable(e){let t=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return;let n=e.newTableRange?this.getters.getRangeFromRangeData(e.newTableRange):void 0;if(n){let t=this.getters.getMergesInZone(e.sheetId,n.zone);this.dispatch(`REMOVE_MERGE`,{sheetId:e.sheetId,target:t})}let r=n||t.range,i=this.updateTableConfig(e.config,t.config),a=e.tableType??t.type;if(a===`dynamic`&&t.type!==`dynamic`||a!==`dynamic`&&t.type===`dynamic`){let n=a===`dynamic`?this.createDynamicTable(t.id,r,i):this.createStaticTable(t.id,a,r,i);this.history.update(`tables`,e.sheetId,t.id,n)}else{let n=t.type===`dynamic`?this.updateDynamicTable(t,r,i):this.updateStaticTable(t,r,i,a);this.history.update(`tables`,e.sheetId,t.id,n)}}updateStaticTable(e,t,n,r=e.type){if(r===`dynamic`)throw Error(`Cannot use updateStaticTable to update a dynamic table`);let i=t||e.range,a=i.zone,o=this.updateTableConfig(n,e.config),s=o||e.config,c=[];if(t||o&&`numberOfHeaders`in o)for(let t of S(a.left,a.right+1)){let n=a.top===e.range.zone.top?e.filters.find(e=>e.col===t):void 0,r={...a,left:t,right:t},o=n?.id||this.consumeNextId();c.push(this.createFilterFromZone(o,i.sheetId,r,s))}return{...e,range:i,config:s,filters:c.length?c:e.filters,type:r}}updateDynamicTable(e,t,n){let r=t?this.getters.getRangeFromZone(t.sheetId,Hn(t.zone)):e.range,i=n||e.config;return{...e,range:r,config:i}}updateTableConfig(e,t){if(!e)return t;let n={...t,...e};return e.numberOfHeaders===0?n.hasFilters=!1:e.hasFilters===!0&&(n.numberOfHeaders||=1),n}createFilterFromZone(e,t,n,r){return KB(e,this.getters.getRangeFromZone(t,n),r,this.getters.getRangeFromZone)}copyStaticTableForSheet(e,t){let n=this.getters.getRangeFromZone(e,t.range.zone),r=t.filters.map(n=>{let r=this.getters.getRangeFromZone(e,n.rangeWithHeaders.zone);return KB(n.id,r,t.config,this.getters.getRangeFromZone)});return{id:t.id,range:n,filters:r,config:b(t.config),type:t.type}}copyDynamicTableForSheet(e,t){let n=this.getters.getRangeFromZone(e,t.range.zone);return{id:t.id,range:n,config:b(t.config),type:`dynamic`}}applyRangeChangeOnTable(e,t,n){let r=n(t.range),i;switch(r.changeType){case`REMOVE`:this.history.update(`tables`,e,t.id,void 0);return;case`NONE`:return;default:i=r.range}if(t.type===`dynamic`){let n=this.updateDynamicTable(t,i);this.history.update(`tables`,e,t.id,n);return}let a=[];for(let e of t.filters){let r=n(e.rangeWithHeaders);switch(r.changeType){case`REMOVE`:continue;case`NONE`:a.push(e);break;default:let n=r.range,i=KB(e.id,n,t.config,this.getters.getRangeFromZone);a.push(i)}}let o=i.zone;if(a.length<Mn(o).numberOfCols){for(let n=o.left;n<=o.right;n++)if(!a.find(e=>e.col===n)){let r=this.consumeNextId(),i={...o,left:n,right:n};a.push(this.createFilterFromZone(r,e,i,t.config))}a.sort((e,t)=>e.col-t.col)}let s=this.createStaticTable(t.id,t.type,i,t.config,a);this.history.update(`tables`,e,t.id,s)}consumeNextId(){let e=`${this.nextTableId}`;return this.history.update(`nextTableId`,this.nextTableId+1),e}import(e){for(let t of e.sheets)for(let e of t.tables||[]){let n=this.consumeNextId(),r=e.config||HA,i=this.getters.getRangeFromSheetXC(t.id,e.range),a=e.type||`static`,o=a===`dynamic`?this.createDynamicTable(n,i,r):this.createStaticTable(n,a,i,r);this.history.update(`tables`,t.id,o.id,o)}}export(e){for(let t of e.sheets)for(let e of this.getCoreTables(t.id)){let n={range:yn(e.range.zone),type:e.type};w(e.config,HA)||(n.config=e.config),t.tables.push(n)}}exportForExcel(e){for(let t of e.sheets)for(let e of this.getCoreTables(t.id)){let n=yn(e.range.zone);t.tables.push({range:n,filters:[],config:e.config})}}},pG=class extends BW{getters;constructor({getters:e,stateObserver:t}){super(t),this.getters=e}};let mG=uO.mapping;function hG(e,t,n){return new gG(e,t,n).getParameters()}var gG=class{getters;computeCell;evalContext;rangeCache={};constructor(e,t,n){this.getters=t,this.computeCell=n,this.evalContext=Object.assign(Object.create(mG),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){let n=this.getRangeError(e);if(n)return n;let r={sheetId:e.sheetId,col:e.zone.left,row:e.zone.top};return t?(this.computeCell(r),{value:Bc(this.getters.getSheetName(e.sheetId),yn(e.zone))}):this.computeCell(r)}range(e,t){let n=this.getRangeError(e);if(n)return[[n]];let r=e.sheetId,i=e.zone,a=En(i,this.getters.getSheetZone(r));if(!a)return[[]];let{top:o,left:s,bottom:c,right:l}=i,u=`${r}-${o}-${s}-${c}-${l}-${t}`;if(u in this.rangeCache)return this.rangeCache[u];let d=a.bottom-a.top+1,f=a.right-a.left+1,p=Array(f),m=this.getters.getSheetName(e.sheetId);for(let e=a.left;e<=a.right;e++){let n=e-a.left;p[n]=Array(d);for(let i=a.top;i<=a.bottom;i++){let o=i-a.top,s=this.computeCell({sheetId:r,col:e,row:i});p[n][o]=t?{value:Bc(m,T(e,i))}:s}}return this.rangeCache[u]=p,p}getRangeError(e){if(!_n(e.zone))return new va;if(e.invalidSheetName)return new va(k(`Invalid sheet name: %s`,e.invalidSheetName))}},_G=d(c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n||=self).RBush=r()})(e,function(){"use strict";function e(e,r,i,a,o){(function e(n,r,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,c=r-i+1,l=Math.log(s),u=.5*Math.exp(2*l/3),d=.5*Math.sqrt(l*u*(s-u)/s)*(c-s/2<0?-1:1);e(n,r,Math.max(i,Math.floor(r-c*u/s+d)),Math.min(a,Math.floor(r+(s-c)*u/s+d)),o)}var f=n[r],p=i,m=a;for(t(n,i,r),o(n[a],f)>0&&t(n,i,a);p<m;){for(t(n,p,m),p++,m--;o(n[p],f)<0;)p++;for(;o(n[m],f)>0;)m--}o(n[i],f)===0?t(n,i,m):t(n,++m,a),m<=r&&(i=m+1),r<=m&&(a=m-1)}})(e,r,i||0,a||e.length-1,o||n)}function t(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function n(e,t){return e<t?-1:+(e>t)}var r=function(e){e===void 0&&(e=9),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(e,t,n){if(!n)return t.indexOf(e);for(var r=0;r<t.length;r++)if(n(e,t[r]))return r;return-1}function a(e,t){o(e,0,e.children.length,t,e)}function o(e,t,n,r,i){i||=m(null),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var a=t;a<n;a++){var o=e.children[a];s(i,e.leaf?r(o):o)}return i}function s(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 c(e,t){return e.minX-t.minX}function l(e,t){return e.minY-t.minY}function u(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function d(e){return e.maxX-e.minX+(e.maxY-e.minY)}function f(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function p(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function m(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function h(t,n,r,i,a){for(var o=[n,r];o.length;)if(!((r=o.pop())-(n=o.pop())<=i)){var s=n+Math.ceil((r-n)/i/2)*i;e(t,s,n,r,a),o.push(n,s,s,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(e){var t=this.data,n=[];if(!p(e,t))return n;for(var r=this.toBBox,i=[];t;){for(var a=0;a<t.children.length;a++){var o=t.children[a],s=t.leaf?r(o):o;p(e,s)&&(t.leaf?n.push(o):f(e,s)?this._all(o,n):i.push(o))}t=i.pop()}return n},r.prototype.collides=function(e){var t=this.data;if(!p(e,t))return!1;for(var n=[];t;){for(var r=0;r<t.children.length;r++){var i=t.children[r],a=t.leaf?this.toBBox(i):i;if(p(e,a)){if(t.leaf||f(e,a))return!0;n.push(i)}}t=n.pop()}return!1},r.prototype.load=function(e){if(!e||!e.length)return this;if(e.length<this._minEntries){for(var t=0;t<e.length;t++)this.insert(e[t]);return this}var n=this._build(e.slice(),0,e.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this},r.prototype.insert=function(e){return e&&this._insert(e,this.data.height-1),this},r.prototype.clear=function(){return this.data=m([]),this},r.prototype.remove=function(e,t){if(!e)return this;for(var n,r,a,o=this.data,s=this.toBBox(e),c=[],l=[];o||c.length;){if(o||(o=c.pop(),r=c[c.length-1],n=l.pop(),a=!0),o.leaf){var u=i(e,o.children,t);if(u!==-1)return o.children.splice(u,1),c.push(o),this._condense(c),this}a||o.leaf||!f(o,s)?r?(n++,o=r.children[n],a=!1):o=null:(c.push(o),l.push(n),n=0,r=o,o=o.children[0])}return this},r.prototype.toBBox=function(e){return e},r.prototype.compareMinX=function(e,t){return e.minX-t.minX},r.prototype.compareMinY=function(e,t){return e.minY-t.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(e){return this.data=e,this},r.prototype._all=function(e,t){for(var n=[];e;)e.leaf?t.push.apply(t,e.children):n.push.apply(n,e.children),e=n.pop();return t},r.prototype._build=function(e,t,n,r){var i,o=n-t+1,s=this._maxEntries;if(o<=s)return a(i=m(e.slice(t,n+1)),this.toBBox),i;r||(r=Math.ceil(Math.log(o)/Math.log(s)),s=Math.ceil(o/s**(r-1))),(i=m([])).leaf=!1,i.height=r;var c=Math.ceil(o/s),l=c*Math.ceil(Math.sqrt(s));h(e,t,n,l,this.compareMinX);for(var u=t;u<=n;u+=l){var d=Math.min(u+l-1,n);h(e,u,d,c,this.compareMinY);for(var f=u;f<=d;f+=c){var p=Math.min(f+c-1,d);i.children.push(this._build(e,f,p,r-1))}}return a(i,this.toBBox),i},r.prototype._chooseSubtree=function(e,t,n,r){for(;r.push(t),!t.leaf&&r.length-1!==n;){for(var i=1/0,a=1/0,o=void 0,s=0;s<t.children.length;s++){var c=t.children[s],l=u(c),d=(f=e,p=c,(Math.max(p.maxX,f.maxX)-Math.min(p.minX,f.minX))*(Math.max(p.maxY,f.maxY)-Math.min(p.minY,f.minY))-l);d<a?(a=d,i=l<i?l:i,o=c):d===a&&l<i&&(i=l,o=c)}t=o||t.children[0]}var f,p;return t},r.prototype._insert=function(e,t,n){var r=n?e:this.toBBox(e),i=[],a=this._chooseSubtree(r,this.data,t,i);for(a.children.push(e),s(a,r);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(r,i,t)},r.prototype._split=function(e,t){var n=e[t],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var o=this._chooseSplitIndex(n,i,r),s=m(n.children.splice(o,n.children.length-o));s.height=n.height,s.leaf=n.leaf,a(n,this.toBBox),a(s,this.toBBox),t?e[t-1].children.push(s):this._splitRoot(n,s)},r.prototype._splitRoot=function(e,t){this.data=m([e,t]),this.data.height=e.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(e,t,n){for(var r,i,a,s,c,l,d,f=1/0,p=1/0,m=t;m<=n-t;m++){var h=o(e,0,m,this.toBBox),g=o(e,m,n,this.toBBox),_=(i=h,a=g,s=void 0,c=void 0,l=void 0,d=void 0,s=Math.max(i.minX,a.minX),c=Math.max(i.minY,a.minY),l=Math.min(i.maxX,a.maxX),d=Math.min(i.maxY,a.maxY),Math.max(0,l-s)*Math.max(0,d-c)),v=u(h)+u(g);_<f?(f=_,r=m,p=v<p?v:p):_===f&&v<p&&(p=v,r=m)}return r||n-t},r.prototype._chooseSplitAxis=function(e,t,n){var r=e.leaf?this.compareMinX:c,i=e.leaf?this.compareMinY:l;this._allDistMargin(e,t,n,r)<this._allDistMargin(e,t,n,i)&&e.children.sort(r)},r.prototype._allDistMargin=function(e,t,n,r){e.children.sort(r);for(var i=this.toBBox,a=o(e,0,t,i),c=o(e,n-t,n,i),l=d(a)+d(c),u=t;u<n-t;u++){var f=e.children[u];s(a,e.leaf?i(f):f),l+=d(a)}for(var p=n-t-1;p>=t;p--){var m=e.children[p];s(c,e.leaf?i(m):m),l+=d(c)}return l},r.prototype._adjustParentBBoxes=function(e,t,n){for(var r=n;r>=0;r--)s(t[r],e)},r.prototype._condense=function(e){for(var t=e.length-1,n=void 0;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children).splice(n.indexOf(e[t]),1):this.clear():a(e[t],this.toBBox)},r})}))(),1),vG=class{rTrees={};constructor(e=[]){let t={};for(let n of e){let e=n.boundingBox.sheetId;t[e]||(t[e]=[]),t[e].push(n)}for(let e in t)this.rTrees[e]=new yG,this.rTrees[e].load(t[e])}insert(e){let t=e.boundingBox.sheetId;this.rTrees[t]||(this.rTrees[t]=new yG),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){let t=e.boundingBox.sheetId;this.rTrees[t]&&this.rTrees[t].remove(e,this.rtreeItemComparer)}rtreeItemComparer(e,t){return 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&&w(e.data,t.data)}},yG=class extends _G.default{toBBox({boundingBox:e}){let 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}},bG=class e{profilesStartingPosition=[0];profiles=new Map([[0,[]]]);constructor(e=[]){for(let t of e)this.add(t)}isEmpty(){return this.profiles.size===1&&this.profiles.get(0)?.length===0}add(e){rn(this.profilesStartingPosition,this.profiles,[e])}delete(e){rn(this.profilesStartingPosition,this.profiles,[e],!0)}has(e){return an(this.profilesStartingPosition,this.profiles,e)}difference(e){let t=this.copy();for(let n of e)t.delete(n);return t}copy(){let t=new e;t.profilesStartingPosition=[...this.profilesStartingPosition],t.profiles=new Map;for(let[e,n]of this.profiles)t.profiles.set(e,[...n]);return t}[Symbol.iterator](){return ln(this.profilesStartingPosition,this.profiles)[Symbol.iterator]()}},xG=class e{setsBySheetId={};constructor(e=[]){for(let t of e)this.add(t)}add(e){this.setsBySheetId[e.sheetId]||(this.setsBySheetId[e.sheetId]=new bG),this.setsBySheetId[e.sheetId].add(e.zone)}addMany(e){for(let t of e)this.add(t)}addPosition(e){this.add(al(e))}addManyPositions(e){for(let t of e)this.addPosition(t)}has(e){return this.setsBySheetId[e.sheetId]?this.setsBySheetId[e.sheetId].has(e.zone):!1}hasPosition(e){return this.has(al(e))}delete(e){this.setsBySheetId[e.sheetId]&&this.setsBySheetId[e.sheetId].delete(e.zone)}deleteMany(e){for(let t of e)this.delete(t)}deleteManyPositions(e){for(let t of e)this.delete(al(t))}difference(t){let n=new e;for(let e in this.setsBySheetId)n.setsBySheetId[e]=this.setsBySheetId[e];for(let e in t.setsBySheetId)n.setsBySheetId[e]&&(n.setsBySheetId[e]=n.setsBySheetId[e].difference(t.setsBySheetId[e]));return n}copy(){let t=new e;for(let e in this.setsBySheetId)t.setsBySheetId[e]=this.setsBySheetId[e].copy();return t}clear(){this.setsBySheetId={}}isEmpty(){for(let e in this.setsBySheetId)if(!this.setsBySheetId[e].isEmpty())return!1;return!0}[Symbol.iterator](){let e=[];for(let t in this.setsBySheetId)for(let n of this.setsBySheetId[t])e.push({sheetId:t,zone:n});return e[Symbol.iterator]()}},SG=class{rTree;constructor(e=[]){let t=CG(e);this.rTree=new vG(t)}insert(e){let t=this.rTree.search(e.boundingBox),n=e.boundingBox,r=t.find(({boundingBox:e})=>e.sheetId===n.sheetId&&e.zone.left===n.zone.left&&e.zone.top===n.zone.top&&e.zone.right===n.zone.right&&e.zone.bottom===n.zone.bottom);r?r.data.add(e.data):this.rTree.insert({...e,data:new xG([e.data])})}search({zone:e,sheetId:t}){let n=new xG;for(let{data:r}of this.rTree.search({zone:e,sheetId:t}))n.addMany(r);return n}remove(e){let t=this.rTree.search(e.boundingBox),n=e.boundingBox,r=t.find(({boundingBox:e})=>e.sheetId===n.sheetId&&e.zone.left===n.zone.left&&e.zone.top===n.zone.top&&e.zone.right===n.zone.right&&e.zone.bottom===n.zone.bottom);r?r.data.delete(e.data):this.rTree.remove({...e,data:new xG([e.data])})}};function CG(e){let t=0,n=0;for(let r=0;r<e.length;r++){let i=e[r].boundingBox.zone;i.right>t&&(t=i.right),i.bottom>n&&(n=i.bottom)}t+=1,n+=1;let r=(((n+1)*t+1)*n+1)*t<=2**53-1;r||console.warn(`Max col/row size exceeded, using slow zone key`);let i={};for(let a of e){let e=a.boundingBox.sheetId;i[e]||(i[e]={});let o=a.boundingBox.zone,s=0;s=r?o.left+o.top*t+o.right*t*n+o.bottom*t*n*t:`${o.left},${o.top},${o.right},${o.bottom}`,i[e][s]?i[e][s].data.add(a.data):i[e][s]={boundingBox:a.boundingBox,data:new xG([a.data])}}let a=[];for(let e in i){let t=i[e];for(let e in t)a.push(t[e])}return a}var wG=class{dependencies=new SV;rTree;constructor(e=[]){this.rTree=new SG(e)}removeAllDependencies(e){let t=this.dependencies.get(e);if(t){for(let e of t)this.rTree.remove(e);this.dependencies.delete(e)}}addDependencies(e,t){let n=t.map(({sheetId:t,zone:n})=>({data:{sheetId:e.sheetId,zone:E(e)},boundingBox:{zone:n,sheetId:t}}));for(let e of n)this.rTree.insert(e);let r=this.dependencies.get(e);r?r.push(...n):this.dependencies.set(e,n)}getCellsDependingOn(e,t=new xG){t=t.copy();let n=Array.from(e).reverse();for(;n.length>0;){let e=n.pop();t.add(e);let r=this.rTree.search(e);n.push(...r.difference(t))}for(let n of e)t.delete(n);return t}},TG=class extends Uint32Array{columnOffset=0;cols=0;rows=0;static create(e,t){let n=EG(t),r=e<<n>>5,i=new this(r+1);return i.columnOffset=n,i.cols=t,i.rows=e,i}getValue(e){let[t,n]=this.getCoordinates(e);return this[t]>>n&1}setValue(e,t){let[n,r]=this.getCoordinates(e),i=(this[n]>>r&1)==0&&t===1;return this[n]=this[n]&~(1<<r)|t<<r,i}isEmpty(){return!this.some(e=>e!==0)}fillAllPositions(){this.fill(-1>>>0)}clear(){this.fill(0)}getCoordinates(e){let{row:t,col:n}=e,r=(t<<this.columnOffset)+n,i=r>>5;return[i,r-(i<<5)]}};function EG(e){return e===0?-1/0:e<0?NaN:32-Math.clz32(--e)}var DG=class{sheets={};insertions=[];maxSize=0;constructor(e){for(let t in e){let n=e[t].cols,r=e[t].rows;this.maxSize+=n*r,this.sheets[t]=TG.create(r,n)}}add(e){this.sheets[e.sheetId].setValue(e,1)&&this.insertions.push(e)}addMany(e){for(let t of e)this.add(t)}delete(e){this.sheets[e.sheetId].setValue(e,0)}deleteMany(e){for(let t of e)this.delete(t)}has(e){return this.sheets[e.sheetId].getValue(e)===1}clear(){let e=[...this];this.insertions=[];for(let e in this.sheets)this.sheets[e].clear();return e}isEmpty(){if(this.insertions.length===0)return!0;for(let e in this.sheets)if(!this.sheets[e].isEmpty())return!1;return!0}fillAllPositions(){this.insertions=Array(this.maxSize);let e=0;for(let t in this.sheets){let n=this.sheets[t];n.fillAllPositions();for(let r=0;r<n.rows;r++)for(let i=0;i<n.cols;i++)this.insertions[e++]={sheetId:t,row:r,col:i}}}*[Symbol.iterator](){for(let e of this.insertions)this.sheets[e.sheetId].getValue(e)===1&&(yield e)}},OG=class{resultsToArrayFormulas=new vG;arrayFormulasToResults=new SV;searchFormulaPositionsSpreadingOn(e,t){return this.resultsToArrayFormulas.search({sheetId:e,zone:t}).map(e=>e.data)||kG}getArrayResultZone(e){return this.arrayFormulasToResults.get(e)}removeNode(e){let t=this.arrayFormulasToResults.get(e);t&&(this.resultsToArrayFormulas.remove({boundingBox:{sheetId:e.sheetId,zone:t},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)}};let kG=[],AG=new B;AG.add(`pivots`,e=>{for(let t of e.getPivotIds())e.getPivot(t).markAsDirtyForEvaluation?.()});let jG=Object.freeze(cc({...new _a,origin:void 0})),MG=Object.freeze(cc({value:null}));var NG=class{context;getters;compilationParams;evaluatedCells=new SV;formulaDependencies=_t(new wG);blockedArrayFormulas=new DG({});spreadingRelations=new OG;constructor(e,t){this.context=e,this.getters=t,this.compilationParams=hG(this.context,this.getters,this.computeAndSave.bind(this))}getEvaluatedCell(e){return this.evaluatedCells.get(e)||MG}getSpreadZone(e,t={ignoreSpillError:!1}){let n=this.spreadingRelations.getArrayResultZone(e);if(!n)return;let r=this.evaluatedCells.get(e);return r?.type===`error`&&!(t.ignoreSpillError&&r?.value===A.SpilledBlocked)?E(e):wn(E(e),n)}getEvaluatedPositions(){return this.evaluatedCells.keys()}getEvaluatedPositionsInSheet(e){return this.evaluatedCells.keysForSheet(e)}getArrayFormulaSpreadingOn(e){if(this.getEvaluatedCell(e).type!==`empty`)return this.spreadingRelations.searchFormulaPositionsSpreadingOn(e.sheetId,E(e)).find(e=>!this.blockedArrayFormulas.has(e))}isArrayFormulaSpillBlocked(e){return this.blockedArrayFormulas.has(e)}updateDependencies(e){this.formulaDependencies().removeAllDependencies(e);let t=this.getDirectDependencies(e);this.formulaDependencies().addDependencies(e,t)}addDependencies(e,t){this.formulaDependencies().addDependencies(e,t);for(let e of t)this.compilationParams.ensureRange(e,!1)}updateCompilationParametersForIsolatedFormula(e){this.compilationParams=hG(this.context,this.getters,this.computeAndSave.bind(this)),this.compilationParams.evalContext.__originCellPosition=e,this.compilationParams.evalContext.updateDependencies=void 0,this.compilationParams.evalContext.addDependencies=void 0,this.compilationParams.evalContext.lookupCaches=this.compilationParams.evalContext.lookupCaches||{forwardSearch:new Map,reverseSearch:new Map}}updateCompilationParameters(){this.compilationParams=hG(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(){let e={};for(let t of this.getters.getSheetIds())e[t]={rows:this.getters.getNumberRows(t),cols:this.getters.getNumberCols(t)};return new DG(e)}evaluateCells(e){let t=performance.now(),n=new xG;n.addManyPositions(e);let r=this.getArrayFormulasImpactedByChangesOf(e);n.addMany(this.getCellsDependingOn(n)),n.addMany(r),n.addMany(this.getCellsDependingOn(r)),this.evaluate(n),console.debug(`evaluate Cells`,performance.now()-t,`ms`)}getArrayFormulasImpactedByChangesOf(e){let t=new xG;for(let n of e){let e=this.getters.getCell(n),r=this.getArrayFormulaSpreadingOn(n);r!==void 0&&t.addPosition(r),!e?.isFormula&&!e?.content&&t.addPosition(n)}for(let e of[...t])t.addMany(this.getArrayFormulasBlockedBy(e.sheetId,e.zone));return t}buildDependencyGraph(){this.blockedArrayFormulas=this.createEmptyPositionSet(),this.spreadingRelations=new OG,this.formulaDependencies=_t(()=>{let e=[];for(let t of this.getters.getSheetIds())for(let n of this.getters.getCells(t))if(n.isFormula){let r=n.compiledFormula.rangeDependencies;for(let i of r)i.invalidSheetName||i.invalidXc||e.push({data:{sheetId:t,zone:E(this.getters.getCellPosition(n.id))},boundingBox:{sheetId:i.sheetId,zone:i.zone}})}return new wG(e)})}evaluateAllCells(){let e=performance.now();this.evaluatedCells=new SV;let t=[];for(let e of this.getters.getSheetIds()){let n=this.getters.getSheetZone(e);t.push({sheetId:e,zone:n})}this.evaluate(t),console.debug(`evaluate all cells`,performance.now()-e,`ms`)}evaluateFormulaResult(e,t,n){let r=yz.Compile(t,e,this.getters);return this.updateCompilationParametersForIsolatedFormula(n),this.evaluateCompiledFormula(e,r)}evaluateCompiledFormula(e,t,n){try{let r=LG(t,this.compilationParams,e,this.buildSafeGetSymbolValue(n),this.compilationParams.evalContext.__originCellPosition);return Ta(r)?Ya(r,FG):FG(r)}catch(e){return Zv(e,``)}}getArrayFormulasBlockedBy(e,t){let n=new xG,r=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e,t);n.addManyPositions(r);let i=[...r].filter(e=>!this.blockedArrayFormulas.has(e));return i.length&&n.deleteManyPositions(i),n.addMany(this.getCellsDependingOn(n)),n}nextRangesToUpdate=new xG;cellsBeingComputed=new Set;symbolsBeingComputed=new Set;evaluate(e){this.cellsBeingComputed=new Set,this.nextRangesToUpdate=new xG(e);let t=0;for(;!this.nextRangesToUpdate.isEmpty()&&t++<30;){this.updateCompilationParameters();let e=[...this.nextRangesToUpdate];this.nextRangesToUpdate.clear(),this.clearEvaluatedRanges(e);for(let t of e){let{left:e,bottom:n,right:r,top:i}=t.zone;for(let a=e;a<=r;a++)for(let e=i;e<=n;e++){let n={sheetId:t.sheetId,col:a,row:e};if(this.nextRangesToUpdate.hasPosition(n))continue;let r=this.computeCell(n);r!==MG&&this.evaluatedCells.set(n,r)}}AG.getAll().forEach(e=>e(this.getters))}t>=30&&console.warn(`Maximum iteration reached while evaluating cells`)}clearEvaluatedRanges(e){for(let t of e){let{left:e,bottom:n,right:r,top:i}=t.zone;for(let a=e;a<=r;a++)for(let e=i;e<=n;e++)this.evaluatedCells.delete({sheetId:t.sheetId,col:a,row:e})}}computeCell(e){let t=this.evaluatedCells.get(e);if(t)return t;this.blockedArrayFormulas.has(e)||this.invalidateSpreading(e),this.spreadingRelations.isArrayFormula(e)&&this.spreadingRelations.removeNode(e);let n=this.getters.getCell(e);if(n===void 0)return MG;let r=n.id,i={format:n.format,locale:this.getters.getLocale()};try{return this.cellsBeingComputed.has(r)?jG:(this.cellsBeingComputed.add(r),n.isFormula?this.computeFormulaCell(e,n):oc(n,i,e))}catch(t){return t.value=t?.value||A.GenericError,t.message=t?.message||ey,t.origin=e,t.errorOriginPosition=t?.errorOriginPosition,cc(t)}finally{this.cellsBeingComputed.delete(r)}}computeAndSave(e){let t=this.computeCell(e);return this.evaluatedCells.has(e)||this.evaluatedCells.set(e,t),t}computeFormulaCell(e,t){let n=LG(t.compiledFormula,this.compilationParams,e.sheetId,this.buildSafeGetSymbolValue(),e);if(!Ta(n)){let r=cc(IG(n),this.getters.getLocale(),t,e);return r.type===`error`&&(r.errorOriginPosition=n.errorOriginPosition??e),r}this.assertSheetHasEnoughSpaceToSpreadFormulaResult(e,n);let r=n.length,i=n[0].length;if(i===0)return cc({value:0},this.getters.getLocale(),t);if(i===1&&r===1)return cc(IG(n[0][0]),this.getters.getLocale(),t);let a={top:e.row,bottom:e.row+i-1,left:e.col,right:e.col+r-1};return this.spreadingRelations.addRelation({resultZone:a,arrayFormulaPosition:e}),this.assertNoMergedCellsInSpreadZone(e,n),PG(r,i,this.checkCollision(e)),PG(r,i,this.spreadValues(e,n)),this.invalidatePositionsDependingOnSpread(e.sheetId,a),cc(IG(n[0][0]),this.getters.getLocale(),t)}invalidatePositionsDependingOnSpread(e,t){let n=this.getCellsDependingOn(Pn(t).map(t=>({sheetId:e,zone:t})));n.delete({sheetId:e,zone:t}),this.nextRangesToUpdate.addMany(n)}assertSheetHasEnoughSpaceToSpreadFormulaResult({sheetId:e,col:t,row:n},r){let i=this.getters.getNumberCols(e),a=this.getters.getNumberRows(e),o=t+r.length<=i,s=n+r[0].length<=a;if(!(o&&s))throw o?new xa(k(`Result couldn't be automatically expanded. Please insert more rows.`)):s?new xa(k(`Result couldn't be automatically expanded. Please insert more columns.`)):new xa(k(`Result couldn't be automatically expanded. Please insert more columns and rows.`))}assertNoMergedCellsInSpreadZone({sheetId:e,col:t,row:n},r){if(this.getters.getMergesInZone(e,{top:n,bottom:n+r[0].length-1,left:t,right:t+r.length-1}).length!==0)throw new xa(k(`Merged cells found in the spill zone. Please unmerge cells before using array formulas.`))}checkCollision(e){let{sheetId:t,col:n,row:r}=e;return(i,a)=>{let o={sheetId:t,col:i+n,row:a+r},s=this.getters.getCell(o);if(s?.isFormula||s?.content||this.getters.getEvaluatedCell(o).type!==`empty`)throw this.blockedArrayFormulas.add(e),new xa(k(`Array result was not expanded because it would overwrite data.`),o);this.blockedArrayFormulas.delete(e)}}spreadValues({sheetId:e,col:t,row:n},r){return(i,a)=>{let o={sheetId:e,col:i+t,row:a+n},s=this.getters.getCell(o),c=cc(IG(r[i][a]),this.getters.getLocale(),s,o);c.type===`error`&&(c.errorOriginPosition=r[i][a].errorOriginPosition??o),this.evaluatedCells.set(o,c)}}invalidateSpreading(e){let t=this.spreadingRelations.getArrayResultZone(e);if(!t)return;for(let n=t.left;n<=t.right;n++)for(let r=t.top;r<=t.bottom;r++){let t={sheetId:e.sheetId,col:n,row:r},i=this.getters.getCell(t);i?.isFormula||i?.content||this.evaluatedCells.delete(t)}let n=e.sheetId;this.invalidatePositionsDependingOnSpread(n,t),this.nextRangesToUpdate.addMany(this.getArrayFormulasBlockedBy(n,t))}buildSafeGetSymbolValue(e){return t=>{if(this.symbolsBeingComputed.has(t))return jG;this.symbolsBeingComputed.add(t);try{return e?.(t)||new ga(k(`Invalid formula`))}finally{this.symbolsBeingComputed.delete(t)}}}getDirectDependencies(e){let t=this.getters.getCell(e);return t?.isFormula?t.compiledFormula.rangeDependencies:[]}getCellsDependingOn(e){return this.formulaDependencies().getCellsDependingOn(e,this.nextRangesToUpdate)}};function PG(e,t,n){for(let r=0;r<e;++r)for(let e=0;e<t;++e)r===0&&e===0||n(r,e)}function FG(e){return e.value===null||e.value===void 0?{...e,value:0}:e}function IG(e){return typeof e.value==`number`&&Math.abs(e.value)>Number.MAX_VALUE?new Ca:FG(e)}function LG(e,t,n,r,i){let a=t.evalContext,o=a.__originCellPosition,s=a.__originSheetId;a.__originCellPosition=i,a.__originSheetId=n;let c=e.execute(e.rangeDependencies,t.referenceDenormalizer,t.ensureRange,r,a);return a.__originCellPosition=o,a.__originSheetId=s,c}var RG=class extends pG{static getters=[`evaluateFormula`,`evaluateFormulaResult`,`evaluateCompiledFormula`,`getCorrespondingFormulaCell`,`getRangeFormattedValues`,`getRangeValues`,`getRangeFormats`,`getEvaluatedCell`,`getEvaluatedCells`,`getEvaluatedCellsInZone`,`getEvaluatedCellsPositions`,`getSpreadZone`,`getArrayFormulaSpreadingOn`,`isArrayFormulaSpillBlocked`,`isEmpty`];shouldRebuildDependenciesGraph=!0;evaluator;positionsToUpdate=[];constructor(e){super(e),this.evaluator=new NG(e.custom,this.getters)}beforeHandle(e){(Rs.has(e.type)||Bs.has(e.type))&&(this.shouldRebuildDependenciesGraph=!0)}handle(e){switch(e.type){case`UPDATE_CELL`:if(!(`content`in e||`format`in e)||this.shouldRebuildDependenciesGraph)return;let 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`:if(e.cellIds)for(let t=0;t<e.cellIds.length;t++)this.positionsToUpdate.push(this.getters.getCellPosition(e.cellIds[t]));else this.evaluator.evaluateAllCells();break}}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,n){let r=this.evaluateFormulaResult(e,t,n);return Ta(r)?Ya(r,e=>e.value):r.value}evaluateFormulaResult(e,t,n){return this.evaluator.evaluateFormulaResult(e,t,n)}evaluateCompiledFormula(e,t,n){return this.evaluator.evaluateCompiledFormula(e,t,n)}getRangeFormattedValues(e){return this.getters.tryGetSheet(e.sheetId)===void 0?[]:this.mapVisiblePositions(e,e=>this.getters.getEvaluatedCell(e).formattedValue)}getRangeValues(e){return this.getters.tryGetSheet(e.sheetId)===void 0?[]:this.mapVisiblePositions(e,e=>this.getters.getEvaluatedCell(e).value)}getRangeFormats(e){let t=this.getters.tryGetSheet(e.sheetId);return t===void 0?[]: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 Fn(t).map(({col:t,row:n})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}))}getSpreadZone(e,t={ignoreSpillError:!1}){return this.evaluator.getSpreadZone(e,t)}getArrayFormulaSpreadingOn(e){return this.evaluator.getArrayFormulaSpreadingOn(e)}isArrayFormulaSpillBlocked(e){return this.evaluator.isArrayFormulaSpillBlocked(e)}isEmpty(e,t){return Fn(t).map(({col:t,row:n})=>this.getEvaluatedCell({sheetId:e,col:t,row:n})).every(e=>e.type===`empty`)}mapVisiblePositions(e,t){let{sheetId:n,zone:r}=e;return Fn(r).reduce((e,r)=>{let{col:i,row:a}=r;return!this.getters.isColHidden(n,i)&&!this.getters.isRowHidden(n,a)&&e.push(t({sheetId:n,...r})),e},[])}exportForExcel(e){for(let t of e.sheets)t.cellValues={},t.formulaSpillRanges={};for(let t of this.evaluator.getEvaluatedPositions()){let n=this.evaluator.getEvaluatedCell(t),r=T(t.col,t.row),i=n.value,a=!1,o,s=!0,c=e.sheets.find(e=>e.id===t.sheetId),l=this.getCorrespondingFormulaCell(t);if(l){let u=this.getters.getCell(t);if(s=l.compiledFormula.areAllFunctionsExportableToExcel(),a=s&&(u?.isFormula?u.compiledFormula.toFormulaString(this.getters):u?.content)===l.compiledFormula.toFormulaString(this.getters),!s&&i!==``){o=(i??``).toString();let t=n.format;if(t){let n=Sc(t,e.formats);c.formats[r]=n}}}let u=c.cells[r],d;d=s&&a&&l?.isFormula?l.compiledFormula.toFormulaString(this.getters,{useBoundedReference:!0}):s?u:o,c.cells[r]=d,c.cellValues[r]=i===A.BadExpression?void 0:i;let f=this.getSpreadZone(t);f&&(c.formulaSpillRanges[r]=this.getters.getRangeString(this.getters.getRangeFromZone(t.sheetId,f),t.sheetId))}}getCorrespondingFormulaCell(e){let t=this.getters.getCell(e);if(t&&t.isFormula)return t.compiledFormula.isBadExpression?void 0:t;if(t&&t.content)return;let n=this.getArrayFormulaSpreadingOn(e);if(n===void 0)return;let r=this.getters.getCell(n);if(r?.isFormula)return r}};let zG=new B;zG.add(`data_validation_checkbox`,(e,t)=>{if(e.isCellValidCheckbox(t)){let n=!!e.getEvaluatedCell(t).value;return{svg:n?AO:OO,hoverSvg:n?AO:kO,priority:2,horizontalAlign:`center`,size:17,margin:2,position:t,type:`data_validation_checkbox`,onClick:(e,t)=>{let r=t.model.getters.getCell(e);if(t.model.getters.isReadonly()||r?.isFormula)return;let i=n?`FALSE`:`TRUE`;t.model.dispatch(`UPDATE_CELL`,{...e,content:i})}}}}),zG.add(`data_validation_list_chip_icon`,(e,t)=>{if(e.isReadonly())return;let n=e.getDataValidationChipStyle(t);if(!e.cellHasListDataValidationIcon(t)&&!n)return;let r=e.getCellComputedStyle(t),i=n||r;return{svg:TO(i),hoverSvg:DO(i),priority:2,horizontalAlign:`right`,size:zl(r),margin:4,position:t,onClick:(e,t)=>{let{col:n,row:r}=e;t.model.selection.selectCell(n,r),t.startCellEdition()},type:`data_validation_list_chip_icon`}}),zG.add(`conditional_formatting`,(e,t)=>{let n=e.getConditionalIcon(t);if(n){let r=e.getCellStyle(t);return{type:`conditional_formatting`,svg:NO[n].svg,priority:1,horizontalAlign:`left`,size:zl(r),margin:4,position:t}}}),zG.add(`pivot_collapse`,(e,t)=>{if(!e.isSpillPivotFormula(t))return;let n=e.getPivotCellFromPosition(t),r=e.getPivotIdFromPosition(t);if(n.type===`HEADER`&&r&&n.domain.length){let i=e.getPivotCoreDefinition(r),a=e.isDashboard(),o=n.dimension===`COL`?i.columns:i.rows,s=!a&&!e.shouldShowFormulas()&&n.domain.length!==o.length,c=(i.collapsedDomains?.[n.dimension]??[]).some(e=>w(e,n.domain)),l=n.dimension===`ROW`?(n.domain.length-1)*15:0;return{type:`pivot_collapse`,priority:4,horizontalAlign:`left`,size:s||!a&&n.dimension===`ROW`&&i.rows.length>1?12:0,margin:s?4+l:l,svg:s?jO(c,!1):void 0,hoverSvg:s?jO(c,!0):void 0,position:t,onClick:Rh}}}),zG.add(`pivot_dashboard_sorting`,(e,t)=>{if(!e.isDashboard()||e.getPivotCellFromPosition(t).type!==`MEASURE_HEADER`)return;let n=e.getPivotCellSortDirection(t);if(n!==`asc`&&n!==`desc`)return;let r=e.getCellComputedStyle(t);return{type:`pivot_dashboard_sorting_${n}`,priority:5,horizontalAlign:`right`,size:zl(r),margin:0,svg:n===`asc`?EO(r):TO(r),position:t,onClick:void 0}});var BG=class extends pG{static getters=[`doesCellHaveGridIcon`,`getCellIcons`,`getCellIconRect`];cellIconsCache={};handle(e){e.type!==`SET_VIEWPORT_OFFSET`&&(this.cellIconsCache={})}getCellIcons(e){return this.cellIconsCache[e.sheetId]||(this.cellIconsCache[e.sheetId]={}),this.cellIconsCache[e.sheetId][e.col]||(this.cellIconsCache[e.sheetId][e.col]={}),this.cellIconsCache[e.sheetId][e.col][e.row]||(this.cellIconsCache[e.sheetId][e.col][e.row]=this.computeCellIcons(e)),this.cellIconsCache[e.sheetId][e.col][e.row]}getCellIconRect(e,t){let n=e.position,r=this.getters.getCell(n);return{x:this.getIconHorizontalPosition(t,e.horizontalAlign,e),y:this.getters.computeTextYCoordinate(t,e.size,r?.style?.verticalAlign),width:e.size,height:e.size}}getIconHorizontalPosition(e,t,n){let r=e.x,i=e.x+e.width;switch(t){case`right`:return i-n.margin-n.size;case`left`:return r+n.margin;default:let e=Math.floor((i-r-n.size)/2);return i-n.size-e}}computeCellIcons(e){let t={left:void 0,right:void 0,center:void 0},n=zG.getAll();for(let r of n){let n=r(this.getters,e);n&&(!t[n.horizontalAlign]||n.priority>t[n.horizontalAlign].priority)&&(t[n.horizontalAlign]=n)}if(t.center&&(t.left||t.right)){let e=Math.max(t.left?.priority||0,t.right?.priority||0);t.center.priority<e?t.center=void 0:(t.left=void 0,t.right=void 0)}return Object.values(t).filter(C)}doesCellHaveGridIcon(e){return!!this.getCellIcons(e).length}};let VG=/"(#[0-9a-fA-F]{6})"/g;function HG(e){let t=[{leadColor:Mr(255,0,0),colors:[]},{leadColor:Mr(255,128,0),colors:[]},{leadColor:Mr(128,128,0),colors:[]},{leadColor:Mr(128,255,0),colors:[]},{leadColor:Mr(0,255,0),colors:[]},{leadColor:Mr(0,255,128),colors:[]},{leadColor:Mr(0,255,255),colors:[]},{leadColor:Mr(0,127,255),colors:[]},{leadColor:Mr(0,0,255),colors:[]},{leadColor:Mr(127,0,255),colors:[]},{leadColor:Mr(128,0,128),colors:[]},{leadColor:Mr(255,0,128),colors:[]}];for(let n of e.map(Ir)){let e=500,r=0;t.forEach((t,i)=>{let a=UG(n,t.leadColor);e>a&&(e=a,r=i)}),t[r].colors.push(n)}return t.map(e=>e.colors.sort((e,t)=>Rr(e).s-Rr(t).s)).flat().map(Fr)}function UG(e,t){return Math.sqrt((e.r-t.r)**2+(e.g-t.g)**2+(e.b-t.b)**2)}var WG=class extends pG{customColors={};shouldUpdateColors=!0;static getters=[`getCustomColors`];constructor(e){super(e),this.tryToAddColors(e.customColors??[])}handle(e){switch(e.type){case`START`:for(let e of this.getters.getSheetIds()){for(let t of this.getters.getChartIds(e))this.tryToAddColors(this.getChartColors(t));for(let t of this.getters.getFigures(e))this.tryToAddColors(this.getCarouselColors(e,t.id))}break;case`UPDATE_CHART`:case`CREATE_CHART`:this.tryToAddColors(this.getChartColors(e.chartId));break;case`CREATE_CAROUSEL`:case`UPDATE_CAROUSEL`:this.tryToAddColors(this.getCarouselColors(e.sheetId,e.figureId));break;case`COLOR_SHEET`:e.color&&this.tryToAddColors([e.color]);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);break}}finalize(){this.shouldUpdateColors&&(this.history.update(`shouldUpdateColors`,!1),this.tryToAddColors(this.computeCustomColors()))}getCustomColors(){return HG(Object.keys(this.customColors))}computeCustomColors(){let e=[];for(let t of this.getters.getSheetIds())e=e.concat(this.getSheetColors(t),this.getColorsFromCells(t),this.getFormattingColors(t),this.getTableColors(t));return[...new Set([...e])]}getSheetColors(e){let t=this.getters.getSheet(e);return t.color?[t.color]:[]}getColorsFromCells(e){let t=Object.values(this.getters.getCells(e)),n=new Set;for(let e of t)e.style?.textColor&&n.add(e.style.textColor),e.style?.fillColor&&n.add(e.style.fillColor);for(let t of this.getters.getBordersColors(e))n.add(t);return[...n]}getFormattingColors(e){let t=this.getters.getConditionalFormats(e),n=[];for(let e of t){let t=e.rule;t.type===`CellIsRule`?(n.push(t.style.textColor),n.push(t.style.fillColor)):t.type===`ColorScaleRule`&&(n.push(Er(t.minimum.color)),n.push(t.midpoint?Er(t.midpoint.color):void 0),n.push(Er(t.maximum.color)))}return n.filter(C)}getChartColors(e){let t=this.getters.getChart(e);return t===void 0?[]:[...JSON.stringify(t.getDefinition()).matchAll(VG)].map(e=>e[1])}getCarouselColors(e,t){if(this.getters.getFigure(e,t)?.tag!==`carousel`)return[];let n=this.getters.getCarousel(t).title?.color;return n?[n]:[]}getTableColors(e){return this.getters.getTables(e).flatMap(e=>{let t=e.config,n=this.getters.getTableStyle(t.styleId);return[this.getTableStyleElementColors(n.wholeTable),t.numberOfHeaders>0?this.getTableStyleElementColors(n.headerRow):[],t.totalRow?this.getTableStyleElementColors(n.totalRow):[],t.bandedColumns?this.getTableStyleElementColors(n.firstColumnStripe):[],t.bandedColumns?this.getTableStyleElementColors(n.secondColumnStripe):[],t.bandedRows?this.getTableStyleElementColors(n.firstRowStripe):[],t.bandedRows?this.getTableStyleElementColors(n.secondRowStripe):[],t.firstColumn?this.getTableStyleElementColors(n.firstColumn):[],t.lastColumn?this.getTableStyleElementColors(n.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(C):[]}tryToAddColors(e){for(let t of e){if(!kr(t))continue;let e=Or(t);t&&!_e.includes(e)&&this.history.update(`customColors`,e,!0)}}},GG=class extends pG{static getters=[`canCreateDynamicTableOnZones`,`doesZonesContainFilter`,`getFilter`,`getFilters`,`getTable`,`getTables`,`getTablesOverlappingZones`,`getFilterId`,`getFilterHeaders`,`isFilterHeader`];tables={};handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)||e.type===`EVALUATE_CELLS`){this.tables={};return}switch(e.type){case`CREATE_TABLE`:case`REMOVE_TABLE`:case`UPDATE_TABLE`:case`DELETE_CONTENT`:case`REFRESH_PIVOT`:this.tables={};break}}finalize(){for(let e of this.getters.getSheetIds())this.tables[e]||(this.tables[e]=this.computeTables(e))}computeTables(e){let t=[],n=[...this.getters.getCoreTables(e)].filter(e=>e.type!==`dynamic`);t.push(...n);for(let r of this.getDynamicTables(e)){let i=this.coreTableToTable(e,r),a=i.range.zone,o=a.left,s=a.top;if(!n.some(e=>An(o,s,e.range.zone))){for(let e of n){let t=e.range.zone;On(a,t)&&(a=t.left>a.left?{...a,right:Math.min(a.right,t.left-1)}:{...a,bottom:Math.min(a.bottom,t.top-1)})}t.push({...i,range:this.getters.getRangeFromZone(e,a)})}}return t}getDynamicTables(e){let t=this.getters.getCoreTables(e).filter(e=>e.type===`dynamic`),n=this.getTablesFromPivots(e),r=new Set(n.map(t=>this.getters.getRangeString(t.range,e))),i=t.filter(t=>!r.has(this.getters.getRangeString(t.range,e)));return[...n,...i]}getTablesFromPivots(e){let t=[];for(let{position:n,pivotStyle:r,pivotId:i}of this.getters.getAllPivotArrayFormulas()){if(!this.getters.getPivot(i).isValid())continue;let a=this.getters.getSpreadZone(n),o=this.getters.getCell(n);n.sheetId!==e||!a||!o||r.tableStyleId===`None`||t.push({type:`dynamic`,id:`pivot_table_`+i+`_`+o.id,range:this.getters.getRangeFromZone(e,E(n)),config:this.getTableConfigFromPivotStyle(i,r),isPivotTable:!0})}return t}getTableConfigFromPivotStyle(e,t){let n=this.getters.getPivot(e).getCollapsedTableStructure(),{numberOfRows:r,numberOfHeaderRows:i}=n.getPivotTableDimensions(t),a=n.getPivotCells(t)[0]?.[r-1],o=t.displayTotals&&a?.type===`HEADER`&&a.domain.length===0;return{hasFilters:t.hasFilters,totalRow:o,firstColumn:!0,lastColumn:!0,numberOfHeaders:i,bandedRows:t.bandedRows,bandedColumns:t.bandedColumns,styleId:t.tableStyleId}}getFilters(e){return this.getTables(e).filter(e=>e.config.hasFilters).map(e=>e.filters).flat()}getTables(e){return this.tables[e]||[]}getFilter(e){let 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:n}){return this.getTables(e).find(e=>An(t,n,e.range.zone))}getTablesOverlappingZones(e,t){return this.getTables(e).filter(e=>t.some(t=>On(e.range.zone,t)))}doesZonesContainFilter(e,t){return this.getTablesOverlappingZones(e,t).some(e=>e.config.hasFilters)}getFilterHeaders(e){let t=[];for(let n of this.getTables(e)){if(!n.config.hasFilters)continue;let r=n.range.zone,i=r.top;for(let n=r.left;n<=r.right;n++)t.push({sheetId:e,col:n,row:i})}return t}isFilterHeader({sheetId:e,col:t,row:n}){return this.getFilterHeaders(e).some(e=>e.col===t&&e.row===n)}canCreateDynamicTableOnZones(e,t){if(!Yn(t))return!1;let n=wn(...t),r={col:n.left,row:n.top,sheetId:e},i=this.getters.getArrayFormulaSpreadingOn(r);if(!i){let e=this.getters.getEvaluatedCell(r);return e.value===A.SpilledBlocked&&!e.errorOriginPosition}else if(w(i,r)&&Gn(n)===1)return!0;return w(n,this.getters.getSpreadZone(i))}coreTableToTable(e,t){if(t.type!==`dynamic`)return t;let n=t.range.zone,r={sheetId:e,col:n.left,row:n.top},i=this.getters.getSpreadZone(r)??t.range.zone,a=this.getters.getRangeFromZone(e,i),o=this.getDynamicTableFilters(e,t,i);return{id:t.id,range:a,filters:o,config:t.config,isPivotTable:t.isPivotTable}}getDynamicTableFilters(e,t,n){let r=[],{top:i,bottom:a,left:o,right:s}=n;for(let n=o;n<=s;n++){let s=n-o,c={left:n,right:n,top:i,bottom:a},l=KB(this.getDynamicTableFilterId(t.id,s),this.getters.getRangeFromZone(e,c),t.config,this.getters.getRangeFromZone);r.push(l)}return r}getDynamicTableFilterId(e,t){return e+`_`+t}isTableExcelExportable(e,t){return t.type===`dynamic`?!1:!Fn(t.range.zone).some(t=>this.getters.getArrayFormulaSpreadingOn({sheetId:e,...t}))}exportForExcel(e){for(let t of e.sheets){let n=[];for(let r of t.tables){let i=mn(r.range),a={sheetId:t.id,col:i.left,row:i.top},o=this.getters.getCoreTable(a),s=this.getTable(a);if(!o||!s||this.isTableExcelExportable(t.id,o)){n.push(r);continue}t.styles=t.styles||{},t.borders=t.borders||{};for(let n of Fn(s.range.zone)){let r={sheetId:t.id,...n},i=this.getters.getCellComputedStyle(r),a=this.getters.getCellComputedBorder(r),o=T(n.col,n.row);if(!ft(i)){let n=Sc(i,e.styles);t.styles[o]=n}if(a){let n=Sc(a,e.borders);t.borders[o]=n}}}t.tables=n}}},KG=class extends pG{static getters=[`getChartRuntime`,`getStyleOfSingleCellChart`];charts={};createRuntimeChart=x_(this.getters);handle(e){if(Rs.has(e.type)||Vs.has(e.type)||zs.has(e.type))for(let e in this.charts)this.charts[e]=void 0;switch(e.type){case`UPDATE_CHART`:case`CREATE_CHART`:this.charts[e.chartId]=void 0;break;case`DELETE_CHART`:this.charts[e.chartId]=void 0;break;case`DELETE_SHEET`:for(let e in this.charts)this.getters.isChartDefined(e)||(this.charts[e]=void 0);break}}getChartRuntime(e){if(!this.charts[e]){let t=this.getters.getChart(e);if(!t)throw 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:dd(e)};if(!t)return{background:oe,fontColor:dd(oe)};let n=t.zone.left,r=t.zone.top,i=t.sheetId,a=this.getters.getCellComputedStyle({sheetId:i,col:n,row:r}),o=a.fillColor||`#FFFFFF`;return{background:o,fontColor:a.textColor||dd(o)}}async exportForExcel(e){for(let t of e.sheets){t.images||=[];let e=this.getters.getFigures(t.id),n=[];for(let r of e){if(!r||r.tag!==`chart`)continue;let e=this.getters.getChartIds(t.id).find(e=>this.getters.getFigureIdFromChartId(e)===r.id);if(!e)continue;let i=this.getters.getChart(e),a=i?.getDefinitionForExcel(this.getters);if(a)n.push({...r,data:a});else{if(!i)continue;let n=this.getters.getChartType(e),a=await qp(this.getters.getChartRuntime(e),r,n);a&&t.images.push({...r,tag:`image`,data:{mimetype:`image/png`,path:a,size:{width:r.width,height:r.height}}})}}t.charts=n}}},qG=class extends pG{static getters=[`getConditionalIcon`,`getCellConditionalFormatStyle`,`getConditionalDataBar`];isStale=!0;computedStyles={};computedIcons={};computedDataBars={};handle(e){(Rs.has(e.type)||Vs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e))&&(this.isStale=!0)}finalize(){if(this.isStale){for(let e of this.getters.getSheetIds())this.computedStyles[e]=_t(()=>this.getComputedStyles(e)),this.computedIcons[e]=_t(()=>this.getComputedIcons(e)),this.computedDataBars[e]=_t(()=>this.getComputedDataBars(e));this.isStale=!1}}getCellConditionalFormatStyle(e){let{sheetId:t,col:n,row:r}=e,i=this.computedStyles[t]();return i&&i[n]?.[r]}getConditionalIcon({sheetId:e,col:t,row:n}){let r=this.computedIcons[e]();return r&&r[t]?.[n]}getConditionalDataBar({sheetId:e,col:t,row:n}){let r=this.computedDataBars[e]();return r&&r[t]?.[n]}getComputedStyles(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())switch(n.rule.type){case`ColorScaleRule`:for(let r of n.ranges)this.applyColorScale(e,r,n.rule,t);break;case`CellIsRule`:let r=n.rule.values.map(t=>{if(t.startsWith(`=`))return yz.Compile(t,e,this.getters)}),i=Z.get(n.rule.operator),a={...n.rule,type:n.rule.operator},o=n.ranges.map(t=>this.getters.getRangeFromSheetXC(e,t)),s=i.preComputeCriterion?.(a,o,this.getters);for(let i of n.ranges){let a=this.getters.getRangeFromSheetXC(e,i).zone;for(let i=a.top;i<=a.bottom;i++)for(let o=a.left;o<=a.right;o++){let c={sheetId:e,col:o,row:i},l=n.rule.values.map((t,n)=>{let s=r[n];return s?this.getters.getTranslatedCellFormula(e,o-a.left,i-a.top,s):t});this.getRuleResultForTarget(c,{...n.rule,values:l},s)&&(t[o]||(t[o]=[]),t[o][i]=Object.assign(t[o]?.[i]||{},n.rule.style))}}break}return t}getComputedIcons(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())if(n.rule.type===`IconSetRule`)for(let r of n.ranges)this.applyIcon(e,r,n.rule,t);return t}getComputedDataBars(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())if(n.rule.type===`DataBarRule`)for(let r of n.ranges)this.applyDataBar(e,r,n.rule,t);return t}parsePoint(e,t,n,r){let i=this.getters.getRangeFromSheetXC(e,t).zone,a=this.getters.getEvaluatedCellsInZone(e,i).filter(e=>e.type===`number`).map(e=>e.value);switch(n.type){case`value`:return r===`max`?Lt(a):Rt(a);case`number`:return Number(n.value);case`percentage`:let t=Rt(a);return t+(Lt(a)-t)*Number(n.value)/100;case`percentile`:return oa(a,Number(n.value)/100,!0);case`formula`:let i=n.value&&this.getters.evaluateFormula(e,n.value);return typeof i==`number`?i:null;default:return null}}applyIcon(e,t,n,r){let i=this.parsePoint(e,t,n.lowerInflectionPoint),a=this.parsePoint(e,t,n.upperInflectionPoint);if(i===null||a===null||i>a)return;let o=this.getters.getRangeFromSheetXC(e,t).zone,s=[n.icons.upper,n.icons.middle,n.icons.lower];for(let t=o.top;t<=o.bottom;t++)for(let c=o.left;c<=o.right;c++){let o=this.getters.getEvaluatedCell({sheetId:e,col:c,row:t});if(o.type!==`number`)continue;let l=this.computeIcon(o.value,a,n.upperInflectionPoint.operator,i,n.lowerInflectionPoint.operator,s);r[c]||(r[c]=[]),r[c][t]=l}}computeIcon(e,t,n,r,i,a){return n===`ge`&&e>=t||n===`gt`&&e>t?a[0]:i===`ge`&&e>=r||i===`gt`&&e>r?a[1]:a[2]}applyDataBar(e,t,n,r){let i=this.getters.getRangeFromSheetXC(e,n.rangeValues||t),a=Lt(this.getters.getEvaluatedCellsInZone(e,i.zone).filter(e=>e.type===`number`).map(e=>e.value));if(a<=0)return;let o=n.color,s=this.getters.getRangeFromSheetXC(e,t).zone,c=i.zone;for(let t=s.top;t<=s.bottom;t++)for(let n=s.left;n<=s.right;n++){let i=n-s.left+c.left,l=t-s.top+c.top,u=this.getters.getEvaluatedCell({sheetId:e,col:i,row:l});!An(i,l,c)||u.type!==`number`||u.value<=0||(r[n]||(r[n]=[]),r[n][t]={color:Er(o),percentage:u.value*100/a})}}applyColorScale(e,t,n,r){let i=this.parsePoint(e,t,n.minimum,`min`),a=n.midpoint?this.parsePoint(e,t,n.midpoint):null,o=this.parsePoint(e,t,n.maximum,`max`);if(i===null||o===null||i>=o||a!==null&&(i>=a||a>=o))return;let s=this.getters.getRangeFromSheetXC(e,t).zone,c=[{value:i,color:n.minimum.color}];n.midpoint&&a!==null&&c.push({value:a,color:n.midpoint.color}),c.push({value:o,color:n.maximum.color});let l=li(c);for(let t=s.top;t<=s.bottom;t++)for(let n=s.left;n<=s.right;n++){let a=this.getters.getEvaluatedCell({sheetId:e,col:n,row:t});if(a.type===`number`){let e=x(a.value,i,o);r[n]||(r[n]=[]),r[n][t]=r[n]?.[t]||{},r[n][t].fillColor=l(e)}}}getRuleResultForTarget(e,t,n){let r=this.getters.getEvaluatedCell(e);if(r.type===`error`)return!1;let{sheetId:i}=e,a=Z.get(t.operator),o=t.values.map(t=>t.startsWith(`=`)?this.getters.evaluateFormula(i,t,e)??``:sc(t,R));if(o.some(Sm))return!1;let s={...t,type:t.operator,values:o.map(bm),dateValue:t.dateValue||`exactDate`};return a.isValueValid(r.value??``,s,n)}};let JG={isValid:!0};var YG=class extends pG{static getters=[`getDataValidationInvalidCriterionValueMessage`,`getInvalidDataValidationMessage`,`getValidationResultForCellValue`,`getDataValidationRangeValues`,`isCellValidCheckbox`,`getDataValidationCellStyle`,`getDataValidationChipStyle`,`isDataValidationInvalid`];validationResults={};criterionPreComputeResult={};handle(e){if(Rs.has(e.type)||e.type===`EVALUATE_CELLS`||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)){this.validationResults={},this.criterionPreComputeResult={};return}switch(e.type){case`ADD_DATA_VALIDATION_RULE`:case`REMOVE_DATA_VALIDATION_RULE`:delete this.validationResults[e.sheetId],delete this.criterionPreComputeResult[e.sheetId];break}}isDataValidationInvalid(e){return!this.getValidationResultForCell(e).isValid}getDataValidationCellStyle(e){if(!this.hasChip(e))return this.getDataValidationStyle(e)}getDataValidationChipStyle(e){if(this.hasChip(e))return this.getDataValidationStyle(e)??{fillColor:`#E7E9ED`}}getInvalidDataValidationMessage(e){let t=this.getValidationResultForCell(e);return t.isValid?void 0:t.error}getDataValidationInvalidCriterionValueMessage(e,t){let n=Z.get(e);return t.startsWith(`=`)?n.allowedValues===`onlyLiterals`?k(`The value must not be a formula`):this.isValidFormula(t)?void 0:H.CriterionError.validFormula:n.allowedValues===`onlyFormulas`?k(`The value must be a formula`):n.isCriterionValueValid(t)?void 0:n.criterionValueErrorString}getDataValidationRangeValues(e,t){let n=this.getters.getRangeFromSheetXC(e,String(t.values[0])),r=[],i=new Set;for(let e of Fn(n.zone)){let t=this.getters.getEvaluatedCell({...e,sheetId:n.sheetId});t.formattedValue&&!i.has(t.formattedValue)&&(i.add(t.formattedValue),r.push({label:t.formattedValue,value:t.value?.toString()||``}))}return r}isCellValidCheckbox(e){if(!this.getters.isMainCellPosition(e))return!1;let t=this.getters.getValidationRuleForCell(e);return!t||t.criterion.type!==`isBoolean`?!1:this.getValidationResultForCell(e).isValid}getValidationResultForCellValue(e,t){let n=this.getters.getValidationRuleForCell(t);if(!n)return JG;let r=this.getRuleErrorForCellValue(e,t,n);return r?{error:r,rule:n,isValid:!1}:JG}hasChip(e){let t=this.getters.getValidationRuleForCell(e);return(t?.criterion.type===`isValueInList`||t?.criterion.type===`isValueInRange`)&&t.criterion.displayStyle===`chip`}getDataValidationStyle(e){let t=this.getters.getValidationRuleForCell(e);if(!t||this.isDataValidationInvalid(e))return;let n=this.getters.getEvaluatedCell(e),r=this.getValueColor(t,n.value);if(r)return{fillColor:r,textColor:qr(r)}}getValueColor(e,t){if(!(e.criterion.type!==`isValueInList`&&e.criterion.type!==`isValueInRange`)){for(let n in e.criterion.colors)if(n.toLowerCase()===String(t).toLowerCase())return e.criterion.colors[n]}}isValidFormula(e){return!yz.IsBadExpression(e)}getValidationResultForCell(e){let{col:t,row:n,sheetId:r}=e;return this.validationResults[r]||(this.validationResults[r]=this.computeSheetValidationResults(r)),this.validationResults[r][t]?.[n]?.()||JG}computeSheetValidationResults(e){let t={},n=this.getters.getDataValidationRules(e).map(e=>e.ranges);for(let e of rl(n.flat())){let{col:n,row:r}=e;t[n]||(t[n]=[]),t[n][r]=_t(()=>{let t=this.getters.getEvaluatedCell(e);return t.type===`empty`?JG:this.getValidationResultForCellValue(t.value,e)})}return t}getRuleErrorForCellValue(e,t,n){let{sheetId:r}=t,i=n.criterion,a=Z.get(i.type),o=this.getCellOffsetInRule(t,n),s=this.getEvaluatedCriterionValues(r,t,o,i);if(s.some(Sm))return;let c={...i,values:s.map(bm)};this.criterionPreComputeResult[r]||(this.criterionPreComputeResult[r]={});let l=this.criterionPreComputeResult[r][n.id];if(l===void 0&&(l=a.preComputeCriterion?.(n.criterion,n.ranges,this.getters),this.criterionPreComputeResult[r][n.id]=l),!a.isValueValid(e,c,l))return a.getErrorString(c,this.getters,r)}getCellOffsetInRule(e,t){let n=t.ranges.find(t=>An(e.col,e.row,t.zone));if(!n)throw Error(`The cell is not in any range of the rule`);return{col:e.col-n.zone.left,row:e.row-n.zone.top}}getEvaluatedCriterionValues(e,t,n,r){return r.values.map(r=>{if(!r.startsWith(`=`))return sc(r,R);let i=yz.Compile(r,e,this.getters),a=this.getters.getTranslatedCellFormula(e,n.col,n.row,i);return this.getters.evaluateFormula(e,a,t)})}};let XG=[`SUBTOTAL`,`PIVOT`];var ZG=class extends pG{static getters=[`getCellsWithTrackedFormula`];trackedCells={};handle(e){switch(e.type){case`START`:for(let e of XG)this.trackedCells[e]={};for(let e of this.getters.getSheetIds())for(let t of this.getters.getCells(e))for(let e of XG)Gt(t,e)&&this.history.update(`trackedCells`,e,t.id,t.id);break;case`UPDATE_CELL`:{if(!(`content`in e))return;let t=this.getters.getCell(e);if(!t)return;for(let e of XG)Gt(t,e)?this.history.update(`trackedCells`,e,t.id,t.id):this.trackedCells[e][t.id]&&this.history.update(`trackedCells`,e,t.id,void 0);break}}}getCellsWithTrackedFormula(e){return Object.values(this.trackedCells[e]||{}).filter(t=>t!==void 0&&this.trackedCells[e][t]&&this.getters.tryGetCellPosition(t))}},QG=class extends pG{static getters=[`getRowSize`,`getHeaderSize`,`getMaxAnchorOffset`];tallestCellInRow={};ctx=Dl();beforeHandle(e){switch(e.type){case`ADD_COLUMNS_ROWS`:if(e.dimension===`COL`)return;let t=yt(e.position,e.base),n=Array(e.quantity).fill(void 0),r=Mt(this.tallestCellInRow[e.sheetId],n,t);this.history.update(`tallestCellInRow`,e.sheetId,r);break}}handle(e){switch(e.type){case`START`:case`UPDATE_LOCALE`:for(let e of this.getters.getSheetIds())this.initializeSheet(e);break;case`CREATE_SHEET`:this.initializeSheet(e.sheetId);break;case`DUPLICATE_SHEET`:{let t=b(this.tallestCellInRow[e.sheetId]);this.history.update(`tallestCellInRow`,e.sheetIdTo,t);break}case`DELETE_SHEET`:let t={...this.tallestCellInRow};delete t[e.sheetId],this.history.update(`tallestCellInRow`,t);break;case`REMOVE_COLUMNS_ROWS`:{if(e.dimension===`COL`)return;let t=jt(this.tallestCellInRow[e.sheetId],e.elements);this.history.update(`tallestCellInRow`,e.sheetId,t);break}case`RESIZE_COLUMNS_ROWS`:{let t=e.sheetId;if(e.dimension===`ROW`)for(let n of e.elements){let e=this.getRowTallestCell(t,n);this.history.update(`tallestCellInRow`,t,n,e)}else for(let n of S(0,this.getters.getNumberRows(t)))for(let r of e.elements)this.updateRowSizeForCellChange(t,n,r)}break;case`SET_FORMATTING`:if(e.style&&(`fontSize`in e.style||`wrapping`in e.style||`rotation`in e.style))for(let t of e.target)this.updateRowSizeForZoneChange(e.sheetId,t);break;case`UPDATE_CELL`:this.updateRowSizeForCellChange(e.sheetId,e.row,e.col);break;case`ADD_MERGE`:case`REMOVE_MERGE`:for(let t of e.target)for(let n of Fn(t))this.updateRowSizeForCellChange(e.sheetId,n.row,n.col)}}getRowSize(e,t){return Math.round(this.getters.getUserRowSize(e,t)??this.tallestCellInRow[e][t]?.size??23)}getMaxAnchorOffset(e,t,n){let{numberOfRows:r,numberOfCols:i}=this.getters.getSheetSize(e),a=0;for(;a<t&&r>0;r--)a+=this.getRowSize(e,r-1);let o=0;for(;o<n&&i>0;i--)o+=this.getters.getColSize(e,i-1);return{col:i,row:r,offset:{x:o-n,y:a-t}}}getHeaderSize(e,t,n){return this.getters.isHeaderHidden(e,t,n)?0:t===`ROW`?this.getRowSize(e,n):this.getters.getColSize(e,n)}updateRowSizeForZoneChange(e,t){for(let n=t.top;n<=t.bottom;n++){let t=this.getRowTallestCell(e,n);this.history.update(`tallestCellInRow`,e,n,t)}}updateRowSizeForCellChange(e,t,n){let r=this.tallestCellInRow[e]?.[t];if(r?.cell.col===n){let n=this.getRowTallestCell(e,t);this.history.update(`tallestCellInRow`,e,t,n)}let i=this.getCellHeight({sheetId:e,col:n,row:t});if(!(i<=23)&&(!r&&i>23||r&&i>r.size)){let r={cell:{sheetId:e,col:n,row:t},size:i};this.history.update(`tallestCellInRow`,e,t,r)}}initializeSheet(e){let t=[];for(let n=0;n<this.getters.getNumberRows(e);n++){let r=this.getRowTallestCell(e,n);t.push(r)}this.history.update(`tallestCellInRow`,e,t)}getCellHeight(e){if(this.isInMultiRowMerge(e))return 23;let t=this.getters.getCell(e),n=this.getters.getColSize(e.sheetId,e.col);return Ol(this.ctx,t,this.getters.getLocale(),n)}isInMultiRowMerge(e){let t=this.getters.getMerge(e);return!!t&&t.bottom!==t.top}getRowTallestCell(e,t){if(this.getters.getUserRowSize(e,t)!==void 0)return;let n=this.getters.getRowCellIds(e,t),r=0,i;for(let e=0;e<n.length;e++){let t=this.getters.getCellById(n[e]);if(!t)continue;let a=this.getters.getCellPosition(t.id),o=this.getCellHeight(a);o>r&&o>23&&(r=o,i={cell:a,size:o})}if(i&&i.size>23)return i}};let $G=`0.00%`;function eK(e){class t extends e{getters;pivotId;cache={};rankAsc={};rankDesc={};runningTotal={};runningTotalInPercent={};constructor(e,t,n){super(t,n),this.getters=n.getters,this.pivotId=e}markAsDirtyForEvaluation(){this.cache={},this.rankAsc={},this.rankDesc={},this.runningTotal={},this.runningTotalInPercent={},super.markAsDirtyForEvaluation?.()}getPivotCellValueAndFormat(e,t){return this.getMeasureDisplayValue(e,t)}_getPivotCellValueAndFormat(e,t){let n=`${e}-${t.map(e=>e.field+`=`+e.value).join(`,`)}`;if(this.cache[n])return this.cache[n];let r=this.getMeasure(e),i=r.computedBy?this.computeMeasure(r,t):super.getPivotCellValueAndFormat(e,t);return r.format?this.cache[n]={...i,format:r.format}:this.cache[n]=i,this.cache[n]}computeMeasure(e,t){if(!e.computedBy)return{value:0};let{columns:n,rows:r}=super.definition;if(e.aggregator&&n.length+r.length!==t.length){let n=this.getValuesToAggregate(e,t),r=mh[e.aggregator];if(!r)return{value:0};try{return r([n],this.getters.getLocale())}catch(t){return Zv(t,e.aggregator.toUpperCase())}}let i=this.getters.getMeasureCompiledFormula(this.pivotId,e),a=this.getters.evaluateCompiledFormula(e.computedBy.sheetId,i,e=>{let{columns:n,rows:r}=this.definition;if(n.find(t=>t.nameWithGranularity===e)){let{colDomain:n}=Fz(this,t),r=n.findIndex(t=>t.field===e);return r===-1?new ya:this.getPivotHeaderValueAndFormat(n.slice(0,r+1))}if(r.find(t=>t.nameWithGranularity===e)){let{rowDomain:n}=Fz(this,t),r=n.findIndex(t=>t.field===e);return r===-1?new ya:this.getPivotHeaderValueAndFormat(n.slice(0,r+1))}return this.getPivotCellValueAndFormat(e,t)});return Ta(a)?a[0][0]:a}getValuesToAggregate(e,t){let{rowDomain:n,colDomain:r}=Fz(this,t),i=super.getExpandedTableStructure(),a=[];if(r.length===0&&n.length<this.definition.rows.length&&this.definition.rows.length&&this.definition.columns.length){let t=this.treeToLeafDomains(i.getColTree()),r=this.getSubTreeMatchingDomain(i.getRowTree(),n),o=this.treeToLeafDomains(r);for(let r of t)for(let t of o)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t).concat(r)));return a}else if(n.length===this.definition.rows.length&&r.length===0){let t=i.getColTree(),o=this.getSubTreeMatchingDomain(t,r),s=this.treeToLeafDomains(o,r);for(let t of s)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t)));return a}else if(n.length===this.definition.rows.length&&r.length&&r.length<this.definition.columns.length){let t=this.getSubTreeMatchingDomain(i.getColTree(),r),o=this.treeToLeafDomains(t,r);for(let t of o)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t)));return a}else{let t=i.getRowTree(),o=this.getSubTreeMatchingDomain(t,n),s=this.treeToLeafDomains(o,n);for(let t of s)a.push(this._getPivotCellValueAndFormat(e.id,t.concat(r)));return a}}getSubTreeMatchingDomain(e,t,n=0){if(n>t.length)return[];if(t.length===n)return e;for(let r of e){let e=Ch(this.definition.getDimension(r.field),t[n]?.value);if(r.field===t[n]?.field&&r.value===e)return this.getSubTreeMatchingDomain(r.children,t,n+1)}return[]}treeToLeafDomains(e,t=[]){let n=[];for(let r of e){let e=this.definition.getDimension(r.field),i=[...t,{field:r.field,value:r.value,type:e.type}];r.children.length===0?n.push(i):n.push(...this.treeToLeafDomains(r.children,i))}return n}getMeasureDisplayValue(e,t){let n=this.getMeasure(e),r=this._getPivotCellValueAndFormat(e,t);if(!n.display||n.display.type===`no_calculations`||r.message)return r;let i=n.display.fieldNameWithGranularity;if(i&&!this.isFieldInPivot(i))return{value:A.NotAvailable,message:k(`Field "%s" not found in pivot for measure display calculation`,i)};try{let e=n.display;switch(e.type){case`%_of_grand_total`:return this.asPercentOfGrandTotal(r,n);case`%_of_col_total`:return this.asPercentOfColumnTotal(r,n,t);case`%_of_row_total`:return this.asPercentOfRowTotal(r,n,t);case`%_of_parent_row_total`:return this.asPercentOfParentRowTotal(r,n,t);case`%_of_parent_col_total`:return this.asPercentOfParentColumnTotal(r,n,t);case`index`:return this.asIndex(r,n,t);case`%_of_parent_total`:return this.asPercentOfParentTotal(r,n,t,e);case`running_total`:return this.asRunningTotal(r,n,t,e,`running_total`);case`%_running_total`:return this.asRunningTotal(r,n,t,e,`%_running_total`);case`rank_asc`:return this.asRank(r,n,t,e,`asc`);case`rank_desc`:return this.asRank(r,n,t,e,`desc`);case`%_of`:return this.asPercentOf(r,n,t,e);case`difference_from`:return this.asDifferenceFrom(r,n,t,e);case`%_difference_from`:return this.asDifferenceFromInPercent(r,n,t,e)}return r}catch(e){return Zv(e,`COMPUTE_MEASURE_DISPLAY_VALUE`)}}asPercentOfGrandTotal(e,t){let n=this.getGrandTotal(t.id);return n===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/n,format:$G}}asPercentOfRowTotal(e,t,n){let r=this.getRowTotal(t.id,n);return r===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/r,format:$G}}asPercentOfColumnTotal(e,t,n){let r=this.getColumnTotal(t.id,n);return r===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/r,format:$G}}asPercentOfParentRowTotal(e,t,n){let r=Nz(this,n),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,r));return i===0?{value:``}:{value:this.measureValueToNumber(e)/i,format:$G}}asPercentOfParentColumnTotal(e,t,n){let r=Pz(this,n),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,r));return i===0?{value:``}:{value:this.measureValueToNumber(e)/i,format:$G}}asPercentOfParentTotal(e,t,n,r){let{fieldNameWithGranularity:i}=r;if(!i)return e;if(!Uz(i,n))return{value:``};let a=Vz(this,i,n),o=this._getPivotCellValueAndFormat(t.id,a),s=this.measureValueToNumber(o);return s===0?{value:``}:{value:this.measureValueToNumber(e)/s,format:$G}}asIndex(e,t,n){let r=this.measureValueToNumber(e),i=this.getRowTotal(t.id,n),a=this.getColumnTotal(t.id,n),o=this.getGrandTotal(t.id);return i===0||a===0?{value:A.DivisionByZero}:{value:r*o/(a*i),format:void 0}}asRunningTotal(e,t,n,r,i){let{fieldNameWithGranularity:a}=r;if(!a)return e;let o=i===`running_total`?this.runningTotal:this.runningTotalInPercent,s=o[t.id]?.[a];s||(s=this.computeRunningTotal(t,a,i),o[t.id]||(o[t.id]={}),o[t.id][a]=s);let{rowDomain:c,colDomain:l}=Fz(this,n),u=Kz(l),d=Kz(c),f=s[u]?.[d];return f===void 0&&(f=this.getPreviousRunningTotalValue(a,n,s)),{value:f??``,format:i===`running_total`?e.format:$G}}asPercentOf(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a),s=this.strictMeasureValueToNumber(e);return o===0||o===`sameValue`&&s===0?{value:A.DivisionByZero}:!o||o===`sameValue`&&!s?{value:``}:o===`sameValue`?{value:1,format:$G}:s===void 0?{value:A.NullError}:{value:s/o,format:$G}}asDifferenceFrom(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a)||0;return o===`sameValue`?{value:``}:{value:this.measureValueToNumber(e)-o,format:e.format}}asDifferenceFromInPercent(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a),s=this.strictMeasureValueToNumber(e);return o===0?{value:A.DivisionByZero}:!o||o===`sameValue`?{value:``}:s===void 0?{value:A.NullError}:{value:(s-o)/o,format:$G}}asRank(e,t,n,r,i){let{fieldNameWithGranularity:a}=r;if(!a)return e;if(!Uz(a,n))return{value:``};let o=i===`asc`?this.rankAsc:this.rankDesc,s=o[t.id]?.[a];s||(s=this.computeRank(t,a,i),o[t.id]||(o[t.id]={}),o[t.id][a]=s);let{rowDomain:c,colDomain:l}=Fz(this,n),u=Kz(l),d=Kz(c);return{value:s[u]?.[d]??``}}computeRank(e,t,n){let r={},i=Wz(this,t),a=i===`row`?`column`:`row`,o=this.getPivotValueCells(e.id);i===`column`&&(o=Za(o));for(let s of o){let o=Kz(Iz(this,a,s[0].domain)),c=s.map(t=>({...t,value:this.strictMeasureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain)),rowDomain:Iz(this,i,t.domain)})).filter(e=>Uz(t,e.rowDomain)),l=Object.groupBy(c,e=>Jz(e.rowDomain,t));for(let e in l)l[e]=Bt(l[e]||[],e=>e.value).filter(e=>e.value!==void 0).sort((e,t)=>n===`asc`?e.value-t.value:t.value-e.value);r[o]={};for(let e of c){let n=Kz(Iz(this,i,e.domain)),a=l[Jz(e.rowDomain,t)];if(!a)continue;let s=a.findIndex(t=>t.value===e.value);s!==-1&&(r[o][n]=s+1)}}return i===`row`?r:Vt(r)}computeRunningTotal(e,t,n){let r={},i=Wz(this,t),a=i===`row`?`column`:`row`,o=this.getPivotValueCells(e.id);i===`column`&&(o=Za(o));for(let s of o){let o=Kz(Iz(this,a,s[0].domain));r[o]={};let c={},l=s.map(t=>({...t,rowDomain:Iz(this,i,t.domain),value:this.measureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain))})).filter(e=>Uz(t,e.rowDomain));for(let e of l){let n=Kz(e.rowDomain),i=Yz(e.rowDomain,t),a=(c[i]||0)+e.value;c[i]=a,r[o][n]=a}if(n===`%_running_total`)for(let e of l){let n=e.rowDomain,i=Kz(n),a=Yz(n,t),s=r[o][i]||0,l=c[a];r[o][i]=l?s/l:void 0}}return i===`row`?r:Vt(r)}getPreviousRunningTotalValue(e,t,n){let r=this.definition.getDimension(e);if(r.type!==`date`&&r.type!==`datetime`)return;let i=Wz(this,e),{rowDomain:a,colDomain:o}=Fz(this,t),s=i===`row`?a:o,c=i===`row`?o:a,l=s.find(t=>t.field===e)?.value;if(l===void 0)return;let u=Kz(c),d=Yz(s,e),f,p,m=this.getCollapsedTableStructure(),h=i===`row`?m.getRowTree():m.getColTree(),g=(t,n=[])=>{for(let i of t){let t=[...n,{field:i.field,value:i.value,type:i.type}];i.children.length&&g(i.children,t);let a=t.find(t=>t.field===e)?.value,o=Yz(t,e);a===void 0||o!==d||this.compareRunningTotalValues(a,l,r)>=0||(p===void 0||this.compareRunningTotalValues(p,a,r)<0)&&(p=a,f=Kz(t))}};if(g(h),f)return i===`row`?n[u]?.[f]:n[f]?.[u]}compareRunningTotalValues(e,t,n){let r=n.order??`asc`,i=e===null,a=t===null;if(i&&a)return 0;if(i)return r===`asc`?1:-1;if(a)return r===`asc`?-1:1;let o=this.getRunningTotalComparableValue(e,n)-this.getRunningTotalComparableValue(t,n);return r===`asc`?o:-o}getRunningTotalComparableValue(e,t){let n=t.granularity;if(n&&Ym.contains(n)){let t=Xm(n).toComparableValue?.(e);if(t!==void 0)return t}return N(e,R)}getGrandTotal(e){let t=this._getPivotCellValueAndFormat(e,[]);return this.measureValueToNumber(t)}getRowTotal(e,t){let n=Fz(this,t).rowDomain,r=this._getPivotCellValueAndFormat(e,n);return this.measureValueToNumber(r)}getColumnTotal(e,t){let n=Fz(this,t).colDomain,r=this._getPivotCellValueAndFormat(e,n);return this.measureValueToNumber(r)}isFieldInPivot(e){return this.definition.columns.some(t=>t.nameWithGranularity===e)||this.definition.rows.some(t=>t.nameWithGranularity===e)}getComparisonValue(e,t,n,r){let i=r===`(previous)`||r===`(next)`?Gz(this,t,n,r):Hz(t,n,r);if(w(i,t))return`sameValue`;if(!i||!Rz(this,i))throw new ya;let a=this._getPivotCellValueAndFormat(e.id,i);return this.strictMeasureValueToNumber(a)}getPivotValueCells(e){return this.getCollapsedTableStructure().getPivotCells().map(t=>t.filter(t=>t.type===`VALUE`&&t.measure===e)).filter(e=>e.length>0)}measureValueToNumber(e){if(typeof e.value==`number`)return e.value;if(!e.value)return 0;throw Error(`Value ${e.value} is not a number`)}strictMeasureValueToNumber(e){if(typeof e.value==`number`)return e.value;if(e.value)throw Error(`Value ${e.value} is not a number`)}getCollapsedTableStructure(){let e=super.getCollapsedTableStructure();return this.sortTableStructure(e),e}getExpandedTableStructure(){let e=super.getExpandedTableStructure();return this.sortTableStructure(e),e}sortTableStructure(e){if(!this.definition.sortedColumn||e.isSorted)return;let t=this.definition.sortedColumn.measure;jh(this.definition.sortedColumn,this)&&e.sort(t,this.definition.sortedColumn,(e,t)=>this._getPivotCellValueAndFormat(e,t))}}return t}let tK=[`ADD_PIVOT`,`UPDATE_PIVOT`,`REMOVE_PIVOT`];function nK(e){return tK.includes(e.type)}var rK=class extends pG{static getters=[`getPivot`,`getFirstPivotFunction`,`getPivotCellSortDirection`,`getPivotIdFromPosition`,`getPivotIdsFromPosition`,`getPivotCellFromPosition`,`generateNewCalculatedMeasureName`,`isPivotUnused`,`isSpillPivotFormula`,`getAllPivotArrayFormulas`,`getPivotStyleAtPosition`];pivots={};unusedPivotsInFormulas;custom;constructor(e){super(e),this.custom=e.custom}beforeHandle(e){switch(e.type){case`START`:for(let e of this.getters.getPivotIds())this.setupPivot(e)}}handle(e){if(Rs.has(e.type))for(let e of this.getters.getPivotIds())this.setupPivot(e,{recreate:!0});switch(e.type){case`REFRESH_PIVOT`:this.refreshPivot(e.id);break;case`ADD_PIVOT`:this.unusedPivotsInFormulas?.push(e.pivotId),this.setupPivot(e.pivotId);break;case`DUPLICATE_PIVOT`:this.unusedPivotsInFormulas?.push(e.newPivotId),this.setupPivot(e.newPivotId);break;case`UPDATE_PIVOT`:this.setupPivot(e.pivotId,{recreate:!0});break;case`DELETE_SHEET`:case`UPDATE_CELL`:this.unusedPivotsInFormulas=void 0;break;case`UNDO`:case`REDO`:{this.unusedPivotsInFormulas=void 0;let t=e.commands.filter(nK);for(let e of t){let t=e.pivotId;this.getters.isExistingPivot(t)&&this.setupPivot(t,{recreate:!0})}break}case`UPDATE_LOCALE`:Wh();break}}getPivotIdFromPosition(e){return this.getPivotIdsFromPosition(e)[0]}getPivotIdsFromPosition(e){let t=this.getters.getCorrespondingFormulaCell(e);return t&&t.isFormula?this.getPivotIdsFromFormula(e.sheetId,t.compiledFormula):[]}getPivotIdsFromFormula(e,t){return this.getPivotFunctions(e,t).map(e=>{let t=e.args[0]?.toString();return t&&this.getters.getPivotId(t)}).filter(C)}isSpillPivotFormula(e){let t=this.getters.getCorrespondingFormulaCell(e);return t&&t.isFormula?this.getFirstPivotFunction(e.sheetId,t.compiledFormula)?.functionName===`PIVOT`:!1}getPivotFunctions(e,t){let n=gB(t,this.getters);if(!n.length)return[];let r=[];for(let t of n){let{functionName:n,args:i}=t,a=i.map(t=>{if(t.type===`EMPTY`)return;if(t.type===`STRING`||t.type===`BOOLEAN`||t.type===`NUMBER`)return t.value;let n=BU(t);return this.getters.evaluateFormula(e,n)});r.push({functionName:n,args:a})}return r}getFirstPivotFunction(e,t){return this.getPivotFunctions(e,t)[0]}getPivotCellFromPosition(e){let t=this.getters.getCorrespondingFormulaCell(e);if(!t||!t.isFormula||_B(t.compiledFormula,this.getters)===0)return $z;let n=this.getters.getCellPosition(t.id),r=this.getters.getFirstPivotFunction(e.sheetId,t.compiledFormula);if(!r)return $z;let{functionName:i,args:a}=r,o=a[0];if(!o)return $z;let s=this.getters.getPivotId(o.toString());if(!s)return $z;let c=this.getPivot(s);if(!c.isValid()||i===`PIVOT`&&!this.isMainFunctionPivotSpreadFunction(t))return $z;try{if(i===`PIVOT`){let t=zh(this.getters.getPivotCoreDefinition(s),bm(a[1]),bm(a[2]),bm(a[3]),bm(a[4]),bm(a[5]),this.getters.getLocale()),r=c.getCollapsedTableStructure().getPivotCells(t),i=e.col-n.col,o=e.row-n.row;return r[i][o]}let t=e.row-n.row,r=e.col-n.col;if(a=a.map(e=>Ta(e)?e[r][t]:e),i===`PIVOT.HEADER`&&a.at(-2)===`measure`)return{type:`MEASURE_HEADER`,domain:c.parseArgsToPivotDomain(a.slice(1,-2).map(e=>({value:e}))),measure:a.at(-1)?.toString()||``};if(i===`PIVOT.HEADER`){let e=c.parseArgsToPivotDomain(a.slice(1).map(e=>({value:e})));return{type:`HEADER`,domain:e,dimension:Fz(c,e).colDomain.length?`COL`:`ROW`}}let[o,...l]=a.slice(1);return{type:`VALUE`,domain:c.parseArgsToPivotDomain(l.map(e=>({value:e}))),measure:o?.toString()||``}}catch{return $z}}generateNewCalculatedMeasureName(e){let t=e.map(e=>e.fieldName);return Ht(k(`Calculated measure 1`),t,{compute:(e,t)=>k(`Calculated measure %s`,t)})}getPivot(e){if(!this.getters.isExistingPivot(e))throw Error(`pivot ${e} not found`);return this.pivots[e]}isPivotUnused(e){let{type:t}=this.getters.getPivot(e);return this._getUnusedPivotsInFormulas().includes(e)&&uB.get(t).isPivotUnused(this.getters,e)}getPivotCellSortDirection(e){let t=this.getters.getPivotIdFromPosition(e),n=this.getters.getPivotCellFromPosition(e);if(n.type===`EMPTY`||n.type===`HEADER`||!t)return;let r=this.getters.getPivot(t),i=Fz(r,n.domain).colDomain,a=r.definition.sortedColumn;return a?.measure===n.measure&&w(a.domain,i)?a.order:`none`}refreshPivot(e){this.getters.getPivot(e).init({reload:!0})}setupPivot(e,{recreate:t}={recreate:!1}){let n=b(this.getters.getPivotCoreDefinition(e));if(e in this.pivots)t&&this.pivots[e].onDefinitionChange(n);else{let t=eK(uB.get(n.type).ui);this.pivots[e]=new t(e,this.custom,{definition:n,getters:this.getters})}}_getUnusedPivotsInFormulas(){if(this.unusedPivotsInFormulas!==void 0)return this.unusedPivotsInFormulas;let e=new Set(this.getters.getPivotIds());for(let t of this.getters.getSheetIds())for(let n of this.getters.getCells(t)){let t=this.getters.getCellPosition(n.id),r=this.getPivotIdsFromPosition(t);for(let t of r)if(e.delete(t),!e.size)return this.unusedPivotsInFormulas=[],[]}for(let t of this.getters.getPivotIds()){let n=this.getters.getPivotCoreDefinition(t);for(let r of n.measures)if(r.computedBy){let{sheetId:n}=r.computedBy,i=this.getters.getMeasureCompiledFormula(t,r),a=this.getPivotIdsFromFormula(n,i);for(let t of a)if(e.delete(t),!e.size)return this.unusedPivotsInFormulas=[],[]}}return this.unusedPivotsInFormulas=[...e],this.unusedPivotsInFormulas}getAllPivotArrayFormulas(){let e=[];for(let t of this.getters.getCellsWithTrackedFormula(`PIVOT`)){let n=this.getters.getCellPosition(t);if(this.getters.getEvaluatedCell(n).type===`error`)continue;let r=this.getPivotStyleAtPosition(n);r&&e.push({position:n,...r})}return e}getPivotStyleAtPosition(e){let t=this.getters.getCell(e);if(!t||!t.isFormula||!this.isMainFunctionPivotSpreadFunction(t))return;let n=this.getFirstPivotFunction(e.sheetId,t.compiledFormula);if(!n||n.functionName!==`PIVOT`)return;let r=n.args[0];if(!r)return;let i=this.getters.getPivotId(r.toString());if(i)return{pivotStyle:zh(this.getters.getPivotCoreDefinition(i),bm(n.args[1]),bm(n.args[2]),bm(n.args[3]),bm(n.args[4]),bm(n.args[5]),this.getters.getLocale()),pivotId:i}}isMainFunctionPivotSpreadFunction(e){return e.compiledFormula.isFirstNonWhitespaceSymbol(`PIVOT`)}},iK=class{getters;dispatch;constructor(e,t){this.getters=e,this.dispatch=t}copy(e,t,n=`copyPaste`){}paste(e,t,n){}isPasteAllowed(e,t,n,r){return`Success`}isCutAllowed(e){return`Success`}getPasteTarget(e,t,n,r){return{zones:[],sheetId:e}}convertTextToClipboardData(e){}},aK=class extends iK{copy(e,t,n=`copyPaste`){}pasteFromCopy(e,t,n,r){if(t.length===1)for(let i of wP(t,n))this.pasteZone(e,i.left,i.top,n,r);else for(let i of nn(t))for(let t=i.left;t<=i.right;t++)for(let a=i.top;a<=i.bottom;a++)this.pasteZone(e,t,a,n,r)}pasteZone(e,t,n,r,i){}},oK=class extends aK{isCutAllowed(e){return e.zones.length===1?`Success`:`WrongCutSelection`}copy(e,t,n=`copyPaste`){let r=e.sheetId,{clippedZones:i,rowsIndexes:a,columnsIndexes:o}=e,s=[],c=a.length===1&&o.length===1;for(let t of a){let i=[];for(let s of o){let l={col:s,row:t,sheetId:r},u=this.getters.getCell(l),d=this.getters.getEvaluatedCell(l),f=this.getters.getPivotIdFromPosition(l),p=this.getters.getArrayFormulaSpreadingOn(l);if(n!==`shiftCells`&&f&&p){let t=this.getters.getSpreadZone(p);if((!w(p,l)||!c)&&t&&!e.zones.some(e=>jn(t,e))){let e=this.getters.getPivotCellFromPosition(l),t=Sh(this.getters.getPivotFormulaId(f),e);u={id:u?.id??0,style:u?.style,format:u?.format,content:t,isFormula:!1,parsedValue:d.value}}}else if(n!==`shiftCells`&&p&&!w(p,l)){let e=a.includes(p.row)&&o.includes(p.col)?``:z(d.value,{locale:this.getters.getLocale()});u={id:u?.id??0,style:u?.style,format:d.format,content:e,isFormula:!1,parsedValue:d.value}}i.push({content:u?.isFormula?u.compiledFormula.toFormulaString(this.getters):u?.content??``,style:u?.style,format:u?.format,compiledFormula:u?.isFormula?u?.compiledFormula:void 0,border:this.getters.getCellBorder(l)||void 0,evaluatedCell:d,position:l})}s.push(i)}return{cells:s,zones:i,sheetId:e.sheetId}}isPasteAllowed(e,t,n,r){if(!n.cells)return`Success`;if(r?.isCutOperation&&r?.pasteOption!==void 0)return`WrongPasteOption`;if(t.length>1&&(n.cells.length>1||n.cells[0].length>1))return`WrongPasteSelection`;let i=n.cells.length,a=n.cells[0].length;for(let r of wP(t,n.cells))if(this.getters.doesIntersectMerge(e,r)&&(t.length>1||!this.getters.isSingleCellOrMerge(e,t[0])||i*a!==1))return`WillRemoveExistingMerge`;return`Success`}paste(e,t,n){let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t,n):this.pasteFromCopy(i,r,t.cells,n)}getPasteTarget(e,t,n,r){let i=n.cells[0].length,a=n.cells.length;return r?.isCutOperation?{sheetId:e,zones:[{left:t[0].left,top:t[0].top,right:t[0].left+i-1,bottom:t[0].top+a-1}]}:i===1&&a===1?{zones:[],sheetId:e}:{sheetId:e,zones:wP(t,n.cells)}}pasteFromCut(e,t,n,r){this.clearClippedZones(n);let i=t[0];this.pasteZone(e,i.left,i.top,n.cells,r)}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,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){if(!s)continue;let o={col:t+r,row:n+a,sheetId:e};this.pasteCell(s,o,i)}}pasteCell(e,t,n){let{sheetId:r,col:i,row:a}=t,o=this.getters.getEvaluatedCell(t),s=e?.format||e.evaluatedCell.format;if(n?.pasteOption===`asValue`){this.dispatch(`UPDATE_CELL`,{...t,content:e.evaluatedCell.value?.toString()||``});return}if(n?.pasteOption===`onlyFormat`){this.dispatch(`UPDATE_CELL`,{...t,style:e?.style??null,format:s??o.format});return}let c=e?.content;e?.compiledFormula?.hasDependencies&&!n?.isCutOperation?c=this.getters.getTranslatedCellFormula(r,i-e.position.col,a-e.position.row,e.compiledFormula):e?.compiledFormula?.hasDependencies&&(c=this.getters.getFormulaMovedInSheet(r,e.compiledFormula)),c!==``||e?.format||e?.style?this.dispatch(`UPDATE_CELL`,{...t,content:c,style:e?.style||null,format:e?.format}):o&&this.dispatch(`CLEAR_CELL`,t)}convertTextToClipboardData(e){let t=this.getters.getLocale(),n={cells:[]},r=[],i=0;for(let[t,n]of e.replace(/\r/g,``).split(`
114
+ />`;static defaultProps={topOffset:0};get offset(){return this.env.model.getters.getActiveSheetScrollInfo().scrollY}get height(){return this.env.model.getters.getMainViewportRect().height}get isDisplayed(){let{yRatio:e}=this.env.model.getters.getFrozenSheetViewRatio(this.env.model.getters.getActiveSheetId());return e<1}get position(){let{y:e}=this.env.model.getters.getMainViewportRect(),t=this.env.model.getters.getScrollBarWidth();return{top:`${this.props.topOffset+e}px`,right:`0px`,width:`${t}px`,bottom:vp()?`${t}px`:`0`}}onScroll(e){let{scrollX:t}=this.env.model.getters.getActiveSheetScrollInfo();this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:t,offsetY:e})}},MW=class extends t.Component{static template=`o-spreadsheet-Selection`;static props={};static components={Highlight:DW};get highlightProps(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getUnboundedZone(e,this.env.model.getters.getSelectedZone());return{range:this.env.model.getters.getRangeFromZone(e,t),color:ae}}},NW=class extends t.Component{static template=`o-spreadsheet-TableResizer`;static props={table:Object};state=(0,t.useState)({highlightZone:void 0});dragNDropGrid=_U(this.env);setup(){NL(this)}get containerStyle(){let e=this.props.table.range.zone,t=this.props.table.range.sheetId;if(this.env.model.getters.isReadonly()||this.env.model.getters.isSheetLocked(t))return U({display:`none`});let n={...e,left:e.right,top:e.bottom},r=this.env.model.getters.getVisibleRect(n);return r.height===0||r.width===0?U({display:`none`}):U({top:`${r.y+r.height-6}px`,left:`${r.x+r.width-6}px`})}onMouseDown(e){let t=this.props.table.range.zone,n={col:t.left,row:t.top};document.body.style.cursor=`nwse-resize`;let r=wp(this.env,e);this.dragNDropGrid.start(r,(e,t,r)=>{this.state.highlightZone={left:n.col,top:n.row,right:Math.max(e,n.col),bottom:Math.max(t,n.row)}},()=>{document.body.style.cursor=``;let e=this.state.highlightZone;if(!e)return;let t=this.props.table.range.sheetId;this.env.model.dispatch(`RESIZE_TABLE`,{sheetId:t,zone:this.props.table.range.zone,newTableRange:this.env.model.getters.getRangeDataFromZone(t,e)}),this.state.highlightZone=void 0})}get highlights(){return this.state.highlightZone?[{range:this.env.model.getters.getRangeFromZone(this.props.table.range.sheetId,this.state.highlightZone),color:`#777`,noFill:!0}]:[]}};let PW={ROW:mU,COL:sU,CELL:YH,GROUP_HEADERS:fU,UNGROUP_HEADERS:pU};var FW=class extends t.Component{static template=`o-spreadsheet-Grid`;static props={exposeFocus:Function,getGridSize:Function};static components={GridComposer:KU,GridOverlay:uW,GridPopover:dW,HeadersOverlay:_W,MenuPopover:Nv,Autofill:yU,ClientTag:xU,Highlight:DW,Popover:kv,VerticalScrollBar:jW,HorizontalScrollBar:AW,TableResizer:NW,Selection:MW};HEADER_HEIGHT=26;HEADER_WIDTH=48;menuState;gridRef;highlightStore;cellPopovers;composerFocusStore;DOMFocusableElementStore;paintFormatStore;clientFocusStore;dragNDropGrid=_U(this.env);onMouseWheel;hoveredCell;sidePanel;setup(){this.highlightStore=D(EN),this.menuState=(0,t.useState)({isOpen:!1,anchorRect:null,menuItems:[]}),this.gridRef=(0,t.useRef)(`grid`),this.hoveredCell=D(Bv),this.composerFocusStore=D(xr),this.DOMFocusableElementStore=D(FM),this.sidePanel=D(bV),this.paintFormatStore=D(oW),this.clientFocusStore=D(gU),D(hU),(0,t.useChildSubEnv)({getPopoverContainerRect:()=>this.getGridRect()}),(0,t.useExternalListener)(document.body,`cut`,this.copy.bind(this,!0)),(0,t.useExternalListener)(document.body,`copy`,this.copy.bind(this,!1)),(0,t.useExternalListener)(document.body,`paste`,this.paste),(0,t.onMounted)(()=>this.focusDefaultElement()),this.props.exposeFocus(()=>this.focusDefaultElement()),yW(`canvas`,this.env.model,()=>this.env.model.getters.getSheetViewDimensionWithHeaders()),this.onMouseWheel=CW((e,t)=>{this.moveCanvas(e,t),this.hoveredCell.clear()}),this.cellPopovers=D(aP),(0,t.useEffect)((e,t)=>{!e&&!t&&this.DOMFocusableElementStore.focus()},()=>[this.sidePanel.isMainPanelOpen,this.sidePanel.isSecondaryPanelOpen]),xW(this.gridRef,{updateScroll:this.moveCanvas.bind(this),canMoveUp:()=>{let{scrollY:e}=this.env.model.getters.getActiveSheetScrollInfo();return e>0},canMoveDown:()=>{let{maxOffsetY:e}=this.env.model.getters.getMaximumSheetOffset(),{scrollY:t}=this.env.model.getters.getActiveSheetScrollInfo();return t<e},getZoom:()=>this.env.model.getters.getViewportZoomLevel(),setZoom:e=>this.env.model.dispatch(`SET_ZOOM`,{zoom:e})})}get highlights(){return this.highlightStore.highlights}get gridOverlayDimensions(){let e=this.env.model.getters.getScrollBarWidth();return U({top:`26px`,left:`48px`,height:`calc(100% - ${26+e}px)`,width:`calc(100% - ${48+e}px)`})}onClosePopover(){this.cellPopovers.isOpen&&this.cellPopovers.close(),this.focusDefaultElement()}keyDownMapping={Enter:()=>this.editOrMoveInSelection(`down`),"Shift+Enter":()=>this.editOrMoveInSelection(`up`),Tab:()=>this.moveInSelection(`right`),"Shift+Tab":()=>this.moveInSelection(`left`),F2:()=>{this.focusComposerFromActiveCell()},Delete:()=>{this.env.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},Backspace:()=>{this.env.model.dispatch(`DELETE_UNFILTERED_CONTENT`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},Escape:()=>{this.cellPopovers.isOpen?this.cellPopovers.close():this.menuState.isOpen?this.closeMenu():this.paintFormatStore.isActive?this.paintFormatStore.cancel():this.env.model.dispatch(`CLEAN_CLIPBOARD_HIGHLIGHT`)},"Ctrl+A":()=>this.env.model.selection.loopSelection(),"Ctrl+Z":()=>this.env.model.dispatch(`REQUEST_UNDO`),"Ctrl+Y":()=>this.env.model.dispatch(`REQUEST_REDO`),F4:()=>this.env.model.dispatch(`REQUEST_REDO`),"Ctrl+B":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{bold:!this.env.model.getters.getCurrentStyle().bold}}),"Ctrl+I":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{italic:!this.env.model.getters.getCurrentStyle().italic}}),"Ctrl+U":()=>this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{underline:!this.env.model.getters.getCurrentStyle().underline}}),"Ctrl+O":()=>_F(this.env),"Alt+=":()=>{let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZone(),{anchor:n}=this.env.model.getters.getSelection(),r=this.env.model.getters.getAutomaticSums(e,t,n.cell);if(this.env.model.getters.isSingleCellOrMerge(e,t)||this.env.model.getters.isEmpty(e,t)&&r.length<=1){let t=r[0]?.zone?this.env.model.getters.zoneToXC(e,r[0].zone):``,n=`=SUM(${t})`;this.onComposerCellFocused(n,{start:5,end:5+t.length})}else this.env.model.dispatch(`SUM_SELECTION`)},"Alt+Enter":()=>{let e=this.env.model.getters.getActiveCell();e.link&&ic(e.link,this.env)},"Ctrl+Home":()=>{let e=this.env.model.getters.getActiveSheetId(),{col:t,row:n}=this.env.model.getters.getNextVisibleCellPosition({sheetId:e,col:0,row:0});this.env.model.selection.selectCell(t,n)},"Ctrl+End":()=>{let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.findVisibleHeader(e,`COL`,this.env.model.getters.getNumberCols(e)-1,0),n=this.env.model.getters.findVisibleHeader(e,`ROW`,this.env.model.getters.getNumberRows(e)-1,0);this.env.model.selection.selectCell(t,n)},"Shift+ ":()=>{let e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),left:0,right:this.env.model.getters.getNumberCols(e)-1},n=this.env.model.getters.getActivePosition();this.env.model.selection.selectZone({cell:n,zone:t})},"Ctrl+ ":()=>{let e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),top:0,bottom:this.env.model.getters.getNumberRows(e)-1},n=this.env.model.getters.getActivePosition();this.env.model.selection.selectZone({cell:n,zone:t})},"Ctrl+D":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ABOVE`})},"Ctrl+R":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ON_LEFT`})},"Ctrl+Enter":()=>{mM(this.env,{type:`COPY_PASTE_CELLS_ON_ZONE`})},"Ctrl+H":()=>this.sidePanel.open(`FindAndReplace`,{}),"Ctrl+F":()=>this.sidePanel.open(`FindAndReplace`,{}),"Ctrl+Shift+E":()=>this.setHorizontalAlign(`center`),"Ctrl+Shift+L":()=>this.setHorizontalAlign(`left`),"Ctrl+Shift+R":()=>this.setHorizontalAlign(`right`),"Ctrl+Shift+V":()=>KP(this.env),"Ctrl+Shift+<":()=>this.clearFormatting(),"Ctrl+<":()=>this.clearFormatting(),"Ctrl+Shift+ ":()=>{this.env.model.selection.selectAll()},"Ctrl+Alt+=":()=>{let e=this.env.model.getters.getActiveCols(),t=this.env.model.getters.getActiveRows(),n=this.env.model.getters.getSelectedZones().length===1,r=e.size>0&&n,i=t.size>0&&n;r&&!i?cF(this.env):i&&!r&&oF(this.env)},"Ctrl+Alt+-":()=>{let e=[...this.env.model.getters.getActiveCols()],t=[...this.env.model.getters.getActiveRows()];e.length>0&&t.length===0?this.env.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:this.env.model.getters.getActiveSheetId(),sheetName:this.env.model.getters.getActiveSheetName(),dimension:`COL`,elements:e}):t.length>0&&e.length===0&&this.env.model.dispatch(`REMOVE_COLUMNS_ROWS`,{sheetId:this.env.model.getters.getActiveSheetId(),sheetName:this.env.model.getters.getActiveSheetName(),dimension:`ROW`,elements:t})},"Shift+PageDown":()=>{this.env.model.dispatch(`ACTIVATE_NEXT_SHEET`)},"Shift+PageUp":()=>{this.env.model.dispatch(`ACTIVATE_PREVIOUS_SHEET`)},"Shift+F11":()=>{uI.execute?.(this.env)},"Alt+T":()=>{ZF.execute?.(this.env)},PageDown:()=>this.env.model.dispatch(`SHIFT_VIEWPORT_DOWN`),PageUp:()=>this.env.model.dispatch(`SHIFT_VIEWPORT_UP`),"Ctrl+K":()=>bF(this.env),"Alt+Shift+ArrowRight":()=>this.processHeaderGroupingKey(`right`),"Alt+Shift+ArrowLeft":()=>this.processHeaderGroupingKey(`left`),"Alt+Shift+ArrowUp":()=>this.processHeaderGroupingKey(`up`),"Alt+Shift+ArrowDown":()=>this.processHeaderGroupingKey(`down`)};focusComposerFromActiveCell(){this.env.model.getters.getActiveCell().type===`empty`?this.onComposerCellFocused():this.onComposerContentFocused()}editOrMoveInSelection(e){if(this.isSingleCellOrMergeSelection()){this.focusComposerFromActiveCell();return}RM(this.env.model.getters,this.env.model.selection,e)}moveInSelection(e){if(this.isSingleCellOrMergeSelection()){this.env.model.selection.moveAnchorCell(e,1);return}RM(this.env.model.getters,this.env.model.selection,e)}isSingleCellOrMergeSelection(){let e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.getSelectedZone();return this.env.model.getters.isSingleCellOrMerge(e,t)}focusDefaultElement(){!this.env.model.getters.getSelectedFigureId()&&this.composerFocusStore.activeComposer.editionMode===`inactive`&&this.DOMFocusableElementStore.focus()}get gridEl(){if(!this.gridRef.el)throw Error(`Grid el is not defined.`);return this.gridRef.el}getAutofillPosition(){let e=this.env.model.getters.getSelectedZone(),t=this.env.model.getters.getVisibleRect(e);return{x:t.x+t.width-8/2,y:t.y+t.height-8/2}}get isAutofillVisible(){if(this.env.model.getters.isCurrentSheetLocked())return!1;let e=this.env.model.getters.getSelectedZone(),t=this.env.model.getters.getVisibleRect({left:e.right,right:e.right,top:e.bottom,bottom:e.bottom});return!(t.width===0||t.height===0)}onGridResized(){let{height:e,width:t}=this.props.getGridSize();this.env.model.dispatch(`RESIZE_SHEETVIEW`,{width:t-48,height:e-26,gridOffsetX:48,gridOffsetY:26})}moveCanvas(e,t){let{scrollX:n,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:n+e,offsetY:r+t})}processSpaceKey(e){this.env.model.getters.hasBooleanValidationInZones(this.env.model.getters.getSelectedZones())&&(e.preventDefault(),e.stopPropagation(),this.env.model.dispatch(`TOGGLE_CHECKBOX`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()}))}getClientPositionKey(e){return`${e.id}-${e.position?.sheetId}-${e.position?.col}-${e.position?.row}`}isCellHovered(e,t){return this.hoveredCell.col===e&&this.hoveredCell.row===t}get focusedClients(){return this.clientFocusStore.focusedClients}getGridRect(){let e=this.env.model.getters.getViewportZoomLevel(),{width:t,height:n}=this.env.model.getters.getSheetViewDimensionWithHeaders();return{...ap(this.gridRef),width:t*e,height:n*e}}onCellClicked(e,t,n,r){if(r.ev.preventDefault(),this.composerFocusStore.activeComposer.editionMode===`editing`&&this.composerFocusStore.activeComposer.stopEdition(),n.expandZone?this.env.model.selection.setAnchorCorner(e,t):n.addZone?this.env.model.selection.addCellToSelection(e,t):this.env.model.selection.selectCell(e,t),this.env.isMobile())return;let i=e,a=t;this.dragNDropGrid.start(r,(e,t,n)=>{n.preventDefault(),(e!==i&&e!==-1||t!==a&&t!==-1)&&(i=e===-1?i:e,a=t===-1?a:t,this.env.model.selection.setAnchorCorner(i,a))},()=>{this.env.model.selection.commitSelection(),this.paintFormatStore.isActive&&this.paintFormatStore.pasteFormat(this.env.model.getters.getSelectedZones())})}onCellDoubleClicked(e,t){let n=this.env.model.getters.getActiveSheetId();({col:e,row:t}=this.env.model.getters.getMainCellPosition({sheetId:n,col:e,row:t})),this.env.model.getters.getEvaluatedCell({sheetId:n,col:e,row:t}).type===`empty`?this.onComposerCellFocused():this.onComposerContentFocused()}processArrows(e){e.preventDefault(),e.stopPropagation(),this.cellPopovers.isOpen&&this.cellPopovers.close(),LM(e,this.env.model.selection),this.paintFormatStore.isActive&&this.paintFormatStore.pasteFormat(this.env.model.getters.getSelectedZones())}onKeydown(e){let t=pp(e),n=this.keyDownMapping[t];if(n){e.preventDefault(),e.stopPropagation(),n();return}if(t===` `){this.processSpaceKey(e);return}if(e.key.startsWith(`Arrow`)){this.processArrows(e);return}}onInputContextMenu(e){e.preventDefault();let t=this.env.model.getters.getSelectedZone(),{left:n,top:r}=t,i=`CELL`;this.composerFocusStore.activeComposer.stopEdition(),this.env.model.getters.getActiveCols().has(n)?i=`COL`:this.env.model.getters.getActiveRows().has(r)&&(i=`ROW`);let{x:a,y:o,width:s}=this.env.model.getters.getVisibleRectWithZoom(t),c=this.getGridRect();this.toggleContextMenu(i,c.x+a+s,c.y+o)}onCellRightClicked(e,t,{x:n,y:r}){let i=this.env.model.getters.getSelectedZones(),a=i[i.length-1],o=`CELL`;An(e,t,a)?this.env.model.getters.getActiveCols().has(e)?o=`COL`:this.env.model.getters.getActiveRows().has(t)&&(o=`ROW`):(this.env.model.selection.getBackToDefault(),this.env.model.selection.selectCell(e,t)),this.toggleContextMenu(o,n,r)}toggleContextMenu(e,t,n){this.cellPopovers.isOpen&&this.cellPopovers.close(),this.menuState.isOpen=!0,this.menuState.anchorRect={x:t,y:n,width:0,height:0},this.menuState.menuItems=PW[e].getMenuItems()}async copy(e,t){if(!this.gridEl.contains(document.activeElement)||this.composerFocusStore.activeComposer.editionMode!==`inactive`)return;e?eH(this.env):this.env.model.dispatch(`COPY`);let n=await this.env.model.getters.getClipboardTextAndImageContent();await this.env.clipboard.write(n),t.preventDefault()}async paste(e){if(!this.gridEl.contains(document.activeElement))return;e.preventDefault();let t=e.clipboardData;if(!t)return;let n=[...t.files].find(e=>xP.includes(e.type)),r={content:{"text/plain":t?.getData(`text/plain`),"text/html":t?.getData(`text/html`)}};n&&(r.content[n.type]=n);let i=this.env.model.getters.getSelectedZones(),a=this.env.model.getters.isCutOperation(),o=this.env.model.getters.getClipboardId(),s=TP(r.content);o===s.data?.clipboardId?_M(this.env,i):await vM(this.env,i,s),a&&await this.env.clipboard.write({"text/plain":``})}clearFormatting(){this.env.model.dispatch(`CLEAR_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})}setHorizontalAlign(e){this.env.model.dispatch(`SET_FORMATTING`,{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones(),style:{align:e}})}closeMenu(){this.menuState.isOpen=!1,this.focusDefaultElement()}processHeaderGroupingKey(e){if(this.env.model.getters.getSelectedZones().length!==1)return;let t=this.env.model.getters.getActiveRows().size>0,n=this.env.model.getters.getActiveCols().size>0;n&&t?this.processHeaderGroupingEventOnWholeSheet(e):n?this.processHeaderGroupingEventOnHeaders(e,`COL`):t?this.processHeaderGroupingEventOnHeaders(e,`ROW`):this.processHeaderGroupingEventOnGrid(e)}processHeaderGroupingEventOnHeaders(e,t){let n=this.env.model.getters.getActiveSheetId(),r=this.env.model.getters.getSelectedZone(),i=t===`COL`?r.left:r.top,a=t===`COL`?r.right:r.bottom;switch(e){case`right`:this.env.model.dispatch(`GROUP_HEADERS`,{sheetId:n,dimension:t,start:i,end:a});break;case`left`:this.env.model.dispatch(`UNGROUP_HEADERS`,{sheetId:n,dimension:t,start:i,end:a});break;case`down`:this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:n,dimension:t,zone:r});break;case`up`:this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:n,dimension:t,zone:r});break}}processHeaderGroupingEventOnWholeSheet(e){let t=this.env.model.getters.getActiveSheetId();e===`up`?(this.env.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`ROW`}),this.env.model.dispatch(`FOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`COL`})):e===`down`&&(this.env.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`ROW`}),this.env.model.dispatch(`UNFOLD_ALL_HEADER_GROUPS`,{sheetId:t,dimension:`COL`}))}processHeaderGroupingEventOnGrid(e){let t=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getSelectedZone();switch(e){case`down`:this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`ROW`,zone:n}),this.env.model.dispatch(`UNFOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`COL`,zone:n});break;case`up`:this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`ROW`,zone:n}),this.env.model.dispatch(`FOLD_HEADER_GROUPS_IN_ZONE`,{sheetId:t,dimension:`COL`,zone:n});break;case`right`:{let{x:e,y:t,width:r}=this.env.model.getters.getVisibleRectWithZoom(n),i=this.getGridRect();this.toggleContextMenu(`GROUP_HEADERS`,e+r+i.x,t+i.y);break}case`left`:{if(!QV(this.env,`COL`)&&!QV(this.env,`ROW`))return;let{x:e,y:t,width:r}=this.env.model.getters.getVisibleRectWithZoom(n),i=this.getGridRect();this.toggleContextMenu(`UNGROUP_HEADERS`,e+r+i.x,t+i.y);break}}}onComposerCellFocused(e,t){this.composerFocusStore.focusActiveComposer({content:e,selection:t,focusMode:`cellFocus`})}onComposerContentFocused(){this.composerFocusStore.focusActiveComposer({focusMode:`contentFocus`})}get staticTables(){let e=this.env.model.getters.getActiveSheetId();return this.env.model.getters.getCoreTables(e).filter(qB)}get displaySelectionHandler(){return this.env.isMobile()&&this.composerFocusStore.activeComposer.editionMode===`inactive`}};let IW=new B;IW.add(`SPREADSHEET`,!1);var LW=class extends t.Component{static template=`o-spreadsheet-ClickableCellSortIcon`;static props={position:Object,sortDirection:String};hoveredTableStore;setup(){this.hoveredTableStore=D(sW)}get style(){let e=this.env.model.getters.getCellComputedStyle(this.props.position),t=zl(e);return U({height:`${t}px`,width:`${t}px`,color:e.textColor||`#374151C2`,"background-color":this.getBackgroundColor(e)})}get verticalJustifyClass(){switch(this.env.model.getters.getCellComputedStyle(this.props.position).verticalAlign){case`top`:return`justify-content-start`;case`middle`:return`justify-content-center`;default:return`justify-content-end`}}getBackgroundColor(e){let t=this.hoveredTableStore.overlayColors.get(this.props.position);return t?Vr(e.fillColor||`#FFFFFF`,t):e.fillColor||`#FFFFFF`}},RW=class extends t.Component{static template=`o-spreadsheet-FullScreenFigure`;static props={};static components={ChartFigure:Iv};fullScreenFigureStore;ref=(0,t.useRef)(`fullScreenFigure`);spreadsheetRect=Dv();figureRegistry=Rv;setup(){this.fullScreenFigureStore=D(vv);let e=D(tu),n;(0,t.onWillUpdateProps)(()=>{n!==this.figureUI?.id&&e.enableAnimationForChart(this.chartId+`-fullscreen`),n=this.figureUI?.id}),(0,t.useEffect)(e=>e?.focus(),()=>[this.ref.el])}get figureUI(){return this.fullScreenFigureStore.fullScreenFigure}get chartId(){if(this.figureUI)return this.env.model.getters.getChartIdFromFigureId(this.figureUI?.id)}exitFullScreen(){this.figureUI&&this.fullScreenFigureStore.toggleFullScreenFigure(this.figureUI.id)}onKeyDown(e){e.key===`Escape`&&this.exitFullScreen()}get figureComponent(){if(this.figureUI)return Rv.get(this.figureUI.tag).Component}},zW=class extends t.Component{static template=`o_spreadsheet.PivotHTMLRenderer`;static components={Checkbox:eP};static props={pivotId:String,onCellClicked:Function};pivot=this.env.model.getters.getPivot(this.props.pivotId);data={columns:[],rows:[],values:[]};state=(0,t.useState)({showMissingValuesOnly:!1});setup(){let e=this.pivot.getExpandedTableStructure(),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;let e=this.getColumnsIndexes(),t=this.getRowsIndexes();return{columns:this.buildColumnsMissing(e),rows:this.buildRowsMissing(t),values:this.buildValuesMissing(e,t)}}addRecursiveRow(e){let t=this.pivot.getExpandedTableStructure().rows,n=[...t[e].values];if(n.length<=1)return[e];n.pop();let r=t.findIndex(e=>JSON.stringify(e.values)===JSON.stringify(n));return[e].concat(this.addRecursiveRow(r))}buildColumnsMissing(e){let t=[];for(let e of this.data.columns){let n=[];for(let t in e)for(let r=0;r<e[t].span;r++)n.push(parseInt(t,10));t.push(n)}for(let n=t[t.length-1].length;n>=0;n--)if(!e.includes(n))for(let e of t)e.splice(n,1);let n=[];for(let e in t){let r=[],i,a=1;for(let n=0;n<t[e].length;n++)i===t[e][n]?a++:(i!==void 0&&r.push(Object.assign({},this.data.columns[e][i],{span:a})),i=t[e][n],a=1);i!==void 0&&r.push(Object.assign({},this.data.columns[e][i],{span:a})),n.push(r)}return n}buildRowsMissing(e){return e.map(e=>this.data.rows[e])}buildValuesMissing(e,t){let n=e.map(()=>[]);for(let r of t)for(let t in e)n[t].push(this.data.values[e[t]][r]);return n}getColumnsIndexes(){let e=new Set;for(let t=0;t<this.data.columns.length;t++){let n=[];for(let e=0;e<this.data.columns[t].length;e++)for(let r=0;r<this.data.columns[t][e].span;r++)n.push(this.data.columns[t][e]);for(let t=0;t<n.length;t++)n[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(){let e=new Set;for(let t=0;t<this.data.rows.length;t++){this.data.rows[t].isMissing&&e.add(t);for(let n of this.data.values)n[t].isMissing&&this.addRecursiveRow(t).forEach(t=>e.add(t))}return Array.from(e).sort((e,t)=>e-t)}_buildColHeaders(e,t){let n=[];for(let r of t.columns){let t=[];for(let n of r){let r=[];for(let e=0;e<n.fields.length;e++)r.push({value:n.fields[e]},{value:n.values[e]});let i=this.pivot.parseArgsToPivotDomain(r),a=this.env.model.getters.getLocale();if(i.at(-1)?.field===`measure`){let{value:r,format:o}=this.pivot.getPivotMeasureValue(P(i.at(-1).value),i);t.push({formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(r,{format:o,locale:a}),span:n.width,isMissing:!this.tracker?.isHeaderPresent(i)})}else{let{value:r,format:o}=this.pivot.getPivotHeaderValueAndFormat(i);t.push({formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(r,{format:o,locale:a}),span:n.width,isMissing:!this.tracker?.isHeaderPresent(i)})}}n.push(t)}let r=n[n.length-1];return n[n.length-1]=r.map(e=>(e.isMissing||(e.style=`color: #756f6f;`),e)),n}_buildRowHeaders(e,t){let n=[];for(let r of t.rows){let t=[];for(let e=0;e<r.fields.length;e++)t.push({value:r.fields[e]},{value:r.values[e]});let i=this.pivot.parseArgsToPivotDomain(t),{value:a,format:o}=this.pivot.getPivotHeaderValueAndFormat(i),s=this.env.model.getters.getLocale(),c={formula:`=PIVOT.HEADER(${bh(e,i).join(`,`)})`,value:z(a,{format:o,locale:s}),isMissing:!this.tracker?.isHeaderPresent(i)};r.indent>1&&(c.style=`padding-left: ${r.indent-10}px`),n.push(c)}return n}_buildValues(e,t){let n=[];for(let r of t.columns.at(-1)||[]){let i=[],a=P(r.values[r.values.length-1]);for(let n of t.rows){let t=[];for(let e=0;e<n.fields.length;e++)t.push({value:n.fields[e]},{value:n.values[e]});for(let e=0;e<r.fields.length-1;e++)t.push({value:r.fields[e]},{value:r.values[e]});let o=this.pivot.parseArgsToPivotDomain(t),{value:s,format:c}=this.pivot.getPivotCellValueAndFormat(a,o),l=this.env.model.getters.getLocale();i.push({formula:`=PIVOT.VALUE(${bh(e,o,a).join(`,`)})`,value:z(s,{format:c,locale:l}),isMissing:!this.tracker?.isValuePresent(a,o)})}n.push(i)}return n}},BW=class{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(let n of e){let e=n.call(this,t);Array.isArray(e)||(e=[e]);let r=e.filter(e=>e!==`Success`);if(r.length)return r}return`Success`}}checkValidations(e,...t){return this.batchValidations(...t)(e)}},VW=class extends BW{getters;dispatch;canDispatch;constructor({getters:e,stateObserver:t,range:n,dispatch:r,canDispatch:i}){super(t),n.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.dispatch=r,this.canDispatch=i}import(e){}export(e,t){}adaptRanges(e,t,n){}},HW=class extends VW{static getters=[`getCellBorder`,`getBordersColors`];borders={};allowDispatch(e){switch(e.type){case`SET_BORDER`:return this.checkBordersUnchanged(e);default:return`Success`}}handle(e){switch(e.type){case`ADD_MERGE`:for(let t of e.target)this.addBordersToMerge(e.sheetId,t);break;case`DUPLICATE_SHEET`:let t=this.borders[e.sheetId];if(t){let n=t.slice().map(e=>e?.slice().map(e=>b(e)));this.history.update(`borders`,e.sheetIdTo,n)}break;case`DELETE_SHEET`:let n={...this.borders};delete n[e.sheetId],this.history.update(`borders`,n);break;case`SET_BORDER`:this.setBorder(e.sheetId,e.col,e.row,e.border);break;case`SET_BORDERS_ON_TARGET`:for(let t of e.target)for(let n=t.top;n<=t.bottom;n++)for(let r=t.left;r<=t.right;r++)this.setBorder(e.sheetId,r,n,e.border);break;case`SET_ZONE_BORDERS`:if(e.border){let 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||Ee.style,color:e.border.color||Ee.color})}break;case`CLEAR_FORMATTING`:this.clearBorders(e.sheetId,e.target);break;case`REMOVE_COLUMNS_ROWS`:let r=[...e.elements].sort((e,t)=>t-e);for(let t of $e(r))if(e.dimension===`COL`){let n=this.getters.getColsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[n]),this.shiftBordersHorizontally(e.sheetId,t[0]+1,-t.length)}else{let n=this.getters.getRowsZone(e.sheetId,t[t.length-1],t[0]);this.clearInsideBorders(e.sheetId,[n]),this.shiftBordersVertically(e.sheetId,t[0]+1,-t.length)}break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?this.handleAddColumns(e):this.handleAddRows(e);break}}handleAddColumns(e){let t,n;e.position===`before`?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity),t=e.base-1,n=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity),t=e.base,n=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,n)}handleAddRows(e){let t,n;e.position===`before`?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity),t=e.base-1,n=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity),t=e.base,n=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,n)}getCellBorder({sheetId:e,col:t,row:n}){let r=this.borders[e]?.[t]?.[n];return r?.top||r?.bottom||r?.left||r?.right?b(r):null}getBordersColors(e){let t=[],n=this.borders[e];if(n){for(let e of n.filter(C))for(let n of e)if(n)for(let e of[`top`,`bottom`,`left`,`right`]){let r=n[e]?.color;r&&t.push(r)}}return t}ensureColumnBorderContinuity(e,t,n){let r=S(t+1,n);for(let i=0;i<this.getters.getNumberRows(e);i++){let a=this.getCellBorder({sheetId:e,col:t,row:i}),o=this.getCellBorder({sheetId:e,col:n,row:i});if(a&&o){let t=this.getCommonSides(a,o);for(let n of r)this.addBorder(e,n,i,t)}}}ensureRowBorderContinuity(e,t,n){let r=S(t+1,n);for(let i=0;i<this.getters.getNumberCols(e);i++){let a=this.getCellBorder({sheetId:e,col:i,row:t}),o=this.getCellBorder({sheetId:e,col:i,row:n});if(a&&o){let t=this.getCommonSides(a,o);for(let n of r)this.addBorder(e,i,n,t)}}}getCommonSides(e,t){let n={};for(let r of[`top`,`bottom`,`left`,`right`])e[r]&&w(e[r],t[r])&&(n[r]=e[r]);return n}getColumnsWithBorders(e){let t=this.borders[e];return t?Object.keys(t).map(e=>parseInt(e,10)):[]}getRowsWithBorders(e){let t=this.borders[e]?.filter(C);if(!t)return[];let n=new Set;for(let e of t)for(let t in e)n.add(parseInt(t,10));return Array.from(n)}getRowsRange(e){return this.borders[e]?S(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,n){this.borders[e]&&this.getColumnsWithBorders(e).filter(e=>e>=t).sort((e,t)=>n<0?e-t:t-e).forEach(t=>{this.moveBordersOfColumn(e,t,n)})}shiftBordersVertically(e,t,n){this.borders[e]&&(n<0&&this.moveBordersOfRow(e,t,n,{destructive:!1}),this.getRowsWithBorders(e).filter(e=>e>=t).sort((e,t)=>n<0?e-t:t-e).forEach(t=>{this.moveBordersOfRow(e,t,n)}))}moveBordersOfRow(e,t,n,{destructive:r}={destructive:!0}){let i=this.borders[e];i&&this.getColumnsWithBorders(e).forEach(a=>{let o=i[a]?.[t+n],s=i[a]?.[t];this.history.update(`borders`,e,a,t+n,r?s:s||o),this.history.update(`borders`,e,a,t,void 0)})}moveBordersOfColumn(e,t,n,{destructive:r}={destructive:!0}){let i=this.borders[e];i&&this.getRowsRange(e).forEach(a=>{let o=i[t+n]?.[a],s=i[t]?.[a];this.history.update(`borders`,e,t+n,a,r?s:s||o),r&&this.history.update(`borders`,e,t,a,void 0)})}setBorder(e,t,n,r,i=!0){let a=this.getters.getNumberCols(e)-1,o=this.getters.getNumberRows(e)-1;(i||!this.borders[e]?.[t]?.[n]?.left)&&(this.history.update(`borders`,e,t,n,`left`,r?.left),r?.left&&t>0&&!w(this.borders[e]?.[t-1]?.[n]?.right,r?.left)&&this.history.update(`borders`,e,t-1,n,`right`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.top)&&(this.history.update(`borders`,e,t,n,`top`,r?.top),r?.top&&n>0&&!w(this.borders[e]?.[t]?.[n-1]?.bottom,r?.top)&&this.history.update(`borders`,e,t,n-1,`bottom`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.right)&&(this.history.update(`borders`,e,t,n,`right`,r?.right),r?.right&&t<a&&!w(this.borders[e]?.[t+1]?.[n]?.left,r?.right)&&this.history.update(`borders`,e,t+1,n,`left`,void 0)),(i||!this.borders[e]?.[t]?.[n]?.bottom)&&(this.history.update(`borders`,e,t,n,`bottom`,r?.bottom),r?.bottom&&n<o&&!w(this.borders[e]?.[t]?.[n+1]?.top,r?.bottom)&&this.history.update(`borders`,e,t,n+1,`top`,void 0))}clearBorders(e,t,n=!1){let r=this.getters.getNumberCols(e)-1,i=this.getters.getNumberRows(e)-1;for(let a of nn(t))for(let t=a.top;t<=a.bottom;t++){n&&(a.left>0&&this.history.update(`borders`,e,a.left-1,t,`right`,void 0),a.right<r&&this.history.update(`borders`,e,a.right+1,t,`left`,void 0));for(let r=a.left;r<=a.right;r++)this.history.update(`borders`,e,r,t,void 0),n&&(a.top>0&&this.history.update(`borders`,e,r,a.top-1,`bottom`,void 0),a.bottom<i&&this.history.update(`borders`,e,r,a.bottom+1,`top`,void 0))}}clearInsideBorders(e,t){for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let r=n.left;r<=n.right;r++)this.history.update(`borders`,e,r,t,void 0)}addBorder(e,t,n,r){this.setBorder(e,t,n,{...this.getCellBorder({sheetId:e,col:t,row:n}),...r})}setBorders(e,t,n,r){if(n===`clear`)return this.clearBorders(e,t,!0);for(let i of nn(t)){if(n===`all`)for(let t=i.top;t<=i.bottom;t++)for(let n=i.left;n<=i.right;n++)this.addBorder(e,n,t,{top:r,right:r,bottom:r,left:r});if(n===`h`||n===`hv`){if(i.top===i.bottom)continue;for(let t=i.left;t<=i.right;t++){this.addBorder(e,t,i.top,{bottom:r});for(let n=i.top+1;n<i.bottom;n++)this.addBorder(e,t,n,{top:r,bottom:r});this.addBorder(e,t,i.bottom,{top:r})}}if(n===`v`||n===`hv`){if(i.left===i.right)continue;for(let t=i.top;t<=i.bottom;t++){this.addBorder(e,i.left,t,{right:r});for(let n=i.left+1;n<i.right;n++)this.addBorder(e,n,t,{left:r,right:r});this.addBorder(e,i.right,t,{left:r})}}if(n===`left`||n===`external`)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.left,t,{left:r});if(n===`right`||n===`external`)for(let t=i.top;t<=i.bottom;t++)this.addBorder(e,i.right,t,{right:r});if(n===`top`||n===`external`)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.top,{top:r});if(n===`bottom`||n===`external`)for(let t=i.left;t<=i.right;t++)this.addBorder(e,t,i.bottom,{bottom:r})}}addBordersToMerge(e,t){let{left:n,right:r,top:i,bottom:a}=t,o=this.getCellBorder({sheetId:e,col:n,row:i}),s=this.getCellBorder({sheetId:e,col:r,row:a});this.clearBorders(e,[t]),o?.top&&this.setBorders(e,[{...t,bottom:i}],`top`,o.top),o?.left&&this.setBorders(e,[{...t,right:n}],`left`,o.left),s?.bottom?this.setBorders(e,[{...t,top:a}],`bottom`,s.bottom):o?.bottom&&this.setBorders(e,[{...t,top:a}],`bottom`,o.bottom),s?.right?this.setBorders(e,[{...t,left:r}],`right`,s.right):o?.right&&this.setBorders(e,[{...t,left:r}],`right`,o.right)}checkBordersUnchanged(e){let t=this.getCellBorder(e),n=!e.border?.bottom&&!e.border?.left&&!e.border?.right&&!e.border?.top;return!t&&n||w(t,e.border)?`NoChanges`:`Success`}import(e){if(Object.keys(e.borders||{}).length)for(let t of e.sheets)for(let[n,r]of wc(t.id,t.borders)){let{sheetId:t,col:i,row:a}=n,o=e.borders[r];this.setBorder(t,i,a,o,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,mn(e))}export(e){let t={};for(let n of e.sheets){let e={};for(let r=0;r<n.colNumber;r++)for(let i=0;i<n.rowNumber;i++){let a=this.getCellBorder({sheetId:n.id,col:r,row:i});if(a){let o=Sc(a,t),s={sheetId:n.id,col:r,row:i};e[o]??=[],e[o].push(s)}}n.borders=Cc(e)}e.borders=t}exportForExcel(e){this.export(e)}},UW=class extends VW{static getters=[`getCarousel`,`doesCarouselExist`];carousels={};allowDispatch(e){switch(e.type){case`CREATE_CAROUSEL`:return this.getters.getFigure(e.sheetId,e.figureId)?`DuplicatedFigureId`:`Success`;case`UPDATE_CAROUSEL`:return this.carousels[e.sheetId]?.[e.figureId]?`Success`:`InvalidFigureId`}return`Success`}handle(e){switch(e.type){case`CREATE_CAROUSEL`:this.getters.getFigure(e.sheetId,e.figureId)||this.dispatch(`CREATE_FIGURE`,{...e,tag:`carousel`}),this.history.update(`carousels`,e.sheetId,e.figureId,e.definition);break;case`UPDATE_CAROUSEL`:this.removeDeletedCharts(e,this.getters.getCarousel(e.figureId).items),this.history.update(`carousels`,e.sheetId,e.figureId,e.definition);break;case`DUPLICATE_SHEET`:{let t=this.getters.getFigures(e.sheetId);for(let n of t)if(n.tag===`carousel`){let t=n.id.split(`??`).pop(),r=`${e.sheetIdTo}??${t}`,i=this.getCarousel(n.id);if(i){let t={width:n.width,height:n.height};this.dispatch(`CREATE_CAROUSEL`,{sheetId:e.sheetIdTo,figureId:r,offset:n.offset,col:n.col,row:n.row,size:t,definition:{items:i.items.map(t=>{if(t.type===`carouselDataView`)return{...t};let n=t.chartId.split(`??`).pop(),r=`${e.sheetIdTo}??${n}`;return{...t,chartId:r}})}})}}break}case`DELETE_FIGURE`:this.history.update(`carousels`,e.sheetId,e.figureId,void 0);break;case`DELETE_SHEET`:this.history.update(`carousels`,e.sheetId,void 0);break}}doesCarouselExist(e){for(let t in this.carousels)if(this.carousels[t]?.[e])return!0;return!1}getCarousel(e){for(let t in this.carousels)if(this.carousels[t]?.[e])return this.carousels[t][e];throw Error(`There is no carousel with the given figureId: ${e}`)}removeDeletedCharts(e,t){let n=new Set(e.definition.items.filter(e=>e.type===`chart`).map(e=>e.chartId));for(let r of t)r.type===`chart`&&!n.has(r.chartId)&&this.dispatch(`DELETE_CHART`,{chartId:r.chartId,sheetId:e.sheetId})}import(e){for(let t of e.sheets){let e=(t.figures||[]).filter(e=>e.tag===`carousel`);for(let n of e)this.history.update(`carousels`,t.id,n.id,{items:n.data.items,title:n.data.title})}}export(e){for(let t of e.sheets){let e=t.figures.filter(e=>e.tag===`carousel`);for(let n of e)this.carousels[t.id]?.[n.id]&&(n.data={...n.data,...this.carousels[t.id]?.[n.id]})}}},WW=class{getters;baseFormula;alreadyAppliedNumberOffsets=[];previousStrings=[];baseFormulaWasTransformed=!1;rangeToStringOptions={doNotSimplifyRange:!0};constructor(e){this.getters=e}buildResult(e,t,n){let r={};if(e.length&&(r.N=e.join(`|`)),t.length&&(r.S=t),n.length){let e;e=n.some(e=>e.includes(`|`))?n:n.join(`|`),r.R=e}return r}resetBaseTo(e){this.baseFormula=yz.CopyWithDependenciesAndLiteral(e,e.sheetId,b(e.rangeDependencies),e.literalValues.numbers,e.literalValues.strings),this.alreadyAppliedNumberOffsets=e.literalValues.numbers.map(e=>0),this.previousStrings=e.literalValues.strings.map(e=>e.value),this.baseFormulaWasTransformed=!1}resetBase(){this.baseFormula&&(this.baseFormula=void 0,this.alreadyAppliedNumberOffsets=[],this.previousStrings=[],this.baseFormulaWasTransformed=!1)}squish(e,t){if(!e.isFormula)return this.resetBase(),e.content;let n=[],r=[],i=[];return!this.baseFormula||this.baseFormula.normalizedFormula!==e.compiledFormula.normalizedFormula?(this.resetBaseTo(e.compiledFormula),e.compiledFormula.toFormulaString(this.getters,this.rangeToStringOptions)):!this.baseFormulaWasTransformed&&w(e.compiledFormula.literalValues,this.baseFormula.literalValues)&&w(e.compiledFormula.rangeDependencies,this.baseFormula.rangeDependencies)?e.compiledFormula.toFormulaString(this.getters,this.rangeToStringOptions):(n=this.squishNumbers(e.compiledFormula.literalValues.numbers),r=this.squishStrings(e.compiledFormula.literalValues.strings),i=this.squishReferences(e.compiledFormula.rangeDependencies,t),this.baseFormulaWasTransformed=!0,this.buildResult(n,r,i))}squishSheet(e){let t=Object.keys(e),n={};for(let r=0;r<t.length;r++){let i=tn(t[r]),a=0;for(a=0;a+r+1<t.length;a++){let n=tn(t[a+r+1]);if(n.col!==i.col||n.row!==i.row+a+1||!w(e[t[a+r+1]],e[t[r]]))break}if(a>0){let o=`${t[r]}:${T(i.col,i.row+a)}`;n[o]=e[t[r]],r+=a}else n[t[r]]=e[t[r]]}return n}squishReferences(e,t){if(!this.baseFormula)throw Error(`No previous cell to squish against`);return e.map((e,n)=>this.squishOneReference(e,this.baseFormula.rangeDependencies,n,t))}squishOneReference(e,t,n,r){let i=t[n];if(w(i,e))return`=`;if(i.sheetId!==e.sheetId||i.prefixSheet!==e.prefixSheet||i.invalidSheetName!==e.invalidSheetName||i.invalidXc!==e.invalidXc||i.parts.length!==e.parts.length||i.unboundedZone.bottom===void 0||i.unboundedZone.right===void 0||e.unboundedZone.bottom===void 0||e.unboundedZone.right===void 0)return t[n]=b(e),el(e,r,this.getters.getSheetName,this.rangeToStringOptions);for(let a=0;a<e.parts.length;a++)if(i.parts[a].colFixed!==e.parts[a].colFixed||i.parts[a].rowFixed!==e.parts[a].rowFixed)return t[n]=b(e),el(e,r,this.getters.getSheetName,this.rangeToStringOptions);let a=e.zone,o=i.zone;if(a.top!==a.bottom||a.left!==a.right||o.top!==o.bottom||o.left!==o.right)return t[n]=b(e),el(e,r,this.getters.getSheetName,this.rangeToStringOptions);let s=e.zone.left-i.zone.left,c=e.zone.top-i.zone.top;return i.zone=b(e.zone),i.unboundedZone=b(e.unboundedZone),s!==0&&c===0?`${s>0?`+`:`-`}C${Math.abs(s)}`:c!==0&&s===0?`${c>0?`+`:`-`}R${Math.abs(c)}`:el(e,r,this.getters.getSheetName,this.rangeToStringOptions)}squishNumbers(e){let t=e.map(e=>`=`);for(let n=0;n<e.length;n++){let r=e[n].value-(this.baseFormula.literalValues.numbers[n].value+this.alreadyAppliedNumberOffsets[n]||0);r!==0&&(t[n]=`+`+r.toString(),this.alreadyAppliedNumberOffsets[n]=(this.alreadyAppliedNumberOffsets[n]||0)+r)}return t}squishStrings(e){let t=e.map(e=>`=`);for(let n=0;n<e.length;n++){let r=e[n].value;r!==this.previousStrings[n]&&(t[n]=r,this.previousStrings[n]=r)}return t}};function GW(e){return[tn(e)]}function*KW(e,t){let n=tn(e),r=tn(t);for(let e=Math.min(n.col,r.col);e<=Math.max(n.col,r.col);e++)for(let t=Math.min(n.row,r.row);t<=Math.max(n.row,r.row);t++)yield{col:e,row:t}}var qW=class{previousCell;alreadyAppliedNumberOffset=[];previousString=[];alreadyAppliedReferenceOffset=[];previousOffset=void 0;*unsquishSheet(e,t,n){let r=Object.keys(e).map(e=>({cartesian:tn(e.split(`:`)[0]),key:e})).sort((e,t)=>e.cartesian.col===t.cartesian.col?e.cartesian.row-t.cartesian.row:e.cartesian.col-t.cartesian.col),i;for(let{key:a}of r){let r=e[a];if(r==null||r===``)continue;if(typeof r==`string`)if(r.startsWith(`=`)){i=`NEW_FORMULA`;let e=yz.Compile(r,t,n);this.previousCell=e,this.alreadyAppliedNumberOffset=e.literalValues.numbers.map(e=>e.value),this.previousString=e.literalValues.strings.map(e=>e.value),this.alreadyAppliedReferenceOffset=[...e.rangeDependencies],this.previousOffset=void 0}else i=`NOT_A_FORMULA`;else i=r.N||r.S||r.R?!i||i===`NEW_FORMULA`?`FIRST_OFFSET`:`COMBINE_OFFSET`:`NO_CHANGE`;let o=a.split(`:`),s=o.length===1?GW(a):KW(o[0],o[1]);switch(i){case`NEW_FORMULA`:case`NO_CHANGE`:for(let e of s)yield{position:e,compiled:this.previousCell};break;case`NOT_A_FORMULA`:for(let e of s)yield{position:e,content:r};break;case`FIRST_OFFSET`:this.previousOffset=r;for(let e of s){let i=this.unsquish(r,t,n);if(i.areRangeShapesInLineWithNormalizedFormula())yield{position:e,compiled:i};else{let r=i.toFormulaString(n);yield{position:e,compiled:yz.Compile(r,t,n)}}}break;case`COMBINE_OFFSET`:if(!this.previousOffset)throw Error(`No previous offset to combine with`);let e=r;this.previousOffset.N=e.N??this.previousOffset.N,this.previousOffset.S=e.S??this.previousOffset.S,this.previousOffset.R=e.R??this.previousOffset.R;for(let e of s){let r=this.unsquish(this.previousOffset,t,n);if(r.areRangeShapesInLineWithNormalizedFormula())yield{position:e,compiled:r};else{let i=r.toFormulaString(n);yield{position:e,compiled:yz.Compile(i,t,n)}}}break}}}unsquish(e,t,n){if(typeof e==`object`&&this.previousCell){let r={numbers:[],strings:[],dependencies:[]};if(e.N!==void 0&&e.N.length>0?r.numbers=e.N.split(`|`).map(this.adjustNumbers):r.numbers=this.previousCell.literalValues.numbers,e.S!==void 0&&e.S.length>0?r.strings=e.S.map(this.adjustStrings):r.strings=this.previousCell.literalValues.strings,e.R!==void 0&&this.previousCell){let i;i=typeof e.R==`string`?e.R.split(`|`):e.R,r.dependencies=i.map((e,r)=>{if(e===`=`)return{...this.alreadyAppliedReferenceOffset[r]};if(e.startsWith(`+`)||e.startsWith(`-`)){let t=parseInt(e.slice(2),10),n=e[0]===`+`?1:-1;if(e[1]===`R`){let e=this.alreadyAppliedReferenceOffset[r].zone.top+t*n,i={...this.alreadyAppliedReferenceOffset[r]};return i.zone=i.unboundedZone={...i.zone,top:e,bottom:e},this.alreadyAppliedReferenceOffset[r]=i,i}else if(e[1]===`C`){let e=this.alreadyAppliedReferenceOffset[r].zone.left+t*n,i=Object.assign({},this.alreadyAppliedReferenceOffset[r]);return i.zone=i.unboundedZone=Object.assign({},i.zone,{left:e,right:e}),this.alreadyAppliedReferenceOffset[r]=i,i}else throw Error(`Invalid reference offset format: ${e}`)}else{let i=n.getRangeFromSheetXC(t,e);return this.alreadyAppliedReferenceOffset[r]=i,i}})}else r.dependencies=this.previousCell.rangeDependencies;return yz.CopyWithDependenciesAndLiteral(this.previousCell,t,r.dependencies,r.numbers,r.strings)}throw Error(`Invalid squished element or no previous cell to unsquish against`)}adjustStrings=(e,t)=>e===`=`?{value:this.previousString[t]}:(this.previousString[t]=e,{value:e});adjustNumbers=(e,t)=>{if(e===`=`)return{value:this.alreadyAppliedNumberOffset[t]};{let n=parseFloat(e.slice(1)),r=(this.alreadyAppliedNumberOffset[t]||0)+n;return this.alreadyAppliedNumberOffset[t]=r,{value:r}}}},JW=class extends VW{static getters=[`zoneToXC`,`getCells`,`getTranslatedCellFormula`,`getCellStyle`,`getCellById`,`getFormulaString`,`getFormulaMovedInSheet`];nextId=1;cells={};adaptRanges({applyChange:e},t,n){for(let r of Object.keys(this.cells))for(let i of Object.values(this.cells[r]||{}))if(i.isFormula){for(let a of i.compiledFormula.rangeDependencies)if(a.sheetId===t||a.invalidSheetName===n.old){let t=e(a);t.changeType!==`NONE`&&this.history.update(`cells`,r,i.id,`compiledFormula`,`rangeDependencies`,i.compiledFormula.rangeDependencies.indexOf(a),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`;case`SET_FORMATTING`:return this.checkUselessSetFormatting(e);default:return`Success`}}handle(e){switch(e.type){case`SET_FORMATTING`:this.setStyleFormat(e.sheetId,e.target,e.style,e.format);break;case`CLEAR_FORMATTING`:this.clearFormatting(e.sheetId,e.target);break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?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 n of nn(t))for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++){let n=this.getters.getCell({sheetId:e,col:t,row:r});(n?.isFormula||n?.content)&&this.dispatch(`UPDATE_CELL`,{sheetId:e,content:``,col:t,row:r})}}clearFormatting(e,t){for(let n of nn(t))for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,style:null,format:``})}clearCells(e,t){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,content:``,style:null,format:``})}handleAddColumnsRows(e,t){let n,r;e.position===`before`?(n=S(e.base,e.base+e.quantity),r=e.base+e.quantity):(n=S(e.base+1,e.base+e.quantity+1),r=e.base),t(e.sheetId,r,n)}import(e){let t=performance.now();for(let t of e.sheets){let n=t.id,r=new SV,i=new qW;for(let e of i.unsquishSheet(t.cells,t.id,this.getters))if(e.content||e.compiled){let n={sheetId:t.id,col:e.position.col,row:e.position.row};e.compiled?r.set(n,{compiledFormula:e.compiled}):r.set(n,{content:e.content})}for(let[e,n]of[[`style`,t.styles],[`format`,t.formats]])for(let[i,a]of wc(t.id,n)){let t=r.get(i);t?t[e]=a:r.set(i,{[e]:a})}for(let i of r.keysForSheet(n)){let n=r.get(i);if(n?.content||n?.format||n?.style||n?.compiledFormula){let r=this.importCell(t.id,n?.content,n?.style?e.styles[n?.style]:void 0,n?.format?e.formats[n?.format]:void 0,n?.compiledFormula);this.history.update(`cells`,t.id,r.id,r),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:r.id,...i})}}}console.debug(`cells imported in`,performance.now()-t,`ms`)}export(e,t){let n={},r={};for(let i of e.sheets){let e=new WW(this.getters),a=[],o=[],s={},c=Object.values(this.cells[i.id]||{}).map(e=>this.getters.getCellPosition(e.id)).sort((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col);for(let l of c){let c=this.getters.getCell(l),u=this.extractCustomStyle(c);if(Object.keys(u).length){let e=Sc(u,n);a[e]??=[],a[e].push(l)}if(c.format){let e=Sc(c.format,r);o[e]??=[],o[e].push(l)}let d=T(l.col,l.row);c.isFormula?s[d]=t?e.squish(c,i.id):c.compiledFormula.toFormulaString(this.getters):c.content&&(s[d]=t?e.squish(c,i.id):c.content)}i.styles=Cc(a),i.formats=Cc(o),i.cells=t?e.squishSheet(s):s}e.styles=n,e.formats=r}importCell(e,t,n,r,i){let a=this.getNextCellId();return i?this.createFormulaCellFromCompiledFormula(a,i,r,n):this.createCell(a,t||``,r,n,e)}exportForExcel(e){this.export(e,!1);let t=[];for(let n in e.formats||[])Ds(e.formats[n])||(t.push(Number(n)),delete e.formats[n]);if(t.length)for(let n of e.sheets)for(let e in n.formats){let r=n.formats[e];r&&t.includes(r)&&delete n.formats[e]}}extractCustomStyle(e){let t={...e.style},n=!e.isFormula&&ra(e.content,R)?xe:ye;for(let r in t)(r!==`align`||!e.isFormula)&&t[r]===n[r]&&delete t[r];return t}getCells(e){return Object.values(this.cells[e]||{})}getCellById(e){let t=this.getters.getCellPosition(e);return this.cells[t.sheetId][e]}getFormulaString(e,t,n,r=!1){return yz.CopyWithDependencies(t,e,n).toFormulaString(this.getters,{useBoundedReference:r})}getTranslatedCellFormula(e,t,n,r){r instanceof yz||(r=yz.CompileForSerializedFormula(e,r));let i=this.getters.createAdaptedRanges(r.rangeDependencies,t,n,e);return this.getFormulaString(e,r,i)}getFormulaMovedInSheet(e,t){let n=this.getters.removeRangesSheetPrefix(e,t.rangeDependencies);return yz.CopyWithDependencies(t,e,n).toFormulaString(this.getters)}getCellStyle(e){return this.getters.getCell(e)?.style||{}}zoneToXC(e,t,n=[{colFixed:!1,rowFixed:!1}]){t=this.getters.expandZone(e,t);let r=T(t.left,t.top,n[0]),i=T(t.right,t.bottom,n.length>1?n[1]:n[0]),a=this.getters.getMainCellPosition({sheetId:e,col:t.left,row:t.top}),o=this.getters.getMainCellPosition({sheetId:e,col:t.right,row:t.bottom}),s=a.col===o.col&&a.row===o.row;return r!==i&&!s?r+`:`+i:r}setStyleFormat(e,t,n,r){if(!(n===void 0&&r===void 0))for(let i of nn(t))for(let t=i.left;t<=i.right;t++)for(let a=i.top;a<=i.bottom;a++){let i=this.getters.getCell({sheetId:e,col:t,row:a});this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:a,style:n?{...i?.style,...n}:void 0,format:r})}}copyColumnStyle(e,t,n){for(let r=0;r<this.getters.getNumberRows(e);r++){let i=this.getFormat(e,t,r);if(i.style||i.format)for(let t of n)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,...i})}}copyRowStyle(e,t,n){for(let r=0;r<this.getters.getNumberCols(e);r++){let i=this.getFormat(e,r,t);if(i.style||i.format)for(let t of n)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:r,row:t,...i})}}getFormat(e,t,n){let r={},i=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),a=this.getters.getCell(i);return a&&(a.style&&(r.style=a.style),a.format&&(r.format=a.format)),r}getNextCellId(){let e=this.nextId;return this.history.update(`nextId`,this.nextId+1),e}updateCell(e,t,n,r){let i=this.getters.getCell({sheetId:e,col:t,row:n}),a=r.content!==void 0||`formula`in r,o;o=a?Ot(r?.content):i?.isFormula?i.compiledFormula.toFormulaString(this.getters):i?.content||``;let s;s=r.style===void 0?i?i.style:void 0:r.style||void 0;let c=r.format===void 0?i&&i.format:r.format;if((a&&!o&&!r.formula||!a&&(!i||!i.isFormula&&i.content===``))&&!s&&!c){i&&(this.history.update(`cells`,e,i.id,void 0),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:void 0,col:t,row:n,sheetId:e}));return}let l=i?.id||this.getNextCellId(),u=this.createCell(l,o,c,s,e);this.history.update(`cells`,e,u.id,u),this.dispatch(`UPDATE_CELL_POSITION`,{cellId:u.id,col:t,row:n,sheetId:e})}createCell(e,t,n,r,i){return t.startsWith(`=`)?this.createFormulaCell(e,t,n,r,i):this.createLiteralCell(e,t,n,r)}createLiteralCell(e,t,n,r){let i=this.getters.getLocale(),a=sc(t,i);return n||=typeof a==`number`?ds(t,i)||fs(t):void 0,!Os(n)&&!t.startsWith(`'`)&&!M(t)&&(t=P(a)),{id:e,content:t,style:r,format:n,isFormula:!1,parsedValue:a}}createFormulaCell(e,t,n,r,i){let a=yz.Compile(t,i,this.getters);return this.createFormulaCellFromCompiledFormula(e,a,n,r)}createFormulaCellFromCompiledFormula(e,t,n,r){return{id:e,format:n,style:r,isFormula:!0,compiledFormula:t}}checkCellOutOfSheet(e){let{sheetId:t,col:n,row:r}=e;return this.getters.tryGetSheet(t)?An(n,r,this.getters.getSheetZone(t))?`Success`:`TargetOutOfSheet`:`InvalidSheetId`}checkUselessClearCell(e){let t=this.getters.getCell(e);return!t||!t.isFormula&&!t.content&&!t.style&&!t.format?`NoChanges`:`Success`}checkUselessUpdateCell(e){let t=this.getters.getCell(e),n=`content`in e||`formula`in e,r=`style`in e,i=`format`in e;return(!n||t?.isFormula&&t.compiledFormula.toFormulaString(this.getters)===e.content||!t?.isFormula&&t?.content===e.content)&&(!r||w(t?.style,e.style))&&(!i||t?.format===e.format)?`NoChanges`:`Success`}checkUselessSetFormatting(e){let{sheetId:t,target:n}=e,r=`style`in e,i=`format`in e;if(!r&&!i)return`NoChanges`;for(let a of nn(n))for(let n=a.left;n<=a.right;n++)for(let o=a.top;o<=a.bottom;o++){let a={sheetId:t,col:n,row:o},s=this.getters.getCell(a);if(r&&!w(s?.style,e.style)||i&&s?.format!==e.format)return`Success`}return`NoChanges`}},YW=class extends VW{static getters=[`isChartDefined`,`getChartDefinition`,`getChartType`,`getChartIds`,`getChart`,`getFigureIdFromChartId`,`getContextCreationChart`];charts={};createChart=b_(this.getters);validateChartDefinition=e=>S_(this,e.definition);adaptRanges(e){for(let[t,n]of Object.entries(this.charts)){if(!n)continue;let r=n.chart.updateRanges(e);this.history.update(`charts`,t,r?{figureId:n.figureId,chart:r}:void 0)}}allowDispatch(e){switch(e.type){case`CREATE_CHART`:return this.checkValidations(e,this.chainValidations(this.checkFigureArguments,this.validateChartDefinition,this.checkChartDuplicate));case`UPDATE_CHART`:return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartExists,this.checkChartChanged));case`DELETE_CHART`:return`SubCommandOnly`;default:return`Success`}}handle(e){switch(e.type){case`CREATE_CHART`:let{col:t,row:n,offset:r,size:i,sheetId:a,figureId:o}=e;!this.getters.getFigure(a,o)&&r!==void 0&&t!==void 0&&n!==void 0&&this.addFigure(o,a,t,n,r,i),this.addChart(e.figureId,e.chartId,e.definition);break;case`UPDATE_CHART`:this.addChart(e.figureId,e.chartId,e.definition);break;case`DUPLICATE_SHEET`:for(let t of this.getChartIds(e.sheetId)){let{chart:n,figureId:r}=this.charts[t]||{};if(!n||!r)continue;let i=this.getters.getFigure(e.sheetId,r);if(!i)continue;let a=r.split(`??`).pop(),o=`${e.sheetIdTo}??${a}`,s=t.split(`??`).pop(),c=`${e.sheetIdTo}??${s}`,l=n.duplicateInDuplicatedSheet(e.sheetIdTo);l&&this.dispatch(`CREATE_CHART`,{figureId:o,chartId:c,col:i.col,row:i.row,offset:i.offset,size:{width:i.width,height:i.height},definition:l.getDefinition(),sheetId:e.sheetIdTo})}break;case`DELETE_FIGURE`:for(let t in this.charts)this.charts[t]?.figureId===e.figureId&&this.dispatch(`DELETE_CHART`,{chartId:t,sheetId:e.sheetId});break;case`DELETE_CHART`:this.isChartDefined(e.chartId)&&this.history.update(`charts`,e.chartId,void 0);break;case`DELETE_SHEET`:for(let t of this.getChartIds(e.sheetId))this.history.update(`charts`,t,void 0);break}}getContextCreationChart(e){return this.charts[e]?.chart.getContextCreation()}getChart(e){return this.charts[e]?.chart}getFigureIdFromChartId(e){if(!this.charts[e])throw Error(`Chart with id ${e} does not exist.`);return this.charts[e].figureId}getChartType(e){let t=this.charts[e]?.chart.type;if(!t)throw Error(`Chart not defined.`);return t}isChartDefined(e){return e in this.charts&&this.charts!==void 0}getChartIds(e){return Object.entries(this.charts).filter(([,t])=>t?.chart.sheetId===e).map(([e])=>e)}getChartDefinition(e){let t=this.charts[e]?.chart.getDefinition();if(!t)throw Error(`There is no chart with the given id: ${e}`);return t}import(e){for(let t of e.sheets)if(t.figures){for(let e of t.figures)if(e.tag===`chart`){let n=e.data.chartId,r=this.createChart(e.id,e.data,t.id);this.charts[n]={chart:r,figureId:e.id}}else if(e.tag===`carousel`)for(let n in e.data.chartDefinitions||{}){let r=e.data.chartDefinitions[n],i=this.createChart(e.id,r,t.id);this.charts[n]={chart:i,figureId:e.id}}}}export(e){if(e.sheets)for(let t of e.sheets){let e=this.getters.getFigures(t.id),n=[];for(let t of e){let e=t,r=Object.keys(this.charts).find(e=>this.charts[e]?.figureId===t.id);if(e&&e.tag===`chart`&&r){let t=this.charts[r]?.chart.getDefinition();t&&(e.data={...t,chartId:r},n.push(e))}else if(e&&e.tag===`carousel`){let r=Object.keys(this.charts).filter(e=>this.charts[e]?.figureId===t.id),i={};for(let e of r)i[e]=this.charts[e]?.chart.getDefinition();e.data={chartDefinitions:i},n.push(e)}else n.push(e)}t.figures=n}}addFigure(e,t,n,r,i,a={width:536,height:335}){this.dispatch(`CREATE_FIGURE`,{sheetId:t,figureId:e,col:n,row:r,offset:i,size:a,tag:`chart`})}addChart(e,t,n){let r=this.getters.getFigureSheetId(e);if(r){let i=this.createChart(e,n,r);this.history.update(`charts`,t,{figureId:e,chart:i})}}checkChartDuplicate(e){return this.isChartDefined(e.chartId)?`DuplicatedChartId`:`Success`}checkChartExists(e){return this.isChartDefined(e.chartId)?`Success`:`ChartDoesNotExist`}checkChartChanged(e){return e.figureId===this.charts[e.chartId]?.figureId&&w(this.getChartDefinition(e.chartId),e.definition)?`NoChanges`:`Success`}checkFigureArguments(e){return this.getters.getFigure(e.sheetId,e.figureId)||e.offset!==void 0&&e.col!==void 0&&e.row!==void 0?`Success`:`MissingFigureArguments`}};function XW(e){return e===``?NaN:Number(e)}var ZW=class extends VW{static getters=[`getConditionalFormats`,`getRulesSelection`,`getRulesByCell`,`getAdaptedCfRanges`];cfRules={};adaptCFFormulas({applyChange:e,adaptFormulaString:t}){for(let n in this.cfRules)for(let r of this.cfRules[n])if(r.rule.type===`DataBarRule`&&r.rule.rangeValues){let t=e(r.rule.rangeValues);switch(t.changeType){case`REMOVE`:this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`rangeValues`,void 0);break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`rangeValues`,t.range);break}}else if(r.rule.type===`CellIsRule`)for(let e=0;e<r.rule.values.length;e++)this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,`values`,e,t(n,r.rule.values[e]));else if(r.rule.type===`IconSetRule`)for(let e of[`lowerInflectionPoint`,`upperInflectionPoint`])r.rule[e].type===`formula`&&this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,e,`value`,t(n,r.rule[e].value));else if(r.rule.type===`ColorScaleRule`)for(let e of[`minimum`,`maximum`,`midpoint`]){let i=r.rule[e];i?.type===`formula`&&i?.value&&this.history.update(`cfRules`,n,this.cfRules[n].indexOf(r),`rule`,e,`value`,t(n,i.value))}}adaptCFRanges(e,{applyChange:t}){for(let n of this.cfRules[e])for(let r of n.ranges){let i=t(r);switch(i.changeType){case`REMOVE`:let t=n.ranges.slice();t.splice(n.ranges.indexOf(r),1),t.length>=1?this.history.update(`cfRules`,e,this.cfRules[e].indexOf(n),`ranges`,t):this.removeConditionalFormatting(n.id,e);break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`cfRules`,e,this.cfRules[e].indexOf(n),`ranges`,n.ranges.indexOf(r),i.range);break}}}adaptRanges(e,t){let n=t?[t]:Object.keys(this.cfRules);for(let t of n)this.adaptCFRanges(t,e);this.adaptCFFormulas(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(let t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case`DELETE_SHEET`:let t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update(`cfRules`,t);break;case`ADD_CONDITIONAL_FORMAT`:let n={...e.cf,ranges:e.ranges.map(t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId))};this.addConditionalFormatting(n,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);break}}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){let n=new Set;return t.forEach(t=>{this.getRulesByZone(e,t).forEach(e=>{n.add(e)})}),Array.from(n)}getRulesByZone(e,t){let n=new Set;for(let r=t.top;r<=t.bottom;r++)for(let i=t.left;i<=t.right;i++)this.getRulesByCell(e,i,r).forEach(e=>{n.add(e.id)});return n}getRulesByCell(e,t,n){let r=[];for(let i of this.cfRules[e])for(let e of i.ranges)An(t,n,e.zone)&&r.push(i);return new Set(r.map(t=>this.mapToConditionalFormat(e,t)))}getAdaptedCfRanges(e,t,n,r){if(n.length===0&&r.length===0)return;let i=this.getters.getConditionalFormats(e),a=i.findIndex(e=>e.id===t.id),o=[];a>-1&&(o=i[a].ranges.map(pn));let s=nn(o,r);return nn([...n,...s],[]).map(t=>this.getters.getRangeDataFromZone(e,t))}mapToConditionalFormat(e,t,{useBoundedReference:n}={useBoundedReference:!1}){let r=t.ranges.map(t=>this.getters.getRangeString(t,e,{useBoundedReference:n}));return t.rule.type===`DataBarRule`?{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues&&this.getters.getRangeString(t.rule.rangeValues,e,{useBoundedReference:n})},ranges:r}:{...t,rule:{...t.rule},ranges:r}}mapToConditionalFormatInternal(e,t){let n=t.ranges.map(t=>this.getters.getRangeFromSheetXC(e,t));return t.rule.type===`DataBarRule`?{...t,rule:{...t.rule,rangeValues:t.rule.rangeValues?this.getters.getRangeFromSheetXC(e,t.rule.rangeValues):void 0},ranges:n}:{...t,rule:{...t.rule},ranges:n}}addConditionalFormatting(e,t){let n=this.cfRules[t].slice(),r=n.findIndex(t=>t.id===e.id),i=this.mapToConditionalFormatInternal(t,e);r>-1?n.splice(r,1,i):n.push(i),this.history.update(`cfRules`,t,n)}checkValidPriorityChange(e,t,n){if(!this.cfRules[n])return`InvalidSheetId`;let r=this.cfRules[n].findIndex(t=>t.id===e);if(r===-1)return`InvalidConditionalFormatId`;let i=r-t;return i<0||i>=this.cfRules[n].length?`InvalidConditionalFormatId`:`Success`}checkEmptyRange(e){return e.ranges.length?`Success`:`EmptyRange`}checkCFRule(e){let t=e.cf.rule;switch(t.type){case`CellIsRule`:return zm.has(t.operator)?this.checkValidations(t,this.checkOperatorArgsNumber,this.checkCFValues):`InvalidConditionalFormatType`;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)));case`DataBarRule`:return`Success`}return`InvalidConditionalFormatType`}checkCFHasChanged(e){let t=this.mapToConditionalFormatInternal(e.sheetId,{...e.cf,ranges:e.ranges.map(t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId))}),n=this.cfRules[e.sheetId]?.find(t=>t.id===e.cf.id);return n&&w(t,n)?`NoChanges`:`Success`}checkOperatorArgsNumber(e){let t=Z.get(e.operator).numberOfValues({type:e.operator,values:e.values});if(t===void 0||t>2)throw Error(`Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.`);let n=[],r=e=>e===void 0||e===``;return t>=1&&r(e.values[0])&&n.push(`FirstArgMissing`),t>=2&&r(e.values[1])&&n.push(`SecondArgMissing`),n.length?n:`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(e.type!==`formula`)return`Success`;if(yz.IsBadExpression(e.value||``))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){let t=e.lowerInflectionPoint.value,n=e.upperInflectionPoint.value;return[`number`,`percentage`,`percentile`].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(n)?`LowerBiggerThanUpper`:`Success`}checkMinBiggerThanMax(e){let t=e.minimum.value,n=e.maximum.value;return[`number`,`percentage`,`percentile`].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&XW(t)>=XW(n)?`MinBiggerThanMax`:`Success`}checkMidBiggerThanMax(e){let t=e.midpoint?.value,n=e.maximum.value;return e.midpoint&&[`number`,`percentage`,`percentile`].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&XW(t)>=XW(n)?`MidBiggerThanMax`:`Success`}checkMinBiggerThanMid(e){let t=e.minimum.value,n=e.midpoint?.value;return e.midpoint&&[`number`,`percentage`,`percentile`].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&XW(t)>=XW(n)?`MinBiggerThanMid`:`Success`}checkCFValues(e){for(let t of e.values)if(t.startsWith(`=`)&&yz.IsBadExpression(t))return`ValueCellIsInvalidFormula`;return`Success`}removeConditionalFormatting(e,t){let n=this.cfRules[t].findIndex(t=>t.id===e);if(n!==-1){let e=this.cfRules[t].slice();e.splice(n,1),this.history.update(`cfRules`,t,e)}}changeCFPriority(e,t,n){let r=this.cfRules[n].findIndex(t=>t.id===e),i=this.cfRules[n][r],a=r-t,o=[...this.cfRules[n]];o.splice(r,1),o.splice(a,0,i),this.history.update(`cfRules`,n,o)}},QW=class extends VW{static getters=[`cellHasListDataValidationIcon`,`getDataValidationRule`,`getDataValidationRules`,`getValidationRuleForCell`];rules={};adaptRanges(e,t){this.adaptDVRanges(t,e),this.adaptDVFormulas(e)}adaptDVFormulas({adaptFormulaString:e}){for(let t in this.rules){let n=this.rules[t];for(let r=n.length-1;r>=0;r--){let n=this.rules[t][r];for(let i=0;i<n.criterion.values.length;i++){let a=e(t,n.criterion.values[i]);this.history.update(`rules`,t,r,`criterion`,`values`,i,a)}}}}adaptDVRanges(e,{applyChange:t}){let n=this.rules[e];for(let r=n.length-1;r>=0;r--){let n=this.rules[e][r];for(let i=n.ranges.length-1;i>=0;i--){let a=n.ranges[i],o=t(a);switch(o.changeType){case`REMOVE`:if(n.ranges.length===1)this.removeDataValidationRule(e,n.id);else{let t=n.ranges.slice();t.splice(i,1),this.history.update(`rules`,e,r,`ranges`,t)}break;case`RESIZE`:case`MOVE`:case`CHANGE`:this.history.update(`rules`,e,r,`ranges`,i,o.range);break}}}}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));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`;break}return`Success`}handle(e){switch(e.type){case`CREATE_SHEET`:this.history.update(`rules`,e.sheetId,[]);break;case`DUPLICATE_SHEET`:{let t=b(this.rules[e.sheetId]).map(t=>({...t,ranges:t.ranges.map(t=>tl(e.sheetId,e.sheetIdTo,t))}));this.history.update(`rules`,e.sheetIdTo,t);break}case`DELETE_SHEET`:{let 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`:{let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e));this.addDataValidationRule(e.sheetId,{...e.rule,ranges:t});break}case`DELETE_CONTENT`:{let t=nn(e.target),n=e.sheetId;for(let e of t)for(let t=e.top;t<=e.bottom;t++)for(let r=e.left;r<=e.right;r++){let e=this.getValidationRuleForCell({sheetId:n,col:r,row:t});if(!e)continue;let i=this.getters.getCell({sheetId:n,col:r,row:t});if(e.criterion.type===`isBoolean`||e.criterion.type===`isValueInList`&&!i?.isFormula&&!i?.content){let e=this.rules[n],i=[this.getters.getRangeFromSheetXC(n,T(r,t))],a=this.removeRangesFromRules(n,i,e);this.history.update(`rules`,n,a)}}}}}getDataValidationRules(e){return this.rules[e]}getDataValidationRule(e,t){return this.rules[e].find(e=>e.id===t)}getValidationRuleForCell({sheetId:e,col:t,row:n}){if(this.rules[e]){for(let r of this.rules[e])for(let e of r.ranges)if(An(t,n,e.zone))return r}}cellHasListDataValidationIcon(e){let t=this.getValidationRuleForCell(e);return t?(t.criterion.type===`isValueInList`||t.criterion.type===`isValueInRange`)&&(t.criterion.displayStyle===`arrow`||t.criterion.displayStyle===`chip`):!1}addDataValidationRule(e,t){let n=this.rules[e];t.criterion.type===`isBoolean`?this.setCenterStyleToBooleanCells(t):t.criterion.type===`isValueInList`&&(t.criterion.values=Array.from(new Set(t.criterion.values)));let r=this.removeRangesFromRules(e,t.ranges,n,t.id),i=r.findIndex(e=>e.id===t.id);i===-1?this.history.update(`rules`,e,[...r,t]):(r[i]=t,this.history.update(`rules`,e,r))}removeRangesFromRules(e,t,n,r){n=b(n);for(let e of n)e.id!==r&&(e.ranges=this.getters.recomputeRanges(e.ranges,t));return n.filter(e=>e.ranges.length>0)}removeDataValidationRule(e,t){let n=this.rules[e].filter(e=>e.id!==t);this.history.update(`rules`,e,n)}setCenterStyleToBooleanCells(e){for(let t of rl(e.ranges)){let e=this.getters.getCell(t),n={...e?.style,align:e?.style?.align??`center`,verticalAlign:e?.style?.verticalAlign??`middle`};this.dispatch(`UPDATE_CELL`,{...t,style:n})}}checkEmptyRange(e){return e.ranges.length?`Success`:`EmptyRange`}import(e){for(let t of e.sheets)if(this.rules[t.id]=[],t.dataValidationRules)for(let 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(let t of e.sheets){t.dataValidationRules=[];for(let 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(let t of e.sheets){t.dataValidationRules=[];for(let e of this.rules[t.id]){let n={...b(e),ranges:e.ranges.map(e=>this.getters.getRangeString(e,t.id,{useBoundedReference:!0}))};e.criterion.type===`isValueInRange`&&(n.criterion.values=e.criterion.values.map(e=>{let n=this.getters.getRangeFromSheetXC(t.id,e);return this.getters.getRangeString(n,t.id,{useBoundedReference:!0,useFixedReference:!0})})),t.dataValidationRules.push(n)}}}checkCriterionTypeIsValid(e){return Z.contains(e.rule.criterion.type)?`Success`:`UnknownDataValidationCriterionType`}checkCriterionHasValidNumberOfValues(e){let t=e.rule.criterion,n=Z.get(t.type).numberOfValues(t);return n!==void 0&&t.values.length!==n?`InvalidNumberOfCriterionValues`:`Success`}checkCriterionValuesAreValid(e){let t=e.rule.criterion,n=Z.get(t.type);return t.values.some(e=>n.allowedValues===`onlyFormulas`&&!e.startsWith(`=`)?!0:e.startsWith(`=`)?n.allowedValues===`onlyLiterals`||yz.IsBadExpression(e):!n.isCriterionValueValid(e))?`InvalidDataValidationCriterionValue`:`Success`}checkValidRange(e){return e.ranges.map(e=>this.getters.getRangeFromRangeData(e)).map(t=>this.getters.getRangeString(t,e.sheetId)).some(e=>!this.getters.isRangeValid(e))?`InvalidRange`:`Success`}},$W=class extends VW{static getters=[`getFigures`,`getFigure`,`getFigureSheetId`];figures={};insertionOrders=[];adaptRanges({applyChange:e},t){for(let n of this.getFigures(t)){let r=e(this.getters.getRangeFromZone(t,{left:n.col,right:n.col,top:n.row,bottom:n.row}));if(r.changeType===`MOVE`)this.history.update(`figures`,t,n.id,`col`,r.range.zone.right),this.history.update(`figures`,t,n.id,`row`,r.range.zone.bottom);else if(r.changeType===`REMOVE`){let r=e(this.getters.getRangeFromZone(t,{left:0,right:n.col-1,top:0,bottom:n.row-1})),{offset:i,col:a,row:o}=n;r.changeType!==`NONE`&&(a=r.range.zone.right+1,o=r.range.zone.bottom+1),{offset:i,col:a,row:o}=this.getPositionInSheet(t,{...n,col:a,row:o}),this.history.update(`figures`,t,n.id,`offset`,i),this.history.update(`figures`,t,n.id,`col`,a),this.history.update(`figures`,t,n.id,`row`,o)}}}allowDispatch(e){switch(e.type){case`CREATE_FIGURE`:return this.checkValidations(e,this.checkFigureDuplicate,this.checkFigureAnchorOffset);case`UPDATE_FIGURE`:return this.checkValidations(e,this.checkFigureExists,this.checkFigureAnchorOffset);case`DELETE_FIGURE`:return this.checkFigureExists(e);default:return`Success`}}beforeHandle(e){switch(e.type){case`DELETE_SHEET`:this.getters.getFigures(e.sheetId).forEach(t=>{this.dispatch(`DELETE_FIGURE`,{figureId:t.id,sheetId:e.sheetId})});break}}handle(e){switch(e.type){case`CREATE_SHEET`:this.figures[e.sheetId]={};break;case`DELETE_SHEET`:this.deleteSheet(e.sheetId);break;case`CREATE_FIGURE`:let t={id:e.figureId,col:e.col,row:e.row,offset:e.offset,width:e.size.width,height:e.size.height,tag:e.tag};this.addFigure(t,e.sheetId);break;case`UPDATE_FIGURE`:this.updateFigure(e);break;case`DELETE_FIGURE`:this.removeFigure(e.figureId,e.sheetId);break;case`REMOVE_COLUMNS_ROWS`:e.dimension===`COL`?this.onColRemove(e.sheetId):this.onRowRemove(e.sheetId);break;case`DUPLICATE_SHEET`:for(let t of this.getFigures(e.sheetId)){let n=t.id,r=this.figures[e.sheetId]?.[n];if(!r)continue;let i=n.split(`??`).pop(),a=`${e.sheetIdTo}??${i}`;this.dispatch(`CREATE_FIGURE`,{figureId:a,...r,size:{width:r.width,height:r.height},sheetId:e.sheetIdTo})}break}}onColRemove(e){let t=this.getters.getNumberCols(e),n=Array(t+1);n[t]=0;for(let r=t-1;r>=0;r--)n[r]=n[r+1]+this.getters.getColSize(e,r);for(let t of this.getFigures(e))if(t.offset.x+t.width>n[t.col]){let r=t.offset.x,i=t.col;for(r=Math.min(r,n[i]-t.width);r<0&&i>0;)i--,r=n[i]-t.width;r!==t.offset.x&&this.history.update(`figures`,e,t.id,`offset`,{x:Math.max(r,0),y:t.offset.y}),i!==t.col&&this.history.update(`figures`,e,t.id,`col`,i)}}onRowRemove(e){let t=this.getters.getNumberRows(e),n=Array(t+1);n[t]=0;for(let r=t-1;r>=0;r--)n[r]=n[r+1]+(this.getters.getUserRowSize(e,r)??23);for(let t of this.getFigures(e))if(t.offset.y+t.height>n[t.row]){let r=t.offset.y,i=t.row;for(let t=this.getters.getUserRowSize(e,i)??23;t<r;t=this.getters.getUserRowSize(e,i)??23)i+=1,r-=t;for(r=Math.min(r,n[i]-t.height);r<0&&i>0;)i--,r=n[i]-t.height;r!==t.offset.y&&this.history.update(`figures`,e,t.id,`offset`,{x:t.offset.x,y:Math.max(0,r)}),i!==t.row&&this.history.update(`figures`,e,t.id,`row`,i)}else t.offset.y+t.height>n[0]&&this.history.update(`figures`,e,t.id,`offset`,{x:t.offset.x,y:Math.max(n[0]-t.height,0)})}getPositionInSheet(e,t){let{numberOfRows:n,numberOfCols:r}=this.getters.getSheetSize(e),i=0,a=0,o,s,{col:c,row:l}=t,u={...t.offset};for(o=n;i<t.height&&o>0;o--)i+=this.getters.getUserRowSize(e,o-1)??23;for(l>o?(l=o,u.y=Math.max(i-t.height,0)):l===o&&(u.y=x(u.y,0,Math.max(i-t.height,0))),s=r;a<t.width&&s>0;s--)a+=this.getters.getColSize(e,s-1);return c>s?(c=s,u.x=Math.max(a-t.width,0)):s===c&&(u.x=x(u.x,0,Math.max(a-t.width,0))),{col:c,row:l,offset:u}}updateFigure(e){if(!(`figureId`in e)||!(`sheetId`in e))return;let{figureId:t,sheetId:n,...r}=e,i={...this.getFigure(n,t),...r};for(let[e,t]of Object.entries(r))switch(e){case`tag`:this.history.update(`figures`,n,i.id,e,t);break;case`offset`:this.history.update(`figures`,n,i.id,e,t);break;case`col`:case`row`:case`width`:case`height`:t!==void 0&&this.history.update(`figures`,n,i.id,e,t);break}}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){return this.figures[e.sheetId]?.[e.figureId]===void 0?`FigureDoesNotExist`:`Success`}checkFigureDuplicate(e){return Object.values(this.figures).find(t=>t?.[e.figureId])?`DuplicatedFigureId`:`Success`}checkFigureAnchorOffset(e){return e.col<0||e.row<0||e.offset&&(e.offset.x<0||e.offset.y<0)?`WrongSheetPosition`:`Success`}getFigures(e){let t=[];for(let n of this.insertionOrders){let r=this.figures[e]?.[n];r&&t.push(r)}return t}getFigure(e,t){return this.figures[e]?.[t]}getFigureSheetId(e){return Object.keys(this.figures).find(t=>this.figures[t]?.[e]!==void 0)}import(e){for(let t of e.sheets)for(let e of t.figures)this.addFigure(e,t.id)}export(e){for(let t of e.sheets)for(let e of this.getFigures(t.id))t.figures.push({...e,data:void 0})}exportForExcel(e){return this.export(e)}},eG=class extends VW{static getters=[`getHeaderGroups`,`getGroupsLayers`,`getVisibleGroupLayers`,`getHeaderGroup`,`getHeaderGroupsInZone`,`isGroupFolded`,`isRowFolded`,`isColFolded`];groups={};allowDispatch(e){switch(e.type){case`GROUP_HEADERS`:{let{start:t,end:n,sheetId:r}=e;if(!this.getters.tryGetSheet(r))return`InvalidSheetId`;if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,n])||t>n)return`InvalidHeaderGroupStartEnd`;if(this.findGroupWithStartEnd(e.sheetId,e.dimension,t,n))return`HeaderGroupAlreadyExists`;break}case`UNGROUP_HEADERS`:{let{start:t,end:n,sheetId:r}=e;if(!this.getters.tryGetSheet(r))return`InvalidSheetId`;if(!this.getters.doesHeadersExist(e.sheetId,e.dimension,[t,n])||t>n)return`InvalidHeaderGroupStartEnd`;break}case`UNFOLD_HEADER_GROUP`:case`FOLD_HEADER_GROUP`:if(!this.getters.tryGetSheet(e.sheetId))return`InvalidSheetId`;let t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);if(!t)return`UnknownHeaderGroup`;if(S(0,this.getters.getNumberHeaders(e.sheetId,e.dimension)).every(n=>n>=t.start&&n<=t.end||this.getters.isHeaderHiddenByUser(e.sheetId,e.dimension,n)))return`NotEnoughElements`;break}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`:{let t=b(this.groups[e.sheetId]);this.history.update(`groups`,e.sheetIdTo,t);break}case`DELETE_SHEET`:{let t={...this.groups};delete t[e.sheetId],this.history.update(`groups`,t);break}case`ADD_COLUMNS_ROWS`:let t=yt(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`:{let t=this.findGroupWithStartEnd(e.sheetId,e.dimension,e.start,e.end);t&&this.unfoldHeaderGroup(e.sheetId,e.dimension,t);break}case`FOLD_HEADER_GROUP`:{let 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`:{let t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(let n of t)this.unfoldHeaderGroup(e.sheetId,e.dimension,n);break}case`FOLD_ALL_HEADER_GROUPS`:{let t=this.getters.getHeaderGroups(e.sheetId,e.dimension);for(let n of t)this.foldHeaderGroup(e.sheetId,e.dimension,n);break}case`FOLD_HEADER_GROUPS_IN_ZONE`:case`UNFOLD_HEADER_GROUPS_IN_ZONE`:{let t=e.type===`UNFOLD_HEADER_GROUPS_IN_ZONE`?`unfold`:`fold`,n=this.getGroupsLayers(e.sheetId,e.dimension);t===`fold`&&n.reverse();let r=n.flat(),i=e.dimension===`ROW`?e.zone.top:e.zone.left,a=e.dimension===`ROW`?e.zone.bottom:e.zone.right,o=new Set;for(let e=i;e<=a;e++){let n=r.filter(t=>t.start-1<=e&&e<=t.end);for(let e of n)if(!(t===`fold`&&e.isFolded||t===`unfold`&&!e.isFolded)){o.add(e);break}}for(let n of o)t===`unfold`?this.unfoldHeaderGroup(e.sheetId,e.dimension,n):this.foldHeaderGroup(e.sheetId,e.dimension,n);break}}}getHeaderGroups(e,t){return this.groups[e][t]}getHeaderGroup(e,t,n,r){return this.getHeaderGroups(e,t).find(e=>e.start===n&&e.end===r)}getHeaderGroupsInZone(e,t,n){return this.getHeaderGroups(e,t).filter(e=>{let r=t===`ROW`?n.top:n.left,i=t===`ROW`?n.bottom:n.right;return this.doGroupOverlap(e,r,i)})}getGroupsLayers(e,t){let n=this.getHeaderGroups(e,t);return this.bricksFallingAlgorithm(n,0,0)}getVisibleGroupLayers(e,t){let n=this.getGroupsLayers(e,t);for(let r of n)for(let n=r.length-1;n>=0;n--){let i=r[n];i.start!==0&&S(i.start-1,i.end+1).every(n=>this.getters.isHeaderHiddenByUser(e,t,n))&&r.splice(n,1)}return n.filter(e=>e.length>0)}isGroupFolded(e,t,n,r){return this.getHeaderGroup(e,t,n,r)?.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,n,r=0){let i={};for(let t of e)i[this.getGroupId(t)]=t.isFolded;let a={};for(let t of e)for(let e=t.start;e<=t.end;e++)a[e]=a[e]?a[e]+1:1;for(let e=t;e<=n;e++)a[e]=a[e]?a[e]+r:r;let o=Math.max(...Object.values(a),0),s=Array.from({length:o},()=>[]),c=Math.max(n,...e.map(e=>e.end)),l=Math.min(t,...e.map(e=>e.start));for(let e=l;e<=c;e++){let t=a[e]||0;for(let n=0;n<t;n++){let t=s[n].at(-1);if(t&&kt([t.end,e]))t.end++;else{let t={start:e,end:e};s[n].push(t)}}}for(let e of s)for(let t of e)t.isFolded=i[this.getGroupId(t)];return s}groupHeaders(e,t,n,r){let i=this.getHeaderGroups(e,t),a=this.bricksFallingAlgorithm(i,n,r,1).flat();this.history.update(`groups`,e,t,this.removeDuplicateGroups(a))}unGroupHeaders(e,t,n,r){let i=this.getHeaderGroups(e,t),a=this.bricksFallingAlgorithm(i,n,r,-1).flat();this.history.update(`groups`,e,t,this.removeDuplicateGroups(a))}moveGroupsOnHeaderInsertion(e,t,n,r){let i=this.groups[e][t];for(let a=0;a<i.length;a++){let o=i[a],[s,c]=yl(n,r,[o.start,o.end]);(s!==o.start||c!==o.end)&&this.history.update(`groups`,e,t,a,{...o,start:s,end:c})}}moveGroupsOnHeaderDeletion(e,t,n){let r=this.getHeaderGroups(e,t),i=[];for(let e of r){let t=bl(n,S(e.start,e.end+1));t.length!==0&&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,n){return e.start<=n&&e.end>=t}removeDuplicateGroups(e){let t={};for(let n of e)t[this.getGroupId(n)]=n;return Object.values(t)}findGroupWithStartEnd(e,t,n,r){return this.getHeaderGroups(e,t).find(e=>e.start===n&&e.end===r)}foldHeaderGroup(e,t,n){let r=this.getGroupIndex(e,t,n.start,n.end);if(r===void 0)return;this.history.update(`groups`,e,t,r,`isFolded`,!0);let i=this.getters.getHeaderGroups(e,t);for(let r=0;r<i.length;r++){let a=i[r];a.start===n.start&&a.end<=n.end&&this.history.update(`groups`,e,t,r,`isFolded`,!0)}}unfoldHeaderGroup(e,t,n){let r=this.getGroupIndex(e,t,n.start,n.end);if(r===void 0)return;this.history.update(`groups`,e,t,r,`isFolded`,!1);let i=this.getters.getHeaderGroups(e,t);for(let r=0;r<i.length;r++){let a=i[r];a.start===n.start&&a.end>=n.end&&this.history.update(`groups`,e,t,r,`isFolded`,!1)}}getGroupIndex(e,t,n,r){let i=this.groups[e][t].findIndex(e=>e.start===n&&e.end===r);return i===-1?void 0:i}import(e){for(let t of e.sheets)if(this.groups[t.id]={ROW:[],COL:[]},t.headerGroups)for(let e of[`ROW`,`COL`])for(let n of t.headerGroups[e]||[])this.groups[t.id][e].push({...n})}export(e){for(let t of e.sheets)t.headerGroups=this.groups[t.id]}exportForExcel(e){for(let t of e.sheets)for(let e of[`ROW`,`COL`]){let n=this.getGroupsLayers(t.id,e);for(let r=0;r<n.length;r++){let i=n[r];for(let n of i){for(let i=n.start;i<=n.end;i++){let a=BO(t,e,i);a.outlineLevel=r+1,n.isFolded&&(a.isHidden=!0)}if(n.isFolded){let r=BO(t,e,n.end+1);r.collapsed=!0}}}}}},tG=class extends VW{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,b(this.sizes[e.sheetId]));break;case`DELETE_SHEET`:let t={...this.sizes};delete t[e.sheetId],this.history.update(`sizes`,t);break;case`REMOVE_COLUMNS_ROWS`:{let t=this.sizes[e.sheetId][e.dimension],n=jt(t,e.elements);this.history.update(`sizes`,e.sheetId,e.dimension,n);break}case`ADD_COLUMNS_ROWS`:{let t=this.sizes[e.sheetId][e.dimension],n=yt(e.position,e.base),r=t[e.base],i=Mt(t,Array(e.quantity).fill(r),n);this.history.update(`sizes`,e.sheetId,e.dimension,i);break}case`RESIZE_COLUMNS_ROWS`:if(e.dimension===`ROW`)for(let t of e.elements)this.history.update(`sizes`,e.sheetId,e.dimension,t,e.size||void 0);else for(let t of e.elements)this.history.update(`sizes`,e.sheetId,e.dimension,t,e.size||void 0);break}}getColSize(e,t){return Math.round(this.sizes[e]?.COL[t]||96)}getUserRowSize(e,t){let n=this.sizes[e]?.ROW[t];return n?Math.round(n):void 0}import(e){for(let t of e.sheets){let e={COL:Array(t.colNumber).fill(void 0),ROW:Array(t.rowNumber).fill(void 0)};for(let[n,r]of Object.entries(t.rows))r.size&&(e.ROW[n]=r.size);for(let[n,r]of Object.entries(t.cols))r.size&&(e.COL[n]=r.size);this.sizes[t.id]=e}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let n of e.sheets){n.rows===void 0&&(n.rows={});for(let e of S(0,this.getters.getNumberRows(n.id)))(t||this.sizes[n.id].ROW[e])&&(n.rows[e]={...n.rows[e],size:this.getUserRowSize(n.id,e)??23});n.cols===void 0&&(n.cols={});for(let e of S(0,this.getters.getNumberCols(n.id)))(t||this.sizes[n.id].COL[e])&&(n.cols[e]={...n.cols[e],size:this.getColSize(n.id,e)})}}},nG=class extends VW{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`;let t=e.dimension===`COL`?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),n=e.dimension===`COL`?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return new Set((t||[]).flat().concat(e.elements)).size>=n?`TooManyHiddenElements`:Rt(e.elements)<0||Lt(e.elements)>n?`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`:let 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,b(this.hiddenHeaders[e.sheetId]));break;case`DELETE_SHEET`:this.history.update(`hiddenHeaders`,e.sheetId,void 0);break;case`REMOVE_COLUMNS_ROWS`:{let t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let n of[...e.elements].sort((e,t)=>t-e))t.splice(n,1);this.history.update(`hiddenHeaders`,e.sheetId,e.dimension,t);break}case`ADD_COLUMNS_ROWS`:{let t=yt(e.position,e.base),n=Mt([...this.hiddenHeaders[e.sheetId][e.dimension]],Array(e.quantity).fill(!1),t);this.history.update(`hiddenHeaders`,e.sheetId,e.dimension,n);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);break}}checkElementsIncludeAllVisibleHeaders(e,t,n){return St(n,this.getAllVisibleHeaders(e,t))}isHeaderHiddenByUser(e,t,n){return t===`COL`?this.isColHiddenByUser(e,n):this.isRowHiddenByUser(e,n)}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){let t=[[]],n=this.hiddenHeaders[e].COL;for(let e=0;e<n.length;e++)n[e]?t[t.length-1].push(e):t[t.length-1].length!==0&&t.push([]);return t[t.length-1].length===0&&t.pop(),t}getHiddenRowsGroups(e){let t=[[]],n=this.hiddenHeaders[e].ROW;for(let e=0;e<n.length;e++)n[e]?t[t.length-1].push(e):t[t.length-1].length!==0&&t.push([]);return t[t.length-1].length===0&&t.pop(),t}getAllVisibleHeaders(e,t){let n=S(0,this.getters.getNumberHeaders(e,t)),r=[];return this.getters.getHeaderGroups(e,t).forEach(e=>{e.isFolded&&r.push(...S(e.start,e.end+1))}),n.filter(n=>!this.hiddenHeaders[e][t][n]&&!r.includes(n))}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]=!!t.rows[e]?.isHidden;for(let e=0;e<t.colNumber;e++)this.hiddenHeaders[t.id].COL[e]=!!t.cols[e]?.isHidden}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let n of e.sheets){n.rows===void 0&&(n.rows={});for(let e=0;e<this.getters.getNumberRows(n.id);e++)(t||this.hiddenHeaders[n.id].ROW[e])&&(n.rows[e]===void 0&&(n.rows[e]={}),n.rows[e].isHidden||=this.hiddenHeaders[n.id].ROW[e]);n.cols===void 0&&(n.cols={});for(let e=0;e<this.getters.getNumberCols(n.id);e++)(t||this.hiddenHeaders[n.id].COL[e])&&(n.cols[e]===void 0&&(n.cols[e]={}),n.cols[e].isHidden||=this.hiddenHeaders[n.id].COL[e])}}},rG=class extends VW{static getters=[`getImage`,`getImagePath`,`getImageSize`];fileStore;images={};syncedImages=new Set;constructor(e){super(e),this.fileStore=e.external.fileStore}allowDispatch(e){switch(e.type){case`CREATE_IMAGE`:return this.getters.getFigure(e.sheetId,e.figureId)?`InvalidFigureId`:`Success`;default:return`Success`}}handle(e){switch(e.type){case`CREATE_IMAGE`:this.getters.getFigure(e.sheetId,e.figureId)||this.addFigure(e.figureId,e.sheetId,e.col,e.row,e.offset,e.size),this.history.update(`images`,e.sheetId,e.figureId,e.definition),this.syncedImages.add(e.definition.path);break;case`DUPLICATE_SHEET`:{let t=this.getters.getFigures(e.sheetId);for(let n of t)if(n.tag===`image`){let t=n.id.split(`??`).pop(),r=`${e.sheetIdTo}??${t}`,i=this.getImage(n.id);if(i){let t={width:n.width,height:n.height};this.dispatch(`CREATE_IMAGE`,{sheetId:e.sheetIdTo,figureId:r,offset:n.offset,col:n.col,row:n.row,size:t,definition:b(i)})}}break}case`DELETE_FIGURE`:this.history.update(`images`,e.sheetId,e.figureId,void 0);break;case`DELETE_SHEET`:this.history.update(`images`,e.sheetId,void 0);break}}getImage(e){for(let t of Object.values(this.images))if(t&&t[e])return t[e];throw Error(`There is no image with the given figureId: ${e}`)}getImagePath(e){return this.getImage(e).path}getImageSize(e){return this.getImage(e).size}addFigure(e,t,n,r,i,a){this.dispatch(`CREATE_FIGURE`,{sheetId:t,figureId:e,col:n,row:r,offset:i,size:a,tag:`image`})}import(e){for(let t of e.sheets){let e=(t.figures||[]).filter(e=>e.tag===`image`);for(let n of e)this.history.update(`images`,t.id,n.id,n.data),this.syncedImages.add(n.data.path)}}export(e){for(let t of e.sheets){let e=t.figures.filter(e=>e.tag===`image`);for(let n of e)n.data=this.images[t.id]?.[n.id]}}exportForExcel(e){for(let t of e.sheets){t.images||=[];let e=this.getters.getFigures(t.id),n=[];for(let t of e)if(t?.tag===`image`){let e=this.getImage(t.id);e&&n.push({...t,data:b(e)})}t.images=[...t.images,...n]}}},iG=class extends VW{static getters=[`isInMerge`,`isInSameMerge`,`isMergeHidden`,`getMainCellPosition`,`expandZone`,`doesIntersectMerge`,`doesColumnsHaveCommonMerges`,`doesRowsHaveCommonMerges`,`getMerges`,`getMerge`,`getMergesInZone`,`isSingleCellOrMerge`,`isMainCellPosition`];nextId=1;merges={};mergeCellMap={};allowDispatch(e){let t=`force`in e?!!e.force:!1;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`:this.history.update(`merges`,e.sheetId,{}),this.history.update(`mergeCellMap`,e.sheetId,{});break;case`DELETE_SHEET`:this.history.update(`merges`,e.sheetId,{}),this.history.update(`mergeCellMap`,e.sheetId,{});break;case`DUPLICATE_SHEET`:let t=this.merges[e.sheetId];if(!t)break;for(let n of Object.values(t).filter(C))this.addMerge(e.sheetIdTo,n.zone);break;case`ADD_MERGE`:for(let t of e.target)this.addMerge(e.sheetId,t);break;case`REMOVE_MERGE`:for(let t of e.target)this.removeMerge(e.sheetId,t);break}}adaptRanges(e,t){this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map(t=>this.getMergeById(e,parseInt(t,10))).filter(C)}getMerge({sheetId:e,col:t,row:n}){let r=this.mergeCellMap[e],i=r?t in r&&r[t]?.[n]:void 0;return i?this.getMergeById(e,i):void 0}getMergesInZone(e,t){let n=this.mergeCellMap[e];if(!n)return[];let r=new Set;for(let e=t.left;e<=t.right;e++)for(let i=t.top;i<=t.bottom;i++){let t=n[e]?.[i];t&&r.add(t)}return Array.from(r).map(t=>this.getMergeById(e,t)).filter(C)}doesIntersectMerge(e,t){for(let n of this.getMerges(e))if(On(t,n))return!0;return!1}doesColumnsHaveCommonMerges(e,t,n){let r=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(r.id,t,i,n,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,n){let r=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(r.id,i,t,i,n))return!0;return!1}expandZone(e,t){let{left:n,right:r,top:i,bottom:a}=t,o={left:n,right:r,top:i,bottom:a};for(let t in this.merges[e]){let n=this.getMergeById(e,parseInt(t));n&&On(n,o)&&(o=wn(n,o))}return Dn(o,t)?o:this.expandZone(e,o)}isInSameMerge(e,t,n,r,i){let a=this.getMerge({sheetId:e,col:t,row:n}),o=this.getMerge({sheetId:e,col:r,row:i});return!a||!o?!1:Dn(a,o)}isInMerge({sheetId:e,col:t,row:n}){let r=this.mergeCellMap[e];return r?t in r&&!!r[t]?.[n]:!1}getMainCellPosition(e){let t=this.getMerge(e);return t?{sheetId:e.sheetId,col:t.left,row:t.top}:e}isMergeHidden(e,t){let n=this.getters.getHiddenColsGroups(e),r=this.getters.getHiddenRowsGroups(e);for(let e of n)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of r)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){let n=this.getMerge({sheetId:e,col:t.left,row:t.top});if(n)return Dn(t,n);let{numberOfCols:r,numberOfRows:i}=Mn(t);return r===1&&i===1}isMainCellPosition(e){return w(this.getMainCellPosition(e),e)}isMergeDestructive(e,t){let{left:n,right:r,top:i,bottom:a}=t;r=x(r,0,this.getters.getNumberCols(e)-1),a=x(a,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=a;t++)for(let a=n;a<=r;a++)if(a!==n||t!==i){let n=this.getters.getCell({sheetId:e,col:a,row:t});if(n&&(n.isFormula||n.content!==``))return!0}return!1}getMergeById(e,t){let n=this.merges[e]?.[t];return n===void 0?void 0:oG(t,n)}checkDestructiveMerge({sheetId:e,target:t}){return this.getters.tryGetSheet(e)&&t.some(t=>this.isMergeDestructive(e,t))?`MergeIsDestructive`:`Success`}checkOverlap({target:e}){for(let t of e)for(let n of e)if(t!==n&&On(t,n))return`MergeOverlap`;return`Success`}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return`Success`;let{xSplit:n,ySplit:r}=this.getters.getPaneDivisions(e);return qn(t,n,r)?`FrozenPaneOverlap`:`Success`}checkMergedContentUpdate(e){let{col:t,row:n,content:r}=e;if(r===void 0)return`Success`;let{col:i,row:a}=this.getMainCellPosition(e);return i===t&&a===n?`Success`:`CellIsMerged`}checkMergeExists(e){let{sheetId:t,target:n}=e;for(let e of n){let{left:n,top:r}=e,i=this.getMerge({sheetId:t,col:n,row:r});if(i===void 0||!Dn(e,i))return`InvalidTarget`}return`Success`}addMerge(e,t){let{left:n,right:r,top:i,bottom:a}=t;if(r=x(r,0,this.getters.getNumberCols(e)-1),a=x(a,0,this.getters.getNumberRows(e)-1),T(n,i)===T(r,a))return;let o=this.getters.getCell({sheetId:e,col:n,row:i}),s=this.nextId++;this.history.update(`merges`,e,s,this.getters.getRangeFromSheetXC(e,yn({left:n,top:i,right:r,bottom:a})));let c=new Set;for(let t=i;t<=a;t++)for(let a=n;a<=r;a++){(a!==n||t!==i)&&this.dispatch(`UPDATE_CELL`,{sheetId:e,col:a,row:t,style:o?o.style:null,content:``});let r=this.getMerge({sheetId:e,col:a,row:t});r&&c.add(r.id),this.history.update(`mergeCellMap`,e,a,t,s)}for(let t of c){let{top:n,bottom:r,left:i,right:a}=this.getMergeById(e,t);for(let t=n;t<=r;t++)for(let n=i;n<=a;n++){let r={sheetId:e,col:n,row:t},i=this.getMerge(r);(!i||i.id!==s)&&(this.history.update(`mergeCellMap`,e,n,t,void 0),this.dispatch(`CLEAR_CELL`,r))}this.history.update(`merges`,e,t,void 0)}}removeMerge(e,t){let{left:n,top:r,bottom:i,right:a}=t,o=this.getMerge({sheetId:e,col:n,row:r});if(!(o===void 0||!Dn(t,o))){this.history.update(`merges`,e,o.id,void 0);for(let t=r;t<=i;t++)for(let r=n;r<=a;r++)this.history.update(`mergeCellMap`,e,r,t,void 0)}}applyRangeChangeOnSheet(e,{applyChange:t}){let n=Object.entries(this.merges[e]||{});for(let[r,i]of n)if(i){let n=i.zone,a=t(i);switch(a.changeType){case`NONE`:break;case`REMOVE`:this.removeMerge(e,n);break;default:let{numberOfCols:t,numberOfRows:i}=Mn(a.range.zone);t===1&&i===1?this.removeMerge(e,n):this.history.update(`merges`,e,parseInt(r,10),a.range);break}}this.history.update(`mergeCellMap`,e,{});for(let t of this.getMerges(e))for(let{col:n,row:r}of Fn(t))this.history.update(`mergeCellMap`,e,n,r,t.id)}import(e){let 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 n of t)this.addMerge(e,mn(n))}export(e){for(let t of e.sheets){let e=this.merges[t.id];e&&t.merges.push(...aG(e))}}exportForExcel(e){this.export(e)}};function aG(e){return Object.entries(e).map(([e,t])=>t?oG(parseInt(e,10),t):void 0).filter(C).map(e=>T(e.left,e.top)+`:`+T(e.right,e.bottom))}function oG(e,t){return{...t.zone,id:e}}var sG=class extends VW{static getters=[`getPivotCoreDefinition`,`getPivotDisplayName`,`getPivotId`,`getPivotFormulaId`,`getPivotIds`,`getMeasureCompiledFormula`,`getPivotName`,`isExistingPivot`,`getMeasureFullDependencies`];nextFormulaId=1;pivots={};formulaIds={};compiledMeasureFormulas={};allowDispatch(e){switch(e.type){case`ADD_PIVOT`:return e.pivotId in this.pivots?`PivotIdTaken`:this.checkValidations(e.pivot,this.checkDuplicatedMeasureIds,this.checkSortedColumnInMeasures,this.checkCustomFieldsAreValid);case`UPDATE_PIVOT`:return e.pivotId in this.pivots?w(e.pivot,this.pivots[e.pivotId]?.definition)?`NoChanges`:e.pivot.name===``?`EmptyName`:this.checkValidations(e.pivot,this.checkDuplicatedMeasureIds,this.checkSortedColumnInMeasures,this.checkCustomFieldsAreValid):`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`:if(!(e.pivotId in this.pivots))return`PivotIdNotFound`;break;case`DUPLICATE_PIVOT`:if(!(e.pivotId in this.pivots))return`PivotIdNotFound`}return`Success`}handle(e){switch(e.type){case`ADD_PIVOT`:{let{pivotId:t,pivot:n}=e;this.addPivot(t,n);break}case`INSERT_PIVOT`:{let{sheetId:t,col:n,row:r,pivotId:i,table:a}=e,o={sheetId:t,col:n,row:r},{cols:s,rows:c,measures:l,fieldsType:u}=a,d=new Qz(s,c,l,u||{}),f=this.getPivotFormulaId(i);this.insertPivot(o,f,d);break}case`RENAME_PIVOT`:this.history.update(`pivots`,e.pivotId,`definition`,`name`,e.name);break;case`REMOVE_PIVOT`:{let t={...this.pivots};delete t[e.pivotId];let n=this.getPivotFormulaId(e.pivotId);this.history.update(`formulaIds`,n,void 0),this.history.update(`pivots`,t);break}case`DUPLICATE_PIVOT`:{let{pivotId:t,newPivotId:n}=e,r=b(this.getPivotCore(t).definition);r.name=e.duplicatedPivotName??r.name+` (copy)`,this.addPivot(n,r);break}case`UPDATE_PIVOT`:this.history.update(`pivots`,e.pivotId,`definition`,b(e.pivot)),this.compileCalculatedMeasures(e.pivotId,e.pivot.measures);break}}adaptRanges({applyChange:e,adaptFormulaString:t}){for(let t in this.pivots){let n=b(this.pivots[t]?.definition);if(!n)continue;let r=uB.get(n.type)?.adaptRanges?.(this.getters,n,e);r&&!w(n,r)&&this.history.update(`pivots`,t,`definition`,r)}for(let n in this.compiledMeasureFormulas)for(let r in this.compiledMeasureFormulas[n]){let i=this.pivots[n]?.definition.measures.find(e=>e.id===r);if(!i||!i.computedBy)continue;let a=i.computedBy.sheetId,{formula:o,dependencies:s}=this.compiledMeasureFormulas[n][r];for(let t=0;t<o.rangeDependencies.length;t++){let i=o.rangeDependencies[t],a=e(i);a.changeType!==`NONE`&&this.history.update(`compiledMeasureFormulas`,n,r,`formula`,`rangeDependencies`,t,a.range)}this.history.update(`compiledMeasureFormulas`,n,i.id,`dependencies`,s.map(t=>e(t).range));let c=i.computedBy.formula,l=t(a,c);l!==c&&this.replaceMeasureFormula(n,i,l)}}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,t){if(!t.computedBy)throw Error(`Measure ${t.fieldName} is not computed by formula`);return this.compiledMeasureFormulas[e][t.id].formula}getMeasureFullDependencies(e,t){if(!t.computedBy)throw Error(`Measure ${t.fieldName} is not computed by formula`);return this.compiledMeasureFormulas[e][t.id].dependencies}addPivot(e,t,n=this.nextFormulaId.toString()){this.history.update(`pivots`,e,{definition:b(t),formulaId:n}),this.compileCalculatedMeasures(e,t.measures),this.history.update(`formulaIds`,n,e),this.history.update(`nextFormulaId`,this.nextFormulaId+1)}compileCalculatedMeasures(e,t){for(let n of t)if(n.computedBy){let t=yz.Compile(n.computedBy.formula,n.computedBy.sheetId,this.getters);this.history.update(`compiledMeasureFormulas`,e,n.id,`formula`,t)}for(let n of t)if(n.computedBy){let t=this.computeMeasureFullDependencies(e,n);this.history.update(`compiledMeasureFormulas`,e,n.id,`dependencies`,t)}}computeMeasureFullDependencies(e,t,n=new Set){let r=[],i=this.getPivotCoreDefinition(e),a=this.getMeasureCompiledFormula(e,t);n.add(t.id);for(let o of a.symbols){let a=i.measures.find(e=>Ze(e.id)===o&&t.id!==e.id);!a||n.has(a.id)||!a.computedBy||r.push(...this.computeMeasureFullDependencies(e,a,n))}return r.push(...a.rangeDependencies.filter(e=>!e.invalidXc)),r}insertPivot(e,t,n){this.resizeSheet(e.sheetId,e,n);let r=n.getPivotCells();for(let n=0;n<r.length;n++)for(let i=0;i<r[n].length;i++){let a=r[n][i];this.dispatch(`UPDATE_CELL`,{sheetId:e.sheetId,col:e.col+n,row:e.row+i,content:Sh(t,a)})}}resizeSheet(e,{col:t,row:n},r){let i=r.getNumberOfDataColumns()+1,a=this.getters.getNumberCols(e),o=a-t;o<i&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:a-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:i-o,position:`after`});let s=r.columns.length+r.rows.length,c=this.getters.getNumberRows(e),l=c-n;l<s&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`ROW`,base:c-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:s-l,position:`after`})}getPivotCore(e){let t=this.pivots[e];if(!t)throw Error(`Pivot with id ${e} not found`);return t}replaceMeasureFormula(e,t,n){let r=this.pivots[e];if(!r)return;let i=r.definition.measures.indexOf(t);this.history.update(`pivots`,e,`definition`,`measures`,i,`computedBy`,{formula:n,sheetId:t.computedBy.sheetId})}checkSortedColumnInMeasures(e){let t=e.measures.map(e=>e.id);return e.sortedColumn&&!t.includes(e.sortedColumn.measure)?`InvalidDefinition`:`Success`}checkDuplicatedMeasureIds(e){let t=new Set(e.measures.map(e=>e.id));return e.measures.length===t.size?`Success`:`InvalidDefinition`}checkCustomFieldsAreValid(e){for(let t in e.customFields){let n=e.customFields[t],r=new Set,i=new Set,a=!1;for(let e of n.groups){if(!e.name||i.has(e.name)||e.values.some(e=>r.has(e))||e.isOtherGroup&&a)return`InvalidPivotCustomField`;e.values.forEach(e=>r.add(e)),i.add(e.name),a||=!!e.isOtherGroup}}return`Success`}import(e){if(e.pivots)for(let[t,n]of Object.entries(e.pivots))this.addPivot(t,n,n.formulaId);this.history.update(`nextFormulaId`,e.pivotNextId||hh(this.pivots)+1)}export(e){e.pivots={};for(let t in this.pivots)e.pivots[t]={...this.getPivotCoreDefinition(t),formulaId:this.getPivotFormulaId(t)};e.pivotNextId=this.nextFormulaId}},cG=class extends VW{static getters=[`getLocale`];locale=R;allowDispatch(e){switch(e.type){case`UPDATE_LOCALE`:return wS(e.locale)?`Success`:`InvalidLocale`}return`Success`}handle(e){switch(e.type){case`UPDATE_LOCALE`:let t=this.locale,n=e.locale;this.history.update(`locale`,n),this.changeCellsDateFormatWithLocale(t,n);break}}getLocale(){return this.locale}changeCellsDateFormatWithLocale(e,t){for(let n of this.getters.getSheetIds())for(let r of this.getters.getCells(n)){let n;if(r.format===e.dateFormat&&(n=t.dateFormat),r.format===e.timeFormat&&(n=t.timeFormat),r.format===VS(e)&&(n=VS(t)),n){let{col:e,row:t,sheetId:i}=this.getters.getCellPosition(r.id);this.dispatch(`UPDATE_CELL`,{col:e,row:t,sheetId:i,format:n})}}}import(e){this.locale=e.settings?.locale??R}export(e){e.settings={locale:this.locale}}},lG=class extends VW{static getters=`getSheetName.tryGetSheetName.getSheet.tryGetSheet.getSheetIdByName.getSheetIds.getVisibleSheetIds.isSheetVisible.doesHeaderExist.doesHeadersExist.getCell.getCellPosition.getColsZone.getRowCellIds.getRowsZone.getNumberCols.getNumberRows.getNumberHeaders.getGridLinesVisibility.getNextSheetName.getSheetSize.getSheetZone.getPaneDivisions.checkZonesExistInSheet.getCommandZones.getUnboundedZone.checkElementsIncludeAllNonFrozenHeaders.getDuplicateSheetName.tryGetCellPosition.isSheetLocked`.split(`.`);sheetIdsMapName={};orderedSheetIds=[];sheets={};cellPosition={};allowDispatch(e){let t=this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e);if(t!==`Success`)return t;switch(e.type){case`HIDE_SHEET`:return this.getVisibleSheetIds().length===1?`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{let t=this.orderedSheetIds.findIndex(t=>t===e.sheetId);return this.findIndexOfTargetSheet(t,e.delta),`Success`}catch{return`WrongSheetMove`}case`RENAME_SHEET`:return this.isRenameAllowed(e);case`COLOR_SHEET`:return!e.color||kr(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`:{let t=Rt(e.elements),n=Lt(e.elements);return t<0||!this.doesHeaderExist(e.sheetId,e.dimension,n)?`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`:let t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update(`sheetIdsMapName`,Cl(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.newName);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`:e.dimension===`COL`?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case`ADD_COLUMNS_ROWS`:e.dimension===`COL`?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`);break;case`LOCK_SHEET`:this.history.update(`sheets`,e.sheetId,`isLocked`,!0);break;case`UNLOCK_SHEET`:this.history.update(`sheets`,e.sheetId,`isLocked`,!1);break}}import(e){for(let t of e.sheets)this.sheetIdsMapName[Cl(t.name)]=t.id;for(let t of e.sheets){let e=t.name||`Sheet`+(Object.keys(this.sheets).length+1),{colNumber:n,rowNumber:r}=this.getImportedSheetSize(t),i={id:t.id,name:e,numberOfCols:n,rows:vl(r),areGridLinesVisible:t.areGridLinesVisible===void 0?!0:t.areGridLinesVisible,isVisible:t.isVisible,panes:{xSplit:t.panes?.xSplit||0,ySplit:t.panes?.ySplit||0},color:t.color,isLocked:t.isLocked};this.orderedSheetIds.push(i.id),this.sheets[i.id]=i}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(C).map(e=>{let t=this.sheets[e],n={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:t.areGridLinesVisible===void 0?!0:t.areGridLinesVisible,isVisible:t.isVisible,isLocked:t.isLocked,color:t.color};return(t.panes.xSplit||t.panes.ySplit)&&(n.panes=t.panes),n})}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}isSheetLocked(e){return this.tryGetSheet(e)?.isLocked||!1}tryGetSheet(e){return this.sheets[e]}getSheet(e){let t=this.sheets[e];if(!t)throw 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)return this.sheetIdsMapName[Cl(e)]}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}doesHeaderExist(e,t,n){return t===`COL`?n>=0&&n<this.getNumberCols(e):n>=0&&n<this.getNumberRows(e)}doesHeadersExist(e,t,n){return n.every(n=>this.doesHeaderExist(e,t,n))}getCell({sheetId:e,col:t,row:n}){let r=this.tryGetSheet(e)?.rows[n]?.cells[t];if(r!==void 0)return this.getters.getCellById(r)}getColsZone(e,t,n){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:n}}getRowCellIds(e,t){return Object.values(this.getSheet(e).rows[t]?.cells).filter(C)}getRowsZone(e,t,n){return{top:t,bottom:n,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){let t=this.cellPosition[e];if(!t)throw Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}tryGetCellPosition(e){return this.cellPosition[e]}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return t===`COL`?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e=`Sheet`){return xl(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(t.bottom===void 0||t.right===void 0)return t;let n=t.left===0&&t.right===this.getNumberCols(e)-1,r=t.top===0&&t.bottom===this.getNumberRows(e)-1;return{...t,bottom:r?void 0:t.bottom,right:n&&!r?void 0:t.right}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,n){let r={...this.getPaneDivisions(e)};n===`COL`?r.xSplit=t:n===`ROW`&&(r.ySplit=t),this.history.update(`sheets`,e,`panes`,r)}checkElementsIncludeAllNonFrozenHeaders(e,t,n){let r=this.getters.getPaneDivisions(e),i=t===`ROW`?r.ySplit:r.xSplit,a=this.getters.getNumberHeaders(e,t);return i?St(n,S(i,a)):!1}getCommandZones(e){let 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&&e.col!==void 0&&`row`in e&&e.row!==void 0&&t.push({top:e.row,left:e.col,bottom:e.row,right:e.col}),t}checkZonesExistInSheet(e,t){if(!t.every(_n))return`InvalidRange`;if(t.length){let n=this.getSheetZone(e);return t.every(e=>jn(e,n))?`Success`:`TargetOutOfSheet`}return`Success`}updateCellPosition(e){let{sheetId:t,cellId:n,col:r,row:i}=e;n?this.setNewPosition(n,t,r,i):this.clearPosition(t,r,i)}setNewPosition(e,t,n,r){let i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update(`cellPosition`,e,{row:r,col:n,sheetId:t}),this.history.update(`sheets`,t,`rows`,r,`cells`,n,e)}clearPosition(e,t,n){let r=this.sheets[e]?.rows[n].cells[t];r&&(this.history.update(`cellPosition`,r,void 0),this.history.update(`sheets`,e,`rows`,n,`cells`,t,void 0))}setGridLinesVisibility(e,t){this.history.update(`sheets`,e,`areGridLinesVisible`,t)}createSheet(e,t,n,r,i){let a={id:e,name:t,numberOfCols:n,rows:vl(r),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0},isLocked:!1},o=this.orderedSheetIds.slice();o.splice(i,0,a.id);let s=this.sheets;return this.history.update(`orderedSheetIds`,o),this.history.update(`sheets`,Object.assign({},s,{[a.id]:a})),a}moveSheet(e,t){let n=this.orderedSheetIds.slice(),r=n.findIndex(t=>t===e),i=n.splice(r,1),a=this.findIndexOfTargetSheet(r,t);n.splice(a,0,i[0]),this.history.update(`orderedSheetIds`,n)}findIndexOfTargetSheet(e,t){for(;t!==0&&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(t===0)return e;throw Error(`There is not enough visible sheets`)}checkSheetName(e){let t=this.getters.tryGetSheetName(e.sheetId),n=e.type===`RENAME_SHEET`?e.newName:e.name;if(t!==void 0&&n===t)return`UnchangedSheetName`;let{orderedSheetIds:r,sheets:i}=this,a=n&&n.trim().toLowerCase();return r.find(t=>wl(i[t]?.name,a)&&t!==e.sheetId)?`DuplicatedSheetName`:Ne.test(a)?`ForbiddenCharactersInSheetName`:`Success`}checkSheetPosition(e){let{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){let t=this.getters.getMerges(e.sheetId);for(let n of t)if(n.top<e.quantity&&e.quantity<=n.bottom)return`MergeOverlap`;return`Success`}checkColFreezeOverlapMerge(e){let t=this.getters.getMerges(e.sheetId);for(let n of t)if(n.left<e.quantity&&e.quantity<=n.right)return`MergeOverlap`;return`Success`}isRenameAllowed(e){return e.newName&&e.newName.trim().toLowerCase()?this.checkSheetName(e):`MissingSheetName`}renameSheet(e,t){let n=e.name;this.history.update(`sheets`,e.id,`name`,t.trim());let r=Object.assign({},this.sheetIdsMapName);delete r[Cl(n)],r[Cl(t)]=e.id,this.history.update(`sheetIdsMapName`,r)}hideSheet(e){this.history.update(`sheets`,e,`isVisible`,!1)}showSheet(e){this.history.update(`sheets`,e,`isVisible`,!0)}duplicateSheet(e,t,n){let r=b(this.getSheet(e));r.id=t,r.name=n,r.isLocked=!1;for(let e=0;e<=r.numberOfCols;e++)for(let t=0;t<=r.rows.length;t++)r.rows[t]&&(r.rows[t].cells[e]=void 0);let i=this.orderedSheetIds.slice(),a=i.indexOf(e);i.splice(a+1,0,r.id),this.history.update(`orderedSheetIds`,i),this.history.update(`sheets`,Object.assign({},this.sheets,{[r.id]:r}));for(let t of Object.values(this.getters.getCells(e))){let{col:e,row:n}=this.getCellPosition(t.id);this.dispatch(`UPDATE_CELL`,{sheetId:r.id,col:e,row:n,content:t.isFormula?t.compiledFormula.toFormulaString(this.getters):t.content,format:t.format,style:t.style})}let o=Object.assign({},this.sheetIdsMapName);o[Cl(r.name)]=r.id,this.history.update(`sheetIdsMapName`,o)}getDuplicateSheetName(e){return Sl(e,this.orderedSheetIds.map(this.getSheetName.bind(this)))}deleteSheet(e){let t=e.name,n=Object.assign({},this.sheets);delete n[e.id],this.history.update(`sheets`,n);let r=this.orderedSheetIds.slice(),i=r.indexOf(e.id);r.splice(i,1),this.history.update(`orderedSheetIds`,r);let a=Object.assign({},this.sheetIdsMapName);delete a[Cl(t)],this.history.update(`sheetIdsMapName`,a)}removeColumns(e,t){t.sort((e,t)=>t-e);for(let n of t)this.moveCellOnColumnsDeletion(e,n);let n=this.sheets[e.id].numberOfCols;this.history.update(`sheets`,e.id,`numberOfCols`,n-t.length);let r=t.filter(t=>t<e.panes.xSplit).length;r&&this.setPaneDivisions(e.id,e.panes.xSplit-r,`COL`)}removeRows(e,t){t.sort((e,t)=>t-e);for(let n of $e(t)){let t=n[n.length-1],r=n[0];this.moveCellOnRowsDeletion(e,t,r),this.updateRowsStructureOnDeletion(e,t,r)}let n=t.filter(t=>t<e.panes.ySplit).length;n&&this.setPaneDivisions(e.id,e.panes.ySplit-n,`ROW`)}addColumns(e,t,n,r){let i=n===`before`?t:t+1;this.moveCellsOnAddition(e,i,r,`columns`);let a=this.sheets[e.id].numberOfCols;this.history.update(`sheets`,e.id,`numberOfCols`,a+r),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+r,`COL`)}addRows(e,t,n,r){let i=n===`before`?t:t+1;this.addEmptyRows(e,r),this.moveCellsOnAddition(e,i,r,`rows`),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+r,`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 n=0;n<e.rows.length;n++){let r=e.rows[n];for(let i in r.cells){let a=Number(i),o=r.cells[i];o&&a>t&&this.setNewPosition(o,e.id,a-1,n)}}}moveCellsOnAddition(e,t,n,r){let i=[];for(let a=0;a<e.rows.length;a++){let o=e.rows[a];if(r!==`rows`||a>=t)for(let s in o.cells){let c=Number(s),l=o.cells[s];l&&(r===`rows`||c>=t)&&i.push({sheetId:e.id,cellId:l,col:c+(r===`columns`?n:0),row:a+(r===`rows`?n:0),type:`UPDATE_CELL_POSITION`})}}for(let e of i.reverse())this.updateCellPosition(e)}moveCellOnRowsDeletion(e,t,n){this.dispatch(`CLEAR_CELLS`,{sheetId:e.id,target:[{left:0,top:t,right:this.getters.getNumberCols(e.id),bottom:n}]});let r=n-t+1;for(let t=0;t<e.rows.length;t++){let i=e.rows[t];if(t>n)for(let n in i.cells){let a=Number(n),o=i.cells[n];o&&this.setNewPosition(o,e.id,a,t-r)}}}updateRowsStructureOnDeletion(e,t,n){let r=[],i=e.rows.map(e=>e.cells).reverse();for(let a in e.rows){let e=Number(a);e>=t&&e<=n||r.push({cells:i.pop()})}this.history.update(`sheets`,e.id,`rows`,r)}addEmptyRows(e,t){let n=e.rows.slice();for(let e=0;e<t;e++)n.push({cells:{}});this.history.update(`sheets`,e.id,`rows`,n)}getImportedSheetSize(e){let t=Object.keys(e.cells).map(mn),n=e.rowNumber,r=e.colNumber;for(let{right:e,bottom:i}of t)n=Math.max(n,i+1),r=Math.max(r,e+1);return{rowNumber:n,colNumber:r}}checkSheetExists(e){return e.type!==`CREATE_SHEET`&&`sheetId`in e&&this.sheets[e.sheetId]===void 0?`InvalidSheetId`:e.type===`CREATE_SHEET`&&this.sheets[e.sheetId]!==void 0?`DuplicatedSheetId`:`Success`}checkZonesAreInSheet(e){return Fs(e)&&e.ranges.length===0?`EmptyRange`:`sheetId`in e?`ranges`in e&&e.ranges.some(e=>e._sheetId!==``&&!this.getters.tryGetSheet(e._sheetId))?`InvalidSheetId`:Ps(e)&&e.target.length===0?`EmptyTarget`:this.checkZonesExistInSheet(e.sheetId,this.getCommandZones(e)):`Success`}},uG=class extends VW{allowDispatch(e){switch(e.type){case`ADD_PIVOT`:case`UPDATE_PIVOT`:let t=e.pivot;return this.checkDataSetValidity(t)}return`Success`}checkDataSetValidity(e){if(e.type===`SPREADSHEET`&&e.dataSet){let{zone:t,sheetId:n}=e.dataSet;return!n||!this.getters.tryGetSheet(n)||!t||!_n(t)?`InvalidDataSet`:this.getters.checkZonesExistInSheet(n,[t])}return`Success`}},dG=class extends VW{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(!ij[e.templateName])return`InvalidTableStyle`;try{Or(e.primaryColor)}catch{return`InvalidTableStyle`}break}return`Success`}handle(e){switch(e.type){case`CREATE_TABLE_STYLE`:let t=aj(e.tableStyleName,e.templateName,e.primaryColor);this.history.update(`styles`,e.tableStyleId,t);break;case`REMOVE_TABLE_STYLE`:let n={...this.styles};delete n[e.tableStyleId],this.history.update(`styles`,n);for(let t of this.getters.getSheetIds())for(let n of this.getters.getCoreTables(t))n.config.styleId===e.tableStyleId&&this.dispatch(`UPDATE_TABLE`,{sheetId:t,zone:n.range.zone,config:{styleId:HA.styleId}});break}}getTableStyle(e){if(RB[e])return RB[e];if(!this.styles[e])throw Error(`Table style ${e} does not exist`);return this.styles[e]}getTableStyles(){return this.styles}getNewCustomTableStyleName(){return Ht(k(`Custom Table Style`),Object.values(this.styles).map(e=>e.displayName),{compute:(e,t)=>`${e} ${t}`,start:2})}isTableStyleEditable(e){return!rj[e]&&!RB[e]}import(e){for(let e in rj)this.styles[e]=rj[e];for(let t in e.customTableStyles){let n=e.customTableStyles[t];this.styles[t]=aj(n.displayName,n.templateName,n.primaryColor)}}export(e){let t={};for(let e in this.styles)rj[e]||(t[e]={displayName:this.styles[e].displayName,templateName:this.styles[e].templateName,primaryColor:this.styles[e].primaryColor});e.customTableStyles=t}},fG=class extends VW{static getters=[`getCoreTable`,`getCoreTables`,`getCoreTableMatchingTopLeft`];tables={};nextTableId=1;adaptRanges({applyChange:e},t){for(let n of this.getCoreTables(t))this.applyRangeChangeOnTable(t,n,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`;let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e).zone);return Yn(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(let t of this.getCoreTables(e.sheetId)){let n=t.range.zone;for(let t of e.target)if(On(n,t))return`MergeInTable`}break}return`Success`}handle(e){switch(e.type){case`CREATE_SHEET`:this.history.update(`tables`,e.sheetId,{});break;case`DELETE_SHEET`:{let t={...this.tables};delete t[e.sheetId],this.history.update(`tables`,t);break}case`DUPLICATE_SHEET`:{let t={};for(let n of this.getCoreTables(e.sheetId))t[n.id]=n.type===`dynamic`?this.copyDynamicTableForSheet(e.sheetIdTo,n):this.copyStaticTableForSheet(e.sheetIdTo,n);this.history.update(`tables`,e.sheetIdTo,t);break}case`CREATE_TABLE`:{let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e)),n=this.getters.getRangesUnion(t),r=this.getters.getMergesInZone(e.sheetId,n.zone);r.length&&this.dispatch(`REMOVE_MERGE`,{sheetId:e.sheetId,target:r});let i=this.consumeNextId(),a=e.config||HA,o=e.tableType===`dynamic`?this.createDynamicTable(i,n,a):this.createStaticTable(i,e.tableType,n,a);this.history.update(`tables`,e.sheetId,o.id,o);break}case`REMOVE_TABLE`:{let t={};for(let n of this.getCoreTables(e.sheetId))e.target.every(e=>!En(n.range.zone,e))&&(t[n.id]=n);this.history.update(`tables`,e.sheetId,t);break}case`UPDATE_TABLE`:this.updateTable(e);break;case`UPDATE_CELL`:{let t=e.sheetId;for(let n of this.getCoreTables(t)){if(n.type===`dynamic`)continue;let r=this.canUpdateCellCmdExtendTable(e,n);r===`down`?this.extendTableDown(t,n):r===`right`&&this.extendTableRight(t,n)}break}case`DELETE_CONTENT`:{let t={...this.tables[e.sheetId]};for(let n in t){let r=t[n];r&&e.target.some(e=>jn(r.range.zone,e))&&this.dispatch(`REMOVE_TABLE`,{sheetId:e.sheetId,target:[r.range.zone]})}break}}}getCoreTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(C):[]}getCoreTable({sheetId:e,col:t,row:n}){return this.getCoreTables(e).find(e=>An(t,n,e.range.zone))}getTablesOverlappingZones(e,t){return this.getCoreTables(e).filter(e=>t.some(t=>On(e.range.zone,t)))}extendTableDown(e,t){let n=this.getters.extendRange(t.range,`ROW`,1);this.history.update(`tables`,e,t.id,this.updateStaticTable(t,n))}extendTableRight(e,t){let n=this.getters.extendRange(t.range,`COL`,1);this.history.update(`tables`,e,t.id,this.updateStaticTable(t,n))}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:n,row:r},i){if(!e||this.isPivotFormula(e,t))return`none`;let a=i.range.zone,o=`none`;if(a.bottom+1===r&&n>=a.left&&n<=a.right?o=`down`:a.right+1===n&&r>=a.top&&r<=a.bottom&&(o=`right`),o===`none`)return`none`;let s=o===`down`?{...a,bottom:a.bottom+1,top:a.bottom+1}:{...a,right:a.right+1,left:a.right+1};for(let e=s.top;e<=s.bottom;e++)for(let n=s.left;n<=s.right;n++){let r={sheetId:t,col:n,row:e},i=this.getters.getCell(r);if(i?.isFormula||i?.content||this.getters.isInMerge(r)||this.getTablesOverlappingZones(t,[E(r)]).length)return`none`}return o}isPivotFormula(e,t){return e.startsWith(`=`)?hB(yz.Compile(e,t,this.getters),this.getters)?.functionName===`PIVOT`:!1}getCoreTableMatchingTopLeft(e,t){for(let n of this.getCoreTables(e)){let e=n.range.zone;if(e.left===t.left&&e.top===t.top)return n}}checkUpdatedTableZoneIsValid(e){if(!e.newTableRange)return`Success`;let t=this.getters.getRangeFromRangeData(e.newTableRange).zone,n=this.getters.checkZonesExistInSheet(e.sheetId,[t]);if(n!==`Success`)return n;let r=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);return r?this.getTablesOverlappingZones(e.sheetId,[t]).filter(e=>e.id!==r.id).length?`TableOverlap`:`Success`:`TableNotFound`}checkTableConfigUpdateIsValid(e){return e&&(e.numberOfHeaders!==void 0&&e.numberOfHeaders<0||e.hasFilters&&e.numberOfHeaders===0)?`InvalidTableConfig`:`Success`}createStaticTable(e,t,n,r,i){let a=n.zone;if(!i){i=[];for(let e of S(a.left,a.right+1)){let t={...a,left:e,right:e},o=this.consumeNextId();i.push(this.createFilterFromZone(o,n.sheetId,t,r))}}return{id:e,range:n,filters:i,config:r,type:t}}createDynamicTable(e,t,n){let r=Hn(t.zone);return{id:e,range:this.getters.getRangeFromZone(t.sheetId,r),config:n,type:`dynamic`}}updateTable(e){let t=this.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return;let n=e.newTableRange?this.getters.getRangeFromRangeData(e.newTableRange):void 0;if(n){let t=this.getters.getMergesInZone(e.sheetId,n.zone);this.dispatch(`REMOVE_MERGE`,{sheetId:e.sheetId,target:t})}let r=n||t.range,i=this.updateTableConfig(e.config,t.config),a=e.tableType??t.type;if(a===`dynamic`&&t.type!==`dynamic`||a!==`dynamic`&&t.type===`dynamic`){let n=a===`dynamic`?this.createDynamicTable(t.id,r,i):this.createStaticTable(t.id,a,r,i);this.history.update(`tables`,e.sheetId,t.id,n)}else{let n=t.type===`dynamic`?this.updateDynamicTable(t,r,i):this.updateStaticTable(t,r,i,a);this.history.update(`tables`,e.sheetId,t.id,n)}}updateStaticTable(e,t,n,r=e.type){if(r===`dynamic`)throw Error(`Cannot use updateStaticTable to update a dynamic table`);let i=t||e.range,a=i.zone,o=this.updateTableConfig(n,e.config),s=o||e.config,c=[];if(t||o&&`numberOfHeaders`in o)for(let t of S(a.left,a.right+1)){let n=a.top===e.range.zone.top?e.filters.find(e=>e.col===t):void 0,r={...a,left:t,right:t},o=n?.id||this.consumeNextId();c.push(this.createFilterFromZone(o,i.sheetId,r,s))}return{...e,range:i,config:s,filters:c.length?c:e.filters,type:r}}updateDynamicTable(e,t,n){let r=t?this.getters.getRangeFromZone(t.sheetId,Hn(t.zone)):e.range,i=n||e.config;return{...e,range:r,config:i}}updateTableConfig(e,t){if(!e)return t;let n={...t,...e};return e.numberOfHeaders===0?n.hasFilters=!1:e.hasFilters===!0&&(n.numberOfHeaders||=1),n}createFilterFromZone(e,t,n,r){return KB(e,this.getters.getRangeFromZone(t,n),r,this.getters.getRangeFromZone)}copyStaticTableForSheet(e,t){let n=this.getters.getRangeFromZone(e,t.range.zone),r=t.filters.map(n=>{let r=this.getters.getRangeFromZone(e,n.rangeWithHeaders.zone);return KB(n.id,r,t.config,this.getters.getRangeFromZone)});return{id:t.id,range:n,filters:r,config:b(t.config),type:t.type}}copyDynamicTableForSheet(e,t){let n=this.getters.getRangeFromZone(e,t.range.zone);return{id:t.id,range:n,config:b(t.config),type:`dynamic`}}applyRangeChangeOnTable(e,t,n){let r=n(t.range),i;switch(r.changeType){case`REMOVE`:this.history.update(`tables`,e,t.id,void 0);return;case`NONE`:return;default:i=r.range}if(t.type===`dynamic`){let n=this.updateDynamicTable(t,i);this.history.update(`tables`,e,t.id,n);return}let a=[];for(let e of t.filters){let r=n(e.rangeWithHeaders);switch(r.changeType){case`REMOVE`:continue;case`NONE`:a.push(e);break;default:let n=r.range,i=KB(e.id,n,t.config,this.getters.getRangeFromZone);a.push(i)}}let o=i.zone;if(a.length<Mn(o).numberOfCols){for(let n=o.left;n<=o.right;n++)if(!a.find(e=>e.col===n)){let r=this.consumeNextId(),i={...o,left:n,right:n};a.push(this.createFilterFromZone(r,e,i,t.config))}a.sort((e,t)=>e.col-t.col)}let s=this.createStaticTable(t.id,t.type,i,t.config,a);this.history.update(`tables`,e,t.id,s)}consumeNextId(){let e=`${this.nextTableId}`;return this.history.update(`nextTableId`,this.nextTableId+1),e}import(e){for(let t of e.sheets)for(let e of t.tables||[]){let n=this.consumeNextId(),r=e.config||HA,i=this.getters.getRangeFromSheetXC(t.id,e.range),a=e.type||`static`,o=a===`dynamic`?this.createDynamicTable(n,i,r):this.createStaticTable(n,a,i,r);this.history.update(`tables`,t.id,o.id,o)}}export(e){for(let t of e.sheets)for(let e of this.getCoreTables(t.id)){let n={range:yn(e.range.zone),type:e.type};w(e.config,HA)||(n.config=e.config),t.tables.push(n)}}exportForExcel(e){for(let t of e.sheets)for(let e of this.getCoreTables(t.id)){let n=yn(e.range.zone);t.tables.push({range:n,filters:[],config:e.config})}}},pG=class extends BW{getters;constructor({getters:e,stateObserver:t}){super(t),this.getters=e}};let mG=uO.mapping;function hG(e,t,n){return new gG(e,t,n).getParameters()}var gG=class{getters;computeCell;evalContext;rangeCache={};constructor(e,t,n){this.getters=t,this.computeCell=n,this.evalContext=Object.assign(Object.create(mG),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){let n=this.getRangeError(e);if(n)return n;let r={sheetId:e.sheetId,col:e.zone.left,row:e.zone.top};return t?(this.computeCell(r),{value:Bc(this.getters.getSheetName(e.sheetId),yn(e.zone))}):this.computeCell(r)}range(e,t){let n=this.getRangeError(e);if(n)return[[n]];let r=e.sheetId,i=e.zone,a=En(i,this.getters.getSheetZone(r));if(!a)return[[]];let{top:o,left:s,bottom:c,right:l}=i,u=`${r}-${o}-${s}-${c}-${l}-${t}`;if(u in this.rangeCache)return this.rangeCache[u];let d=a.bottom-a.top+1,f=a.right-a.left+1,p=Array(f),m=this.getters.getSheetName(e.sheetId);for(let e=a.left;e<=a.right;e++){let n=e-a.left;p[n]=Array(d);for(let i=a.top;i<=a.bottom;i++){let o=i-a.top,s=this.computeCell({sheetId:r,col:e,row:i});p[n][o]=t?{value:Bc(m,T(e,i))}:s}}return this.rangeCache[u]=p,p}getRangeError(e){if(!_n(e.zone))return new va;if(e.invalidSheetName)return new va(k(`Invalid sheet name: %s`,e.invalidSheetName))}},_G=d(c(((e,t)=>{(function(n,r){typeof e==`object`&&t!==void 0?t.exports=r():typeof define==`function`&&define.amd?define(r):(n||=self).RBush=r()})(e,function(){"use strict";function e(e,r,i,a,o){(function e(n,r,i,a,o){for(;a>i;){if(a-i>600){var s=a-i+1,c=r-i+1,l=Math.log(s),u=.5*Math.exp(2*l/3),d=.5*Math.sqrt(l*u*(s-u)/s)*(c-s/2<0?-1:1);e(n,r,Math.max(i,Math.floor(r-c*u/s+d)),Math.min(a,Math.floor(r+(s-c)*u/s+d)),o)}var f=n[r],p=i,m=a;for(t(n,i,r),o(n[a],f)>0&&t(n,i,a);p<m;){for(t(n,p,m),p++,m--;o(n[p],f)<0;)p++;for(;o(n[m],f)>0;)m--}o(n[i],f)===0?t(n,i,m):t(n,++m,a),m<=r&&(i=m+1),r<=m&&(a=m-1)}})(e,r,i||0,a||e.length-1,o||n)}function t(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function n(e,t){return e<t?-1:+(e>t)}var r=function(e){e===void 0&&(e=9),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(e,t,n){if(!n)return t.indexOf(e);for(var r=0;r<t.length;r++)if(n(e,t[r]))return r;return-1}function a(e,t){o(e,0,e.children.length,t,e)}function o(e,t,n,r,i){i||=m(null),i.minX=1/0,i.minY=1/0,i.maxX=-1/0,i.maxY=-1/0;for(var a=t;a<n;a++){var o=e.children[a];s(i,e.leaf?r(o):o)}return i}function s(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 c(e,t){return e.minX-t.minX}function l(e,t){return e.minY-t.minY}function u(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function d(e){return e.maxX-e.minX+(e.maxY-e.minY)}function f(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function p(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function m(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function h(t,n,r,i,a){for(var o=[n,r];o.length;)if(!((r=o.pop())-(n=o.pop())<=i)){var s=n+Math.ceil((r-n)/i/2)*i;e(t,s,n,r,a),o.push(n,s,s,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(e){var t=this.data,n=[];if(!p(e,t))return n;for(var r=this.toBBox,i=[];t;){for(var a=0;a<t.children.length;a++){var o=t.children[a],s=t.leaf?r(o):o;p(e,s)&&(t.leaf?n.push(o):f(e,s)?this._all(o,n):i.push(o))}t=i.pop()}return n},r.prototype.collides=function(e){var t=this.data;if(!p(e,t))return!1;for(var n=[];t;){for(var r=0;r<t.children.length;r++){var i=t.children[r],a=t.leaf?this.toBBox(i):i;if(p(e,a)){if(t.leaf||f(e,a))return!0;n.push(i)}}t=n.pop()}return!1},r.prototype.load=function(e){if(!e||!e.length)return this;if(e.length<this._minEntries){for(var t=0;t<e.length;t++)this.insert(e[t]);return this}var n=this._build(e.slice(),0,e.length-1,0);if(this.data.children.length)if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){var r=this.data;this.data=n,n=r}this._insert(n,this.data.height-n.height-1,!0)}else this.data=n;return this},r.prototype.insert=function(e){return e&&this._insert(e,this.data.height-1),this},r.prototype.clear=function(){return this.data=m([]),this},r.prototype.remove=function(e,t){if(!e)return this;for(var n,r,a,o=this.data,s=this.toBBox(e),c=[],l=[];o||c.length;){if(o||(o=c.pop(),r=c[c.length-1],n=l.pop(),a=!0),o.leaf){var u=i(e,o.children,t);if(u!==-1)return o.children.splice(u,1),c.push(o),this._condense(c),this}a||o.leaf||!f(o,s)?r?(n++,o=r.children[n],a=!1):o=null:(c.push(o),l.push(n),n=0,r=o,o=o.children[0])}return this},r.prototype.toBBox=function(e){return e},r.prototype.compareMinX=function(e,t){return e.minX-t.minX},r.prototype.compareMinY=function(e,t){return e.minY-t.minY},r.prototype.toJSON=function(){return this.data},r.prototype.fromJSON=function(e){return this.data=e,this},r.prototype._all=function(e,t){for(var n=[];e;)e.leaf?t.push.apply(t,e.children):n.push.apply(n,e.children),e=n.pop();return t},r.prototype._build=function(e,t,n,r){var i,o=n-t+1,s=this._maxEntries;if(o<=s)return a(i=m(e.slice(t,n+1)),this.toBBox),i;r||(r=Math.ceil(Math.log(o)/Math.log(s)),s=Math.ceil(o/s**(r-1))),(i=m([])).leaf=!1,i.height=r;var c=Math.ceil(o/s),l=c*Math.ceil(Math.sqrt(s));h(e,t,n,l,this.compareMinX);for(var u=t;u<=n;u+=l){var d=Math.min(u+l-1,n);h(e,u,d,c,this.compareMinY);for(var f=u;f<=d;f+=c){var p=Math.min(f+c-1,d);i.children.push(this._build(e,f,p,r-1))}}return a(i,this.toBBox),i},r.prototype._chooseSubtree=function(e,t,n,r){for(;r.push(t),!t.leaf&&r.length-1!==n;){for(var i=1/0,a=1/0,o=void 0,s=0;s<t.children.length;s++){var c=t.children[s],l=u(c),d=(f=e,p=c,(Math.max(p.maxX,f.maxX)-Math.min(p.minX,f.minX))*(Math.max(p.maxY,f.maxY)-Math.min(p.minY,f.minY))-l);d<a?(a=d,i=l<i?l:i,o=c):d===a&&l<i&&(i=l,o=c)}t=o||t.children[0]}var f,p;return t},r.prototype._insert=function(e,t,n){var r=n?e:this.toBBox(e),i=[],a=this._chooseSubtree(r,this.data,t,i);for(a.children.push(e),s(a,r);t>=0&&i[t].children.length>this._maxEntries;)this._split(i,t),t--;this._adjustParentBBoxes(r,i,t)},r.prototype._split=function(e,t){var n=e[t],r=n.children.length,i=this._minEntries;this._chooseSplitAxis(n,i,r);var o=this._chooseSplitIndex(n,i,r),s=m(n.children.splice(o,n.children.length-o));s.height=n.height,s.leaf=n.leaf,a(n,this.toBBox),a(s,this.toBBox),t?e[t-1].children.push(s):this._splitRoot(n,s)},r.prototype._splitRoot=function(e,t){this.data=m([e,t]),this.data.height=e.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(e,t,n){for(var r,i,a,s,c,l,d,f=1/0,p=1/0,m=t;m<=n-t;m++){var h=o(e,0,m,this.toBBox),g=o(e,m,n,this.toBBox),_=(i=h,a=g,s=void 0,c=void 0,l=void 0,d=void 0,s=Math.max(i.minX,a.minX),c=Math.max(i.minY,a.minY),l=Math.min(i.maxX,a.maxX),d=Math.min(i.maxY,a.maxY),Math.max(0,l-s)*Math.max(0,d-c)),v=u(h)+u(g);_<f?(f=_,r=m,p=v<p?v:p):_===f&&v<p&&(p=v,r=m)}return r||n-t},r.prototype._chooseSplitAxis=function(e,t,n){var r=e.leaf?this.compareMinX:c,i=e.leaf?this.compareMinY:l;this._allDistMargin(e,t,n,r)<this._allDistMargin(e,t,n,i)&&e.children.sort(r)},r.prototype._allDistMargin=function(e,t,n,r){e.children.sort(r);for(var i=this.toBBox,a=o(e,0,t,i),c=o(e,n-t,n,i),l=d(a)+d(c),u=t;u<n-t;u++){var f=e.children[u];s(a,e.leaf?i(f):f),l+=d(a)}for(var p=n-t-1;p>=t;p--){var m=e.children[p];s(c,e.leaf?i(m):m),l+=d(c)}return l},r.prototype._adjustParentBBoxes=function(e,t,n){for(var r=n;r>=0;r--)s(t[r],e)},r.prototype._condense=function(e){for(var t=e.length-1,n=void 0;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children).splice(n.indexOf(e[t]),1):this.clear():a(e[t],this.toBBox)},r})}))(),1),vG=class{rTrees={};constructor(e=[]){let t={};for(let n of e){let e=n.boundingBox.sheetId;t[e]||(t[e]=[]),t[e].push(n)}for(let e in t)this.rTrees[e]=new yG,this.rTrees[e].load(t[e])}insert(e){let t=e.boundingBox.sheetId;this.rTrees[t]||(this.rTrees[t]=new yG),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){let t=e.boundingBox.sheetId;this.rTrees[t]&&this.rTrees[t].remove(e,this.rtreeItemComparer)}rtreeItemComparer(e,t){return 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&&w(e.data,t.data)}},yG=class extends _G.default{toBBox({boundingBox:e}){let 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}},bG=class e{profilesStartingPosition=[0];profiles=new Map([[0,[]]]);constructor(e=[]){for(let t of e)this.add(t)}isEmpty(){return this.profiles.size===1&&this.profiles.get(0)?.length===0}add(e){rn(this.profilesStartingPosition,this.profiles,[e])}delete(e){rn(this.profilesStartingPosition,this.profiles,[e],!0)}has(e){return an(this.profilesStartingPosition,this.profiles,e)}difference(e){let t=this.copy();for(let n of e)t.delete(n);return t}copy(){let t=new e;t.profilesStartingPosition=[...this.profilesStartingPosition],t.profiles=new Map;for(let[e,n]of this.profiles)t.profiles.set(e,[...n]);return t}[Symbol.iterator](){return ln(this.profilesStartingPosition,this.profiles)[Symbol.iterator]()}},xG=class e{setsBySheetId={};constructor(e=[]){for(let t of e)this.add(t)}add(e){this.setsBySheetId[e.sheetId]||(this.setsBySheetId[e.sheetId]=new bG),this.setsBySheetId[e.sheetId].add(e.zone)}addMany(e){for(let t of e)this.add(t)}addPosition(e){this.add(al(e))}addManyPositions(e){for(let t of e)this.addPosition(t)}has(e){return this.setsBySheetId[e.sheetId]?this.setsBySheetId[e.sheetId].has(e.zone):!1}hasPosition(e){return this.has(al(e))}delete(e){this.setsBySheetId[e.sheetId]&&this.setsBySheetId[e.sheetId].delete(e.zone)}deleteMany(e){for(let t of e)this.delete(t)}deleteManyPositions(e){for(let t of e)this.delete(al(t))}difference(t){let n=new e;for(let e in this.setsBySheetId)n.setsBySheetId[e]=this.setsBySheetId[e];for(let e in t.setsBySheetId)n.setsBySheetId[e]&&(n.setsBySheetId[e]=n.setsBySheetId[e].difference(t.setsBySheetId[e]));return n}copy(){let t=new e;for(let e in this.setsBySheetId)t.setsBySheetId[e]=this.setsBySheetId[e].copy();return t}clear(){this.setsBySheetId={}}isEmpty(){for(let e in this.setsBySheetId)if(!this.setsBySheetId[e].isEmpty())return!1;return!0}[Symbol.iterator](){let e=[];for(let t in this.setsBySheetId)for(let n of this.setsBySheetId[t])e.push({sheetId:t,zone:n});return e[Symbol.iterator]()}},SG=class{rTree;constructor(e=[]){let t=CG(e);this.rTree=new vG(t)}insert(e){let t=this.rTree.search(e.boundingBox),n=e.boundingBox,r=t.find(({boundingBox:e})=>e.sheetId===n.sheetId&&e.zone.left===n.zone.left&&e.zone.top===n.zone.top&&e.zone.right===n.zone.right&&e.zone.bottom===n.zone.bottom);r?r.data.add(e.data):this.rTree.insert({...e,data:new xG([e.data])})}search({zone:e,sheetId:t}){let n=new xG;for(let{data:r}of this.rTree.search({zone:e,sheetId:t}))n.addMany(r);return n}remove(e){let t=this.rTree.search(e.boundingBox),n=e.boundingBox,r=t.find(({boundingBox:e})=>e.sheetId===n.sheetId&&e.zone.left===n.zone.left&&e.zone.top===n.zone.top&&e.zone.right===n.zone.right&&e.zone.bottom===n.zone.bottom);r?r.data.delete(e.data):this.rTree.remove({...e,data:new xG([e.data])})}};function CG(e){let t=0,n=0;for(let r=0;r<e.length;r++){let i=e[r].boundingBox.zone;i.right>t&&(t=i.right),i.bottom>n&&(n=i.bottom)}t+=1,n+=1;let r=(((n+1)*t+1)*n+1)*t<=2**53-1;r||console.warn(`Max col/row size exceeded, using slow zone key`);let i={};for(let a of e){let e=a.boundingBox.sheetId;i[e]||(i[e]={});let o=a.boundingBox.zone,s=0;s=r?o.left+o.top*t+o.right*t*n+o.bottom*t*n*t:`${o.left},${o.top},${o.right},${o.bottom}`,i[e][s]?i[e][s].data.add(a.data):i[e][s]={boundingBox:a.boundingBox,data:new xG([a.data])}}let a=[];for(let e in i){let t=i[e];for(let e in t)a.push(t[e])}return a}var wG=class{dependencies=new SV;rTree;constructor(e=[]){this.rTree=new SG(e)}removeAllDependencies(e){let t=this.dependencies.get(e);if(t){for(let e of t)this.rTree.remove(e);this.dependencies.delete(e)}}addDependencies(e,t){let n=t.map(({sheetId:t,zone:n})=>({data:{sheetId:e.sheetId,zone:E(e)},boundingBox:{zone:n,sheetId:t}}));for(let e of n)this.rTree.insert(e);let r=this.dependencies.get(e);r?r.push(...n):this.dependencies.set(e,n)}getCellsDependingOn(e,t=new xG){t=t.copy();let n=Array.from(e).reverse();for(;n.length>0;){let e=n.pop();t.add(e);let r=this.rTree.search(e);n.push(...r.difference(t))}for(let n of e)t.delete(n);return t}},TG=class extends Uint32Array{columnOffset=0;cols=0;rows=0;static create(e,t){let n=EG(t),r=e<<n>>5,i=new this(r+1);return i.columnOffset=n,i.cols=t,i.rows=e,i}getValue(e){let[t,n]=this.getCoordinates(e);return this[t]>>n&1}setValue(e,t){let[n,r]=this.getCoordinates(e),i=(this[n]>>r&1)==0&&t===1;return this[n]=this[n]&~(1<<r)|t<<r,i}isEmpty(){return!this.some(e=>e!==0)}fillAllPositions(){this.fill(-1>>>0)}clear(){this.fill(0)}getCoordinates(e){let{row:t,col:n}=e,r=(t<<this.columnOffset)+n,i=r>>5;return[i,r-(i<<5)]}};function EG(e){return e===0?-1/0:e<0?NaN:32-Math.clz32(--e)}var DG=class{sheets={};insertions=[];maxSize=0;constructor(e){for(let t in e){let n=e[t].cols,r=e[t].rows;this.maxSize+=n*r,this.sheets[t]=TG.create(r,n)}}add(e){this.sheets[e.sheetId].setValue(e,1)&&this.insertions.push(e)}addMany(e){for(let t of e)this.add(t)}delete(e){this.sheets[e.sheetId].setValue(e,0)}deleteMany(e){for(let t of e)this.delete(t)}has(e){return this.sheets[e.sheetId].getValue(e)===1}clear(){let e=[...this];this.insertions=[];for(let e in this.sheets)this.sheets[e].clear();return e}isEmpty(){if(this.insertions.length===0)return!0;for(let e in this.sheets)if(!this.sheets[e].isEmpty())return!1;return!0}fillAllPositions(){this.insertions=Array(this.maxSize);let e=0;for(let t in this.sheets){let n=this.sheets[t];n.fillAllPositions();for(let r=0;r<n.rows;r++)for(let i=0;i<n.cols;i++)this.insertions[e++]={sheetId:t,row:r,col:i}}}*[Symbol.iterator](){for(let e of this.insertions)this.sheets[e.sheetId].getValue(e)===1&&(yield e)}},OG=class{resultsToArrayFormulas=new vG;arrayFormulasToResults=new SV;searchFormulaPositionsSpreadingOn(e,t){return this.resultsToArrayFormulas.search({sheetId:e,zone:t}).map(e=>e.data)||kG}getArrayResultZone(e){return this.arrayFormulasToResults.get(e)}removeNode(e){let t=this.arrayFormulasToResults.get(e);t&&(this.resultsToArrayFormulas.remove({boundingBox:{sheetId:e.sheetId,zone:t},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)}};let kG=[],AG=new B;AG.add(`pivots`,e=>{for(let t of e.getPivotIds())e.getPivot(t).markAsDirtyForEvaluation?.()});let jG=Object.freeze(cc({...new _a,origin:void 0})),MG=Object.freeze(cc({value:null}));var NG=class{context;getters;compilationParams;evaluatedCells=new SV;formulaDependencies=_t(new wG);blockedArrayFormulas=new DG({});spreadingRelations=new OG;constructor(e,t){this.context=e,this.getters=t,this.compilationParams=hG(this.context,this.getters,this.computeAndSave.bind(this))}getEvaluatedCell(e){return this.evaluatedCells.get(e)||MG}getSpreadZone(e,t={ignoreSpillError:!1}){let n=this.spreadingRelations.getArrayResultZone(e);if(!n)return;let r=this.evaluatedCells.get(e);return r?.type===`error`&&!(t.ignoreSpillError&&r?.value===A.SpilledBlocked)?E(e):wn(E(e),n)}getEvaluatedPositions(){return this.evaluatedCells.keys()}getEvaluatedPositionsInSheet(e){return this.evaluatedCells.keysForSheet(e)}getArrayFormulaSpreadingOn(e){if(this.getEvaluatedCell(e).type!==`empty`)return this.spreadingRelations.searchFormulaPositionsSpreadingOn(e.sheetId,E(e)).find(e=>!this.blockedArrayFormulas.has(e))}isArrayFormulaSpillBlocked(e){return this.blockedArrayFormulas.has(e)}updateDependencies(e){this.formulaDependencies().removeAllDependencies(e);let t=this.getDirectDependencies(e);this.formulaDependencies().addDependencies(e,t)}addDependencies(e,t){this.formulaDependencies().addDependencies(e,t);for(let e of t)this.compilationParams.ensureRange(e,!1)}updateCompilationParametersForIsolatedFormula(e){this.compilationParams=hG(this.context,this.getters,this.computeAndSave.bind(this)),this.compilationParams.evalContext.__originCellPosition=e,this.compilationParams.evalContext.updateDependencies=void 0,this.compilationParams.evalContext.addDependencies=void 0,this.compilationParams.evalContext.lookupCaches=this.compilationParams.evalContext.lookupCaches||{forwardSearch:new Map,reverseSearch:new Map}}updateCompilationParameters(){this.compilationParams=hG(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(){let e={};for(let t of this.getters.getSheetIds())e[t]={rows:this.getters.getNumberRows(t),cols:this.getters.getNumberCols(t)};return new DG(e)}evaluateCells(e){let t=performance.now(),n=new xG;n.addManyPositions(e);let r=this.getArrayFormulasImpactedByChangesOf(e);n.addMany(this.getCellsDependingOn(n)),n.addMany(r),n.addMany(this.getCellsDependingOn(r)),this.evaluate(n),console.debug(`evaluate Cells`,performance.now()-t,`ms`)}getArrayFormulasImpactedByChangesOf(e){let t=new xG;for(let n of e){let e=this.getters.getCell(n),r=this.getArrayFormulaSpreadingOn(n);r!==void 0&&t.addPosition(r),!e?.isFormula&&!e?.content&&t.addPosition(n)}for(let e of[...t])t.addMany(this.getArrayFormulasBlockedBy(e.sheetId,e.zone));return t}buildDependencyGraph(){this.blockedArrayFormulas=this.createEmptyPositionSet(),this.spreadingRelations=new OG,this.formulaDependencies=_t(()=>{let e=[];for(let t of this.getters.getSheetIds())for(let n of this.getters.getCells(t))if(n.isFormula){let r=n.compiledFormula.rangeDependencies;for(let i of r)i.invalidSheetName||i.invalidXc||e.push({data:{sheetId:t,zone:E(this.getters.getCellPosition(n.id))},boundingBox:{sheetId:i.sheetId,zone:i.zone}})}return new wG(e)})}evaluateAllCells(){let e=performance.now();this.evaluatedCells=new SV;let t=[];for(let e of this.getters.getSheetIds()){let n=this.getters.getSheetZone(e);t.push({sheetId:e,zone:n})}this.evaluate(t),console.debug(`evaluate all cells`,performance.now()-e,`ms`)}evaluateFormulaResult(e,t,n){let r=yz.Compile(t,e,this.getters);return this.updateCompilationParametersForIsolatedFormula(n),this.evaluateCompiledFormula(e,r)}evaluateCompiledFormula(e,t,n){try{let r=LG(t,this.compilationParams,e,this.buildSafeGetSymbolValue(n),this.compilationParams.evalContext.__originCellPosition);return Ta(r)?Ya(r,FG):FG(r)}catch(e){return Zv(e,``)}}getArrayFormulasBlockedBy(e,t){let n=new xG,r=this.spreadingRelations.searchFormulaPositionsSpreadingOn(e,t);n.addManyPositions(r);let i=[...r].filter(e=>!this.blockedArrayFormulas.has(e));return i.length&&n.deleteManyPositions(i),n.addMany(this.getCellsDependingOn(n)),n}nextRangesToUpdate=new xG;cellsBeingComputed=new Set;symbolsBeingComputed=new Set;evaluate(e){this.cellsBeingComputed=new Set,this.nextRangesToUpdate=new xG(e);let t=0;for(;!this.nextRangesToUpdate.isEmpty()&&t++<30;){this.updateCompilationParameters();let e=[...this.nextRangesToUpdate];this.nextRangesToUpdate.clear(),this.clearEvaluatedRanges(e);for(let t of e){let{left:e,bottom:n,right:r,top:i}=t.zone;for(let a=e;a<=r;a++)for(let e=i;e<=n;e++){let n={sheetId:t.sheetId,col:a,row:e};if(this.nextRangesToUpdate.hasPosition(n))continue;let r=this.computeCell(n);r!==MG&&this.evaluatedCells.set(n,r)}}AG.getAll().forEach(e=>e(this.getters))}t>=30&&console.warn(`Maximum iteration reached while evaluating cells`)}clearEvaluatedRanges(e){for(let t of e){let{left:e,bottom:n,right:r,top:i}=t.zone;for(let a=e;a<=r;a++)for(let e=i;e<=n;e++)this.evaluatedCells.delete({sheetId:t.sheetId,col:a,row:e})}}computeCell(e){let t=this.evaluatedCells.get(e);if(t)return t;this.blockedArrayFormulas.has(e)||this.invalidateSpreading(e),this.spreadingRelations.isArrayFormula(e)&&this.spreadingRelations.removeNode(e);let n=this.getters.getCell(e);if(n===void 0)return MG;let r=n.id,i={format:n.format,locale:this.getters.getLocale()};try{return this.cellsBeingComputed.has(r)?jG:(this.cellsBeingComputed.add(r),n.isFormula?this.computeFormulaCell(e,n):oc(n,i,e))}catch(t){return t.value=t?.value||A.GenericError,t.message=t?.message||ey,t.origin=e,t.errorOriginPosition=t?.errorOriginPosition,cc(t)}finally{this.cellsBeingComputed.delete(r)}}computeAndSave(e){let t=this.computeCell(e);return this.evaluatedCells.has(e)||this.evaluatedCells.set(e,t),t}computeFormulaCell(e,t){let n=LG(t.compiledFormula,this.compilationParams,e.sheetId,this.buildSafeGetSymbolValue(),e);if(!Ta(n)){let r=cc(IG(n),this.getters.getLocale(),t,e);return r.type===`error`&&(r.errorOriginPosition=n.errorOriginPosition??e),r}this.assertSheetHasEnoughSpaceToSpreadFormulaResult(e,n);let r=n.length,i=n[0].length;if(i===0)return cc({value:0},this.getters.getLocale(),t);if(i===1&&r===1)return cc(IG(n[0][0]),this.getters.getLocale(),t);let a={top:e.row,bottom:e.row+i-1,left:e.col,right:e.col+r-1};return this.spreadingRelations.addRelation({resultZone:a,arrayFormulaPosition:e}),this.assertNoMergedCellsInSpreadZone(e,n),PG(r,i,this.checkCollision(e)),PG(r,i,this.spreadValues(e,n)),this.invalidatePositionsDependingOnSpread(e.sheetId,a),cc(IG(n[0][0]),this.getters.getLocale(),t)}invalidatePositionsDependingOnSpread(e,t){let n=this.getCellsDependingOn(Pn(t).map(t=>({sheetId:e,zone:t})));n.delete({sheetId:e,zone:t}),this.nextRangesToUpdate.addMany(n)}assertSheetHasEnoughSpaceToSpreadFormulaResult({sheetId:e,col:t,row:n},r){let i=this.getters.getNumberCols(e),a=this.getters.getNumberRows(e),o=t+r.length<=i,s=n+r[0].length<=a;if(!(o&&s))throw o?new xa(k(`Result couldn't be automatically expanded. Please insert more rows.`)):s?new xa(k(`Result couldn't be automatically expanded. Please insert more columns.`)):new xa(k(`Result couldn't be automatically expanded. Please insert more columns and rows.`))}assertNoMergedCellsInSpreadZone({sheetId:e,col:t,row:n},r){if(this.getters.getMergesInZone(e,{top:n,bottom:n+r[0].length-1,left:t,right:t+r.length-1}).length!==0)throw new xa(k(`Merged cells found in the spill zone. Please unmerge cells before using array formulas.`))}checkCollision(e){let{sheetId:t,col:n,row:r}=e;return(i,a)=>{let o={sheetId:t,col:i+n,row:a+r},s=this.getters.getCell(o);if(s?.isFormula||s?.content||this.getters.getEvaluatedCell(o).type!==`empty`)throw this.blockedArrayFormulas.add(e),new xa(k(`Array result was not expanded because it would overwrite data.`),o);this.blockedArrayFormulas.delete(e)}}spreadValues({sheetId:e,col:t,row:n},r){return(i,a)=>{let o={sheetId:e,col:i+t,row:a+n},s=this.getters.getCell(o),c=cc(IG(r[i][a]),this.getters.getLocale(),s,o);c.type===`error`&&(c.errorOriginPosition=r[i][a].errorOriginPosition??o),this.evaluatedCells.set(o,c)}}invalidateSpreading(e){let t=this.spreadingRelations.getArrayResultZone(e);if(!t)return;for(let n=t.left;n<=t.right;n++)for(let r=t.top;r<=t.bottom;r++){let t={sheetId:e.sheetId,col:n,row:r},i=this.getters.getCell(t);i?.isFormula||i?.content||this.evaluatedCells.delete(t)}let n=e.sheetId;this.invalidatePositionsDependingOnSpread(n,t),this.nextRangesToUpdate.addMany(this.getArrayFormulasBlockedBy(n,t))}buildSafeGetSymbolValue(e){return t=>{if(this.symbolsBeingComputed.has(t))return jG;this.symbolsBeingComputed.add(t);try{return e?.(t)||new ga(k(`Invalid formula`))}finally{this.symbolsBeingComputed.delete(t)}}}getDirectDependencies(e){let t=this.getters.getCell(e);return t?.isFormula?t.compiledFormula.rangeDependencies:[]}getCellsDependingOn(e){return this.formulaDependencies().getCellsDependingOn(e,this.nextRangesToUpdate)}};function PG(e,t,n){for(let r=0;r<e;++r)for(let e=0;e<t;++e)r===0&&e===0||n(r,e)}function FG(e){return e.value===null||e.value===void 0?{...e,value:0}:e}function IG(e){return typeof e.value==`number`&&Math.abs(e.value)>Number.MAX_VALUE?new Ca:FG(e)}function LG(e,t,n,r,i){let a=t.evalContext,o=a.__originCellPosition,s=a.__originSheetId;a.__originCellPosition=i,a.__originSheetId=n;let c=e.execute(e.rangeDependencies,t.referenceDenormalizer,t.ensureRange,r,a);return a.__originCellPosition=o,a.__originSheetId=s,c}var RG=class extends pG{static getters=[`evaluateFormula`,`evaluateFormulaResult`,`evaluateCompiledFormula`,`getCorrespondingFormulaCell`,`getRangeFormattedValues`,`getRangeValues`,`getRangeFormats`,`getEvaluatedCell`,`getEvaluatedCells`,`getEvaluatedCellsInZone`,`getEvaluatedCellsPositions`,`getSpreadZone`,`getArrayFormulaSpreadingOn`,`isArrayFormulaSpillBlocked`,`isEmpty`];shouldRebuildDependenciesGraph=!0;evaluator;positionsToUpdate=[];constructor(e){super(e),this.evaluator=new NG(e.custom,this.getters)}beforeHandle(e){(Rs.has(e.type)||Bs.has(e.type))&&(this.shouldRebuildDependenciesGraph=!0)}handle(e){switch(e.type){case`UPDATE_CELL`:if(!(`content`in e||`format`in e)||this.shouldRebuildDependenciesGraph)return;let 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`:if(e.cellIds)for(let t=0;t<e.cellIds.length;t++)this.positionsToUpdate.push(this.getters.getCellPosition(e.cellIds[t]));else this.evaluator.evaluateAllCells();break}}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,n){let r=this.evaluateFormulaResult(e,t,n);return Ta(r)?Ya(r,e=>e.value):r.value}evaluateFormulaResult(e,t,n){return this.evaluator.evaluateFormulaResult(e,t,n)}evaluateCompiledFormula(e,t,n){return this.evaluator.evaluateCompiledFormula(e,t,n)}getRangeFormattedValues(e){return this.getters.tryGetSheet(e.sheetId)===void 0?[]:this.mapVisiblePositions(e,e=>this.getters.getEvaluatedCell(e).formattedValue)}getRangeValues(e){return this.getters.tryGetSheet(e.sheetId)===void 0?[]:this.mapVisiblePositions(e,e=>this.getters.getEvaluatedCell(e).value)}getRangeFormats(e){let t=this.getters.tryGetSheet(e.sheetId);return t===void 0?[]: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 Fn(t).map(({col:t,row:n})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}))}getSpreadZone(e,t={ignoreSpillError:!1}){return this.evaluator.getSpreadZone(e,t)}getArrayFormulaSpreadingOn(e){return this.evaluator.getArrayFormulaSpreadingOn(e)}isArrayFormulaSpillBlocked(e){return this.evaluator.isArrayFormulaSpillBlocked(e)}isEmpty(e,t){return Fn(t).map(({col:t,row:n})=>this.getEvaluatedCell({sheetId:e,col:t,row:n})).every(e=>e.type===`empty`)}mapVisiblePositions(e,t){let{sheetId:n,zone:r}=e;return Fn(r).reduce((e,r)=>{let{col:i,row:a}=r;return!this.getters.isColHidden(n,i)&&!this.getters.isRowHidden(n,a)&&e.push(t({sheetId:n,...r})),e},[])}exportForExcel(e){for(let t of e.sheets)t.cellValues={},t.formulaSpillRanges={};for(let t of this.evaluator.getEvaluatedPositions()){let n=this.evaluator.getEvaluatedCell(t),r=T(t.col,t.row),i=n.value,a=!1,o,s=!0,c=e.sheets.find(e=>e.id===t.sheetId),l=this.getCorrespondingFormulaCell(t);if(l){let u=this.getters.getCell(t);if(s=l.compiledFormula.areAllFunctionsExportableToExcel(),a=s&&(u?.isFormula?u.compiledFormula.toFormulaString(this.getters):u?.content)===l.compiledFormula.toFormulaString(this.getters),!s&&i!==``){o=(i??``).toString();let t=n.format;if(t){let n=Sc(t,e.formats);c.formats[r]=n}}}let u=c.cells[r],d;d=s&&a&&l?.isFormula?l.compiledFormula.toFormulaString(this.getters,{useBoundedReference:!0}):s?u:o,c.cells[r]=d,c.cellValues[r]=i===A.BadExpression?void 0:i;let f=this.getSpreadZone(t);f&&(c.formulaSpillRanges[r]=this.getters.getRangeString(this.getters.getRangeFromZone(t.sheetId,f),t.sheetId))}}getCorrespondingFormulaCell(e){let t=this.getters.getCell(e);if(t&&t.isFormula)return t.compiledFormula.isBadExpression?void 0:t;if(t&&t.content)return;let n=this.getArrayFormulaSpreadingOn(e);if(n===void 0)return;let r=this.getters.getCell(n);if(r?.isFormula)return r}};let zG=new B;zG.add(`data_validation_checkbox`,(e,t)=>{if(e.isCellValidCheckbox(t)){let n=!!e.getEvaluatedCell(t).value;return{svg:n?AO:OO,hoverSvg:n?AO:kO,priority:2,horizontalAlign:`center`,size:17,margin:2,position:t,type:`data_validation_checkbox`,onClick:(e,t)=>{let r=t.model.getters.getCell(e);if(t.model.getters.isReadonly()||r?.isFormula)return;let i=n?`FALSE`:`TRUE`;t.model.dispatch(`UPDATE_CELL`,{...e,content:i})}}}}),zG.add(`data_validation_list_chip_icon`,(e,t)=>{if(e.isReadonly())return;let n=e.getDataValidationChipStyle(t);if(!e.cellHasListDataValidationIcon(t)&&!n)return;let r=e.getCellComputedStyle(t),i=n||r;return{svg:TO(i),hoverSvg:DO(i),priority:2,horizontalAlign:`right`,size:zl(r),margin:4,position:t,onClick:(e,t)=>{let{col:n,row:r}=e;t.model.selection.selectCell(n,r),t.startCellEdition()},type:`data_validation_list_chip_icon`}}),zG.add(`conditional_formatting`,(e,t)=>{let n=e.getConditionalIcon(t);if(n){let r=e.getCellStyle(t);return{type:`conditional_formatting`,svg:NO[n].svg,priority:1,horizontalAlign:`left`,size:zl(r),margin:4,position:t}}}),zG.add(`pivot_collapse`,(e,t)=>{if(!e.isSpillPivotFormula(t))return;let n=e.getPivotCellFromPosition(t),r=e.getPivotIdFromPosition(t);if(n.type===`HEADER`&&r&&n.domain.length){let i=e.getPivotCoreDefinition(r),a=e.isDashboard(),o=n.dimension===`COL`?i.columns:i.rows,s=!a&&!e.shouldShowFormulas()&&n.domain.length!==o.length,c=(i.collapsedDomains?.[n.dimension]??[]).some(e=>w(e,n.domain)),l=n.dimension===`ROW`?(n.domain.length-1)*15:0;return{type:`pivot_collapse`,priority:4,horizontalAlign:`left`,size:s||!a&&n.dimension===`ROW`&&i.rows.length>1?12:0,margin:s?4+l:l,svg:s?jO(c,!1):void 0,hoverSvg:s?jO(c,!0):void 0,position:t,onClick:Rh}}}),zG.add(`pivot_dashboard_sorting`,(e,t)=>{if(!e.isDashboard()||e.getPivotCellFromPosition(t).type!==`MEASURE_HEADER`)return;let n=e.getPivotCellSortDirection(t);if(n!==`asc`&&n!==`desc`)return;let r=e.getCellComputedStyle(t);return{type:`pivot_dashboard_sorting_${n}`,priority:5,horizontalAlign:`right`,size:zl(r),margin:0,svg:n===`asc`?EO(r):TO(r),position:t,onClick:void 0}});var BG=class extends pG{static getters=[`doesCellHaveGridIcon`,`getCellIcons`,`getCellIconRect`];cellIconsCache={};handle(e){e.type!==`SET_VIEWPORT_OFFSET`&&(this.cellIconsCache={})}getCellIcons(e){return this.cellIconsCache[e.sheetId]||(this.cellIconsCache[e.sheetId]={}),this.cellIconsCache[e.sheetId][e.col]||(this.cellIconsCache[e.sheetId][e.col]={}),this.cellIconsCache[e.sheetId][e.col][e.row]||(this.cellIconsCache[e.sheetId][e.col][e.row]=this.computeCellIcons(e)),this.cellIconsCache[e.sheetId][e.col][e.row]}getCellIconRect(e,t){let n=e.position,r=this.getters.getCell(n);return{x:this.getIconHorizontalPosition(t,e.horizontalAlign,e),y:this.getters.computeTextYCoordinate(t,e.size,r?.style?.verticalAlign),width:e.size,height:e.size}}getIconHorizontalPosition(e,t,n){let r=e.x,i=e.x+e.width;switch(t){case`right`:return i-n.margin-n.size;case`left`:return r+n.margin;default:let e=Math.floor((i-r-n.size)/2);return i-n.size-e}}computeCellIcons(e){let t={left:void 0,right:void 0,center:void 0},n=zG.getAll();for(let r of n){let n=r(this.getters,e);n&&(!t[n.horizontalAlign]||n.priority>t[n.horizontalAlign].priority)&&(t[n.horizontalAlign]=n)}if(t.center&&(t.left||t.right)){let e=Math.max(t.left?.priority||0,t.right?.priority||0);t.center.priority<e?t.center=void 0:(t.left=void 0,t.right=void 0)}return Object.values(t).filter(C)}doesCellHaveGridIcon(e){return!!this.getCellIcons(e).length}};let VG=/"(#[0-9a-fA-F]{6})"/g;function HG(e){let t=[{leadColor:Mr(255,0,0),colors:[]},{leadColor:Mr(255,128,0),colors:[]},{leadColor:Mr(128,128,0),colors:[]},{leadColor:Mr(128,255,0),colors:[]},{leadColor:Mr(0,255,0),colors:[]},{leadColor:Mr(0,255,128),colors:[]},{leadColor:Mr(0,255,255),colors:[]},{leadColor:Mr(0,127,255),colors:[]},{leadColor:Mr(0,0,255),colors:[]},{leadColor:Mr(127,0,255),colors:[]},{leadColor:Mr(128,0,128),colors:[]},{leadColor:Mr(255,0,128),colors:[]}];for(let n of e.map(Ir)){let e=500,r=0;t.forEach((t,i)=>{let a=UG(n,t.leadColor);e>a&&(e=a,r=i)}),t[r].colors.push(n)}return t.map(e=>e.colors.sort((e,t)=>Rr(e).s-Rr(t).s)).flat().map(Fr)}function UG(e,t){return Math.sqrt((e.r-t.r)**2+(e.g-t.g)**2+(e.b-t.b)**2)}var WG=class extends pG{customColors={};shouldUpdateColors=!0;static getters=[`getCustomColors`];constructor(e){super(e),this.tryToAddColors(e.customColors??[])}handle(e){switch(e.type){case`START`:for(let e of this.getters.getSheetIds()){for(let t of this.getters.getChartIds(e))this.tryToAddColors(this.getChartColors(t));for(let t of this.getters.getFigures(e))this.tryToAddColors(this.getCarouselColors(e,t.id))}break;case`UPDATE_CHART`:case`CREATE_CHART`:this.tryToAddColors(this.getChartColors(e.chartId));break;case`CREATE_CAROUSEL`:case`UPDATE_CAROUSEL`:this.tryToAddColors(this.getCarouselColors(e.sheetId,e.figureId));break;case`COLOR_SHEET`:e.color&&this.tryToAddColors([e.color]);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);break}}finalize(){this.shouldUpdateColors&&(this.history.update(`shouldUpdateColors`,!1),this.tryToAddColors(this.computeCustomColors()))}getCustomColors(){return HG(Object.keys(this.customColors))}computeCustomColors(){let e=[];for(let t of this.getters.getSheetIds())e=e.concat(this.getSheetColors(t),this.getColorsFromCells(t),this.getFormattingColors(t),this.getTableColors(t));return[...new Set([...e])]}getSheetColors(e){let t=this.getters.getSheet(e);return t.color?[t.color]:[]}getColorsFromCells(e){let t=Object.values(this.getters.getCells(e)),n=new Set;for(let e of t)e.style?.textColor&&n.add(e.style.textColor),e.style?.fillColor&&n.add(e.style.fillColor);for(let t of this.getters.getBordersColors(e))n.add(t);return[...n]}getFormattingColors(e){let t=this.getters.getConditionalFormats(e),n=[];for(let e of t){let t=e.rule;t.type===`CellIsRule`?(n.push(t.style.textColor),n.push(t.style.fillColor)):t.type===`ColorScaleRule`&&(n.push(Er(t.minimum.color)),n.push(t.midpoint?Er(t.midpoint.color):void 0),n.push(Er(t.maximum.color)))}return n.filter(C)}getChartColors(e){let t=this.getters.getChart(e);return t===void 0?[]:[...JSON.stringify(t.getDefinition()).matchAll(VG)].map(e=>e[1])}getCarouselColors(e,t){if(this.getters.getFigure(e,t)?.tag!==`carousel`)return[];let n=this.getters.getCarousel(t).title?.color;return n?[n]:[]}getTableColors(e){return this.getters.getTables(e).flatMap(e=>{let t=e.config,n=this.getters.getTableStyle(t.styleId);return[this.getTableStyleElementColors(n.wholeTable),t.numberOfHeaders>0?this.getTableStyleElementColors(n.headerRow):[],t.totalRow?this.getTableStyleElementColors(n.totalRow):[],t.bandedColumns?this.getTableStyleElementColors(n.firstColumnStripe):[],t.bandedColumns?this.getTableStyleElementColors(n.secondColumnStripe):[],t.bandedRows?this.getTableStyleElementColors(n.firstRowStripe):[],t.bandedRows?this.getTableStyleElementColors(n.secondRowStripe):[],t.firstColumn?this.getTableStyleElementColors(n.firstColumn):[],t.lastColumn?this.getTableStyleElementColors(n.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(C):[]}tryToAddColors(e){for(let t of e){if(!kr(t))continue;let e=Or(t);t&&!_e.includes(e)&&this.history.update(`customColors`,e,!0)}}},GG=class extends pG{static getters=[`canCreateDynamicTableOnZones`,`doesZonesContainFilter`,`getFilter`,`getFilters`,`getTable`,`getTables`,`getTablesOverlappingZones`,`getFilterId`,`getFilterHeaders`,`isFilterHeader`];tables={};handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)||e.type===`EVALUATE_CELLS`){this.tables={};return}switch(e.type){case`CREATE_TABLE`:case`REMOVE_TABLE`:case`UPDATE_TABLE`:case`DELETE_CONTENT`:case`REFRESH_PIVOT`:this.tables={};break}}finalize(){for(let e of this.getters.getSheetIds())this.tables[e]||(this.tables[e]=this.computeTables(e))}computeTables(e){let t=[],n=[...this.getters.getCoreTables(e)].filter(e=>e.type!==`dynamic`);t.push(...n);for(let r of this.getDynamicTables(e)){let i=this.coreTableToTable(e,r),a=i.range.zone,o=a.left,s=a.top;if(!n.some(e=>An(o,s,e.range.zone))){for(let e of n){let t=e.range.zone;On(a,t)&&(a=t.left>a.left?{...a,right:Math.min(a.right,t.left-1)}:{...a,bottom:Math.min(a.bottom,t.top-1)})}t.push({...i,range:this.getters.getRangeFromZone(e,a)})}}return t}getDynamicTables(e){let t=this.getters.getCoreTables(e).filter(e=>e.type===`dynamic`),n=this.getTablesFromPivots(e),r=new Set(n.map(t=>this.getters.getRangeString(t.range,e))),i=t.filter(t=>!r.has(this.getters.getRangeString(t.range,e)));return[...n,...i]}getTablesFromPivots(e){let t=[];for(let{position:n,pivotStyle:r,pivotId:i}of this.getters.getAllPivotArrayFormulas()){if(!this.getters.getPivot(i).isValid())continue;let a=this.getters.getSpreadZone(n),o=this.getters.getCell(n);n.sheetId!==e||!a||!o||r.tableStyleId===`None`||t.push({type:`dynamic`,id:`pivot_table_`+i+`_`+o.id,range:this.getters.getRangeFromZone(e,E(n)),config:this.getTableConfigFromPivotStyle(i,r),isPivotTable:!0})}return t}getTableConfigFromPivotStyle(e,t){let n=this.getters.getPivot(e).getCollapsedTableStructure(),{numberOfRows:r,numberOfHeaderRows:i}=n.getPivotTableDimensions(t),a=n.getPivotCells(t)[0]?.[r-1],o=t.displayTotals&&a?.type===`HEADER`&&a.domain.length===0;return{hasFilters:t.hasFilters,totalRow:o,firstColumn:!0,lastColumn:!0,numberOfHeaders:i,bandedRows:t.bandedRows,bandedColumns:t.bandedColumns,styleId:t.tableStyleId}}getFilters(e){return this.getTables(e).filter(e=>e.config.hasFilters).map(e=>e.filters).flat()}getTables(e){return this.tables[e]||[]}getFilter(e){let 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:n}){return this.getTables(e).find(e=>An(t,n,e.range.zone))}getTablesOverlappingZones(e,t){return this.getTables(e).filter(e=>t.some(t=>On(e.range.zone,t)))}doesZonesContainFilter(e,t){return this.getTablesOverlappingZones(e,t).some(e=>e.config.hasFilters)}getFilterHeaders(e){let t=[];for(let n of this.getTables(e)){if(!n.config.hasFilters)continue;let r=n.range.zone,i=r.top;for(let n=r.left;n<=r.right;n++)t.push({sheetId:e,col:n,row:i})}return t}isFilterHeader({sheetId:e,col:t,row:n}){return this.getFilterHeaders(e).some(e=>e.col===t&&e.row===n)}canCreateDynamicTableOnZones(e,t){if(!Yn(t))return!1;let n=wn(...t),r={col:n.left,row:n.top,sheetId:e},i=this.getters.getArrayFormulaSpreadingOn(r);if(!i){let e=this.getters.getEvaluatedCell(r);return e.value===A.SpilledBlocked&&!e.errorOriginPosition}else if(w(i,r)&&Gn(n)===1)return!0;return w(n,this.getters.getSpreadZone(i))}coreTableToTable(e,t){if(t.type!==`dynamic`)return t;let n=t.range.zone,r={sheetId:e,col:n.left,row:n.top},i=this.getters.getSpreadZone(r)??t.range.zone,a=this.getters.getRangeFromZone(e,i),o=this.getDynamicTableFilters(e,t,i);return{id:t.id,range:a,filters:o,config:t.config,isPivotTable:t.isPivotTable}}getDynamicTableFilters(e,t,n){let r=[],{top:i,bottom:a,left:o,right:s}=n;for(let n=o;n<=s;n++){let s=n-o,c={left:n,right:n,top:i,bottom:a},l=KB(this.getDynamicTableFilterId(t.id,s),this.getters.getRangeFromZone(e,c),t.config,this.getters.getRangeFromZone);r.push(l)}return r}getDynamicTableFilterId(e,t){return e+`_`+t}isTableExcelExportable(e,t){return t.type===`dynamic`?!1:!Fn(t.range.zone).some(t=>this.getters.getArrayFormulaSpreadingOn({sheetId:e,...t}))}exportForExcel(e){for(let t of e.sheets){let n=[];for(let r of t.tables){let i=mn(r.range),a={sheetId:t.id,col:i.left,row:i.top},o=this.getters.getCoreTable(a),s=this.getTable(a);if(!o||!s||this.isTableExcelExportable(t.id,o)){n.push(r);continue}t.styles=t.styles||{},t.borders=t.borders||{};for(let n of Fn(s.range.zone)){let r={sheetId:t.id,...n},i=this.getters.getCellComputedStyle(r),a=this.getters.getCellComputedBorder(r),o=T(n.col,n.row);if(!ft(i)){let n=Sc(i,e.styles);t.styles[o]=n}if(a){let n=Sc(a,e.borders);t.borders[o]=n}}}t.tables=n}}},KG=class extends pG{static getters=[`getChartRuntime`,`getStyleOfSingleCellChart`];charts={};createRuntimeChart=x_(this.getters);handle(e){if(Rs.has(e.type)||Vs.has(e.type)||zs.has(e.type))for(let e in this.charts)this.charts[e]=void 0;switch(e.type){case`UPDATE_CHART`:case`CREATE_CHART`:this.charts[e.chartId]=void 0;break;case`DELETE_CHART`:this.charts[e.chartId]=void 0;break;case`DELETE_SHEET`:for(let e in this.charts)this.getters.isChartDefined(e)||(this.charts[e]=void 0);break}}getChartRuntime(e){if(!this.charts[e]){let t=this.getters.getChart(e);if(!t)throw 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:dd(e)};if(!t)return{background:oe,fontColor:dd(oe)};let n=t.zone.left,r=t.zone.top,i=t.sheetId,a=this.getters.getCellComputedStyle({sheetId:i,col:n,row:r}),o=a.fillColor||`#FFFFFF`;return{background:o,fontColor:a.textColor||dd(o)}}async exportForExcel(e){for(let t of e.sheets){t.images||=[];let e=this.getters.getFigures(t.id),n=[];for(let r of e){if(!r||r.tag!==`chart`)continue;let e=this.getters.getChartIds(t.id).find(e=>this.getters.getFigureIdFromChartId(e)===r.id);if(!e)continue;let i=this.getters.getChart(e),a=i?.getDefinitionForExcel(this.getters);if(a)n.push({...r,data:a});else{if(!i)continue;let n=this.getters.getChartType(e),a=await qp(this.getters.getChartRuntime(e),r,n);a&&t.images.push({...r,tag:`image`,data:{mimetype:`image/png`,path:a,size:{width:r.width,height:r.height}}})}}t.charts=n}}},qG=class extends pG{static getters=[`getConditionalIcon`,`getCellConditionalFormatStyle`,`getConditionalDataBar`];isStale=!0;computedStyles={};computedIcons={};computedDataBars={};handle(e){(Rs.has(e.type)||Vs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e))&&(this.isStale=!0)}finalize(){if(this.isStale){for(let e of this.getters.getSheetIds())this.computedStyles[e]=_t(()=>this.getComputedStyles(e)),this.computedIcons[e]=_t(()=>this.getComputedIcons(e)),this.computedDataBars[e]=_t(()=>this.getComputedDataBars(e));this.isStale=!1}}getCellConditionalFormatStyle(e){let{sheetId:t,col:n,row:r}=e,i=this.computedStyles[t]();return i&&i[n]?.[r]}getConditionalIcon({sheetId:e,col:t,row:n}){let r=this.computedIcons[e]();return r&&r[t]?.[n]}getConditionalDataBar({sheetId:e,col:t,row:n}){let r=this.computedDataBars[e]();return r&&r[t]?.[n]}getComputedStyles(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())switch(n.rule.type){case`ColorScaleRule`:for(let r of n.ranges)this.applyColorScale(e,r,n.rule,t);break;case`CellIsRule`:let r=n.rule.values.map(t=>{if(t.startsWith(`=`))return yz.Compile(t,e,this.getters)}),i=Z.get(n.rule.operator),a={...n.rule,type:n.rule.operator},o=n.ranges.map(t=>this.getters.getRangeFromSheetXC(e,t)),s=i.preComputeCriterion?.(a,o,this.getters);for(let i of n.ranges){let a=this.getters.getRangeFromSheetXC(e,i).zone;for(let i=a.top;i<=a.bottom;i++)for(let o=a.left;o<=a.right;o++){let c={sheetId:e,col:o,row:i},l=n.rule.values.map((t,n)=>{let s=r[n];return s?this.getters.getTranslatedCellFormula(e,o-a.left,i-a.top,s):t});this.getRuleResultForTarget(c,{...n.rule,values:l},s)&&(t[o]||(t[o]=[]),t[o][i]=Object.assign(t[o]?.[i]||{},n.rule.style))}}break}return t}getComputedIcons(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())if(n.rule.type===`IconSetRule`)for(let r of n.ranges)this.applyIcon(e,r,n.rule,t);return t}getComputedDataBars(e){let t={};for(let n of this.getters.getConditionalFormats(e).reverse())if(n.rule.type===`DataBarRule`)for(let r of n.ranges)this.applyDataBar(e,r,n.rule,t);return t}parsePoint(e,t,n,r){let i=this.getters.getRangeFromSheetXC(e,t).zone,a=this.getters.getEvaluatedCellsInZone(e,i).filter(e=>e.type===`number`).map(e=>e.value);switch(n.type){case`value`:return r===`max`?Lt(a):Rt(a);case`number`:return Number(n.value);case`percentage`:let t=Rt(a);return t+(Lt(a)-t)*Number(n.value)/100;case`percentile`:return oa(a,Number(n.value)/100,!0);case`formula`:let i=n.value&&this.getters.evaluateFormula(e,n.value);return typeof i==`number`?i:null;default:return null}}applyIcon(e,t,n,r){let i=this.parsePoint(e,t,n.lowerInflectionPoint),a=this.parsePoint(e,t,n.upperInflectionPoint);if(i===null||a===null||i>a)return;let o=this.getters.getRangeFromSheetXC(e,t).zone,s=[n.icons.upper,n.icons.middle,n.icons.lower];for(let t=o.top;t<=o.bottom;t++)for(let c=o.left;c<=o.right;c++){let o=this.getters.getEvaluatedCell({sheetId:e,col:c,row:t});if(o.type!==`number`)continue;let l=this.computeIcon(o.value,a,n.upperInflectionPoint.operator,i,n.lowerInflectionPoint.operator,s);r[c]||(r[c]=[]),r[c][t]=l}}computeIcon(e,t,n,r,i,a){return n===`ge`&&e>=t||n===`gt`&&e>t?a[0]:i===`ge`&&e>=r||i===`gt`&&e>r?a[1]:a[2]}applyDataBar(e,t,n,r){let i=this.getters.getRangeFromSheetXC(e,n.rangeValues||t),a=Lt(this.getters.getEvaluatedCellsInZone(e,i.zone).filter(e=>e.type===`number`).map(e=>e.value));if(a<=0)return;let o=n.color,s=this.getters.getRangeFromSheetXC(e,t).zone,c=i.zone;for(let t=s.top;t<=s.bottom;t++)for(let n=s.left;n<=s.right;n++){let i=n-s.left+c.left,l=t-s.top+c.top,u=this.getters.getEvaluatedCell({sheetId:e,col:i,row:l});!An(i,l,c)||u.type!==`number`||u.value<=0||(r[n]||(r[n]=[]),r[n][t]={color:Er(o),percentage:u.value*100/a})}}applyColorScale(e,t,n,r){let i=this.parsePoint(e,t,n.minimum,`min`),a=n.midpoint?this.parsePoint(e,t,n.midpoint):null,o=this.parsePoint(e,t,n.maximum,`max`);if(i===null||o===null||i>=o||a!==null&&(i>=a||a>=o))return;let s=this.getters.getRangeFromSheetXC(e,t).zone,c=[{value:i,color:n.minimum.color}];n.midpoint&&a!==null&&c.push({value:a,color:n.midpoint.color}),c.push({value:o,color:n.maximum.color});let l=li(c);for(let t=s.top;t<=s.bottom;t++)for(let n=s.left;n<=s.right;n++){let a=this.getters.getEvaluatedCell({sheetId:e,col:n,row:t});if(a.type===`number`){let e=x(a.value,i,o);r[n]||(r[n]=[]),r[n][t]=r[n]?.[t]||{},r[n][t].fillColor=l(e)}}}getRuleResultForTarget(e,t,n){let r=this.getters.getEvaluatedCell(e);if(r.type===`error`)return!1;let{sheetId:i}=e,a=Z.get(t.operator),o=t.values.map(t=>t.startsWith(`=`)?this.getters.evaluateFormula(i,t,e)??``:sc(t,R));if(o.some(Sm))return!1;let s={...t,type:t.operator,values:o.map(bm),dateValue:t.dateValue||`exactDate`};return a.isValueValid(r.value??``,s,n)}};let JG={isValid:!0};var YG=class extends pG{static getters=[`getDataValidationInvalidCriterionValueMessage`,`getInvalidDataValidationMessage`,`getValidationResultForCellValue`,`getDataValidationRangeValues`,`isCellValidCheckbox`,`getDataValidationCellStyle`,`getDataValidationChipStyle`,`isDataValidationInvalid`];validationResults={};criterionPreComputeResult={};handle(e){if(Rs.has(e.type)||e.type===`EVALUATE_CELLS`||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)){this.validationResults={},this.criterionPreComputeResult={};return}switch(e.type){case`ADD_DATA_VALIDATION_RULE`:case`REMOVE_DATA_VALIDATION_RULE`:delete this.validationResults[e.sheetId],delete this.criterionPreComputeResult[e.sheetId];break}}isDataValidationInvalid(e){return!this.getValidationResultForCell(e).isValid}getDataValidationCellStyle(e){if(!this.hasChip(e))return this.getDataValidationStyle(e)}getDataValidationChipStyle(e){if(this.hasChip(e))return this.getDataValidationStyle(e)??{fillColor:`#E7E9ED`}}getInvalidDataValidationMessage(e){let t=this.getValidationResultForCell(e);return t.isValid?void 0:t.error}getDataValidationInvalidCriterionValueMessage(e,t){let n=Z.get(e);return t.startsWith(`=`)?n.allowedValues===`onlyLiterals`?k(`The value must not be a formula`):this.isValidFormula(t)?void 0:H.CriterionError.validFormula:n.allowedValues===`onlyFormulas`?k(`The value must be a formula`):n.isCriterionValueValid(t)?void 0:n.criterionValueErrorString}getDataValidationRangeValues(e,t){let n=this.getters.getRangeFromSheetXC(e,String(t.values[0])),r=[],i=new Set;for(let e of Fn(n.zone)){let t=this.getters.getEvaluatedCell({...e,sheetId:n.sheetId});t.formattedValue&&!i.has(t.formattedValue)&&(i.add(t.formattedValue),r.push({label:t.formattedValue,value:t.value?.toString()||``}))}return r}isCellValidCheckbox(e){if(!this.getters.isMainCellPosition(e))return!1;let t=this.getters.getValidationRuleForCell(e);return!t||t.criterion.type!==`isBoolean`?!1:this.getValidationResultForCell(e).isValid}getValidationResultForCellValue(e,t){let n=this.getters.getValidationRuleForCell(t);if(!n)return JG;let r=this.getRuleErrorForCellValue(e,t,n);return r?{error:r,rule:n,isValid:!1}:JG}hasChip(e){let t=this.getters.getValidationRuleForCell(e);return(t?.criterion.type===`isValueInList`||t?.criterion.type===`isValueInRange`)&&t.criterion.displayStyle===`chip`}getDataValidationStyle(e){let t=this.getters.getValidationRuleForCell(e);if(!t||this.isDataValidationInvalid(e))return;let n=this.getters.getEvaluatedCell(e),r=this.getValueColor(t,n.value);if(r)return{fillColor:r,textColor:qr(r)}}getValueColor(e,t){if(!(e.criterion.type!==`isValueInList`&&e.criterion.type!==`isValueInRange`)){for(let n in e.criterion.colors)if(n.toLowerCase()===String(t).toLowerCase())return e.criterion.colors[n]}}isValidFormula(e){return!yz.IsBadExpression(e)}getValidationResultForCell(e){let{col:t,row:n,sheetId:r}=e;return this.validationResults[r]||(this.validationResults[r]=this.computeSheetValidationResults(r)),this.validationResults[r][t]?.[n]?.()||JG}computeSheetValidationResults(e){let t={},n=this.getters.getDataValidationRules(e).map(e=>e.ranges);for(let e of rl(n.flat())){let{col:n,row:r}=e;t[n]||(t[n]=[]),t[n][r]=_t(()=>{let t=this.getters.getEvaluatedCell(e);return t.type===`empty`?JG:this.getValidationResultForCellValue(t.value,e)})}return t}getRuleErrorForCellValue(e,t,n){let{sheetId:r}=t,i=n.criterion,a=Z.get(i.type),o=this.getCellOffsetInRule(t,n),s=this.getEvaluatedCriterionValues(r,t,o,i);if(s.some(Sm))return;let c={...i,values:s.map(bm)};this.criterionPreComputeResult[r]||(this.criterionPreComputeResult[r]={});let l=this.criterionPreComputeResult[r][n.id];if(l===void 0&&(l=a.preComputeCriterion?.(n.criterion,n.ranges,this.getters),this.criterionPreComputeResult[r][n.id]=l),!a.isValueValid(e,c,l))return a.getErrorString(c,this.getters,r)}getCellOffsetInRule(e,t){let n=t.ranges.find(t=>An(e.col,e.row,t.zone));if(!n)throw Error(`The cell is not in any range of the rule`);return{col:e.col-n.zone.left,row:e.row-n.zone.top}}getEvaluatedCriterionValues(e,t,n,r){return r.values.map(r=>{if(!r.startsWith(`=`))return sc(r,R);let i=yz.Compile(r,e,this.getters),a=this.getters.getTranslatedCellFormula(e,n.col,n.row,i);return this.getters.evaluateFormula(e,a,t)})}};let XG=[`SUBTOTAL`,`PIVOT`];var ZG=class extends pG{static getters=[`getCellsWithTrackedFormula`];trackedCells={};handle(e){switch(e.type){case`START`:for(let e of XG)this.trackedCells[e]={};for(let e of this.getters.getSheetIds())for(let t of this.getters.getCells(e))for(let e of XG)Gt(t,e)&&this.history.update(`trackedCells`,e,t.id,t.id);break;case`UPDATE_CELL`:{if(!(`content`in e))return;let t=this.getters.getCell(e);if(!t)return;for(let e of XG)Gt(t,e)?this.history.update(`trackedCells`,e,t.id,t.id):this.trackedCells[e][t.id]&&this.history.update(`trackedCells`,e,t.id,void 0);break}}}getCellsWithTrackedFormula(e){return Object.values(this.trackedCells[e]||{}).filter(t=>t!==void 0&&this.trackedCells[e][t]&&this.getters.tryGetCellPosition(t))}},QG=class extends pG{static getters=[`getRowSize`,`getHeaderSize`,`getMaxAnchorOffset`];tallestCellInRow={};ctx=Dl();beforeHandle(e){switch(e.type){case`ADD_COLUMNS_ROWS`:if(e.dimension===`COL`)return;let t=yt(e.position,e.base),n=Array(e.quantity).fill(void 0),r=Mt(this.tallestCellInRow[e.sheetId],n,t);this.history.update(`tallestCellInRow`,e.sheetId,r);break}}handle(e){switch(e.type){case`START`:case`UPDATE_LOCALE`:for(let e of this.getters.getSheetIds())this.initializeSheet(e);break;case`CREATE_SHEET`:this.initializeSheet(e.sheetId);break;case`DUPLICATE_SHEET`:{let t=b(this.tallestCellInRow[e.sheetId]);this.history.update(`tallestCellInRow`,e.sheetIdTo,t);break}case`DELETE_SHEET`:let t={...this.tallestCellInRow};delete t[e.sheetId],this.history.update(`tallestCellInRow`,t);break;case`REMOVE_COLUMNS_ROWS`:{if(e.dimension===`COL`)return;let t=jt(this.tallestCellInRow[e.sheetId],e.elements);this.history.update(`tallestCellInRow`,e.sheetId,t);break}case`RESIZE_COLUMNS_ROWS`:{let t=e.sheetId;if(e.dimension===`ROW`)for(let n of e.elements){let e=this.getRowTallestCell(t,n);this.history.update(`tallestCellInRow`,t,n,e)}else for(let n of S(0,this.getters.getNumberRows(t)))for(let r of e.elements)this.updateRowSizeForCellChange(t,n,r)}break;case`SET_FORMATTING`:if(e.style&&(`fontSize`in e.style||`wrapping`in e.style||`rotation`in e.style))for(let t of e.target)this.updateRowSizeForZoneChange(e.sheetId,t);break;case`UPDATE_CELL`:this.updateRowSizeForCellChange(e.sheetId,e.row,e.col);break;case`ADD_MERGE`:case`REMOVE_MERGE`:for(let t of e.target)for(let n of Fn(t))this.updateRowSizeForCellChange(e.sheetId,n.row,n.col)}}getRowSize(e,t){return Math.round(this.getters.getUserRowSize(e,t)??this.tallestCellInRow[e][t]?.size??23)}getMaxAnchorOffset(e,t,n){let{numberOfRows:r,numberOfCols:i}=this.getters.getSheetSize(e),a=0;for(;a<t&&r>0;r--)a+=this.getRowSize(e,r-1);let o=0;for(;o<n&&i>0;i--)o+=this.getters.getColSize(e,i-1);return{col:i,row:r,offset:{x:o-n,y:a-t}}}getHeaderSize(e,t,n){return this.getters.isHeaderHidden(e,t,n)?0:t===`ROW`?this.getRowSize(e,n):this.getters.getColSize(e,n)}updateRowSizeForZoneChange(e,t){for(let n=t.top;n<=t.bottom;n++){let t=this.getRowTallestCell(e,n);this.history.update(`tallestCellInRow`,e,n,t)}}updateRowSizeForCellChange(e,t,n){let r=this.tallestCellInRow[e]?.[t];if(r?.cell.col===n){let n=this.getRowTallestCell(e,t);this.history.update(`tallestCellInRow`,e,t,n)}let i=this.getCellHeight({sheetId:e,col:n,row:t});if(!(i<=23)&&(!r&&i>23||r&&i>r.size)){let r={cell:{sheetId:e,col:n,row:t},size:i};this.history.update(`tallestCellInRow`,e,t,r)}}initializeSheet(e){let t=[];for(let n=0;n<this.getters.getNumberRows(e);n++){let r=this.getRowTallestCell(e,n);t.push(r)}this.history.update(`tallestCellInRow`,e,t)}getCellHeight(e){if(this.isInMultiRowMerge(e))return 23;let t=this.getters.getCell(e),n=this.getters.getColSize(e.sheetId,e.col);return Ol(this.ctx,t,this.getters.getLocale(),n)}isInMultiRowMerge(e){let t=this.getters.getMerge(e);return!!t&&t.bottom!==t.top}getRowTallestCell(e,t){if(this.getters.getUserRowSize(e,t)!==void 0)return;let n=this.getters.getRowCellIds(e,t),r=0,i;for(let e=0;e<n.length;e++){let t=this.getters.getCellById(n[e]);if(!t)continue;let a=this.getters.getCellPosition(t.id),o=this.getCellHeight(a);o>r&&o>23&&(r=o,i={cell:a,size:o})}if(i&&i.size>23)return i}};let $G=`0.00%`;function eK(e){class t extends e{getters;pivotId;cache={};rankAsc={};rankDesc={};runningTotal={};runningTotalInPercent={};constructor(e,t,n){super(t,n),this.getters=n.getters,this.pivotId=e}markAsDirtyForEvaluation(){this.cache={},this.rankAsc={},this.rankDesc={},this.runningTotal={},this.runningTotalInPercent={},super.markAsDirtyForEvaluation?.()}getPivotCellValueAndFormat(e,t){return this.getMeasureDisplayValue(e,t)}_getPivotCellValueAndFormat(e,t){let n=`${e}-${t.map(e=>e.field+`=`+e.value).join(`,`)}`;if(this.cache[n])return this.cache[n];let r=this.getMeasure(e),i=r.computedBy?this.computeMeasure(r,t):super.getPivotCellValueAndFormat(e,t);return r.format?this.cache[n]={...i,format:r.format}:this.cache[n]=i,this.cache[n]}computeMeasure(e,t){if(!e.computedBy)return{value:0};let{columns:n,rows:r}=super.definition;if(e.aggregator&&n.length+r.length!==t.length){let n=this.getValuesToAggregate(e,t),r=mh[e.aggregator];if(!r)return{value:0};try{return r([n],this.getters.getLocale())}catch(t){return Zv(t,e.aggregator.toUpperCase())}}let i=this.getters.getMeasureCompiledFormula(this.pivotId,e),a=this.getters.evaluateCompiledFormula(e.computedBy.sheetId,i,e=>{let{columns:n,rows:r}=this.definition;if(n.find(t=>t.nameWithGranularity===e)){let{colDomain:n}=Fz(this,t),r=n.findIndex(t=>t.field===e);return r===-1?new ya:this.getPivotHeaderValueAndFormat(n.slice(0,r+1))}if(r.find(t=>t.nameWithGranularity===e)){let{rowDomain:n}=Fz(this,t),r=n.findIndex(t=>t.field===e);return r===-1?new ya:this.getPivotHeaderValueAndFormat(n.slice(0,r+1))}return this.getPivotCellValueAndFormat(e,t)});return Ta(a)?a[0][0]:a}getValuesToAggregate(e,t){let{rowDomain:n,colDomain:r}=Fz(this,t),i=super.getExpandedTableStructure(),a=[];if(r.length===0&&n.length<this.definition.rows.length&&this.definition.rows.length&&this.definition.columns.length){let t=this.treeToLeafDomains(i.getColTree()),r=this.getSubTreeMatchingDomain(i.getRowTree(),n),o=this.treeToLeafDomains(r);for(let r of t)for(let t of o)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t).concat(r)));return a}else if(n.length===this.definition.rows.length&&r.length===0){let t=i.getColTree(),o=this.getSubTreeMatchingDomain(t,r),s=this.treeToLeafDomains(o,r);for(let t of s)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t)));return a}else if(n.length===this.definition.rows.length&&r.length&&r.length<this.definition.columns.length){let t=this.getSubTreeMatchingDomain(i.getColTree(),r),o=this.treeToLeafDomains(t,r);for(let t of o)a.push(this._getPivotCellValueAndFormat(e.id,n.concat(t)));return a}else{let t=i.getRowTree(),o=this.getSubTreeMatchingDomain(t,n),s=this.treeToLeafDomains(o,n);for(let t of s)a.push(this._getPivotCellValueAndFormat(e.id,t.concat(r)));return a}}getSubTreeMatchingDomain(e,t,n=0){if(n>t.length)return[];if(t.length===n)return e;for(let r of e){let e=Ch(this.definition.getDimension(r.field),t[n]?.value);if(r.field===t[n]?.field&&r.value===e)return this.getSubTreeMatchingDomain(r.children,t,n+1)}return[]}treeToLeafDomains(e,t=[]){let n=[];for(let r of e){let e=this.definition.getDimension(r.field),i=[...t,{field:r.field,value:r.value,type:e.type}];r.children.length===0?n.push(i):n.push(...this.treeToLeafDomains(r.children,i))}return n}getMeasureDisplayValue(e,t){let n=this.getMeasure(e),r=this._getPivotCellValueAndFormat(e,t);if(!n.display||n.display.type===`no_calculations`||r.message)return r;let i=n.display.fieldNameWithGranularity;if(i&&!this.isFieldInPivot(i))return{value:A.NotAvailable,message:k(`Field "%s" not found in pivot for measure display calculation`,i)};try{let e=n.display;switch(e.type){case`%_of_grand_total`:return this.asPercentOfGrandTotal(r,n);case`%_of_col_total`:return this.asPercentOfColumnTotal(r,n,t);case`%_of_row_total`:return this.asPercentOfRowTotal(r,n,t);case`%_of_parent_row_total`:return this.asPercentOfParentRowTotal(r,n,t);case`%_of_parent_col_total`:return this.asPercentOfParentColumnTotal(r,n,t);case`index`:return this.asIndex(r,n,t);case`%_of_parent_total`:return this.asPercentOfParentTotal(r,n,t,e);case`running_total`:return this.asRunningTotal(r,n,t,e,`running_total`);case`%_running_total`:return this.asRunningTotal(r,n,t,e,`%_running_total`);case`rank_asc`:return this.asRank(r,n,t,e,`asc`);case`rank_desc`:return this.asRank(r,n,t,e,`desc`);case`%_of`:return this.asPercentOf(r,n,t,e);case`difference_from`:return this.asDifferenceFrom(r,n,t,e);case`%_difference_from`:return this.asDifferenceFromInPercent(r,n,t,e)}return r}catch(e){return Zv(e,`COMPUTE_MEASURE_DISPLAY_VALUE`)}}asPercentOfGrandTotal(e,t){let n=this.getGrandTotal(t.id);return n===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/n,format:$G}}asPercentOfRowTotal(e,t,n){let r=this.getRowTotal(t.id,n);return r===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/r,format:$G}}asPercentOfColumnTotal(e,t,n){let r=this.getColumnTotal(t.id,n);return r===0?{value:A.DivisionByZero}:{value:this.measureValueToNumber(e)/r,format:$G}}asPercentOfParentRowTotal(e,t,n){let r=Nz(this,n),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,r));return i===0?{value:``}:{value:this.measureValueToNumber(e)/i,format:$G}}asPercentOfParentColumnTotal(e,t,n){let r=Pz(this,n),i=this.measureValueToNumber(this._getPivotCellValueAndFormat(t.id,r));return i===0?{value:``}:{value:this.measureValueToNumber(e)/i,format:$G}}asPercentOfParentTotal(e,t,n,r){let{fieldNameWithGranularity:i}=r;if(!i)return e;if(!Uz(i,n))return{value:``};let a=Vz(this,i,n),o=this._getPivotCellValueAndFormat(t.id,a),s=this.measureValueToNumber(o);return s===0?{value:``}:{value:this.measureValueToNumber(e)/s,format:$G}}asIndex(e,t,n){let r=this.measureValueToNumber(e),i=this.getRowTotal(t.id,n),a=this.getColumnTotal(t.id,n),o=this.getGrandTotal(t.id);return i===0||a===0?{value:A.DivisionByZero}:{value:r*o/(a*i),format:void 0}}asRunningTotal(e,t,n,r,i){let{fieldNameWithGranularity:a}=r;if(!a)return e;let o=i===`running_total`?this.runningTotal:this.runningTotalInPercent,s=o[t.id]?.[a];s||(s=this.computeRunningTotal(t,a,i),o[t.id]||(o[t.id]={}),o[t.id][a]=s);let{rowDomain:c,colDomain:l}=Fz(this,n),u=Kz(l),d=Kz(c),f=s[u]?.[d];return f===void 0&&(f=this.getPreviousRunningTotalValue(a,n,s)),{value:f??``,format:i===`running_total`?e.format:$G}}asPercentOf(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a),s=this.strictMeasureValueToNumber(e);return o===0||o===`sameValue`&&s===0?{value:A.DivisionByZero}:!o||o===`sameValue`&&!s?{value:``}:o===`sameValue`?{value:1,format:$G}:s===void 0?{value:A.NullError}:{value:s/o,format:$G}}asDifferenceFrom(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a)||0;return o===`sameValue`?{value:``}:{value:this.measureValueToNumber(e)-o,format:e.format}}asDifferenceFromInPercent(e,t,n,r){let{fieldNameWithGranularity:i,value:a}=r;if(a===void 0||!i)return e;if(!Uz(i,n))return{value:``};let o=this.getComparisonValue(t,n,i,a),s=this.strictMeasureValueToNumber(e);return o===0?{value:A.DivisionByZero}:!o||o===`sameValue`?{value:``}:s===void 0?{value:A.NullError}:{value:(s-o)/o,format:$G}}asRank(e,t,n,r,i){let{fieldNameWithGranularity:a}=r;if(!a)return e;if(!Uz(a,n))return{value:``};let o=i===`asc`?this.rankAsc:this.rankDesc,s=o[t.id]?.[a];s||(s=this.computeRank(t,a,i),o[t.id]||(o[t.id]={}),o[t.id][a]=s);let{rowDomain:c,colDomain:l}=Fz(this,n),u=Kz(l),d=Kz(c);return{value:s[u]?.[d]??``}}computeRank(e,t,n){let r={},i=Wz(this,t),a=i===`row`?`column`:`row`,o=this.getPivotValueCells(e.id);i===`column`&&(o=Za(o));for(let s of o){let o=Kz(Iz(this,a,s[0].domain)),c=s.map(t=>({...t,value:this.strictMeasureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain)),rowDomain:Iz(this,i,t.domain)})).filter(e=>Uz(t,e.rowDomain)),l=Object.groupBy(c,e=>Jz(e.rowDomain,t));for(let e in l)l[e]=Bt(l[e]||[],e=>e.value).filter(e=>e.value!==void 0).sort((e,t)=>n===`asc`?e.value-t.value:t.value-e.value);r[o]={};for(let e of c){let n=Kz(Iz(this,i,e.domain)),a=l[Jz(e.rowDomain,t)];if(!a)continue;let s=a.findIndex(t=>t.value===e.value);s!==-1&&(r[o][n]=s+1)}}return i===`row`?r:Vt(r)}computeRunningTotal(e,t,n){let r={},i=Wz(this,t),a=i===`row`?`column`:`row`,o=this.getPivotValueCells(e.id);i===`column`&&(o=Za(o));for(let s of o){let o=Kz(Iz(this,a,s[0].domain));r[o]={};let c={},l=s.map(t=>({...t,rowDomain:Iz(this,i,t.domain),value:this.measureValueToNumber(this._getPivotCellValueAndFormat(e.id,t.domain))})).filter(e=>Uz(t,e.rowDomain));for(let e of l){let n=Kz(e.rowDomain),i=Yz(e.rowDomain,t),a=(c[i]||0)+e.value;c[i]=a,r[o][n]=a}if(n===`%_running_total`)for(let e of l){let n=e.rowDomain,i=Kz(n),a=Yz(n,t),s=r[o][i]||0,l=c[a];r[o][i]=l?s/l:void 0}}return i===`row`?r:Vt(r)}getPreviousRunningTotalValue(e,t,n){let r=this.definition.getDimension(e);if(r.type!==`date`&&r.type!==`datetime`)return;let i=Wz(this,e),{rowDomain:a,colDomain:o}=Fz(this,t),s=i===`row`?a:o,c=i===`row`?o:a,l=s.find(t=>t.field===e)?.value;if(l===void 0)return;let u=Kz(c),d=Yz(s,e),f,p,m=this.getCollapsedTableStructure(),h=i===`row`?m.getRowTree():m.getColTree(),g=(t,n=[])=>{for(let i of t){let t=[...n,{field:i.field,value:i.value,type:i.type}];i.children.length&&g(i.children,t);let a=t.find(t=>t.field===e)?.value,o=Yz(t,e);a===void 0||o!==d||this.compareRunningTotalValues(a,l,r)>=0||(p===void 0||this.compareRunningTotalValues(p,a,r)<0)&&(p=a,f=Kz(t))}};if(g(h),f)return i===`row`?n[u]?.[f]:n[f]?.[u]}compareRunningTotalValues(e,t,n){let r=n.order??`asc`,i=e===null,a=t===null;if(i&&a)return 0;if(i)return r===`asc`?1:-1;if(a)return r===`asc`?-1:1;let o=this.getRunningTotalComparableValue(e,n)-this.getRunningTotalComparableValue(t,n);return r===`asc`?o:-o}getRunningTotalComparableValue(e,t){let n=t.granularity;if(n&&Ym.contains(n)){let t=Xm(n).toComparableValue?.(e);if(t!==void 0)return t}return N(e,R)}getGrandTotal(e){let t=this._getPivotCellValueAndFormat(e,[]);return this.measureValueToNumber(t)}getRowTotal(e,t){let n=Fz(this,t).rowDomain,r=this._getPivotCellValueAndFormat(e,n);return this.measureValueToNumber(r)}getColumnTotal(e,t){let n=Fz(this,t).colDomain,r=this._getPivotCellValueAndFormat(e,n);return this.measureValueToNumber(r)}isFieldInPivot(e){return this.definition.columns.some(t=>t.nameWithGranularity===e)||this.definition.rows.some(t=>t.nameWithGranularity===e)}getComparisonValue(e,t,n,r){let i=r===`(previous)`||r===`(next)`?Gz(this,t,n,r):Hz(t,n,r);if(w(i,t))return`sameValue`;if(!i||!Rz(this,i))throw new ya;let a=this._getPivotCellValueAndFormat(e.id,i);return this.strictMeasureValueToNumber(a)}getPivotValueCells(e){return this.getCollapsedTableStructure().getPivotCells().map(t=>t.filter(t=>t.type===`VALUE`&&t.measure===e)).filter(e=>e.length>0)}measureValueToNumber(e){if(typeof e.value==`number`)return e.value;if(!e.value)return 0;throw Error(`Value ${e.value} is not a number`)}strictMeasureValueToNumber(e){if(typeof e.value==`number`)return e.value;if(e.value)throw Error(`Value ${e.value} is not a number`)}getCollapsedTableStructure(){let e=super.getCollapsedTableStructure();return this.sortTableStructure(e),e}getExpandedTableStructure(){let e=super.getExpandedTableStructure();return this.sortTableStructure(e),e}sortTableStructure(e){if(!this.definition.sortedColumn||e.isSorted)return;let t=this.definition.sortedColumn.measure;jh(this.definition.sortedColumn,this)&&e.sort(t,this.definition.sortedColumn,(e,t)=>this._getPivotCellValueAndFormat(e,t))}}return t}let tK=[`ADD_PIVOT`,`UPDATE_PIVOT`,`REMOVE_PIVOT`];function nK(e){return tK.includes(e.type)}var rK=class extends pG{static getters=[`getPivot`,`getFirstPivotFunction`,`getPivotCellSortDirection`,`getPivotIdFromPosition`,`getPivotIdsFromPosition`,`getPivotCellFromPosition`,`generateNewCalculatedMeasureName`,`isPivotUnused`,`isSpillPivotFormula`,`getAllPivotArrayFormulas`,`getPivotStyleAtPosition`];pivots={};unusedPivotsInFormulas;custom;pivotPositionCache=new SV;shouldInvalidateCache=!1;constructor(e){super(e),this.custom=e.custom}beforeHandle(e){switch(e.type){case`START`:for(let e of this.getters.getPivotIds())this.setupPivot(e)}}handle(e){if(Rs.has(e.type)){this.shouldInvalidateCache=!0;for(let e of this.getters.getPivotIds())this.setupPivot(e,{recreate:!0})}switch(e.type===`UPDATE_CELL`&&(this.shouldInvalidateCache=!0),e.type){case`REFRESH_PIVOT`:this.refreshPivot(e.id);break;case`ADD_PIVOT`:this.unusedPivotsInFormulas?.push(e.pivotId),this.setupPivot(e.pivotId);break;case`DUPLICATE_PIVOT`:this.unusedPivotsInFormulas?.push(e.newPivotId),this.setupPivot(e.newPivotId);break;case`UPDATE_PIVOT`:this.setupPivot(e.pivotId,{recreate:!0});break;case`DELETE_SHEET`:case`UPDATE_CELL`:this.unusedPivotsInFormulas=void 0;break;case`UNDO`:case`REDO`:{this.unusedPivotsInFormulas=void 0;let t=e.commands.filter(nK);for(let e of t){let t=e.pivotId;this.getters.isExistingPivot(t)&&this.setupPivot(t,{recreate:!0})}break}case`UPDATE_LOCALE`:Wh();break}}finalize(){this.shouldInvalidateCache&&=(this.pivotPositionCache=new SV,!1)}getPivotIdFromPosition(e){return this.getPivotIdsFromPosition(e)[0]}getPivotIdsFromPosition(e){if(!this.pivotPositionCache.has(e)){let t=this.getters.getCorrespondingFormulaCell(e);if(t&&t.isFormula){let n=this.getPivotIdsFromFormula(e.sheetId,t.compiledFormula);this.pivotPositionCache.set(e,n)}}return this.pivotPositionCache.get(e)||[]}getPivotIdsFromFormula(e,t){return this.getPivotFunctions(e,t).map(e=>{let t=e.args[0]?.toString();return t&&this.getters.getPivotId(t)}).filter(C)}isSpillPivotFormula(e){let t=this.getters.getCorrespondingFormulaCell(e);return t&&t.isFormula?this.getFirstPivotFunction(e.sheetId,t.compiledFormula)?.functionName===`PIVOT`:!1}getPivotFunctions(e,t){let n=gB(t,this.getters);if(!n.length)return[];let r=[];for(let t of n){let{functionName:n,args:i}=t,a=i.map(t=>{if(t.type===`EMPTY`)return;if(t.type===`STRING`||t.type===`BOOLEAN`||t.type===`NUMBER`)return t.value;let n=BU(t);return this.getters.evaluateFormula(e,n)});r.push({functionName:n,args:a})}return r}getFirstPivotFunction(e,t){return this.getPivotFunctions(e,t)[0]}getPivotCellFromPosition(e){let t=this.getters.getCorrespondingFormulaCell(e);if(!t||!t.isFormula||_B(t.compiledFormula,this.getters)===0)return $z;let n=this.getters.getCellPosition(t.id),r=this.getters.getFirstPivotFunction(e.sheetId,t.compiledFormula);if(!r)return $z;let{functionName:i,args:a}=r,o=a[0];if(!o)return $z;let s=this.getters.getPivotId(o.toString());if(!s)return $z;let c=this.getPivot(s);if(!c.isValid()||i===`PIVOT`&&!this.isMainFunctionPivotSpreadFunction(t))return $z;try{if(i===`PIVOT`){let t=zh(this.getters.getPivotCoreDefinition(s),bm(a[1]),bm(a[2]),bm(a[3]),bm(a[4]),bm(a[5]),this.getters.getLocale()),r=c.getCollapsedTableStructure().getPivotCells(t),i=e.col-n.col,o=e.row-n.row;return r[i][o]}let t=e.row-n.row,r=e.col-n.col;if(a=a.map(e=>Ta(e)?e[r][t]:e),i===`PIVOT.HEADER`&&a.at(-2)===`measure`)return{type:`MEASURE_HEADER`,domain:c.parseArgsToPivotDomain(a.slice(1,-2).map(e=>({value:e}))),measure:a.at(-1)?.toString()||``};if(i===`PIVOT.HEADER`){let e=c.parseArgsToPivotDomain(a.slice(1).map(e=>({value:e})));return{type:`HEADER`,domain:e,dimension:Fz(c,e).colDomain.length?`COL`:`ROW`}}let[o,...l]=a.slice(1);return{type:`VALUE`,domain:c.parseArgsToPivotDomain(l.map(e=>({value:e}))),measure:o?.toString()||``}}catch{return $z}}generateNewCalculatedMeasureName(e){let t=e.map(e=>e.fieldName);return Ht(k(`Calculated measure 1`),t,{compute:(e,t)=>k(`Calculated measure %s`,t)})}getPivot(e){if(!this.getters.isExistingPivot(e))throw Error(`pivot ${e} not found`);return this.pivots[e]}isPivotUnused(e){let{type:t}=this.getters.getPivot(e);return this._getUnusedPivotsInFormulas().includes(e)&&uB.get(t).isPivotUnused(this.getters,e)}getPivotCellSortDirection(e){let t=this.getters.getPivotIdFromPosition(e),n=this.getters.getPivotCellFromPosition(e);if(n.type===`EMPTY`||n.type===`HEADER`||!t)return;let r=this.getters.getPivot(t),i=Fz(r,n.domain).colDomain,a=r.definition.sortedColumn;return a?.measure===n.measure&&w(a.domain,i)?a.order:`none`}refreshPivot(e){this.getters.getPivot(e).init({reload:!0})}setupPivot(e,{recreate:t}={recreate:!1}){let n=b(this.getters.getPivotCoreDefinition(e));if(e in this.pivots)t&&this.pivots[e].onDefinitionChange(n);else{let t=eK(uB.get(n.type).ui);this.pivots[e]=new t(e,this.custom,{definition:n,getters:this.getters})}}_getUnusedPivotsInFormulas(){if(this.unusedPivotsInFormulas!==void 0)return this.unusedPivotsInFormulas;let e=new Set(this.getters.getPivotIds());for(let t of this.getters.getSheetIds())for(let n of this.getters.getCells(t)){let t=this.getters.getCellPosition(n.id),r=this.getPivotIdsFromPosition(t);for(let t of r)if(e.delete(t),!e.size)return this.unusedPivotsInFormulas=[],[]}for(let t of this.getters.getPivotIds()){let n=this.getters.getPivotCoreDefinition(t);for(let r of n.measures)if(r.computedBy){let{sheetId:n}=r.computedBy,i=this.getters.getMeasureCompiledFormula(t,r),a=this.getPivotIdsFromFormula(n,i);for(let t of a)if(e.delete(t),!e.size)return this.unusedPivotsInFormulas=[],[]}}return this.unusedPivotsInFormulas=[...e],this.unusedPivotsInFormulas}getAllPivotArrayFormulas(){let e=[];for(let t of this.getters.getCellsWithTrackedFormula(`PIVOT`)){let n=this.getters.getCellPosition(t);if(this.getters.getEvaluatedCell(n).type===`error`)continue;let r=this.getPivotStyleAtPosition(n);r&&e.push({position:n,...r})}return e}getPivotStyleAtPosition(e){let t=this.getters.getCell(e);if(!t||!t.isFormula||!this.isMainFunctionPivotSpreadFunction(t))return;let n=this.getFirstPivotFunction(e.sheetId,t.compiledFormula);if(!n||n.functionName!==`PIVOT`)return;let r=n.args[0];if(!r)return;let i=this.getters.getPivotId(r.toString());if(i)return{pivotStyle:zh(this.getters.getPivotCoreDefinition(i),bm(n.args[1]),bm(n.args[2]),bm(n.args[3]),bm(n.args[4]),bm(n.args[5]),this.getters.getLocale()),pivotId:i}}isMainFunctionPivotSpreadFunction(e){return e.compiledFormula.isFirstNonWhitespaceSymbol(`PIVOT`)}},iK=class{getters;dispatch;constructor(e,t){this.getters=e,this.dispatch=t}copy(e,t,n=`copyPaste`){}paste(e,t,n){}isPasteAllowed(e,t,n,r){return`Success`}isCutAllowed(e){return`Success`}getPasteTarget(e,t,n,r){return{zones:[],sheetId:e}}convertTextToClipboardData(e){}},aK=class extends iK{copy(e,t,n=`copyPaste`){}pasteFromCopy(e,t,n,r){if(t.length===1)for(let i of wP(t,n))this.pasteZone(e,i.left,i.top,n,r);else for(let i of nn(t))for(let t=i.left;t<=i.right;t++)for(let a=i.top;a<=i.bottom;a++)this.pasteZone(e,t,a,n,r)}pasteZone(e,t,n,r,i){}},oK=class extends aK{isCutAllowed(e){return e.zones.length===1?`Success`:`WrongCutSelection`}copy(e,t,n=`copyPaste`){let r=e.sheetId,{clippedZones:i,rowsIndexes:a,columnsIndexes:o}=e,s=[],c=a.length===1&&o.length===1;for(let t of a){let i=[];for(let s of o){let l={col:s,row:t,sheetId:r},u=this.getters.getCell(l),d=this.getters.getEvaluatedCell(l),f=this.getters.getPivotIdFromPosition(l),p=this.getters.getArrayFormulaSpreadingOn(l);if(n!==`shiftCells`&&f&&p){let t=this.getters.getSpreadZone(p);if((!w(p,l)||!c)&&t&&!e.zones.some(e=>jn(t,e))){let e=this.getters.getPivotCellFromPosition(l),t=Sh(this.getters.getPivotFormulaId(f),e);u={id:u?.id??0,style:u?.style,format:u?.format,content:t,isFormula:!1,parsedValue:d.value}}}else if(n!==`shiftCells`&&p&&!w(p,l)){let e=a.includes(p.row)&&o.includes(p.col)?``:z(d.value,{locale:this.getters.getLocale()});u={id:u?.id??0,style:u?.style,format:d.format,content:e,isFormula:!1,parsedValue:d.value}}i.push({content:u?.isFormula?u.compiledFormula.toFormulaString(this.getters):u?.content??``,style:u?.style,format:u?.format,compiledFormula:u?.isFormula?u?.compiledFormula:void 0,border:this.getters.getCellBorder(l)||void 0,evaluatedCell:d,position:l})}s.push(i)}return{cells:s,zones:i,sheetId:e.sheetId}}isPasteAllowed(e,t,n,r){if(!n.cells)return`Success`;if(r?.isCutOperation&&r?.pasteOption!==void 0)return`WrongPasteOption`;if(t.length>1&&(n.cells.length>1||n.cells[0].length>1))return`WrongPasteSelection`;let i=n.cells.length,a=n.cells[0].length;for(let r of wP(t,n.cells))if(this.getters.doesIntersectMerge(e,r)&&(t.length>1||!this.getters.isSingleCellOrMerge(e,t[0])||i*a!==1))return`WillRemoveExistingMerge`;return`Success`}paste(e,t,n){let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t,n):this.pasteFromCopy(i,r,t.cells,n)}getPasteTarget(e,t,n,r){let i=n.cells[0].length,a=n.cells.length;return r?.isCutOperation?{sheetId:e,zones:[{left:t[0].left,top:t[0].top,right:t[0].left+i-1,bottom:t[0].top+a-1}]}:i===1&&a===1?{zones:[],sheetId:e}:{sheetId:e,zones:wP(t,n.cells)}}pasteFromCut(e,t,n,r){this.clearClippedZones(n);let i=t[0];this.pasteZone(e,i.left,i.top,n.cells,r)}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,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){if(!s)continue;let o={col:t+r,row:n+a,sheetId:e};this.pasteCell(s,o,i)}}pasteCell(e,t,n){let{sheetId:r,col:i,row:a}=t,o=this.getters.getEvaluatedCell(t),s=e?.format||e.evaluatedCell.format;if(n?.pasteOption===`asValue`){this.dispatch(`UPDATE_CELL`,{...t,content:e.evaluatedCell.value?.toString()||``});return}if(n?.pasteOption===`onlyFormat`){this.dispatch(`UPDATE_CELL`,{...t,style:e?.style??null,format:s??o.format});return}let c=e?.content;e?.compiledFormula?.hasDependencies&&!n?.isCutOperation?c=this.getters.getTranslatedCellFormula(r,i-e.position.col,a-e.position.row,e.compiledFormula):e?.compiledFormula?.hasDependencies&&(c=this.getters.getFormulaMovedInSheet(r,e.compiledFormula)),c!==``||e?.format||e?.style?this.dispatch(`UPDATE_CELL`,{...t,content:c,style:e?.style||null,format:e?.format}):o&&this.dispatch(`CLEAR_CELL`,t)}convertTextToClipboardData(e){let t=this.getters.getLocale(),n={cells:[]},r=[],i=0;for(let[t,n]of e.replace(/\r/g,``).split(`
115
115
  `).entries())r.push(n.split(` `)),r[t].length>i&&(i=r[t].length);for(let e of r){let r=[];for(let n=0;n<i;n++){let i=OS(e[n]||``,t);r.push({content:i,evaluatedCell:{formattedValue:i}})}n.cells.push(r)}return n}},sK=class extends BW{static layers=[];getters;ui;selection;dispatch;canDispatch;constructor({getters:e,stateObserver:t,dispatch:n,canDispatch:r,uiActions:i,selection:a}){super(t),this.getters=e,this.ui=i,this.selection=a,this.dispatch=n,this.canDispatch=r}drawLayer(e,t){}},cK=class extends sK{allowDispatch(e){switch(e.type){case`REMOVE_DUPLICATES`:return this.checkValidations(e,this.chainValidations(this.checkSingleRangeSelected,this.checkNoMergeInZone,this.checkRangeContainsValues,this.checkColumnsIncludedInZone),this.chainValidations(this.checkNoColumnProvided,this.checkColumnsAreUnique))}return`Success`}handle(e){switch(e.type){case`REMOVE_DUPLICATES`:this.removeDuplicates(e.columns,e.hasHeader);break;case`TRIM_WHITESPACE`:this.trimWhitespace();break}}removeDuplicates(e,t){let n=this.getters.getActiveSheetId(),r=this.getters.getSelectedZone();t&&(r.top+=1);let i=this.getUniqueRowsIndexes(n,r.top,r.bottom,e),a=i.length;if(a===Mn(r).numberOfRows){this.notifyRowsRemovedAndRemaining(0,a);return}let o=i.map(e=>({left:r.left,top:e,right:r.right,bottom:e})),s=new oK(this.getters,this.dispatch),c=s.copy(SP(n,o),!1);if(!c)return;this.dispatch(`CLEAR_CELLS`,{target:[r],sheetId:n});let l={left:r.left,top:r.top,right:r.left,bottom:r.top};s.paste({zones:[l],sheetId:n},c,{isCutOperation:!1});let u={left:r.left,top:r.top-+!!t,right:r.right,bottom:r.top+a-1};this.selection.selectZone({cell:{col:u.left,row:u.top},zone:u});let d=r.bottom-r.top+1-a;this.notifyRowsRemovedAndRemaining(d,a)}getUniqueRowsIndexes(e,t,n,r){let i=new Map;for(let a of S(t,n+1)){let t=r.map(t=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:a}).value);Object.values(i).some(e=>w(e,t))||(i[a]=t)}return Object.keys(i).map(e=>parseInt(e))}notifyRowsRemovedAndRemaining(e,t){this.ui.notifyUI({type:`info`,text:k(`%s duplicate rows found and removed.
116
- %s unique rows remain.`,e.toString(),t.toString()),sticky:!1})}checkSingleRangeSelected(){return this.getters.getSelectedZones().length===1?`Success`:`MoreThanOneRangeSelected`}checkNoMergeInZone(){let e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZone();return this.getters.getMergesInZone(e,t).length>0?`WillRemoveExistingMerge`:`Success`}checkRangeContainsValues(e){let t=this.getters.getActiveSheetId(),n=this.getters.getSelectedZone();return e.hasHeader&&(n.top+=1),this.getters.getEvaluatedCellsInZone(t,n).every(e=>e.type===`empty`)?`EmptySelectedRange`:`Success`}checkNoColumnProvided(e){return e.columns.length===0?`NoColumnsProvided`:`Success`}checkColumnsIncludedInZone(e){let 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?`Success`:`DuplicatesColumnsSelected`}trimWhitespace(){let e=nn(this.getters.getSelectedZones()),t=this.getters.getActiveSheetId(),n=0;for(let{col:r,row:i}of e.map(Fn).flat()){let e=this.getters.getCell({col:r,row:i,sheetId:t});if(!e)continue;let a=e.isFormula?e.compiledFormula.toFormulaString(this.getters):e.content,o=Pt(a);o!==a&&(n+=1,this.dispatch(`UPDATE_CELL`,{sheetId:t,col:r,row:i,content:o}))}let r=n?k(`Trimmed whitespace from %s cells.`,n):k(`No selected cells had whitespace trimmed.`);this.ui.notifyUI({type:`info`,text:r,sticky:!1})}};let lK=new B;lK.add(`ALPHANUMERIC_INCREMENT_MODIFIER`,{apply:(e,t)=>{e.current+=e.increment;let n=Math.abs(e.current).toString();n=`0`.repeat(Math.max(e.numberPostfixLength-n.length,0))+n;let r=`${e.prefix}${n}`;return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:{props:{content:r}}}}}).add(`INCREMENT_MODIFIER`,{apply:(e,t,n)=>{e.current+=e.increment;let r=e.current.toString(),i=n.getLocale(),a=z(e.current,{format:t.cell?.format,locale:i});return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:a}}:void 0}}}).add(`DATE_INCREMENT_MODIFIER`,{apply:(e,t,n)=>{let r=I(e.current,n.getLocale());r.setFullYear(r.getFullYear()+e.increment.years||0),r.setMonth(r.getMonth()+e.increment.months||0),r.setDate(r.getDate()+e.increment.days||0);let i=zi(r);e.current=i;let a=n.getLocale(),o=z(i,{format:t.cell?.format,locale:a});return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:i.toString()},tooltip:i?{props:{content:o}}:void 0}}}).add(`COPY_MODIFIER`,{apply:(e,t,n)=>{let r=t.cell?.isFormula?t.cell?.compiledFormula.toFormulaString(n):t.cell?.content||``,i={locale:n.getLocale(),format:t.cell?.format};return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:t.cell?oc(t.cell,i).formattedValue:``}}:void 0}}}).add(`FORMULA_MODIFIER`,{apply:(e,t,n,r)=>{e.current+=e.increment;let i=0,a=0;switch(r){case`up`:i=0,a=-e.current;break;case`down`:i=0,a=e.current;break;case`left`:i=-e.current,a=0;break;case`right`:i=e.current,a=0;break}let o=t.cell;if(!o||!o.isFormula)return{cellData:{}};let s=t.sheetId,c=n.getTranslatedCellFormula(s,i,a,o.compiledFormula);return{cellData:{border:t.border,style:o.style,format:o.format,content:c},tooltip:c?{props:{content:c}}:void 0}}});let uK=new B,dK=/(\d+)$/,fK=/^(.*\D+)/,pK=/^(.*\D+)(\d+)$/,mK=/^0*/;function hK(e,t,n){let r=[],i=!1;for(let a of t){a===e&&(i=!0);let t=a===void 0||a.isFormula?void 0:oc(a,{locale:R,format:a.format});if(t&&n(t))r.push(t);else{if(i)return r;r=[]}}return r}function gK(e){let t=[],n=e[0];for(let r=1;r<e.length;r++){let i=e[r];t.push(i-n),n=i}return t.reduce((e,t)=>e+t,0)/t.length}function _K(e){let t=1;return e.length>=2&&(t=gK(e)*e.length),t}function vK(e){return e.length<2?e[0]||{years:0,months:0,days:0}:e.every(t=>t.years===e[0].years&&t.months===e[0].months&&t.days===e[0].days)?e[0]:void 0}function yK(e){if(e.length<2)return 1;let t=e.map(e=>I(e,R)),n=vK(bK(t));if(n===void 0)return;let r=Object.values(n).filter(e=>e!==0).length===1,i=Object.values(n).every(e=>e===0);if(!r||i){let n=t.map((e,n)=>{if(n===0)return 0;let r=t[n-1];return Math.floor(e.getTime())-Math.floor(r.getTime())}).slice(1);if(n.every(e=>e===n[0]))return e.length*(e[1]-e[0])}return{years:n.years*e.length,months:n.months*e.length,days:n.days*e.length}}uK.add(`simple_value_copy`,{condition:(e,t)=>t.length===1&&!e.isFormula&&!(e.format&&os(e.format)),generateRule:()=>({type:`COPY_MODIFIER`}),sequence:10}).add(`increment_alphanumeric_value`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`text`&&pK.test(e.content),generateRule:(e,t,n)=>{let r=parseInt(e.content.match(dK)[0]),i=e.content.match(fK)[0],a=hK(e,t,e=>e.type===`text`&&pK.test(e.value)).filter(e=>i===(e.value??``).toString().match(fK)[0]).map(e=>(e.value??``).toString().match(dK)[0]),o=a.reduce((e,t)=>{let n=t.match(mK)[0].length;return n>e[1]?[t,n]:e},[a[0],0]),s=o[1]?o[0].length:0,c=_K(a.map(e=>parseInt(e)));return[`up`,`left`].includes(n)&&a.length===1&&(c=-c),{type:`ALPHANUMERIC_INCREMENT_MODIFIER`,prefix:i,current:r,increment:c,numberPostfixLength:s}},sequence:15}).add(`copy_text`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`text`,generateRule:()=>({type:`COPY_MODIFIER`}),sequence:20}).add(`update_formula`,{condition:e=>e.isFormula,generateRule:(e,t)=>({type:`FORMULA_MODIFIER`,increment:t.length,current:0}),sequence:30}).add(`increment_dates`,{condition:(e,t)=>!e.isFormula&&oc(e,{locale:R}).type===`number`&&!!e.format&&os(e.format),generateRule:(e,t)=>{let n=yK(hK(e,t,e=>e.type===`number`&&!!e.format&&os(e.format)).map(e=>Number(e.value)));if(n===void 0)return{type:`COPY_MODIFIER`};let r=oc(e,{locale:R});return typeof n==`object`?{type:`DATE_INCREMENT_MODIFIER`,increment:n,current:r.type===`number`?r.value:0}:{type:`INCREMENT_MODIFIER`,increment:n,current:r.type===`number`?r.value:0}},sequence:25}).add(`increment_number`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`number`,generateRule:(e,t,n)=>{let r=hK(e,t,e=>e.type===`number`&&!os(e.format||``)).map(e=>Number(e.value)),i=_K(r);[`up`,`left`].includes(n)&&r.length===1&&(i=-i);let a=oc(e,{locale:R});return{type:`INCREMENT_MODIFIER`,increment:i,current:a.type===`number`?a.value:0}},sequence:40});function bK(e){return e.length<2?[{years:0,months:0,days:0}]:e.map((t,n)=>{if(n===0)return{years:0,months:0,days:0};let r=O.fromTimestamp(e[n-1].getTime()),i=qi(r,t),a=Gi(r,t)%12;return r.setFullYear(r.getFullYear()+i),r.setMonth(r.getMonth()+a),{years:i,months:a,days:Ki(r,t)}}).slice(1)}var xK=class{cells;getters;index=0;direction;constructor(e,t,n){this.cells=e,this.getters=t,this.direction=n}next(){let e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:n,tooltip:r}=lK.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:n,tooltip:r,origin:{col:e.data.col,row:e.data.row}}}},SK=class extends sK{static layers=[`Autofill`];static getters=[`getAutofillTooltip`];autofillZone;steps;lastCellSelected={};direction;tooltip;allowDispatch(e){switch(e.type){case`AUTOFILL_SELECT`:let t=this.getters.getActiveSheetId();return this.lastCellSelected.col=e.col===-1?this.lastCellSelected.col:x(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=e.row===-1?this.lastCellSelected.row:x(e.row,0,this.getters.getNumberRows(t)),this.lastCellSelected.col!==void 0&&this.lastCellSelected.row!==void 0?`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();break}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||this.direction===void 0){this.tooltip=void 0;return}let t=this.getters.getSelectedZone(),n=this.autofillZone,r=[];switch(this.direction){case`down`:for(let e=t.left;e<=t.right;e++){let i=[];for(let n=t.top;n<=t.bottom;n++)i.push(T(e,n));let a=this.createGenerator(i);for(let t=n.top;t<=n.bottom;t++)r.push(this.computeNewCell(a,e,t))}break;case`up`:for(let e=t.left;e<=t.right;e++){let i=[];for(let n=t.bottom;n>=t.top;n--)i.push(T(e,n));let a=this.createGenerator(i);for(let t=n.bottom;t>=n.top;t--)r.push(this.computeNewCell(a,e,t))}break;case`left`:for(let e=t.top;e<=t.bottom;e++){let i=[];for(let n=t.right;n>=t.left;n--)i.push(T(n,e));let a=this.createGenerator(i);for(let t=n.right;t>=n.left;t--)r.push(this.computeNewCell(a,t,e))}break;case`right`:for(let e=t.top;e<=t.bottom;e++){let i=[];for(let n=t.left;n<=t.right;n++)i.push(T(n,e));let a=this.createGenerator(i);for(let t=n.left;t<=n.right;t++)r.push(this.computeNewCell(a,t,e))}break}if(e){let e={},t={},n={},i=this.getters.getActiveSheetId();for(let a of r)this.collectBordersData(a,e),this.autofillMerge(i,a),this.autofillCell(i,a),this.collectConditionalFormatsData(i,a,t),this.collectDataValidationsData(i,a,n);this.autofillBorders(i,e),this.autofillConditionalFormats(i,t),this.autofillDataValidations(i,n),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){let n=JSON.stringify(e.border);n in t||(t[n]=[]),t[n].push(E({col:e.col,row:e.row}))}collectConditionalFormatsData(e,t,n){let{originCol:r,originRow:i,col:a,row:o}=t,s=this.getters.getRulesByCell(e,r,i),c=T(a,o);for(let e of s)e.id in n||(n[e.id]=[]),n[e.id].push(c)}collectDataValidationsData(e,t,n){let{originCol:r,originRow:i,col:a,row:o}=t,s={sheetId:e,col:r,row:i},c=this.getters.getValidationRuleForCell(s);c&&(c.id in n||(n[c.id]=[]),n[c.id].push(E({col:a,row:o})))}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(let n in t){let r=n===`undefined`?void 0:JSON.parse(n);this.dispatch(`SET_BORDERS_ON_TARGET`,{sheetId:e,border:r,target:nn(t[n])})}}autofillConditionalFormats(e,t){for(let n in t){let r=t[n],i=this.getters.getConditionalFormats(e).find(e=>e.id===n);if(!i)continue;let a=this.getters.getAdaptedCfRanges(e,i,r.map(mn),[]);a&&this.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:i.id,rule:i.rule,stopIfTrue:i.stopIfTrue},ranges:a,sheetId:e})}}autofillDataValidations(e,t){for(let n in t){let r=t[n],i=this.getters.getDataValidationRule(e,n);if(!i)continue;let a=nn(i.ranges.map(e=>e.zone).concat(r),[]);this.dispatch(`ADD_DATA_VALIDATION_RULE`,{rule:i,ranges:a.map(t=>this.getters.getRangeDataFromZone(e,t)),sheetId:e})}}select(e,t){let n=this.getters.getSelectedZone();if(An(e,t,n)){this.autofillZone=void 0;return}switch(this.direction=this.getDirection(e,t),this.direction){case`up`:this.saveZone(t,n.top-1,n.left,n.right),this.steps=n.top-t;break;case`down`:this.saveZone(n.bottom+1,t,n.left,n.right),this.steps=t-n.bottom;break;case`left`:this.saveZone(n.top,n.bottom,e,n.left-1),this.steps=n.left-e;break;case`right`:this.saveZone(n.top,n.bottom,n.right+1,e),this.steps=e-n.right;break}this.autofill(!1)}autofillAuto(){let e=this.getters.getActivePosition(),t=this.getters.getTable(e),n=t?t.range.zone.bottom:this.getAutofillAutoLastRow(),r=this.getters.getSelectedZone();for(let t=r.bottom+1;t<=n;t++)if(this.getters.getEvaluatedCell({...e,row:t}).type!==`empty`){n=t-1;break}n>r.bottom&&(this.select(e.col,n),this.autofill(!0))}getAutofillAutoLastRow(){let e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId(),n=e.left,r=e.bottom;if(n>0){let e={sheetId:t,col:n-1,row:r};for(;this.getters.getEvaluatedCell(e).type!==`empty`;)r+=1,e={sheetId:t,col:n-1,row:r}}if(r===e.bottom&&(n=e.right,n<=this.getters.getNumberCols(t))){let e={sheetId:t,col:n+1,row:r};for(;this.getters.getEvaluatedCell(e).type!==`empty`;)r+=1,e={sheetId:t,col:n+1,row:r}}return r-1}computeNewCell(e,t,n){let{cellData:r,tooltip:i,origin:a}=e.next(),{content:o,style:s,border:c,format:l}=r;return this.tooltip=i,{originCol:a.col,originRow:a.row,col:t,row:n,content:o,style:s,border:c,format:l}}getRule(e,t){let n=uK.getAll().sort((e,t)=>e.sequence-t.sequence).find(n=>n.condition(e,t));return n&&this.direction&&n.generateRule(e,t,this.direction)}createGenerator(e){let t=[],n=[],r=this.getters.getActiveSheetId();for(let t of e){let{col:e,row:i}=tn(t),a=this.getters.getCell({sheetId:r,col:e,row:i});n.push({col:e,row:i,cell:a,sheetId:r})}let i=n.map(e=>e.cell);for(let e of n){let n={type:`COPY_MODIFIER`};e&&e.cell&&(n=this.getRule(e.cell,i)||n);let r=this.getters.getCellBorder(e)??void 0;t.push({data:{...e,border:r},rule:n})}return new xK(t,this.getters,this.direction)}saveZone(e,t,n,r){this.autofillZone={top:e,bottom:t,left:n,right:r}}getDirection(e,t){let n=this.getters.getSelectedZone(),r={up:{number:n.top-t,value:`up`},down:{number:t-n.bottom,value:`down`},left:{number:n.left-e,value:`left`},right:{number:e-n.right,value:`right`}};if(Object.values(r).map(e=>+(e.number>0)).reduce((e,t)=>e+t)===1)return Object.values(r).find(e=>+(e.number>0)).value;let i=r.up.number>0?`up`:`down`,a=r.left.number>0?`left`:`right`;return Math.abs(r[i].number)>=Math.abs(r[a].number)?r[i].value:r[a].value}autofillMerge(e,t){let{originCol:n,originRow:r,col:i,row:a}=t,o={sheetId:e,col:i,row:a},s={sheetId:e,col:n,row:r};if(this.getters.isInMerge(o)&&!this.getters.isInMerge(s)){let t=this.getters.getMerge(o);t&&this.dispatch(`REMOVE_MERGE`,{sheetId:e,target:[t]})}let c=this.getters.getMerge(s);c?.left===n&&c?.top===r&&this.dispatch(`ADD_MERGE`,{sheetId:e,target:[{top:a,bottom:a+c.bottom-c.top,left:i,right:i+c.right-c.left}]})}drawLayer(e){if(!this.autofillZone)return;let{ctx:t,thinLineWidth:n}=e,{x:r,y:i,width:a,height:o}=this.getters.getVisibleRect(this.autofillZone);a>0&&o>0&&(t.strokeStyle=`black`,t.lineWidth=n,t.setLineDash([3]),t.strokeRect(r,i,a,o),t.setLineDash([]))}},CK=class extends sK{static getters=[`getAutomaticSums`];handle(e){switch(e.type){case`SUM_SELECTION`:let e=this.getters.getActiveSheetId(),{zones:t,anchor:n}=this.getters.getSelection();for(let r of t){let t=this.getAutomaticSums(e,r,n.cell);this.dispatchCellUpdates(e,t)}break}}getAutomaticSums(e,t,n){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,n):this.sumData(e,t)}sumData(e,t){let n=this.dimensionsToSum(e,t),r=this.sumDimensions(e,t,n).filter(({zone:t})=>!this.getters.isEmpty(e,t));return n.has(`ROW`)&&n.has(`COL`)&&r.push(this.sumTotal(t)),r}sumAdjacentData(e,t,n){let{col:r,row:i}=An(n.col,n.row,t)?n:{col:t.left,row:t.top},a=this.findAdjacentData(e,r,i);return a?this.getters.isSingleCellOrMerge(e,t)||Nn(wn(a,t))?[{position:{col:r,row:i},zone:a}]:this.sumDimensions(e,wn(a,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,n){let r=this.getters.getSheet(e),i=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),a=this.findSuitableZoneToSum(r,i.col,i.row);if(a)return this.getters.expandZone(e,a)}findSuitableZoneToSum(e,t,n){let r=this.getters.getEvaluatedCell({sheetId:e.id,col:t,row:n-1}),i=this.getters.getEvaluatedCell({sheetId:e.id,col:t-1,row:n});if(this.isNumber(i)&&!this.isNumber(r))return this.findHorizontalZone(e,t,n);let a=this.findVerticalZone(e,t,n);if(this.isZoneValid(a))return a;let o=this.findHorizontalZone(e,t,n);if(this.isZoneValid(o))return o}findVerticalZone(e,t,n){let r={top:0,bottom:n-1,left:t,right:t},i=this.reduceZoneStart(e,r,r.bottom);return{...r,top:i}}findHorizontalZone(e,t,n){let r={top:n,bottom:n,left:0,right:t-1},i=this.reduceZoneStart(e,r,r.right);return{...r,left:i}}reduceZoneStart(e,t,n){let r=this.getters.getEvaluatedCellsInZone(e.id,t),i=S(n,-1,-1),a=Lt(i.filter(e=>r[e]&&!r[e].isAutoSummable)),o=$e(i.filter(e=>this.isNumber(r[e])))[0]||[];return Lt(o)<a?1/0:Rt(o)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){return e.type===`number`&&!(e.format&&os(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){let n=new Set;return Nn(t)?(n.add(Mn(t).numberOfCols===1?`COL`:`ROW`),n):(this.lastColIsEmpty(e,t)&&n.add(`ROW`),this.lastRowIsEmpty(e,t)&&n.add(`COL`),n.size===0&&n.add(`COL`),n)}sumDimensions(e,t,n){return[...n.has(`COL`)?this.sumColumns(t,e):[],...n.has(`ROW`)?this.sumRows(t,e):[]]}sumTotal(e){let{bottom:t,right:n}=e;return{position:{col:n,row:t},zone:{...e,top:t,right:n-1}}}sumColumns(e,t){let n=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,n.bottom-1)},Fn(n).map(t=>({position:t,zone:{...e,right:t.col,left:t.col}}))}sumRows(e,t){let n=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,n.right-1)},Fn(n).map(t=>({position:t,zone:{...e,top:t.row,bottom:t.row}}))}dispatchCellUpdates(e,t){for(let n of t){let{col:t,row:r}=n.position;this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,content:`=SUM(${this.getters.zoneToXC(e,n.zone)})`})}}nextEmptyRow(e,t){let n=t.bottom+1,{left:r,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:n,top:n,left:r,right:i});)n++;return{...t,top:n,bottom:n}}nextEmptyCol(e,t){let n=t.right+1,{top:r,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:n,right:n,top:r,bottom:i});)n++;return{...t,left:n,right:n}}transpose(e){return new Set([...e.values()].map(e=>e===`COL`?`ROW`:`COL`))}},wK=class extends sK{static getters=[`getCellTableStyle`,`getCellTableBorder`];tableStyles={};handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)||e.type===`EVALUATE_CELLS`){this.tableStyles={};return}if(EK(e)){`sheetId`in e?delete this.tableStyles[e.sheetId]:this.tableStyles={};return}}finalize(){for(let e of this.getters.getSheetIds()){this.tableStyles[e]||(this.tableStyles[e]={});for(let t of this.getters.getTables(e))this.tableStyles[e][t.id]||(this.tableStyles[e][t.id]=this.computeTableStyle(e,t))}}getCellTableStyle(e){let t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().styles[e.col]?.[e.row]}getCellTableBorder(e){let t=this.getters.getTable(e);if(t)return this.tableStyles[e.sheetId][t.id]().borders[e.col]?.[e.row]}computeTableStyle(e,t){return _t(()=>{let n=this.getters.getTableStyle(t.config.styleId),{tableMetaData:r,config:i}=this.getTableMetaData(e,t),a=JB(i,n,r),o=this.getTableMapping(e,t),s={borders:{},styles:{}};for(let e=0;e<r.numberOfCols;e++){let t=o.colMapping[e];s.borders[t]={},s.styles[t]={};for(let n=0;n<r.numberOfRows;n++){let r=o.rowMapping[n];s.borders[t][r]=a.borders[e][n],s.styles[t][r]=a.styles[e][n]}}return s})}getTableMetaData(e,t){let{config:n,numberOfCols:r,numberOfRows:i}=this.getTableRuntimeConfig(e,t);if(!t.isPivotTable)return{tableMetaData:{numberOfCols:r,numberOfRows:i,mode:`table`},config:n};let a={sheetId:e,col:t.range.zone.left,row:t.range.zone.top},o=this.getters.getPivotStyleAtPosition(a);if(!o)throw Error(`No dynamic pivot info found at pivot table position`);let s=this.getters.getPivot(o.pivotId),c=o.pivotStyle,l=s.getExpandedTableStructure().getNumberOfRowGroupBys(),u=s.getCollapsedTableStructure().getPivotCells(c),d=new Set,f=new Set,p=new Set,m=0;for(let n=0;n<u[0].length;n++){if(this.getters.isRowHidden(e,n+t.range.zone.top)){m++;continue}let r=u[0][n];r.type!==`HEADER`||r.domain.length===0||(r.domain.length===1&&l>1?d.add(n-m):r.domain.length%2==0&&l>r.domain.length?f.add(n-m):r.domain.length%2==1&&l>r.domain.length&&p.add(n-m))}return{tableMetaData:{mode:`pivot`,numberOfCols:r,numberOfRows:i,mainSubHeaderRows:d,firstAlternatingSubHeaderRows:f,secondAlternatingSubHeaderRows:p,measureRow:n.numberOfHeaders&&c.displayMeasuresRow&&!this.getters.isRowHidden(e,n.numberOfHeaders-1+t.range.zone.top)?n.numberOfHeaders-1:void 0},config:n}}getTableRuntimeConfig(e,t){let n=t.range.zone,r={...t.config},i=n.right-n.left+1,a=n.bottom-n.top+1;for(let i=n.top;i<=n.bottom;i++)this.getters.isRowHidden(e,i)&&(a--,i-n.top<t.config.numberOfHeaders&&(r.numberOfHeaders--,r.numberOfHeaders<0&&(r.numberOfHeaders=0)),i===n.bottom&&(r.totalRow=!1));for(let t=n.left;t<=n.right;t++)this.getters.isColHidden(e,t)&&(i--,t===n.left&&(r.firstColumn=!1),t===n.right&&(r.lastColumn=!1));return{config:r,numberOfCols:i,numberOfRows:a}}getTableMapping(e,t){let n={},r={},i=0,a=0,o=t.range.zone;for(let t=o.left;t<=o.right;t++)if(!this.getters.isColHidden(e,t)){n[i]=t,i++;for(let t=o.top;t<=o.bottom;t++)this.getters.isRowHidden(e,t)||(r[a]=t,a++)}return{colMapping:n,rowMapping:r}}};let TK=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`,`DELETE_CONTENT`]);function EK(e){return TK.has(e.type)}var DK=class extends sK{static getters=[`getCellComputedBorder`,`getCellComputedStyle`];styles=new SV;borders=new SV;handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`||e.type===`SET_FORMATTING`||e.type===`CLEAR_FORMATTING`||e.type===`ADD_DATA_VALIDATION_RULE`||e.type===`REMOVE_DATA_VALIDATION_RULE`||e.type===`EVALUATE_CELLS`){this.styles=new SV,this.borders=new SV;return}if(EK(e)){`sheetId`in e?(this.styles.clearSheet(e.sheetId),this.borders.clearSheet(e.sheetId)):(this.styles=new SV,this.borders=new SV);return}if(Vs.has(e.type)){this.styles=new SV;return}if(Hs.has(e.type)){this.borders=new SV;return}}getCellComputedBorder(e){let t=this.borders.get(e);return t===void 0&&(t=this.computeCellBorder(e),this.borders.set(e,t)),t}getCellComputedStyle(e){let t=this.styles.get(e);return t===void 0&&(t=this.computeCellStyle(e),this.styles.set(e,t)),t}computeCellStyle(e){let t=this.getters.getCell(e),n=this.getters.getCellConditionalFormatStyle(e),r=this.getters.getCellTableStyle(e),i=this.getters.getDataValidationCellStyle(e),a={...Ct(r),...Ct(i),...Ct(t?.style),...Ct(n)};return this.getters.getEvaluatedCell(e).link&&!a.textColor&&(a.textColor=`#017E84`),a}computeCellBorder(e){let t=this.getters.getCellBorder(e)||{},n={...Ct(this.getters.getCellTableBorder(e)||{}),...Ct(t)};return ft(n)?null:n}},OK=class extends sK{static getters=[`hasBooleanValidationInZones`];handle(e){switch(e.type){case`TOGGLE_CHECKBOX`:this.toggleCheckbox(e.sheetId,e.target);break}}hasBooleanValidationInZones(e){let t=this.getters.getActiveSheetId();for(let n of e)for(let e=n.left;e<=n.right;e++)for(let r=n.top;r<=n.bottom;r++)if(this.getters.isCellValidCheckbox({col:e,row:r,sheetId:t}))return!0;return!1}toggleCheckbox(e,t){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++){let n={col:t,row:r,sheetId:e};if(this.getters.isCellValidCheckbox(n)){let e=this.getters.getEvaluatedCell(n).value?`FALSE`:`TRUE`;this.dispatch(`UPDATE_CELL`,{...n,content:e})}}}};let kK=new class extends B{addTransformation(e,t,n){this.content[e]||(this.content[e]=new Map);for(let r of t)this.content[e].set(r,n);return this}getTransformation(e,t){return this.content[t]&&this.content[t].get(e)}},AK=new class extends B{add(e,t){return super.add(e,t),this}replace(e,t){return super.replace(e,t),this}get(e){return this.content[e]}};kK.addTransformation(`ADD_COLUMNS_ROWS`,[`ADD_COLUMNS_ROWS`],UK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`ADD_COLUMNS_ROWS`],UK),kK.addTransformation(`DELETE_SHEET`,[`MOVE_RANGES`],PK),kK.addTransformation(`DELETE_FIGURE`,[`UPDATE_FIGURE`,`UPDATE_CHART`,`UPDATE_CAROUSEL`],FK),kK.addTransformation(`DELETE_CHART`,[`UPDATE_CHART`],IK),kK.addTransformation(`DELETE_CHART`,[`UPDATE_CAROUSEL`],LK),kK.addTransformation(`CREATE_SHEET`,[`CREATE_SHEET`],RK),kK.addTransformation(`ADD_MERGE`,[`ADD_MERGE`,`REMOVE_MERGE`],zK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`FREEZE_COLUMNS`,`FREEZE_ROWS`],BK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`FREEZE_COLUMNS`,`FREEZE_ROWS`],BK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`UPDATE_TABLE`],VK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`UPDATE_TABLE`],VK),kK.addTransformation(`REMOVE_TABLE_STYLE`,[`CREATE_TABLE`,`UPDATE_TABLE`],HK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`GROUP_HEADERS`,`UNGROUP_HEADERS`,`FOLD_HEADER_GROUP`,`UNFOLD_HEADER_GROUP`],WK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`GROUP_HEADERS`,`UNGROUP_HEADERS`,`FOLD_HEADER_GROUP`,`UNFOLD_HEADER_GROUP`],WK),kK.addTransformation(`REMOVE_PIVOT`,[`RENAME_PIVOT`,`DUPLICATE_PIVOT`,`INSERT_PIVOT`,`UPDATE_PIVOT`],NK),kK.addTransformation(`DELETE_SHEET`,[`ADD_PIVOT`,`UPDATE_PIVOT`],MK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`ADD_PIVOT`,`UPDATE_PIVOT`],jK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`ADD_PIVOT`,`UPDATE_PIVOT`],jK);function jK(e,t){if(e.pivot.type!==`SPREADSHEET`||e.pivot.dataSet?.sheetId!==t.sheetId)return e;let n=nr(e.pivot.dataSet.zone,t),r=n?{...e.pivot.dataSet,zone:n}:void 0;return{...e,pivot:{...e.pivot,dataSet:r}}}function MK(e,t){return e.pivot.type===`SPREADSHEET`&&e.pivot.dataSet?.sheetId===t.sheetId?{...e,pivot:{...e.pivot,dataSet:void 0}}:e}function NK(e,t){if(e.pivotId!==t.pivotId)return e}function PK(e,t){let n=t.sheetId;if(!(e.targetSheetId===n||e.sheetId===n))return e}function FK(e,t){if(e.figureId!==t.figureId)return e}function IK(e,t){if(e.chartId!==t.chartId)return e}function LK(e,t){return{...e,definition:{...e.definition,items:e.definition.items.filter(e=>!(e.type===`chart`&&e.chartId===t.chartId))}}}function RK(e,t){return e.sheetId===t.sheetId&&(e={...e,sheetId:`${e.sheetId}~`}),e.name===t.name?{...e,name:e.name?.match(/\d+/)?e.name.replace(/\d+/,e=>(parseInt(e)+1).toString()):`${e.name}~`,position:e.position+1}:e}function zK(e,t){if(e.sheetId!==t.sheetId)return e;let n=[];for(let r of e.target)t.target.every(e=>!On(r,e))&&n.push(r);if(n.length)return{...e,target:n}}function BK(e,t){if(e.sheetId!==t.sheetId||(e.type===`FREEZE_COLUMNS`?`COL`:`ROW`)!==t.dimension)return e;let n=e.quantity;if(t.type===`REMOVE_COLUMNS_ROWS`){let e=[...t.elements].sort((e,t)=>t-e);for(let t of e)n>t&&n--}if(t.type===`ADD_COLUMNS_ROWS`){let e=t.position===`before`?t.base-1:t.base;n=n>e?n+t.quantity:n}return n>0?{...e,quantity:n}:void 0}function VK(e,t){if(e.sheetId!==t.sheetId)return e;let n=nr(e.zone,t);if(!n)return;let r=e.newTableRange?rr(e.newTableRange,t):void 0;return{...e,newTableRange:r,zone:n}}function HK(e,t){return e.config?.styleId===t.tableStyleId?{...e,config:{...e.config,styleId:HA.styleId}}:e}function UK(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let n;if(t.type===`REMOVE_COLUMNS_ROWS`?n=bl(t.elements,[e.base])[0]:t.type===`ADD_COLUMNS_ROWS`&&(n=yl(yt(t.position,t.base),t.quantity,[e.base])[0]),n!==void 0)return{...e,base:n}}function WK(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let n=S(e.start,e.end+1),r=[];if(t.type===`REMOVE_COLUMNS_ROWS`?r=bl(t.elements,n):t.type===`ADD_COLUMNS_ROWS`&&(r=yl(yt(t.position,t.base),t.quantity,n)),r.length!==0)return{...e,start:Math.min(...r),end:Math.max(...r)}}function GK(e,t){let n=e.content&&Yu(e.sheetId,e.content,t);return{...e,content:n}}AK.add(`UPDATE_CELL`,GK);function KK(e,t){let n=e.cf.rule;if(e={...e,cf:{...e.cf}},n.type===`CellIsRule`)e.cf.rule={...n,values:n.values.map(n=>Yu(e.sheetId,n,t))};else if(n.type===`ColorScaleRule`){let{minimum:r,maximum:i,midpoint:a}=n;e.cf.rule={...n,minimum:{...r,value:r.value&&Yu(e.sheetId,r.value,t)},maximum:{...i,value:i.value&&Yu(e.sheetId,i.value,t)},midpoint:a?{...a,value:Yu(e.sheetId,a.value,t)}:void 0}}else if(n.type===`IconSetRule`){let{upperInflectionPoint:r,lowerInflectionPoint:i}=n;e.cf.rule={...n,upperInflectionPoint:{...r,value:Yu(e.sheetId,r.value,t)},lowerInflectionPoint:{...i,value:Yu(e.sheetId,i.value,t)}}}else n.type===`DataBarRule`&&(e.cf.rule={...n,rangeValues:n.rangeValues?Xu(e.sheetId,n.rangeValues,t).range:void 0});return e}AK.add(`ADD_CONDITIONAL_FORMAT`,KK);function qK(e,t){return e={...e,rule:{...e.rule,criterion:{...e.rule.criterion}}},e.rule.criterion.values=e.rule.criterion.values.map(n=>Yu(e.sheetId,n,t)),e}AK.add(`ADD_DATA_VALIDATION_RULE`,qK);function JK(e,t){return e=b(e),e.pivot.measures.map(e=>{e.computedBy&&(e.computedBy.formula=Yu(e.computedBy.sheetId,e.computedBy.formula,t))}),e}AK.add(`ADD_PIVOT`,JK),AK.add(`UPDATE_PIVOT`,JK),AK.add(`CREATE_CHART`,YK),AK.add(`UPDATE_CHART`,YK);function YK(e,t){return{...e,definition:C_(e.sheetId,e.definition,t)}}let XK=[{match:Ms,fn:tq},{match:Ps,fn:nq},{match:Ls,fn:rq},{match:Is,fn:oq},{match:Ns,fn:aq},{match:Fs,fn:iq}];function ZK(e,t){let n=kK.getTransformation(e.type,t.type),r=n?n(e,t):eq(e,t);return r&&QK(r,t)}function QK(e,t){let n=AK.get(e.type);if(!n)return e;let r=sl(t);return r?n(e,r):e}function $K(e,t){let n=[...e],r=new Set(kK.getKeys());for(let e of t)(r.has(e.type)||cl.contains(e.type))&&(n=n.reduce((t,n)=>{let r=ZK(n,e);return r&&t.push(r),t},[]));return n}function eq(e,t){for(let{match:n,fn:r}of XK)if(n(e)){let n=r(e,t);if(n===`SKIP_TRANSFORMATION`)continue;if(n===`IGNORE_COMMAND`)return;e=n}return e}function tq(e,t){if(!(`sheetId`in t))return e;let n=t.type===`DELETE_SHEET`&&t.sheetId,r=t.type===`LOCK_SHEET`&&t.sheetId;return e.sheetId===n||e.sheetId===r?`IGNORE_COMMAND`:e.type===`CREATE_SHEET`||t.type===`CREATE_SHEET`||e.sheetId!==t.sheetId?e:`SKIP_TRANSFORMATION`}function nq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;let r=[];for(let n of e.target){let e=nr(n,t);e&&r.push(e)}return r.length?{...e,target:r}:`IGNORE_COMMAND`}function rq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;let r=nr(e.zone,t);return r?{...e,zone:r}:`IGNORE_COMMAND`}function iq(e,t){if(!(`sheetId`in t))return e;let n=e.ranges.map(e=>rr(e,t)).filter(C);return n.length?{...e,ranges:n}:`IGNORE_COMMAND`}function aq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;if(t.type!==`ADD_COLUMNS_ROWS`&&t.type!==`REMOVE_COLUMNS_ROWS`)return`SKIP_TRANSFORMATION`;if(t.dimension!==e.dimension)return e;let r=[];return t.type===`REMOVE_COLUMNS_ROWS`?r=bl(t.elements,e.elements):t.type===`ADD_COLUMNS_ROWS`&&(r=yl(yt(t.position,t.base),t.quantity,e.elements)),r.length===0?`IGNORE_COMMAND`:{...e,elements:r}}function oq(e,t){let n=tq(e,t);return n===`SKIP_TRANSFORMATION`?t.type===`ADD_COLUMNS_ROWS`||t.type===`REMOVE_COLUMNS_ROWS`?sq(e,t):t.type===`ADD_MERGE`?cq(e,t):`SKIP_TRANSFORMATION`:n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e}function sq(e,t){let n=t.dimension===`COL`?`col`:`row`,r=e[n];if(t.type===`REMOVE_COLUMNS_ROWS`){let e=[...t.elements].sort((e,t)=>t-e);if(e.includes(r))return`IGNORE_COMMAND`;for(let t of e)r>=t&&r--}return t.type===`ADD_COLUMNS_ROWS`&&(r>t.base||r===t.base&&t.position===`before`)&&(r+=t.quantity),{...e,[n]:r}}function cq(e,t){for(let n of t.target)if(!(e.col===n.left&&e.row===n.top)&&An(e.col,e.row,n))return`IGNORE_COMMAND`;return e}var lq=class{rootCommand;timestamp;id;clientId;_commands=[];_changes=[];constructor(e,t,n,r,i,a){this.rootCommand=r,this.timestamp=a,this.id=e,this.clientId=t,this._commands=[...n],this._changes=i?[...i]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}},uq=class extends Error{},dq=class extends ir{revisions;transportService;serverRevisionId;clients={};clientId=`local`;pendingMessages=[];awaitingClientPosition;waitingAck=!1;waitingUndoRedoAck=!1;isReplayingInitialRevisions=!1;processedRevisions=new Set;lastRevisionMessage=void 0;uuidGenerator=new Xl;lastLocalOperation;constructor(e,t,n=De){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=n}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t,n){if(!t.length||!n.length||!this.canApplyOptimisticUpdate())return;let r=new lq(this.uuidGenerator.uuidv4(),this.clientId,t,e,n,Date.now());this.revisions.append(r.id,r),e.type!==`REQUEST_REDO`&&(this.lastLocalOperation=r),this.trigger(`new-local-state-update`,{id:r.id}),this.sendUpdateMessage({type:`REMOTE_REVISION`,version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:r.id,clientId:r.clientId,commands:r.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})}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)),this.awaitingClientPosition&&=(this.move(this.awaitingClientPosition),void 0)}loadInitialMessages(e){let t=performance.now(),n=e.reduce((e,t)=>e+(t.type===`REMOTE_REVISION`?t.commands.length:1),0);this.isReplayingInitialRevisions=!0;for(let t of e)this.onMessageReceived(t);this.isReplayingInitialRevisions=!1,console.debug(`Replayed`,n,`commands in`,performance.now()-t,`ms`)}async leave(e){e&&Object.keys(this.clients).length===1&&this.lastRevisionMessage&&this.lastRevisionMessage?.type!==`SNAPSHOT_CREATED`&&await this.snapshot(e()),delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.sendToTransport({type:`CLIENT_LEFT`,clientId:this.clientId,version:1})}async snapshot(e){if(this.pendingMessages.length!==0)return;let t=this.uuidGenerator.uuidv4();await this.sendToTransport({type:`SNAPSHOT`,nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getCurrentClient(){return this.getClient(this.clientId)}getClient(e){let t=this.clients[e];if(!t)throw new uq(`The client left the session`);return t}getConnectedClients(){return new Set(Object.values(this.clients).filter(C))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return this.pendingMessages.length===0}getLastLocalNonEmptyRevision(){return this.lastLocalOperation}move(e){if(!this.clients[this.clientId]){this.awaitingClientPosition=e;return}let t=this.clients[this.clientId]?.position;if(t?.col===e.col&&t.row===e.row&&t.sheetId===e.sheetId)return;let n=t?`CLIENT_MOVED`:`CLIENT_JOINED`,r=this.getCurrentClient();this.clients[this.clientId]={...r,position:e},this.sendToTransport({type:n,version:1,client:{...r,position:e}}).then(()=>{this.pendingMessages.length>0&&!this.waitingAck&&this.sendPendingMessage()})}onMessageReceived(e){if(!this.isAlreadyProcessed(e)){if(this.isWrongServerRevisionId(e)){this.trigger(`unexpected-revision-id`);return}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`:let{clientId:t,commands:n,timestamp:r}=e,i=new lq(e.nextRevisionId,t,n,void 0,void 0,r);if(i.clientId!==this.clientId){this.revisions.insert(i.id,i,e.serverRevisionId);let t=this.pendingMessages.filter(e=>e.type===`REMOTE_REVISION`).map(e=>e.commands).flat();this.trigger(`remote-revision-received`,{commands:$K(n,t)})}break;case`SNAPSHOT_CREATED`:{let t=new lq(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;let t=this.clients[this.clientId];if(t){let{position:e}=t;e&&this.sendToTransport({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()}async sendToTransport(e){return this.transportService.sendMessage(e)}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if(e.type===`REMOTE_REVISION`){let t=this.revisions.get(e.nextRevisionId);t.commands.length===0&&(this.revisions.rebase(t.id),t=this.revisions.get(e.nextRevisionId)),e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.
117
- ${JSON.stringify(e)}`);this.waitingAck=!0,this.sendToTransport({...e,serverRevisionId:this.serverRevisionId}).catch(e=>{if(!(e instanceof uq))throw e.cause||e;this.waitingAck=!1})}}acknowledge(e){switch((e.type===`REVISION_UNDONE`||e.type===`REVISION_REDONE`)&&(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);let t=this.pendingMessages.findIndex(e=>e.type===`REMOTE_REVISION`);t!==-1&&this.revisions.rebase(this.pendingMessages[t].nextRevisionId),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.sendPendingMessage();break}}}isAlreadyProcessed(e){if(e.type===`CLIENT_MOVED`&&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})=>e!==`REVISION_REDONE`&&e!==`REVISION_UNDONE`)}},fq=class extends sK{static getters=[`getClientsToDisplay`,`getClient`,`getCurrentClient`,`getConnectedClients`,`isFullySynchronized`];static layers=[`Selection`];colors=new oi(12);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(e){return this.session.getClient(e)}getCurrentClient(){return this.session.getCurrentClient()}getConnectedClients(){return[...this.session.getConnectedClients()].map(e=>({...e,color:this.colors.get(e.id)}))}isFullySynchronized(){return this.session.isFullySynchronized()}getClientsToDisplay(){try{this.getters.getCurrentClient()}catch(e){if(e instanceof uq)return[];throw e}let e=this.getters.getActiveSheetId(),t=[];for(let n of this.getters.getConnectedClients())n.id!==this.getters.getCurrentClient().id&&n.position&&n.position.sheetId===e&&this.isPositionValid(n.position)&&t.push({...n,position:n.position});return t}drawLayer(e){if(this.getters.isDashboard())return;let{ctx:t,thinLineWidth:n}=e,r=this.getters.getActiveSheetId();for(let e of this.getClientsToDisplay()){let{row:i,col:a}=e.position,o=this.getters.expandZone(r,{top:i,bottom:i,left:a,right:a}),{x:s,y:c,width:l,height:u}=this.getters.getVisibleRect(o);if(l<=0||u<=0)continue;let d=e.color;t.fillStyle=`${d}10`,t.lineWidth=4*n,t.strokeStyle=d,t.globalCompositeOperation=`multiply`,t.fillRect(s,c,l,u),t.globalCompositeOperation=`source-over`,t.strokeRect(s,c,l,u),t.font=`bold ${we+1}px ${Te}`}}},pq=class extends sK{handle(e){switch(e.type){case`ADD_DATA_VALIDATION_RULE`:if(e.rule.criterion.type===`isBoolean`){let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e));for(let e of rl(t)){let t=this.getters.getCell(e),n=this.getters.getEvaluatedCell(e);if(!t?.isFormula&&!t?.content)this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`});else if((t?.isFormula||t?.content)&&n.type===`empty`){let n;if(t.isFormula){let r=this.getters.evaluateCompiledFormula(e.sheetId,t.compiledFormula);n=(Ta(r)?r[0][0]:r)?.toString()}else n=t.content;(!n||!tt(n))&&this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`})}else n.type!==`boolean`&&this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`})}}}}},mq=class extends sK{static getters=[`dynamicTranslate`];dynamicTranslate(e){return e}},hq=class extends sK{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);break}}setContextualFormat(e,t,n){let r=[],i={};for(let n of nn(t))for(let t=n.left;t<=n.right;t++)for(let a=n.top;a<=n.bottom;a++){let n={sheetId:e,col:t,row:a},o=this.getters.getPivotCellFromPosition(n);if(this.isSpilledPivotValueFormula(n,o)){r.push(n);let e=this.getters.getPivotIdFromPosition(n)||``;i[e]??=new Set,i[e].add(o.measure)}}let a=nn(r.map(E));for(let e in i){let t=i[e],r=this.getters.getPivotCoreDefinition(e);this.dispatch(`UPDATE_PIVOT`,{pivotId:e,pivot:{...r,measures:r.measures.map(e=>t.has(e.id)?{...e,format:n}:e)}})}this.dispatch(`SET_FORMATTING`,{sheetId:e,target:a,format:``}),this.dispatch(`SET_FORMATTING`,{sheetId:e,target:nn(t,a),format:n})}isSpilledPivotValueFormula(e,t){let n=this.getters.getCell(e);return t.type===`VALUE`&&!n?.isFormula}setDecimal(e,t,n){let r={};for(let i of nn(t))for(let t of Fn(i)){let i=this.getCellNumberFormat({sheetId:e,...t});if(i!==void 0){let e=Cs(i,n);r[e]=r[e]||[],r[e].push(t)}}for(let t in r){let n=nn(r[t].map(e=>E(e)));this.setContextualFormat(e,n,t)}}getCellNumberFormat(e){for(let t of[e]){let e=this.getters.getEvaluatedCell(t);if(e.type===`number`&&!(e.format&&os(e.format)))return e.format||us(e.value)}}},gq=class extends sK{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){console.error(`No geoJsonService provided to the model`);return}let t=this.geoJsonCache[e];if(!(t instanceof Promise)){if(t!==void 0)return t??void 0;this.geoJsonCache[e]=new Promise(async t=>{let n=await this.geoJsonService?.getTopoJson(e);this.geoJsonCache[e]=this.convertToGeoJson(n),this.dispatch(`EVALUATE_CHARTS`),t()})}}geoFeatureNameToId(e,t){if(!this.geoJsonService){console.error(`No geoJsonService provided to the model`);return}return this.geoJsonService.geoFeatureNameToId(e,t)}convertToGeoJson(e){if(!e)return null;if(e.type===`Topology`){let t=globalThis.ChartGeo.topojson.feature(e,Object.values(e.objects)[0]);return t.type===`FeatureCollection`?t.features:[t]}else if(e.type===`FeatureCollection`)return e.features;throw Error(`Invalid TopoJSON`)}},_q=class extends sK{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,n){return t===`COL`?this.isColHidden(e,n):this.isRowHidden(e,n)}getNextVisibleCellPosition({sheetId:e,col:t,row:n}){return{sheetId:e,col:this.findVisibleHeader(e,`COL`,t,this.getters.getNumberCols(e)-1),row:this.findVisibleHeader(e,`ROW`,n,this.getters.getNumberRows(e)-1)}}findVisibleHeader(e,t,n,r){if(n<=r){for(let i=n;i<=r;i++)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}if(n>r){for(let i=n;i>=r;i--)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}}findLastVisibleColRowIndex(e,t,{last:n,first:r}){return S(n,r,-1).find(n=>!this.isHeaderHidden(e,t,n))||r}findFirstVisibleColRowIndex(e,t){let n=this.getters.getNumberHeaders(e,t);for(let r=0;r<n;r++)if(t===`COL`&&!this.isColHidden(e,r)||t===`ROW`&&!this.isRowHidden(e,r))return r}exportForExcel(e){for(let t of e.sheets)for(let[e,n]of Object.entries(t.rows))n.isHidden=this.isRowHidden(t.id,Number(e))}},vq=class extends sK{static getters=[];allowDispatch(e){switch(e.type){case`DUPLICATE_PIVOT_IN_NEW_SHEET`:if(!this.getters.isExistingPivot(e.pivotId))return`PivotIdNotFound`;if(!this.getters.getPivot(e.pivotId).isValid())return`PivotInError`;break}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){Gn(this.getters.getSelectedZone())===1&&this.selection.selectTableAroundSelection();let n=this.getters.getActiveSheetId();this.dispatch(`ADD_PIVOT`,{pivotId:e,pivot:{dataSet:{zone:this.getters.getSelectedZone(),sheetId:n},columns:[],rows:[],measures:[],name:k(`New pivot`),type:`SPREADSHEET`,style:{tableStyleId:ze}}});let r=this.getters.getSheetIds().findIndex(e=>e===n)+1,i=this.getters.getPivotFormulaId(e);this.dispatch(`CREATE_SHEET`,{sheetId:t,name:k(`Pivot #%(formulaId)s`,{formulaId:i}),position:r}),this.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:n,sheetIdTo:t});let a=this.getters.getPivot(e);this.insertPivotWithTable(t,0,0,e,a.getCollapsedTableStructure().export(),`dynamic`)}duplicatePivotInNewSheet(e,t,n){this.dispatch(`DUPLICATE_PIVOT`,{pivotId:e,newPivotId:t,duplicatedPivotName:k(`%s (copy)`,this.getters.getPivotCoreDefinition(e).name)});let r=this.getters.getActiveSheetId(),i=this.getters.getSheetIds().indexOf(r)+1,a=this.getters.getPivotFormulaId(t),o=this.getters.getPivotName(t);if(this.dispatch(`CREATE_SHEET`,{sheetId:n,name:this.getPivotDuplicateSheetName(k(`%(newPivotName)s (Pivot #%(formulaId)s)`,{newPivotName:o,formulaId:a})),position:i}).isSuccessful){this.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:r,sheetIdTo:n});let i=this.getters.getPivot(e);this.insertPivotWithTable(n,0,0,t,i.getCollapsedTableStructure().export(),`dynamic`)}}getPivotDuplicateSheetName(e){let t=this.getters.getSheetIds().map(e=>this.getters.getSheetName(e));return Ht(Qe(e),t)}insertPivotWithTable(e,t,n,r,i,a){let{cols:o,rows:s,measures:c,fieldsType:l}=i,u=new Qz(o,s,c,l||{}),d=u.columns.length-1;if(this.resizeSheet(e,t,n,u),a===`dynamic`)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:n,content:`=PIVOT(${this.getters.getPivotFormulaId(r)})`});else{this.dispatch(`INSERT_PIVOT`,{sheetId:e,col:t,row:n,pivotId:r,table:u.export()});let i={left:t,right:t+u.getNumberOfDataColumns(),top:n,bottom:n+d+u.rows.length};this.dispatch(`CREATE_TABLE`,{tableType:`static`,sheetId:e,ranges:[this.getters.getRangeDataFromZone(e,i)],config:{...Re,numberOfHeaders:d}})}}resizeSheet(e,t,n,r){let i=r.getNumberOfDataColumns()+1,a=this.getters.getNumberCols(e),o=a-t;o<i&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:a-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:i-o,position:`after`});let s=r.columns.length+r.rows.length,c=this.getters.getNumberRows(e),l=c-n;l<s&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`ROW`,base:c-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:s-l,position:`after`})}splitPivotFormula(e,t,n,r){let i={sheetId:e,col:t,row:n},a=this.getters.getSpreadZone(i),o=this.getters.getTable(i);if(!a)return;let s=this.getters.getPivotFormulaId(r),c=new Map;for(let t=a.left;t<=a.right;t++)for(let n=a.top;n<=a.bottom;n++){let r={sheetId:e,col:t,row:n};c.set(r,this.getters.getPivotCellFromPosition(r))}for(let[e,t]of c)this.dispatch(`UPDATE_CELL`,{...e,content:Sh(s,t)});if(this.getters.getCoreTable(i)&&this.dispatch(`REMOVE_TABLE`,{sheetId:e,target:[E(i)]}),o?.isPivotTable){let t=this.getters.getRangeDataFromZone(e,a);this.dispatch(`CREATE_TABLE`,{tableType:`static`,sheetId:e,ranges:[t],config:{...o.config,styleId:HB(o.config.styleId)}})}}};let yq=new B,bq=new B;function xq(e,t){if(t&&yq.contains(t.type))return yq.get(t.type)(e,t)}function Sq(e,t,n){if(bq.contains(t.type))return bq.get(t.type)(e,t,n)}function Cq(e){return!e||!e.rootCommand||typeof e.rootCommand!=`object`?!1:qs(e.rootCommand)?yq.contains(e.rootCommand.type):bq.contains(e.rootCommand.type)}function wq(e,t){if(!(!e.rootCommand||typeof e.rootCommand!=`object`))return qs(e.rootCommand)?xq(t,e.rootCommand):Sq(t,e.rootCommand,e.commands)}var Tq=class extends sK{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`;break}return`Success`}handle(e){switch(e.type){case`REQUEST_UNDO`:case`REQUEST_REDO`:this.requestHistoryChange(e.type===`REQUEST_UNDO`?`UNDO`:`REDO`)}}finalize(){}requestHistoryChange(e){let t=e===`UNDO`?this.undoStack.pop():this.redoStack.pop();if(!t){let e=this.getPossibleRevisionToRepeat();if(!e)return;let t=wq(e,this.getters);if(!t)return;if(!Array.isArray(t)){this.dispatch(t.type,t);return}for(let e of t)this.dispatch(e.type,e);return}e===`UNDO`?(this.session.undo(t),this.redoStack.push(t)):(this.session.redo(t),this.undoStack.push(t))}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0?!0:Cq(this.getPossibleRevisionToRepeat())}onNewLocalStateUpdate({id:e}){this.undoStack.push(e),this.redoStack=[],this.undoStack.length>99&&this.undoStack.shift()}getPossibleRevisionToRepeat(){return this.session.getLastLocalNonEmptyRevision()}},Eq=class extends sK{static getters=[`isCurrentSheetLocked`];allowDispatch(e){return Gs.has(e.type)||this.getters.isDashboard()?`Success`:`sheetId`in e&&this.getters.isSheetLocked(e.sheetId)||!qs(e)&&this.isCurrentSheetLocked()?`SheetLocked`:`Success`}isCurrentSheetLocked(){return this.getters.isSheetLocked(this.getters.getActiveSheetId())}},Dq=class{trackedValues=new Set;domainToArray(e){return e.flatMap(e=>[e.field,P(e.value)])}isValuePresent(e,t){let n=JSON.stringify({measure:e,domain:this.domainToArray(t)});return this.trackedValues.has(n)}isHeaderPresent(e){let t=JSON.stringify({domain:this.domainToArray(e)});return this.trackedValues.has(t)}trackValue(e,t){let n=JSON.stringify({measure:e,domain:this.domainToArray(t)});this.trackedValues.add(n)}trackHeader(e){let t=JSON.stringify({domain:this.domainToArray(e)});this.trackedValues.add(t)}},Oq=class extends sK{static getters=[`getPivotPresenceTracker`];trackPresencePivotId;tracker;handle(e){switch(e.type){case`PIVOT_START_PRESENCE_TRACKING`:this.tracker=new Dq,this.trackPresencePivotId=e.pivotId;break;case`PIVOT_STOP_PRESENCE_TRACKING`:this.trackPresencePivotId=void 0;break}}getPivotPresenceTracker(e){if(this.trackPresencePivotId===e){if(!this.tracker)throw Error(`Tracker not initialized`);return this.tracker}}},kq=class extends sK{allowDispatch(e){switch(e.type){case`SORT_CELLS`:return An(e.col,e.row,e.zone)?this.checkValidations(e,this.checkMerge,this.checkMergeSizes,this.checkArrayFormulaInSortZone):`InvalidSortAnchor`}return`Success`}handle(e){switch(e.type){case`SORT_CELLS`:this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{});break}}checkMerge({sheetId:e,zone:t}){return this.getters.doesIntersectMerge(e,t)&&Fn(t).some(({col:t,row:n})=>!this.getters.isInMerge({sheetId:e,col:t,row:n}))?`InvalidSortZone`:`Success`}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return`Success`;let n=this.getters.getMerges(e).filter(e=>On(e,t)),r=Mn(n[0]),[i,a]=[r.numberOfCols,r.numberOfRows];return n.every(e=>{let[t,n]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&n===a})?`Success`:`InvalidSortZone`}checkArrayFormulaInSortZone({sheetId:e,zone:t}){return Fn(t).some(({col:t,row:n})=>{let r=this.getters.getArrayFormulaSpreadingOn({sheetId:e,col:t,row:n});return r&&!w(r,{sheetId:e,col:t,row:n})})?`SortZoneWithArrayFormulas`:`Success`}hasHeader(e,t){if(t[0].length===1)return!1;let n=t.map(t=>t.map(({col:t,row:n})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}).type));return n[0][0]===`empty`&&(n=n.slice(1)),n.some(e=>e[0]===`empty`)?!1:!!n.some(e=>e[1]!==`empty`&&e[0]!==e[1])}sortZone(e,t,n,r,i){let[a,o]=this.mainCellsSteps(e,n),s=this.getters.getMainCellPosition({sheetId:e,col:t.col,row:t.row}).col,c=Object.assign({},n),l=this.mainCells(e,n);!i.sortHeaders&&this.hasHeader(e,l)&&(c.top+=o),l=this.mainCells(e,c);let u=l[s-c.left],d=kw(u.map(e=>this.getters.getEvaluatedCell(e)),r,!!i.emptyCellAsZero).map(e=>e.index),[f,p]=[l.length,l[0].length],m=[];for(let e=0;e<f;e++)for(let t=0;t<p;t++){let{col:n,row:r,sheetId:i}=l[e][d[t]],s=this.getters.getCell({sheetId:i,col:n,row:r}),u=c.left+e*a,f=c.top+t*o,p={sheetId:i,col:u,row:f,content:``};if(s){let e;if(s.isFormula){let t=this.getters.getCellPosition(s.id);e=this.getters.getTranslatedCellFormula(i,0,f-t.row,s.compiledFormula)}else e=s.content;p.style=s.style,p.content=e,p.format=s.format}m.push(p)}m.forEach(e=>this.dispatch(`UPDATE_CELL`,e))}mainCellsSteps(e,t){let n=this.getters.getMerge({sheetId:e,col:t.left,row:t.top});return[n?n.right-n.left+1:1,n?n.bottom-n.top+1:1]}mainCells(e,t){let[n,r]=this.mainCellsSteps(e,t),i=[],a=S(t.left,t.right+1,n),o=S(t.top,t.bottom+1,r);for(let t of a){let n=[];i.push(n);for(let r of o)n.push({sheetId:e,col:t,row:r})}return i}},Aq=class extends sK{static getters=[`getAutomaticSeparator`];allowDispatch(e){switch(e.type){case`SPLIT_TEXT_INTO_COLUMNS`:return this.chainValidations(this.batchValidations(this.checkSingleColSelected,this.checkNonEmptySelector),this.batchValidations(this.checkNotOverwritingContent,this.checkSeparatorInSelection))(e)}return`Success`}handle(e){switch(e.type){case`SPLIT_TEXT_INTO_COLUMNS`:this.splitIntoColumns(e);break}}getAutomaticSeparator(){let e=this.getters.getSelectedCells();for(let t of e)if(t.value&&t.type===`text`){let e=this.getAutoSeparatorForString(t.value);if(e)return e}return` `}getAutoSeparatorForString(e){for(let t of[`
116
+ %s unique rows remain.`,e.toString(),t.toString()),sticky:!1})}checkSingleRangeSelected(){return this.getters.getSelectedZones().length===1?`Success`:`MoreThanOneRangeSelected`}checkNoMergeInZone(){let e=this.getters.getActiveSheetId(),t=this.getters.getSelectedZone();return this.getters.getMergesInZone(e,t).length>0?`WillRemoveExistingMerge`:`Success`}checkRangeContainsValues(e){let t=this.getters.getActiveSheetId(),n=this.getters.getSelectedZone();return e.hasHeader&&(n.top+=1),this.getters.getEvaluatedCellsInZone(t,n).every(e=>e.type===`empty`)?`EmptySelectedRange`:`Success`}checkNoColumnProvided(e){return e.columns.length===0?`NoColumnsProvided`:`Success`}checkColumnsIncludedInZone(e){let 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?`Success`:`DuplicatesColumnsSelected`}trimWhitespace(){let e=nn(this.getters.getSelectedZones()),t=this.getters.getActiveSheetId(),n=0;for(let{col:r,row:i}of e.map(Fn).flat()){let e=this.getters.getCell({col:r,row:i,sheetId:t});if(!e)continue;let a=e.isFormula?e.compiledFormula.toFormulaString(this.getters):e.content,o=Pt(a);o!==a&&(n+=1,this.dispatch(`UPDATE_CELL`,{sheetId:t,col:r,row:i,content:o}))}let r=n?k(`Trimmed whitespace from %s cells.`,n):k(`No selected cells had whitespace trimmed.`);this.ui.notifyUI({type:`info`,text:r,sticky:!1})}};let lK=new B;lK.add(`ALPHANUMERIC_INCREMENT_MODIFIER`,{apply:(e,t)=>{e.current+=e.increment;let n=Math.abs(e.current).toString();n=`0`.repeat(Math.max(e.numberPostfixLength-n.length,0))+n;let r=`${e.prefix}${n}`;return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:{props:{content:r}}}}}).add(`INCREMENT_MODIFIER`,{apply:(e,t,n)=>{e.current+=e.increment;let r=e.current.toString(),i=n.getLocale(),a=z(e.current,{format:t.cell?.format,locale:i});return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:a}}:void 0}}}).add(`DATE_INCREMENT_MODIFIER`,{apply:(e,t,n)=>{let r=I(e.current,n.getLocale());r.setFullYear(r.getFullYear()+e.increment.years||0),r.setMonth(r.getMonth()+e.increment.months||0),r.setDate(r.getDate()+e.increment.days||0);let i=zi(r);e.current=i;let a=n.getLocale(),o=z(i,{format:t.cell?.format,locale:a});return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:i.toString()},tooltip:i?{props:{content:o}}:void 0}}}).add(`COPY_MODIFIER`,{apply:(e,t,n)=>{let r=t.cell?.isFormula?t.cell?.compiledFormula.toFormulaString(n):t.cell?.content||``,i={locale:n.getLocale(),format:t.cell?.format};return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:t.cell?oc(t.cell,i).formattedValue:``}}:void 0}}}).add(`FORMULA_MODIFIER`,{apply:(e,t,n,r)=>{e.current+=e.increment;let i=0,a=0;switch(r){case`up`:i=0,a=-e.current;break;case`down`:i=0,a=e.current;break;case`left`:i=-e.current,a=0;break;case`right`:i=e.current,a=0;break}let o=t.cell;if(!o||!o.isFormula)return{cellData:{}};let s=t.sheetId,c=n.getTranslatedCellFormula(s,i,a,o.compiledFormula);return{cellData:{border:t.border,style:o.style,format:o.format,content:c},tooltip:c?{props:{content:c}}:void 0}}});let uK=new B,dK=/(\d+)$/,fK=/^(.*\D+)/,pK=/^(.*\D+)(\d+)$/,mK=/^0*/;function hK(e,t,n){let r=[],i=!1;for(let a of t){a===e&&(i=!0);let t=a===void 0||a.isFormula?void 0:oc(a,{locale:R,format:a.format});if(t&&n(t))r.push(t);else{if(i)return r;r=[]}}return r}function gK(e){let t=[],n=e[0];for(let r=1;r<e.length;r++){let i=e[r];t.push(i-n),n=i}return t.reduce((e,t)=>e+t,0)/t.length}function _K(e){let t=1;return e.length>=2&&(t=gK(e)*e.length),t}function vK(e){return e.length<2?e[0]||{years:0,months:0,days:0}:e.every(t=>t.years===e[0].years&&t.months===e[0].months&&t.days===e[0].days)?e[0]:void 0}function yK(e){if(e.length<2)return 1;let t=e.map(e=>I(e,R)),n=vK(bK(t));if(n===void 0)return;let r=Object.values(n).filter(e=>e!==0).length===1,i=Object.values(n).every(e=>e===0);if(!r||i){let n=t.map((e,n)=>{if(n===0)return 0;let r=t[n-1];return Math.floor(e.getTime())-Math.floor(r.getTime())}).slice(1);if(n.every(e=>e===n[0]))return e.length*(e[1]-e[0])}return{years:n.years*e.length,months:n.months*e.length,days:n.days*e.length}}uK.add(`simple_value_copy`,{condition:(e,t)=>t.length===1&&!e.isFormula&&!(e.format&&os(e.format)),generateRule:()=>({type:`COPY_MODIFIER`}),sequence:10}).add(`increment_alphanumeric_value`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`text`&&pK.test(e.content),generateRule:(e,t,n)=>{let r=parseInt(e.content.match(dK)[0]),i=e.content.match(fK)[0],a=hK(e,t,e=>e.type===`text`&&pK.test(e.value)).filter(e=>i===(e.value??``).toString().match(fK)[0]).map(e=>(e.value??``).toString().match(dK)[0]),o=a.reduce((e,t)=>{let n=t.match(mK)[0].length;return n>e[1]?[t,n]:e},[a[0],0]),s=o[1]?o[0].length:0,c=_K(a.map(e=>parseInt(e)));return[`up`,`left`].includes(n)&&a.length===1&&(c=-c),{type:`ALPHANUMERIC_INCREMENT_MODIFIER`,prefix:i,current:r,increment:c,numberPostfixLength:s}},sequence:15}).add(`copy_text`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`text`,generateRule:()=>({type:`COPY_MODIFIER`}),sequence:20}).add(`update_formula`,{condition:e=>e.isFormula,generateRule:(e,t)=>({type:`FORMULA_MODIFIER`,increment:t.length,current:0}),sequence:30}).add(`increment_dates`,{condition:(e,t)=>!e.isFormula&&oc(e,{locale:R}).type===`number`&&!!e.format&&os(e.format),generateRule:(e,t)=>{let n=yK(hK(e,t,e=>e.type===`number`&&!!e.format&&os(e.format)).map(e=>Number(e.value)));if(n===void 0)return{type:`COPY_MODIFIER`};let r=oc(e,{locale:R});return typeof n==`object`?{type:`DATE_INCREMENT_MODIFIER`,increment:n,current:r.type===`number`?r.value:0}:{type:`INCREMENT_MODIFIER`,increment:n,current:r.type===`number`?r.value:0}},sequence:25}).add(`increment_number`,{condition:e=>!e.isFormula&&oc(e,{locale:R}).type===`number`,generateRule:(e,t,n)=>{let r=hK(e,t,e=>e.type===`number`&&!os(e.format||``)).map(e=>Number(e.value)),i=_K(r);[`up`,`left`].includes(n)&&r.length===1&&(i=-i);let a=oc(e,{locale:R});return{type:`INCREMENT_MODIFIER`,increment:i,current:a.type===`number`?a.value:0}},sequence:40});function bK(e){return e.length<2?[{years:0,months:0,days:0}]:e.map((t,n)=>{if(n===0)return{years:0,months:0,days:0};let r=O.fromTimestamp(e[n-1].getTime()),i=qi(r,t),a=Gi(r,t)%12;return r.setFullYear(r.getFullYear()+i),r.setMonth(r.getMonth()+a),{years:i,months:a,days:Ki(r,t)}}).slice(1)}var xK=class{cells;getters;index=0;direction;constructor(e,t,n){this.cells=e,this.getters=t,this.direction=n}next(){let e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:n,tooltip:r}=lK.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:n,tooltip:r,origin:{col:e.data.col,row:e.data.row}}}},SK=class extends sK{static layers=[`Autofill`];static getters=[`getAutofillTooltip`];autofillZone;steps;lastCellSelected={};direction;tooltip;allowDispatch(e){switch(e.type){case`AUTOFILL_SELECT`:let t=this.getters.getActiveSheetId();return this.lastCellSelected.col=e.col===-1?this.lastCellSelected.col:x(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=e.row===-1?this.lastCellSelected.row:x(e.row,0,this.getters.getNumberRows(t)),this.lastCellSelected.col!==void 0&&this.lastCellSelected.row!==void 0?`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();break}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||this.direction===void 0){this.tooltip=void 0;return}let t=this.getters.getSelectedZone(),n=this.autofillZone,r=[];switch(this.direction){case`down`:for(let e=t.left;e<=t.right;e++){let i=[];for(let n=t.top;n<=t.bottom;n++)i.push(T(e,n));let a=this.createGenerator(i);for(let t=n.top;t<=n.bottom;t++)r.push(this.computeNewCell(a,e,t))}break;case`up`:for(let e=t.left;e<=t.right;e++){let i=[];for(let n=t.bottom;n>=t.top;n--)i.push(T(e,n));let a=this.createGenerator(i);for(let t=n.bottom;t>=n.top;t--)r.push(this.computeNewCell(a,e,t))}break;case`left`:for(let e=t.top;e<=t.bottom;e++){let i=[];for(let n=t.right;n>=t.left;n--)i.push(T(n,e));let a=this.createGenerator(i);for(let t=n.right;t>=n.left;t--)r.push(this.computeNewCell(a,t,e))}break;case`right`:for(let e=t.top;e<=t.bottom;e++){let i=[];for(let n=t.left;n<=t.right;n++)i.push(T(n,e));let a=this.createGenerator(i);for(let t=n.left;t<=n.right;t++)r.push(this.computeNewCell(a,t,e))}break}if(e){let e={},t={},n={},i=this.getters.getActiveSheetId();for(let a of r)this.collectBordersData(a,e),this.autofillMerge(i,a),this.autofillCell(i,a),this.collectConditionalFormatsData(i,a,t),this.collectDataValidationsData(i,a,n);this.autofillBorders(i,e),this.autofillConditionalFormats(i,t),this.autofillDataValidations(i,n),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){let n=JSON.stringify(e.border);n in t||(t[n]=[]),t[n].push(E({col:e.col,row:e.row}))}collectConditionalFormatsData(e,t,n){let{originCol:r,originRow:i,col:a,row:o}=t,s=this.getters.getRulesByCell(e,r,i),c=T(a,o);for(let e of s)e.id in n||(n[e.id]=[]),n[e.id].push(c)}collectDataValidationsData(e,t,n){let{originCol:r,originRow:i,col:a,row:o}=t,s={sheetId:e,col:r,row:i},c=this.getters.getValidationRuleForCell(s);c&&(c.id in n||(n[c.id]=[]),n[c.id].push(E({col:a,row:o})))}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(let n in t){let r=n===`undefined`?void 0:JSON.parse(n);this.dispatch(`SET_BORDERS_ON_TARGET`,{sheetId:e,border:r,target:nn(t[n])})}}autofillConditionalFormats(e,t){for(let n in t){let r=t[n],i=this.getters.getConditionalFormats(e).find(e=>e.id===n);if(!i)continue;let a=this.getters.getAdaptedCfRanges(e,i,r.map(mn),[]);a&&this.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:i.id,rule:i.rule,stopIfTrue:i.stopIfTrue},ranges:a,sheetId:e})}}autofillDataValidations(e,t){for(let n in t){let r=t[n],i=this.getters.getDataValidationRule(e,n);if(!i)continue;let a=nn(i.ranges.map(e=>e.zone).concat(r),[]);this.dispatch(`ADD_DATA_VALIDATION_RULE`,{rule:i,ranges:a.map(t=>this.getters.getRangeDataFromZone(e,t)),sheetId:e})}}select(e,t){let n=this.getters.getSelectedZone();if(An(e,t,n)){this.autofillZone=void 0;return}switch(this.direction=this.getDirection(e,t),this.direction){case`up`:this.saveZone(t,n.top-1,n.left,n.right),this.steps=n.top-t;break;case`down`:this.saveZone(n.bottom+1,t,n.left,n.right),this.steps=t-n.bottom;break;case`left`:this.saveZone(n.top,n.bottom,e,n.left-1),this.steps=n.left-e;break;case`right`:this.saveZone(n.top,n.bottom,n.right+1,e),this.steps=e-n.right;break}this.autofill(!1)}autofillAuto(){let e=this.getters.getActivePosition(),t=this.getters.getTable(e),n=t?t.range.zone.bottom:this.getAutofillAutoLastRow(),r=this.getters.getSelectedZone();for(let t=r.bottom+1;t<=n;t++)if(this.getters.getEvaluatedCell({...e,row:t}).type!==`empty`){n=t-1;break}n>r.bottom&&(this.select(e.col,n),this.autofill(!0))}getAutofillAutoLastRow(){let e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId(),n=e.left,r=e.bottom;if(n>0){let e={sheetId:t,col:n-1,row:r};for(;this.getters.getEvaluatedCell(e).type!==`empty`;)r+=1,e={sheetId:t,col:n-1,row:r}}if(r===e.bottom&&(n=e.right,n<=this.getters.getNumberCols(t))){let e={sheetId:t,col:n+1,row:r};for(;this.getters.getEvaluatedCell(e).type!==`empty`;)r+=1,e={sheetId:t,col:n+1,row:r}}return r-1}computeNewCell(e,t,n){let{cellData:r,tooltip:i,origin:a}=e.next(),{content:o,style:s,border:c,format:l}=r;return this.tooltip=i,{originCol:a.col,originRow:a.row,col:t,row:n,content:o,style:s,border:c,format:l}}getRule(e,t){let n=uK.getAll().sort((e,t)=>e.sequence-t.sequence).find(n=>n.condition(e,t));return n&&this.direction&&n.generateRule(e,t,this.direction)}createGenerator(e){let t=[],n=[],r=this.getters.getActiveSheetId();for(let t of e){let{col:e,row:i}=tn(t),a=this.getters.getCell({sheetId:r,col:e,row:i});n.push({col:e,row:i,cell:a,sheetId:r})}let i=n.map(e=>e.cell);for(let e of n){let n={type:`COPY_MODIFIER`};e&&e.cell&&(n=this.getRule(e.cell,i)||n);let r=this.getters.getCellBorder(e)??void 0;t.push({data:{...e,border:r},rule:n})}return new xK(t,this.getters,this.direction)}saveZone(e,t,n,r){this.autofillZone={top:e,bottom:t,left:n,right:r}}getDirection(e,t){let n=this.getters.getSelectedZone(),r={up:{number:n.top-t,value:`up`},down:{number:t-n.bottom,value:`down`},left:{number:n.left-e,value:`left`},right:{number:e-n.right,value:`right`}};if(Object.values(r).map(e=>+(e.number>0)).reduce((e,t)=>e+t)===1)return Object.values(r).find(e=>+(e.number>0)).value;let i=r.up.number>0?`up`:`down`,a=r.left.number>0?`left`:`right`;return Math.abs(r[i].number)>=Math.abs(r[a].number)?r[i].value:r[a].value}autofillMerge(e,t){let{originCol:n,originRow:r,col:i,row:a}=t,o={sheetId:e,col:i,row:a},s={sheetId:e,col:n,row:r};if(this.getters.isInMerge(o)&&!this.getters.isInMerge(s)){let t=this.getters.getMerge(o);t&&this.dispatch(`REMOVE_MERGE`,{sheetId:e,target:[t]})}let c=this.getters.getMerge(s);c?.left===n&&c?.top===r&&this.dispatch(`ADD_MERGE`,{sheetId:e,target:[{top:a,bottom:a+c.bottom-c.top,left:i,right:i+c.right-c.left}]})}drawLayer(e){if(!this.autofillZone)return;let{ctx:t,thinLineWidth:n}=e,{x:r,y:i,width:a,height:o}=this.getters.getVisibleRect(this.autofillZone);a>0&&o>0&&(t.strokeStyle=`black`,t.lineWidth=n,t.setLineDash([3]),t.strokeRect(r,i,a,o),t.setLineDash([]))}},CK=class extends sK{static getters=[`getAutomaticSums`];handle(e){switch(e.type){case`SUM_SELECTION`:let e=this.getters.getActiveSheetId(),{zones:t,anchor:n}=this.getters.getSelection();for(let r of t){let t=this.getAutomaticSums(e,r,n.cell);this.dispatchCellUpdates(e,t)}break}}getAutomaticSums(e,t,n){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,n):this.sumData(e,t)}sumData(e,t){let n=this.dimensionsToSum(e,t),r=this.sumDimensions(e,t,n).filter(({zone:t})=>!this.getters.isEmpty(e,t));return n.has(`ROW`)&&n.has(`COL`)&&r.push(this.sumTotal(t)),r}sumAdjacentData(e,t,n){let{col:r,row:i}=An(n.col,n.row,t)?n:{col:t.left,row:t.top},a=this.findAdjacentData(e,r,i);return a?this.getters.isSingleCellOrMerge(e,t)||Nn(wn(a,t))?[{position:{col:r,row:i},zone:a}]:this.sumDimensions(e,wn(a,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,n){let r=this.getters.getSheet(e),i=this.getters.getMainCellPosition({sheetId:e,col:t,row:n}),a=this.findSuitableZoneToSum(r,i.col,i.row);if(a)return this.getters.expandZone(e,a)}findSuitableZoneToSum(e,t,n){let r=this.getters.getEvaluatedCell({sheetId:e.id,col:t,row:n-1}),i=this.getters.getEvaluatedCell({sheetId:e.id,col:t-1,row:n});if(this.isNumber(i)&&!this.isNumber(r))return this.findHorizontalZone(e,t,n);let a=this.findVerticalZone(e,t,n);if(this.isZoneValid(a))return a;let o=this.findHorizontalZone(e,t,n);if(this.isZoneValid(o))return o}findVerticalZone(e,t,n){let r={top:0,bottom:n-1,left:t,right:t},i=this.reduceZoneStart(e,r,r.bottom);return{...r,top:i}}findHorizontalZone(e,t,n){let r={top:n,bottom:n,left:0,right:t-1},i=this.reduceZoneStart(e,r,r.right);return{...r,left:i}}reduceZoneStart(e,t,n){let r=this.getters.getEvaluatedCellsInZone(e.id,t),i=S(n,-1,-1),a=Lt(i.filter(e=>r[e]&&!r[e].isAutoSummable)),o=$e(i.filter(e=>this.isNumber(r[e])))[0]||[];return Lt(o)<a?1/0:Rt(o)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){return e.type===`number`&&!(e.format&&os(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){let n=new Set;return Nn(t)?(n.add(Mn(t).numberOfCols===1?`COL`:`ROW`),n):(this.lastColIsEmpty(e,t)&&n.add(`ROW`),this.lastRowIsEmpty(e,t)&&n.add(`COL`),n.size===0&&n.add(`COL`),n)}sumDimensions(e,t,n){return[...n.has(`COL`)?this.sumColumns(t,e):[],...n.has(`ROW`)?this.sumRows(t,e):[]]}sumTotal(e){let{bottom:t,right:n}=e;return{position:{col:n,row:t},zone:{...e,top:t,right:n-1}}}sumColumns(e,t){let n=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,n.bottom-1)},Fn(n).map(t=>({position:t,zone:{...e,right:t.col,left:t.col}}))}sumRows(e,t){let n=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,n.right-1)},Fn(n).map(t=>({position:t,zone:{...e,top:t.row,bottom:t.row}}))}dispatchCellUpdates(e,t){for(let n of t){let{col:t,row:r}=n.position;this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:r,content:`=SUM(${this.getters.zoneToXC(e,n.zone)})`})}}nextEmptyRow(e,t){let n=t.bottom+1,{left:r,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:n,top:n,left:r,right:i});)n++;return{...t,top:n,bottom:n}}nextEmptyCol(e,t){let n=t.right+1,{top:r,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:n,right:n,top:r,bottom:i});)n++;return{...t,left:n,right:n}}transpose(e){return new Set([...e.values()].map(e=>e===`COL`?`ROW`:`COL`))}},wK=class extends sK{static getters=[`getCellTableStyle`,`getCellTableBorder`];tableStyles={};handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`&&(`content`in e||`format`in e)||e.type===`EVALUATE_CELLS`){this.tableStyles={};return}if(EK(e)){`sheetId`in e?delete this.tableStyles[e.sheetId]:this.tableStyles={};return}}finalize(){for(let e of this.getters.getSheetIds()){this.tableStyles[e]||(this.tableStyles[e]={});for(let t of this.getters.getTables(e))this.tableStyles[e][t.id]||(this.tableStyles[e][t.id]=this.computeTableStyle(e,t))}}getCellTableStyle(e){let t=this.getters.getTable(e);if(t)try{return this.tableStyles[e.sheetId][t.id]().styles[e.col]?.[e.row]}catch(e){if(M(e)||e instanceof j)return;throw e}}getCellTableBorder(e){let t=this.getters.getTable(e);if(t)try{return this.tableStyles[e.sheetId][t.id]().borders[e.col]?.[e.row]}catch(e){if(M(e)||e instanceof j)return;throw e}}computeTableStyle(e,t){return _t(()=>{let n=this.getters.getTableStyle(t.config.styleId),r=this.getTableMetaData(e,t);if(!r)return{borders:{},styles:{}};let{tableMetaData:i,config:a}=r,o=JB(a,n,i),s=this.getTableMapping(e,t),c={borders:{},styles:{}};for(let e=0;e<i.numberOfCols;e++){let t=s.colMapping[e];c.borders[t]={},c.styles[t]={};for(let n=0;n<i.numberOfRows;n++){let r=s.rowMapping[n];c.borders[t][r]=o.borders[e][n],c.styles[t][r]=o.styles[e][n]}}return c})}getTableMetaData(e,t){let{config:n,numberOfCols:r,numberOfRows:i}=this.getTableRuntimeConfig(e,t);if(!t.isPivotTable)return{tableMetaData:{numberOfCols:r,numberOfRows:i,mode:`table`},config:n};let a={sheetId:e,col:t.range.zone.left,row:t.range.zone.top},o=this.getters.getPivotStyleAtPosition(a);if(!o)throw Error(`No dynamic pivot info found at pivot table position`);let s=this.getters.getPivot(o.pivotId);if(!s.isValid())return;let c=o.pivotStyle,l=s.getExpandedTableStructure().getNumberOfRowGroupBys(),u=s.getCollapsedTableStructure().getPivotCells(c),d=new Set,f=new Set,p=new Set,m=0;for(let n=0;n<u[0].length;n++){if(this.getters.isRowHidden(e,n+t.range.zone.top)){m++;continue}let r=u[0][n];r.type!==`HEADER`||r.domain.length===0||(r.domain.length===1&&l>1?d.add(n-m):r.domain.length%2==0&&l>r.domain.length?f.add(n-m):r.domain.length%2==1&&l>r.domain.length&&p.add(n-m))}return{tableMetaData:{mode:`pivot`,numberOfCols:r,numberOfRows:i,mainSubHeaderRows:d,firstAlternatingSubHeaderRows:f,secondAlternatingSubHeaderRows:p,measureRow:n.numberOfHeaders&&c.displayMeasuresRow&&!this.getters.isRowHidden(e,n.numberOfHeaders-1+t.range.zone.top)?n.numberOfHeaders-1:void 0},config:n}}getTableRuntimeConfig(e,t){let n=t.range.zone,r={...t.config},i=n.right-n.left+1,a=n.bottom-n.top+1;for(let i=n.top;i<=n.bottom;i++)this.getters.isRowHidden(e,i)&&(a--,i-n.top<t.config.numberOfHeaders&&(r.numberOfHeaders--,r.numberOfHeaders<0&&(r.numberOfHeaders=0)),i===n.bottom&&(r.totalRow=!1));for(let t=n.left;t<=n.right;t++)this.getters.isColHidden(e,t)&&(i--,t===n.left&&(r.firstColumn=!1),t===n.right&&(r.lastColumn=!1));return{config:r,numberOfCols:i,numberOfRows:a}}getTableMapping(e,t){let n={},r={},i=0,a=0,o=t.range.zone;for(let t=o.left;t<=o.right;t++)if(!this.getters.isColHidden(e,t)){n[i]=t,i++;for(let t=o.top;t<=o.bottom;t++)this.getters.isRowHidden(e,t)||(r[a]=t,a++)}return{colMapping:n,rowMapping:r}}};let TK=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`,`DELETE_CONTENT`]);function EK(e){return TK.has(e.type)}var DK=class extends sK{static getters=[`getCellComputedBorder`,`getCellComputedStyle`];styles=new SV;borders=new SV;handle(e){if(Rs.has(e.type)||e.type===`UPDATE_CELL`||e.type===`SET_FORMATTING`||e.type===`CLEAR_FORMATTING`||e.type===`ADD_DATA_VALIDATION_RULE`||e.type===`REMOVE_DATA_VALIDATION_RULE`||e.type===`EVALUATE_CELLS`){this.styles=new SV,this.borders=new SV;return}if(EK(e)){`sheetId`in e?(this.styles.clearSheet(e.sheetId),this.borders.clearSheet(e.sheetId)):(this.styles=new SV,this.borders=new SV);return}if(Vs.has(e.type)){this.styles=new SV;return}if(Hs.has(e.type)){this.borders=new SV;return}}getCellComputedBorder(e){let t=this.borders.get(e);return t===void 0&&(t=this.computeCellBorder(e),this.borders.set(e,t)),t}getCellComputedStyle(e){let t=this.styles.get(e);return t===void 0&&(t=this.computeCellStyle(e),this.styles.set(e,t)),t}computeCellStyle(e){let t=this.getters.getCell(e),n=this.getters.getCellConditionalFormatStyle(e),r=this.getters.getCellTableStyle(e),i=this.getters.getDataValidationCellStyle(e),a={...Ct(r),...Ct(i),...Ct(t?.style),...Ct(n)};return this.getters.getEvaluatedCell(e).link&&!a.textColor&&(a.textColor=`#017E84`),a}computeCellBorder(e){let t=this.getters.getCellBorder(e)||{},n={...Ct(this.getters.getCellTableBorder(e)||{}),...Ct(t)};return ft(n)?null:n}},OK=class extends sK{static getters=[`hasBooleanValidationInZones`];handle(e){switch(e.type){case`TOGGLE_CHECKBOX`:this.toggleCheckbox(e.sheetId,e.target);break}}hasBooleanValidationInZones(e){let t=this.getters.getActiveSheetId();for(let n of e)for(let e=n.left;e<=n.right;e++)for(let r=n.top;r<=n.bottom;r++)if(this.getters.isCellValidCheckbox({col:e,row:r,sheetId:t}))return!0;return!1}toggleCheckbox(e,t){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let r=n.top;r<=n.bottom;r++){let n={col:t,row:r,sheetId:e};if(this.getters.isCellValidCheckbox(n)){let e=this.getters.getEvaluatedCell(n).value?`FALSE`:`TRUE`;this.dispatch(`UPDATE_CELL`,{...n,content:e})}}}};let kK=new class extends B{addTransformation(e,t,n){this.content[e]||(this.content[e]=new Map);for(let r of t)this.content[e].set(r,n);return this}getTransformation(e,t){return this.content[t]&&this.content[t].get(e)}},AK=new class extends B{add(e,t){return super.add(e,t),this}replace(e,t){return super.replace(e,t),this}get(e){return this.content[e]}};kK.addTransformation(`ADD_COLUMNS_ROWS`,[`ADD_COLUMNS_ROWS`],UK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`ADD_COLUMNS_ROWS`],UK),kK.addTransformation(`DELETE_SHEET`,[`MOVE_RANGES`],PK),kK.addTransformation(`DELETE_FIGURE`,[`UPDATE_FIGURE`,`UPDATE_CHART`,`UPDATE_CAROUSEL`],FK),kK.addTransformation(`DELETE_CHART`,[`UPDATE_CHART`],IK),kK.addTransformation(`DELETE_CHART`,[`UPDATE_CAROUSEL`],LK),kK.addTransformation(`CREATE_SHEET`,[`CREATE_SHEET`],RK),kK.addTransformation(`ADD_MERGE`,[`ADD_MERGE`,`REMOVE_MERGE`],zK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`FREEZE_COLUMNS`,`FREEZE_ROWS`],BK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`FREEZE_COLUMNS`,`FREEZE_ROWS`],BK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`UPDATE_TABLE`],VK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`UPDATE_TABLE`],VK),kK.addTransformation(`REMOVE_TABLE_STYLE`,[`CREATE_TABLE`,`UPDATE_TABLE`],HK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`GROUP_HEADERS`,`UNGROUP_HEADERS`,`FOLD_HEADER_GROUP`,`UNFOLD_HEADER_GROUP`],WK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`GROUP_HEADERS`,`UNGROUP_HEADERS`,`FOLD_HEADER_GROUP`,`UNFOLD_HEADER_GROUP`],WK),kK.addTransformation(`REMOVE_PIVOT`,[`RENAME_PIVOT`,`DUPLICATE_PIVOT`,`INSERT_PIVOT`,`UPDATE_PIVOT`],NK),kK.addTransformation(`DELETE_SHEET`,[`ADD_PIVOT`,`UPDATE_PIVOT`],MK),kK.addTransformation(`ADD_COLUMNS_ROWS`,[`ADD_PIVOT`,`UPDATE_PIVOT`],jK),kK.addTransformation(`REMOVE_COLUMNS_ROWS`,[`ADD_PIVOT`,`UPDATE_PIVOT`],jK);function jK(e,t){if(e.pivot.type!==`SPREADSHEET`||e.pivot.dataSet?.sheetId!==t.sheetId)return e;let n=nr(e.pivot.dataSet.zone,t),r=n?{...e.pivot.dataSet,zone:n}:void 0;return{...e,pivot:{...e.pivot,dataSet:r}}}function MK(e,t){return e.pivot.type===`SPREADSHEET`&&e.pivot.dataSet?.sheetId===t.sheetId?{...e,pivot:{...e.pivot,dataSet:void 0}}:e}function NK(e,t){if(e.pivotId!==t.pivotId)return e}function PK(e,t){let n=t.sheetId;if(!(e.targetSheetId===n||e.sheetId===n))return e}function FK(e,t){if(e.figureId!==t.figureId)return e}function IK(e,t){if(e.chartId!==t.chartId)return e}function LK(e,t){return{...e,definition:{...e.definition,items:e.definition.items.filter(e=>!(e.type===`chart`&&e.chartId===t.chartId))}}}function RK(e,t){return e.sheetId===t.sheetId&&(e={...e,sheetId:`${e.sheetId}~`}),e.name===t.name?{...e,name:e.name?.match(/\d+/)?e.name.replace(/\d+/,e=>(parseInt(e)+1).toString()):`${e.name}~`,position:e.position+1}:e}function zK(e,t){if(e.sheetId!==t.sheetId)return e;let n=[];for(let r of e.target)t.target.every(e=>!On(r,e))&&n.push(r);if(n.length)return{...e,target:n}}function BK(e,t){if(e.sheetId!==t.sheetId||(e.type===`FREEZE_COLUMNS`?`COL`:`ROW`)!==t.dimension)return e;let n=e.quantity;if(t.type===`REMOVE_COLUMNS_ROWS`){let e=[...t.elements].sort((e,t)=>t-e);for(let t of e)n>t&&n--}if(t.type===`ADD_COLUMNS_ROWS`){let e=t.position===`before`?t.base-1:t.base;n=n>e?n+t.quantity:n}return n>0?{...e,quantity:n}:void 0}function VK(e,t){if(e.sheetId!==t.sheetId)return e;let n=nr(e.zone,t);if(!n)return;let r=e.newTableRange?rr(e.newTableRange,t):void 0;return{...e,newTableRange:r,zone:n}}function HK(e,t){return e.config?.styleId===t.tableStyleId?{...e,config:{...e.config,styleId:HA.styleId}}:e}function UK(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let n;if(t.type===`REMOVE_COLUMNS_ROWS`?n=bl(t.elements,[e.base])[0]:t.type===`ADD_COLUMNS_ROWS`&&(n=yl(yt(t.position,t.base),t.quantity,[e.base])[0]),n!==void 0)return{...e,base:n}}function WK(e,t){if(e.sheetId!==t.sheetId||e.dimension!==t.dimension)return e;let n=S(e.start,e.end+1),r=[];if(t.type===`REMOVE_COLUMNS_ROWS`?r=bl(t.elements,n):t.type===`ADD_COLUMNS_ROWS`&&(r=yl(yt(t.position,t.base),t.quantity,n)),r.length!==0)return{...e,start:Math.min(...r),end:Math.max(...r)}}function GK(e,t){let n=e.content&&Yu(e.sheetId,e.content,t);return{...e,content:n}}AK.add(`UPDATE_CELL`,GK);function KK(e,t){let n=e.cf.rule;if(e={...e,cf:{...e.cf}},n.type===`CellIsRule`)e.cf.rule={...n,values:n.values.map(n=>Yu(e.sheetId,n,t))};else if(n.type===`ColorScaleRule`){let{minimum:r,maximum:i,midpoint:a}=n;e.cf.rule={...n,minimum:{...r,value:r.value&&Yu(e.sheetId,r.value,t)},maximum:{...i,value:i.value&&Yu(e.sheetId,i.value,t)},midpoint:a?{...a,value:Yu(e.sheetId,a.value,t)}:void 0}}else if(n.type===`IconSetRule`){let{upperInflectionPoint:r,lowerInflectionPoint:i}=n;e.cf.rule={...n,upperInflectionPoint:{...r,value:Yu(e.sheetId,r.value,t)},lowerInflectionPoint:{...i,value:Yu(e.sheetId,i.value,t)}}}else n.type===`DataBarRule`&&(e.cf.rule={...n,rangeValues:n.rangeValues?Xu(e.sheetId,n.rangeValues,t).range:void 0});return e}AK.add(`ADD_CONDITIONAL_FORMAT`,KK);function qK(e,t){return e={...e,rule:{...e.rule,criterion:{...e.rule.criterion}}},e.rule.criterion.values=e.rule.criterion.values.map(n=>Yu(e.sheetId,n,t)),e}AK.add(`ADD_DATA_VALIDATION_RULE`,qK);function JK(e,t){return e=b(e),e.pivot.measures.map(e=>{e.computedBy&&(e.computedBy.formula=Yu(e.computedBy.sheetId,e.computedBy.formula,t))}),e}AK.add(`ADD_PIVOT`,JK),AK.add(`UPDATE_PIVOT`,JK),AK.add(`CREATE_CHART`,YK),AK.add(`UPDATE_CHART`,YK);function YK(e,t){return{...e,definition:C_(e.sheetId,e.definition,t)}}let XK=[{match:Ms,fn:tq},{match:Ps,fn:nq},{match:Ls,fn:rq},{match:Is,fn:oq},{match:Ns,fn:aq},{match:Fs,fn:iq}];function ZK(e,t){let n=kK.getTransformation(e.type,t.type),r=n?n(e,t):eq(e,t);return r&&QK(r,t)}function QK(e,t){let n=AK.get(e.type);if(!n)return e;let r=sl(t);return r?n(e,r):e}function $K(e,t){let n=[...e],r=new Set(kK.getKeys());for(let e of t)(r.has(e.type)||cl.contains(e.type))&&(n=n.reduce((t,n)=>{let r=ZK(n,e);return r&&t.push(r),t},[]));return n}function eq(e,t){for(let{match:n,fn:r}of XK)if(n(e)){let n=r(e,t);if(n===`SKIP_TRANSFORMATION`)continue;if(n===`IGNORE_COMMAND`)return;e=n}return e}function tq(e,t){if(!(`sheetId`in t))return e;let n=t.type===`DELETE_SHEET`&&t.sheetId,r=t.type===`LOCK_SHEET`&&t.sheetId;return e.sheetId===n||e.sheetId===r?`IGNORE_COMMAND`:e.type===`CREATE_SHEET`||t.type===`CREATE_SHEET`||e.sheetId!==t.sheetId?e:`SKIP_TRANSFORMATION`}function nq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;let r=[];for(let n of e.target){let e=nr(n,t);e&&r.push(e)}return r.length?{...e,target:r}:`IGNORE_COMMAND`}function rq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;let r=nr(e.zone,t);return r?{...e,zone:r}:`IGNORE_COMMAND`}function iq(e,t){if(!(`sheetId`in t))return e;let n=e.ranges.map(e=>rr(e,t)).filter(C);return n.length?{...e,ranges:n}:`IGNORE_COMMAND`}function aq(e,t){let n=tq(e,t);if(n!==`SKIP_TRANSFORMATION`)return n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e;if(t.type!==`ADD_COLUMNS_ROWS`&&t.type!==`REMOVE_COLUMNS_ROWS`)return`SKIP_TRANSFORMATION`;if(t.dimension!==e.dimension)return e;let r=[];return t.type===`REMOVE_COLUMNS_ROWS`?r=bl(t.elements,e.elements):t.type===`ADD_COLUMNS_ROWS`&&(r=yl(yt(t.position,t.base),t.quantity,e.elements)),r.length===0?`IGNORE_COMMAND`:{...e,elements:r}}function oq(e,t){let n=tq(e,t);return n===`SKIP_TRANSFORMATION`?t.type===`ADD_COLUMNS_ROWS`||t.type===`REMOVE_COLUMNS_ROWS`?sq(e,t):t.type===`ADD_MERGE`?cq(e,t):`SKIP_TRANSFORMATION`:n===`IGNORE_COMMAND`?`IGNORE_COMMAND`:e}function sq(e,t){let n=t.dimension===`COL`?`col`:`row`,r=e[n];if(t.type===`REMOVE_COLUMNS_ROWS`){let e=[...t.elements].sort((e,t)=>t-e);if(e.includes(r))return`IGNORE_COMMAND`;for(let t of e)r>=t&&r--}return t.type===`ADD_COLUMNS_ROWS`&&(r>t.base||r===t.base&&t.position===`before`)&&(r+=t.quantity),{...e,[n]:r}}function cq(e,t){for(let n of t.target)if(!(e.col===n.left&&e.row===n.top)&&An(e.col,e.row,n))return`IGNORE_COMMAND`;return e}var lq=class{rootCommand;timestamp;id;clientId;_commands=[];_changes=[];constructor(e,t,n,r,i,a){this.rootCommand=r,this.timestamp=a,this.id=e,this.clientId=t,this._commands=[...n],this._changes=i?[...i]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}},uq=class extends Error{},dq=class extends ir{revisions;transportService;serverRevisionId;clients={};clientId=`local`;pendingMessages=[];awaitingClientPosition;waitingAck=!1;waitingUndoRedoAck=!1;isReplayingInitialRevisions=!1;processedRevisions=new Set;lastRevisionMessage=void 0;uuidGenerator=new Xl;lastLocalOperation;constructor(e,t,n=De){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=n}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t,n){if(!t.length||!n.length||!this.canApplyOptimisticUpdate())return;let r=new lq(this.uuidGenerator.uuidv4(),this.clientId,t,e,n,Date.now());this.revisions.append(r.id,r),e.type!==`REQUEST_REDO`&&(this.lastLocalOperation=r),this.trigger(`new-local-state-update`,{id:r.id}),this.sendUpdateMessage({type:`REMOTE_REVISION`,version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:r.id,clientId:r.clientId,commands:r.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})}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)),this.awaitingClientPosition&&=(this.move(this.awaitingClientPosition),void 0)}loadInitialMessages(e){let t=performance.now(),n=e.reduce((e,t)=>e+(t.type===`REMOTE_REVISION`?t.commands.length:1),0);this.isReplayingInitialRevisions=!0;for(let t of e)this.onMessageReceived(t);this.isReplayingInitialRevisions=!1,console.debug(`Replayed`,n,`commands in`,performance.now()-t,`ms`)}async leave(e){e&&Object.keys(this.clients).length===1&&this.lastRevisionMessage&&this.lastRevisionMessage?.type!==`SNAPSHOT_CREATED`&&await this.snapshot(e()),delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.sendToTransport({type:`CLIENT_LEFT`,clientId:this.clientId,version:1})}async snapshot(e){if(this.pendingMessages.length!==0)return;let t=this.uuidGenerator.uuidv4();await this.sendToTransport({type:`SNAPSHOT`,nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getCurrentClient(){return this.getClient(this.clientId)}getClient(e){let t=this.clients[e];if(!t)throw new uq(`The client left the session`);return t}getConnectedClients(){return new Set(Object.values(this.clients).filter(C))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return this.pendingMessages.length===0}getLastLocalNonEmptyRevision(){return this.lastLocalOperation}move(e){if(!this.clients[this.clientId]){this.awaitingClientPosition=e;return}let t=this.clients[this.clientId]?.position;if(t?.col===e.col&&t.row===e.row&&t.sheetId===e.sheetId)return;let n=t?`CLIENT_MOVED`:`CLIENT_JOINED`,r=this.getCurrentClient();this.clients[this.clientId]={...r,position:e},this.sendToTransport({type:n,version:1,client:{...r,position:e}}).then(()=>{this.pendingMessages.length>0&&!this.waitingAck&&this.sendPendingMessage()})}onMessageReceived(e){if(!this.isAlreadyProcessed(e)){if(this.isWrongServerRevisionId(e)){this.trigger(`unexpected-revision-id`);return}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`:let{clientId:t,commands:n,timestamp:r}=e,i=new lq(e.nextRevisionId,t,n,void 0,void 0,r);if(i.clientId!==this.clientId){this.revisions.insert(i.id,i,e.serverRevisionId);let t=this.pendingMessages.filter(e=>e.type===`REMOTE_REVISION`).map(e=>e.commands).flat();this.trigger(`remote-revision-received`,{commands:$K(n,t)})}break;case`SNAPSHOT_CREATED`:{let t=new lq(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;let t=this.clients[this.clientId];if(t){let{position:e}=t;e&&this.sendToTransport({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()}async sendToTransport(e){return this.transportService.sendMessage(e)}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if(e.type===`REMOTE_REVISION`){let t=this.revisions.get(e.nextRevisionId);t.commands.length===0&&(this.revisions.rebase(t.id),t=this.revisions.get(e.nextRevisionId)),e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.
117
+ ${JSON.stringify(e)}`);this.waitingAck=!0,this.sendToTransport({...e,serverRevisionId:this.serverRevisionId}).catch(e=>{if(!(e instanceof uq))throw e.cause||e;this.waitingAck=!1})}}acknowledge(e){switch((e.type===`REVISION_UNDONE`||e.type===`REVISION_REDONE`)&&(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);let t=this.pendingMessages.findIndex(e=>e.type===`REMOTE_REVISION`);t!==-1&&this.revisions.rebase(this.pendingMessages[t].nextRevisionId),this.serverRevisionId=e.nextRevisionId,this.processedRevisions.add(e.nextRevisionId),this.sendPendingMessage();break}}}isAlreadyProcessed(e){if(e.type===`CLIENT_MOVED`&&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})=>e!==`REVISION_REDONE`&&e!==`REVISION_UNDONE`)}},fq=class extends sK{static getters=[`getClientsToDisplay`,`getClient`,`getCurrentClient`,`getConnectedClients`,`isFullySynchronized`];static layers=[`Selection`];colors=new oi(12);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(e){return this.session.getClient(e)}getCurrentClient(){return this.session.getCurrentClient()}getConnectedClients(){return[...this.session.getConnectedClients()].map(e=>({...e,color:this.colors.get(e.id)}))}isFullySynchronized(){return this.session.isFullySynchronized()}getClientsToDisplay(){try{this.getters.getCurrentClient()}catch(e){if(e instanceof uq)return[];throw e}let e=this.getters.getActiveSheetId(),t=[];for(let n of this.getters.getConnectedClients())n.id!==this.getters.getCurrentClient().id&&n.position&&n.position.sheetId===e&&this.isPositionValid(n.position)&&t.push({...n,position:n.position});return t}drawLayer(e){if(this.getters.isDashboard())return;let{ctx:t,thinLineWidth:n}=e,r=this.getters.getActiveSheetId();for(let e of this.getClientsToDisplay()){let{row:i,col:a}=e.position,o=this.getters.expandZone(r,{top:i,bottom:i,left:a,right:a}),{x:s,y:c,width:l,height:u}=this.getters.getVisibleRect(o);if(l<=0||u<=0)continue;let d=e.color;t.fillStyle=`${d}10`,t.lineWidth=4*n,t.strokeStyle=d,t.globalCompositeOperation=`multiply`,t.fillRect(s,c,l,u),t.globalCompositeOperation=`source-over`,t.strokeRect(s,c,l,u),t.font=`bold ${we+1}px ${Te}`}}},pq=class extends sK{handle(e){switch(e.type){case`ADD_DATA_VALIDATION_RULE`:if(e.rule.criterion.type===`isBoolean`){let t=e.ranges.map(e=>this.getters.getRangeFromRangeData(e));for(let e of rl(t)){let t=this.getters.getCell(e),n=this.getters.getEvaluatedCell(e);if(!t?.isFormula&&!t?.content)this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`});else if((t?.isFormula||t?.content)&&n.type===`empty`){let n;if(t.isFormula){let r=this.getters.evaluateCompiledFormula(e.sheetId,t.compiledFormula);n=(Ta(r)?r[0][0]:r)?.toString()}else n=t.content;(!n||!tt(n))&&this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`})}else n.type!==`boolean`&&this.dispatch(`UPDATE_CELL`,{...e,content:`FALSE`})}}}}},mq=class extends sK{static getters=[`dynamicTranslate`];dynamicTranslate(e){return e}},hq=class extends sK{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);break}}setContextualFormat(e,t,n){let r=[],i={};for(let n of nn(t))for(let t=n.left;t<=n.right;t++)for(let a=n.top;a<=n.bottom;a++){let n={sheetId:e,col:t,row:a},o=this.getters.getPivotCellFromPosition(n);if(this.isSpilledPivotValueFormula(n,o)){r.push(n);let e=this.getters.getPivotIdFromPosition(n)||``;i[e]??=new Set,i[e].add(o.measure)}}let a=nn(r.map(E));for(let e in i){let t=i[e],r=this.getters.getPivotCoreDefinition(e);this.dispatch(`UPDATE_PIVOT`,{pivotId:e,pivot:{...r,measures:r.measures.map(e=>t.has(e.id)?{...e,format:n}:e)}})}this.dispatch(`SET_FORMATTING`,{sheetId:e,target:a,format:``}),this.dispatch(`SET_FORMATTING`,{sheetId:e,target:nn(t,a),format:n})}isSpilledPivotValueFormula(e,t){let n=this.getters.getCell(e);return t.type===`VALUE`&&!n?.isFormula}setDecimal(e,t,n){let r={};for(let i of nn(t))for(let t of Fn(i)){let i=this.getCellNumberFormat({sheetId:e,...t});if(i!==void 0){let e=Cs(i,n);r[e]=r[e]||[],r[e].push(t)}}for(let t in r){let n=nn(r[t].map(e=>E(e)));this.setContextualFormat(e,n,t)}}getCellNumberFormat(e){for(let t of[e]){let e=this.getters.getEvaluatedCell(t);if(e.type===`number`&&!(e.format&&os(e.format)))return e.format||us(e.value)}}},gq=class extends sK{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){console.error(`No geoJsonService provided to the model`);return}let t=this.geoJsonCache[e];if(!(t instanceof Promise)){if(t!==void 0)return t??void 0;this.geoJsonCache[e]=new Promise(async t=>{let n=await this.geoJsonService?.getTopoJson(e);this.geoJsonCache[e]=this.convertToGeoJson(n),this.dispatch(`EVALUATE_CHARTS`),t()})}}geoFeatureNameToId(e,t){if(!this.geoJsonService){console.error(`No geoJsonService provided to the model`);return}return this.geoJsonService.geoFeatureNameToId(e,t)}convertToGeoJson(e){if(!e)return null;if(e.type===`Topology`){let t=globalThis.ChartGeo.topojson.feature(e,Object.values(e.objects)[0]);return t.type===`FeatureCollection`?t.features:[t]}else if(e.type===`FeatureCollection`)return e.features;throw Error(`Invalid TopoJSON`)}},_q=class extends sK{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,n){return t===`COL`?this.isColHidden(e,n):this.isRowHidden(e,n)}getNextVisibleCellPosition({sheetId:e,col:t,row:n}){return{sheetId:e,col:this.findVisibleHeader(e,`COL`,t,this.getters.getNumberCols(e)-1)||this.findVisibleHeader(e,`COL`,t,0)||0,row:this.findVisibleHeader(e,`ROW`,n,this.getters.getNumberRows(e)-1)||this.findVisibleHeader(e,`ROW`,n,0)||0}}findVisibleHeader(e,t,n,r){if(n<=r){for(let i=n;i<=r;i++)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}if(n>r){for(let i=n;i>=r;i--)if(this.getters.doesHeaderExist(e,t,i)&&!this.isHeaderHidden(e,t,i))return i}}findLastVisibleColRowIndex(e,t,{last:n,first:r}){return S(n,r,-1).find(n=>!this.isHeaderHidden(e,t,n))||r}findFirstVisibleColRowIndex(e,t){let n=this.getters.getNumberHeaders(e,t);for(let r=0;r<n;r++)if(t===`COL`&&!this.isColHidden(e,r)||t===`ROW`&&!this.isRowHidden(e,r))return r}exportForExcel(e){for(let t of e.sheets)for(let[e,n]of Object.entries(t.rows))n.isHidden=this.isRowHidden(t.id,Number(e))}},vq=class extends sK{static getters=[];allowDispatch(e){switch(e.type){case`DUPLICATE_PIVOT_IN_NEW_SHEET`:if(!this.getters.isExistingPivot(e.pivotId))return`PivotIdNotFound`;if(!this.getters.getPivot(e.pivotId).isValid())return`PivotInError`;break}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){Gn(this.getters.getSelectedZone())===1&&this.selection.selectTableAroundSelection();let n=this.getters.getActiveSheetId();this.dispatch(`ADD_PIVOT`,{pivotId:e,pivot:{dataSet:{zone:this.getters.getSelectedZone(),sheetId:n},columns:[],rows:[],measures:[],name:k(`New pivot`),type:`SPREADSHEET`,style:{tableStyleId:ze}}});let r=this.getters.getSheetIds().findIndex(e=>e===n)+1,i=this.getters.getPivotFormulaId(e);this.dispatch(`CREATE_SHEET`,{sheetId:t,name:k(`Pivot #%(formulaId)s`,{formulaId:i}),position:r}),this.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:n,sheetIdTo:t});let a=this.getters.getPivot(e);this.insertPivotWithTable(t,0,0,e,a.getCollapsedTableStructure().export(),`dynamic`)}duplicatePivotInNewSheet(e,t,n){this.dispatch(`DUPLICATE_PIVOT`,{pivotId:e,newPivotId:t,duplicatedPivotName:k(`%s (copy)`,this.getters.getPivotCoreDefinition(e).name)});let r=this.getters.getActiveSheetId(),i=this.getters.getSheetIds().indexOf(r)+1,a=this.getters.getPivotFormulaId(t),o=this.getters.getPivotName(t);if(this.dispatch(`CREATE_SHEET`,{sheetId:n,name:this.getPivotDuplicateSheetName(k(`%(newPivotName)s (Pivot #%(formulaId)s)`,{newPivotName:o,formulaId:a})),position:i}).isSuccessful){this.dispatch(`ACTIVATE_SHEET`,{sheetIdFrom:r,sheetIdTo:n});let i=this.getters.getPivot(e);this.insertPivotWithTable(n,0,0,t,i.getCollapsedTableStructure().export(),`dynamic`)}}getPivotDuplicateSheetName(e){let t=this.getters.getSheetIds().map(e=>this.getters.getSheetName(e));return Ht(Qe(e),t)}insertPivotWithTable(e,t,n,r,i,a){let{cols:o,rows:s,measures:c,fieldsType:l}=i,u=new Qz(o,s,c,l||{}),d=u.columns.length-1;if(this.resizeSheet(e,t,n,u),a===`dynamic`)this.dispatch(`UPDATE_CELL`,{sheetId:e,col:t,row:n,content:`=PIVOT(${this.getters.getPivotFormulaId(r)})`});else{this.dispatch(`INSERT_PIVOT`,{sheetId:e,col:t,row:n,pivotId:r,table:u.export()});let i={left:t,right:t+u.getNumberOfDataColumns(),top:n,bottom:n+d+u.rows.length};this.dispatch(`CREATE_TABLE`,{tableType:`static`,sheetId:e,ranges:[this.getters.getRangeDataFromZone(e,i)],config:{...Re,numberOfHeaders:d}})}}resizeSheet(e,t,n,r){let i=r.getNumberOfDataColumns()+1,a=this.getters.getNumberCols(e),o=a-t;o<i&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:a-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:i-o,position:`after`});let s=r.columns.length+r.rows.length,c=this.getters.getNumberRows(e),l=c-n;l<s&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`ROW`,base:c-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:s-l,position:`after`})}splitPivotFormula(e,t,n,r){let i={sheetId:e,col:t,row:n},a=this.getters.getSpreadZone(i),o=this.getters.getTable(i);if(!a)return;let s=this.getters.getPivotFormulaId(r),c=new Map;for(let t=a.left;t<=a.right;t++)for(let n=a.top;n<=a.bottom;n++){let r={sheetId:e,col:t,row:n};c.set(r,this.getters.getPivotCellFromPosition(r))}for(let[e,t]of c)this.dispatch(`UPDATE_CELL`,{...e,content:Sh(s,t)});if(this.getters.getCoreTable(i)&&this.dispatch(`REMOVE_TABLE`,{sheetId:e,target:[E(i)]}),o?.isPivotTable){let t=this.getters.getRangeDataFromZone(e,a);this.dispatch(`CREATE_TABLE`,{tableType:`static`,sheetId:e,ranges:[t],config:{...o.config,styleId:HB(o.config.styleId)}})}}};let yq=new B,bq=new B;function xq(e,t){if(t&&yq.contains(t.type))return yq.get(t.type)(e,t)}function Sq(e,t,n){if(bq.contains(t.type))return bq.get(t.type)(e,t,n)}function Cq(e){return!e||!e.rootCommand||typeof e.rootCommand!=`object`?!1:qs(e.rootCommand)?yq.contains(e.rootCommand.type):bq.contains(e.rootCommand.type)}function wq(e,t){if(!(!e.rootCommand||typeof e.rootCommand!=`object`))return qs(e.rootCommand)?xq(t,e.rootCommand):Sq(t,e.rootCommand,e.commands)}var Tq=class extends sK{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`;break}return`Success`}handle(e){switch(e.type){case`REQUEST_UNDO`:case`REQUEST_REDO`:this.requestHistoryChange(e.type===`REQUEST_UNDO`?`UNDO`:`REDO`)}}finalize(){}requestHistoryChange(e){let t=e===`UNDO`?this.undoStack.pop():this.redoStack.pop();if(!t){let e=this.getPossibleRevisionToRepeat();if(!e)return;let t=wq(e,this.getters);if(!t)return;if(!Array.isArray(t)){this.dispatch(t.type,t);return}for(let e of t)this.dispatch(e.type,e);return}e===`UNDO`?(this.session.undo(t),this.redoStack.push(t)):(this.session.redo(t),this.undoStack.push(t))}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0?!0:Cq(this.getPossibleRevisionToRepeat())}onNewLocalStateUpdate({id:e}){this.undoStack.push(e),this.redoStack=[],this.undoStack.length>99&&this.undoStack.shift()}getPossibleRevisionToRepeat(){return this.session.getLastLocalNonEmptyRevision()}},Eq=class extends sK{static getters=[`isCurrentSheetLocked`];allowDispatch(e){return Gs.has(e.type)||this.getters.isDashboard()?`Success`:`sheetId`in e&&this.getters.isSheetLocked(e.sheetId)||!qs(e)&&this.isCurrentSheetLocked()?`SheetLocked`:`Success`}isCurrentSheetLocked(){return this.getters.isSheetLocked(this.getters.getActiveSheetId())}},Dq=class{trackedValues=new Set;domainToArray(e){return e.flatMap(e=>[e.field,P(e.value)])}isValuePresent(e,t){let n=JSON.stringify({measure:e,domain:this.domainToArray(t)});return this.trackedValues.has(n)}isHeaderPresent(e){let t=JSON.stringify({domain:this.domainToArray(e)});return this.trackedValues.has(t)}trackValue(e,t){let n=JSON.stringify({measure:e,domain:this.domainToArray(t)});this.trackedValues.add(n)}trackHeader(e){let t=JSON.stringify({domain:this.domainToArray(e)});this.trackedValues.add(t)}},Oq=class extends sK{static getters=[`getPivotPresenceTracker`];trackPresencePivotId;tracker;handle(e){switch(e.type){case`PIVOT_START_PRESENCE_TRACKING`:this.tracker=new Dq,this.trackPresencePivotId=e.pivotId;break;case`PIVOT_STOP_PRESENCE_TRACKING`:this.trackPresencePivotId=void 0;break}}getPivotPresenceTracker(e){if(this.trackPresencePivotId===e){if(!this.tracker)throw Error(`Tracker not initialized`);return this.tracker}}},kq=class extends sK{allowDispatch(e){switch(e.type){case`SORT_CELLS`:return An(e.col,e.row,e.zone)?this.checkValidations(e,this.checkMerge,this.checkMergeSizes,this.checkArrayFormulaInSortZone):`InvalidSortAnchor`}return`Success`}handle(e){switch(e.type){case`SORT_CELLS`:this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{});break}}checkMerge({sheetId:e,zone:t}){return this.getters.doesIntersectMerge(e,t)&&Fn(t).some(({col:t,row:n})=>!this.getters.isInMerge({sheetId:e,col:t,row:n}))?`InvalidSortZone`:`Success`}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return`Success`;let n=this.getters.getMerges(e).filter(e=>On(e,t)),r=Mn(n[0]),[i,a]=[r.numberOfCols,r.numberOfRows];return n.every(e=>{let[t,n]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&n===a})?`Success`:`InvalidSortZone`}checkArrayFormulaInSortZone({sheetId:e,zone:t}){return Fn(t).some(({col:t,row:n})=>{let r=this.getters.getArrayFormulaSpreadingOn({sheetId:e,col:t,row:n});return r&&!w(r,{sheetId:e,col:t,row:n})})?`SortZoneWithArrayFormulas`:`Success`}hasHeader(e,t){if(t[0].length===1)return!1;let n=t.map(t=>t.map(({col:t,row:n})=>this.getters.getEvaluatedCell({sheetId:e,col:t,row:n}).type));return n[0][0]===`empty`&&(n=n.slice(1)),n.some(e=>e[0]===`empty`)?!1:!!n.some(e=>e[1]!==`empty`&&e[0]!==e[1])}sortZone(e,t,n,r,i){let[a,o]=this.mainCellsSteps(e,n),s=this.getters.getMainCellPosition({sheetId:e,col:t.col,row:t.row}).col,c=Object.assign({},n),l=this.mainCells(e,n);!i.sortHeaders&&this.hasHeader(e,l)&&(c.top+=o),l=this.mainCells(e,c);let u=l[s-c.left],d=kw(u.map(e=>this.getters.getEvaluatedCell(e)),r,!!i.emptyCellAsZero).map(e=>e.index),[f,p]=[l.length,l[0].length],m=[];for(let e=0;e<f;e++)for(let t=0;t<p;t++){let{col:n,row:r,sheetId:i}=l[e][d[t]],s=this.getters.getCell({sheetId:i,col:n,row:r}),u=c.left+e*a,f=c.top+t*o,p={sheetId:i,col:u,row:f,content:``};if(s){let e;if(s.isFormula){let t=this.getters.getCellPosition(s.id);e=this.getters.getTranslatedCellFormula(i,0,f-t.row,s.compiledFormula)}else e=s.content;p.style=s.style,p.content=e,p.format=s.format}m.push(p)}m.forEach(e=>this.dispatch(`UPDATE_CELL`,e))}mainCellsSteps(e,t){let n=this.getters.getMerge({sheetId:e,col:t.left,row:t.top});return[n?n.right-n.left+1:1,n?n.bottom-n.top+1:1]}mainCells(e,t){let[n,r]=this.mainCellsSteps(e,t),i=[],a=S(t.left,t.right+1,n),o=S(t.top,t.bottom+1,r);for(let t of a){let n=[];i.push(n);for(let r of o)n.push({sheetId:e,col:t,row:r})}return i}},Aq=class extends sK{static getters=[`getAutomaticSeparator`];allowDispatch(e){switch(e.type){case`SPLIT_TEXT_INTO_COLUMNS`:return this.chainValidations(this.batchValidations(this.checkSingleColSelected,this.checkNonEmptySelector),this.batchValidations(this.checkNotOverwritingContent,this.checkSeparatorInSelection))(e)}return`Success`}handle(e){switch(e.type){case`SPLIT_TEXT_INTO_COLUMNS`:this.splitIntoColumns(e);break}}getAutomaticSeparator(){let e=this.getters.getSelectedCells();for(let t of e)if(t.value&&t.type===`text`){let e=this.getAutoSeparatorForString(t.value);if(e)return e}return` `}getAutoSeparatorForString(e){for(let t of[`
118
118
  `,`;`,`,`,` `,`.`])if(e.includes(t))return t}splitIntoColumns({separator:e,addNewColumns:t}){let n=this.getters.getSelectedZone(),r=this.getters.getActiveSheetId(),i=this.getSplittedCols(n,e);t&&this.addColsToAvoidCollisions(n,i),this.removeMergesInSplitZone(n,i),this.addColumnsToNotOverflowSheet(n,i);for(let e=0;e<i.length;e++){let t=n.top+e,a=i[e],o=n.left,s=this.getters.getCell({sheetId:r,col:o,row:t});if(!(a.length===1&&!s?.isFormula&&a[0]===s?.content))for(let[e,n]of a.entries())this.dispatch(`UPDATE_CELL`,{sheetId:r,col:o+e,row:t,content:TS(n,this.getters.getLocale()),format:``,style:s?.style||null})}}getSplittedCols(e,t){if(!t)throw Error(`Separator cannot be empty`);let n=this.getters.getActiveSheetId(),r=[];for(let i of S(e.top,e.bottom+1)){let a=this.getters.getEvaluatedCell({sheetId:n,col:e.left,row:i}).formattedValue;r.push(this.splitAndRemoveTrailingEmpty(a,t))}return r}splitAndRemoveTrailingEmpty(e,t){let n=e.split(t);for(;n.length>1&&n[n.length-1]===``;)n.pop();return n}willSplittedColsOverwriteContent(e,t){let n=this.getters.getActiveSheetId();for(let r of S(e.top,e.bottom+1)){let i=t[r-e.top];for(let t=1;t<i.length;t++){let i=this.getters.getCell({sheetId:n,col:e.left+t,row:r});if(i?.isFormula||i?.content)return!0}}return!1}removeMergesInSplitZone(e,t){let n=this.getters.getActiveSheetId(),r=Math.max(...t.map(e=>e.length)),i={...e,right:e.left+r-1},a=this.getters.getMergesInZone(n,i);this.dispatch(`REMOVE_MERGE`,{sheetId:n,target:a})}addColsToAvoidCollisions(e,t){let n=this.getters.getActiveSheetId(),r=0;for(let i of S(e.top,e.bottom+1)){let a={sheetId:n,col:e.left,row:i},o=t[i-e.top],s=this.getColsToAddToAvoidCollision(a,o);r=Math.max(r,s)}r&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:e.left,sheetId:n,sheetName:this.getters.getSheetName(n),quantity:r,position:`after`})}getColsToAddToAvoidCollision(e,t){let n=t.length;for(let t=1;t<n;t++){let r=e.col+t,i=this.getters.getCell({...e,col:r});if(i?.isFormula||i?.content)return n-t}return 0}addColumnsToNotOverflowSheet(e,t){let n=this.getters.getActiveSheetId(),r=Math.max(...t.map(e=>e.length-1)),i=this.getters.getNumberCols(n)-1;e.left+r>i&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:i,sheetId:n,sheetName:this.getters.getSheetName(n),quantity:e.left+r-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`;let t=this.getters.getSelectedZones()[0],n=this.getSplittedCols(t,e.separator);return this.willSplittedColsOverwriteContent(t,n)?`SplitWillOverwriteContent`:`Success`}checkSeparatorInSelection({separator:e}){let t=this.getters.getSelectedCells();for(let n of t)if(n.formattedValue.includes(e))return`Success`;return`NoSplitSeparatorInSelection`}},jq=class extends sK{handle(e){Us.has(e.type)&&this.dispatch(`EVALUATE_CELLS`,{cellIds:this.getters.getCellsWithTrackedFormula(`SUBTOTAL`)})}},Mq=class extends sK{handle(e){switch(e.type){case`AUTOFILL_TABLE_COLUMN`:let t=this.getters.getCoreTable(e),n=this.getters.getCell(e);if(!t?.config.automaticAutofill||t.type===`dynamic`||!n?.isFormula)return;let{col:r,row:i}=e,a=WB(t.range.zone,t.config);if(a&&An(r,i,a)){let t=e.autofillRowStart??a.top,n=e.autofillRowEnd??a.bottom,r={...a,top:t,bottom:n};this.autofillTableZone(e,r)}break}}autofillTableZone(e,t){if(t.top===t.bottom)return;let{col:n,row:r,sheetId:i}=e;for(let e=t.top;e<=t.bottom;e++)if(e!==r&&this.getters.getEvaluatedCell({col:n,row:e,sheetId:i}).type!==`empty`)return;let a={zone:this.getters.getSelectedZone(),cell:this.getters.getActivePosition()};this.selection.selectCell(n,r),this.dispatch(`AUTOFILL_SELECT`,{col:n,row:t.bottom}),this.dispatch(`AUTOFILL`),this.selection.selectCell(n,r),this.dispatch(`AUTOFILL_SELECT`,{col:n,row:t.top}),this.dispatch(`AUTOFILL`),this.selection.selectZone(a)}},Nq=class extends sK{allowDispatch(e){switch(e.type){case`RESIZE_TABLE`:let t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(!t)return`TableNotFound`;let n=t.range.zone,r=this.getters.getRangeFromRangeData(e.newTableRange).zone;return r.top!==n.top||r.left!==n.left?`InvalidTableResize`:this.canDispatch(`UPDATE_TABLE`,{...e}).reasons}return`Success`}handle(e){switch(e.type){case`RESIZE_TABLE`:{let t=this.getters.getCoreTableMatchingTopLeft(e.sheetId,e.zone);if(this.dispatch(`UPDATE_TABLE`,{...e}),!t)return;let n=this.getters.getRangeFromRangeData(e.newTableRange).zone;if(this.selection.selectCell(n.right,n.bottom),!t.config.automaticAutofill)return;let r=t.range.zone;if(n.bottom>=r.bottom){for(let t=n.left;t<=n.right;t++){let i={col:t,row:r.bottom,sheetId:e.sheetId};this.getters.getCell(i)?.isFormula&&this.dispatch(`AUTOFILL_TABLE_COLUMN`,{...i,autofillRowStart:r.bottom,autofillRowEnd:n.bottom})}break}}}}},Pq=class extends sK{static getters=[`shouldShowFormulas`];showFormulas=!1;handle(e){switch(e.type){case`SET_FORMULA_VISIBILITY`:this.showFormulas=e.show;break}}shouldShowFormulas(){return this.showFormulas}},Fq=class extends sK{static getters=[`getCellWidth`,`getTextWidth`,`getCellText`,`getCellMultiLineText`,`getMultilineTextSize`,`getContiguousZone`,`computeTextYCoordinate`];ctx=Dl();allowDispatch(e){return this.chainValidations(this.checkSheetExists,this.checkZonesAreInSheet)(e)}handle(e){switch(e.type){case`AUTORESIZE_COLUMNS`:for(let t of e.cols){let n=this.getColMaxWidth(e.sheetId,t);n!==0&&this.dispatch(`RESIZE_COLUMNS_ROWS`,{elements:[t],dimension:`COL`,size:n,sheetId:e.sheetId})}break;case`AUTORESIZE_ROWS`:this.autoResizeRows(e.sheetId,e.rows);break;case`DELETE_UNFILTERED_CONTENT`:let t=[];for(let n of e.target){let r=$e(S(n.top,n.bottom+1).filter(t=>!this.getters.isRowFiltered(e.sheetId,t)));for(let e of r)t.push({...n,top:e[0],bottom:e[e.length-1]})}this.dispatch(`DELETE_CONTENT`,{sheetId:e.sheetId,target:t});break}}getCellWidth(e){let t=this.getters.getCellComputedStyle(e),n=0,r=this.getters.getEvaluatedCell(e).formattedValue;if(r){let e=Vl(this.ctx,r,t,void 0);n+=jl(this.ctx,e,t).width}for(let t of this.getters.getCellIcons(e))n+=t.margin+t.size;if(this.getters.getDataValidationChipStyle(e)&&(n+=10),n===0)return 0;if(n+=8,t.wrapping===`wrap`){let t=this.getters.getColSize(this.getters.getActiveSheetId(),e.col);return Math.min(t,n)}return n}getTextWidth(e,t){return Ml(this.ctx,e,t)}getMultilineTextSize(e,t){return jl(this.ctx,e,t)}getCellText(e,t){let n=this.getters.getCell(e),r=this.getters.getLocale();if(t?.showFormula){if(n?.isFormula)return AS(n.compiledFormula.toFormulaString(this.getters),r);if(!n?.content)return``}let i=this.getters.getEvaluatedCell(e),a=t?.availableWidth?{availableWidth:t.availableWidth,measureText:e=>Ml(this.ctx,e,n?.style||{})}:void 0;return z(i.value,{format:i.format,locale:r,formatWidth:a})}getCellMultiLineText(e,t){let n=this.getters.getCellStyle(e),r=this.getters.getCellText(e,{showFormula:this.getters.shouldShowFormulas(),availableWidth:t.formatWidth});return Vl(this.ctx,r,n,t.wrapText?t.maxWidth:void 0)}computeTextYCoordinate(e,t,n=Se,r=1){let i=e.y+1,a=El(t,r);if(e.height>a+8){if(n===`middle`)return Math.ceil(i+(e.height-a)/2);if(n===`bottom`)return i+e.height-a-4}return i+4}getContiguousZone(e,t){let n=t=>{for(let n of S(t.left,t.right+1)){if(!this.isCellEmpty({sheetId:e,col:n,row:t.top-1}))return{...t,top:t.top-1};if(!this.isCellEmpty({sheetId:e,col:n,row:t.bottom+1}))return{...t,bottom:t.bottom+1}}for(let n of S(t.top,t.bottom+1)){if(!this.isCellEmpty({sheetId:e,col:t.left-1,row:n}))return{...t,left:t.left-1};if(!this.isCellEmpty({sheetId:e,col:t.right+1,row:n}))return{...t,right:t.right+1}}return t},r=!1,i=t;do{r=!1;let e=n(i);Dn(i,e)||(r=!0,i=e)}while(r);return i}isCellEmpty(e){let t=this.getters.getMainCellPosition(e);return this.getters.getEvaluatedCell(t).type===`empty`}getColMaxWidth(e,t){let n=Fn(this.getters.getColsZone(e,t,t)).map(t=>this.getCellWidth({sheetId:e,...t}));return Math.max(0,Lt(n))}checkSheetExists(e){return`sheetId`in e&&this.getters.tryGetSheet(e.sheetId)===void 0&&e.type!==`CREATE_SHEET`?`InvalidSheetId`:`Success`}checkZonesAreInSheet(e){let t=`sheetId`in e?e.sheetId:this.getters.tryGetActiveSheetId();if(`ranges`in e&&e.ranges.some(e=>!this.getters.tryGetSheet(e._sheetId)))return`InvalidSheetId`;let n=this.getters.getCommandZones(e);return!t&&n.length>0?`NoActiveSheet`:t&&n.length>0?this.getters.checkZonesExistInSheet(t,n):`Success`}autoResizeRows(e,t){let n=[];for(let r of t){let t=0;for(let n of this.getters.getRowCellIds(e,r)){let r=this.getters.getCellById(n);if(!r)continue;let i=this.getters.getCellPosition(r.id),a=this.getters.getColSize(e,i.col);if(r.isFormula||this.getters.getArrayFormulaSpreadingOn(i)){let e=this.getters.getEvaluatedCell(i).formattedValue,n=kl(this.ctx,e,r?.style,a);n>t&&n>23&&(t=n)}else{let e=r.content,n=kl(this.ctx,e,r?.style,a);n>=t&&n>23&&(t=0)}}n.push(t||null)}let r=new Map(n.map(e=>[e,[]]));for(let e=0;e<n.length;e++)r.get(n[e])?.push(t[e]);for(let[t,n]of r)this.dispatch(`RESIZE_COLUMNS_ROWS`,{elements:n,dimension:`ROW`,size:t,sheetId:e})}},Iq=class extends sK{static getters=[`getSelectedCarouselItem`,`getChartFromFigureId`,`getChartIdFromFigureId`];uuidGenerator=new Xl;carouselStates={};allowDispatch(e){switch(e.type){case`ADD_FIGURE_CHART_TO_CAROUSEL`:return!this.getters.doesCarouselExist(e.carouselFigureId)||this.getters.getFigure(e.sheetId,e.chartFigureId)?.tag!==`chart`?`InvalidFigureId`:`Success`;case`DUPLICATE_CAROUSEL_CHART`:return!this.getters.doesCarouselExist(e.carouselId)||!this.getters.getCarousel(e.carouselId).items.some(t=>t.type===`chart`&&t.chartId===e.chartId)||this.getters.getChart(e.duplicatedChartId)?`InvalidFigureId`:`Success`;case`ADD_NEW_CHART_TO_CAROUSEL`:return this.getters.doesCarouselExist(e.figureId)?`Success`:`InvalidFigureId`;case`UPDATE_CAROUSEL_ACTIVE_ITEM`:return this.getters.doesCarouselExist(e.figureId)?this.getters.getCarousel(e.figureId).items.some(t=>w(t,e.item))?`Success`:`InvalidCarouselItem`:`InvalidFigureId`}return`Success`}handle(e){switch(e.type){case`ADD_NEW_CHART_TO_CAROUSEL`:this.addNewChartToCarousel(e.figureId,e.sheetId);break;case`ADD_FIGURE_CHART_TO_CAROUSEL`:this.addFigureChartToCarousel(e.carouselFigureId,e.chartFigureId,e.sheetId);break;case`DUPLICATE_CAROUSEL_CHART`:this.duplicateCarouselChart(e);break;case`UPDATE_CAROUSEL_ACTIVE_ITEM`:this.carouselStates[e.figureId]=this.getCarouselItemId(e.item);break;case`POPOUT_CHART_FROM_CAROUSEL`:this.popOutChartFromCarousel(e.carouselId,e.chartId,e.sheetId);break;case`DELETE_FIGURE`:delete this.carouselStates[e.figureId];break;case`UPDATE_CAROUSEL`:this.fixWrongCarouselState(e.figureId);break;case`DELETE_CHART`:case`UNDO`:case`REDO`:case`DELETE_SHEET`:for(let e in this.carouselStates)this.fixWrongCarouselState(e);break}}popOutChartFromCarousel(e,t,n){let r=this.getters.getCarousel(e);if(!r)return;let i=this.getters.getFigure(n,e),a=this.getters.getChartDefinition(t);if(!a||!i)return;let o=this.getters.getFigureUI(n,i),s=this.getters.getPositionAnchorOffset({x:o.x+50,y:o.y+50}),c=this.uuidGenerator.smallUuid();this.dispatch(`CREATE_CHART`,{...s,chartId:this.uuidGenerator.smallUuid(),figureId:c,sheetId:n,size:{width:i.width,height:i.height},definition:{...a}});let l=r.items.filter(e=>e.type!==`chart`||e.chartId!==t);this.dispatch(`UPDATE_CAROUSEL`,{sheetId:n,figureId:e,definition:{...r,items:l}}),this.dispatch(`SELECT_FIGURE`,{figureId:c})}getSelectedCarouselItem(e){let t=this.getters.getCarousel(e);if(t.items.length)return this.carouselStates[e]?t.items.find(t=>this.getCarouselItemId(t)===this.carouselStates[e]):t.items[0]}getChartFromFigureId(e){if(!this.getters.getFigureSheetId(e))return;let t=this.getChartIdFromFigureId(e);return t?this.getters.getChart(t):void 0}getChartIdFromFigureId(e){let t=this.getters.getFigureSheetId(e);if(!t)return;let n=this.getters.getFigure(t,e);if(!(!n||n.tag!==`chart`&&n.tag!==`carousel`)){if(n.tag===`carousel`){let t=this.getSelectedCarouselItem(e);return t?.type===`chart`?t.chartId:void 0}return this.getters.getChartIds(t).find(t=>this.getters.getFigureIdFromChartId(t)===e)}}fixWrongCarouselState(e){if(!this.getters.doesCarouselExist(e)){delete this.carouselStates[e];return}let t=this.getters.getCarousel(e);t.items.length===0?delete this.carouselStates[e]:this.carouselStates[e]&&t.items.some(t=>this.getCarouselItemId(t)===this.carouselStates[e])||(this.carouselStates[e]=this.getCarouselItemId(t.items[0]))}addNewChartToCarousel(e,t){let n=this.getters.getCarousel(e),r=this.uuidGenerator.smallUuid();this.dispatch(`CREATE_CHART`,{chartId:r,figureId:e,sheetId:t,definition:$_});let i={...n,items:[...n.items,{type:`chart`,chartId:r}]};this.dispatch(`UPDATE_CAROUSEL`,{sheetId:t,figureId:e,definition:i})}addFigureChartToCarousel(e,t,n){let r=this.getChartIdFromFigureId(t);if(!r)return;let i=this.getters.getCarousel(e),a={...i,items:[...i.items,{type:`chart`,chartId:r}]};this.dispatch(`UPDATE_CAROUSEL`,{sheetId:n,figureId:e,definition:a}),this.dispatch(`UPDATE_CHART`,{sheetId:n,chartId:r,figureId:e,definition:this.getters.getChartDefinition(r)}),this.dispatch(`DELETE_FIGURE`,{sheetId:n,figureId:t})}duplicateCarouselChart({carouselId:e,chartId:t,sheetId:n,duplicatedChartId:r}){let i=this.getters.getChart(t);if(!i)return;let a=this.getters.getCarousel(e),o=a.items.findIndex(e=>e.type===`chart`&&e.chartId===t);if(o===-1)return;this.dispatch(`CREATE_CHART`,{chartId:r,figureId:e,sheetId:n,definition:i.getDefinition()});let s=Mt(a.items,[{type:`chart`,chartId:r}],o+1);this.dispatch(`UPDATE_CAROUSEL`,{sheetId:n,figureId:e,definition:{...a,items:s}})}getCarouselItemId(e){return e.type===`chart`?e.chartId:`carouselDataView`}};async function Lq(e){return new Promise((t,n)=>{let r=new Image;r.addEventListener(`load`,()=>{let e=document.createElement(`canvas`);e.width=r.width,e.height=r.height,e.getContext(`2d`)?.drawImage(r,0,0),e.toBlob(t,`image/png`)}),r.addEventListener(`error`,n),r.src=e})}var Rq=class extends sK{static layers=[`Clipboard`];static getters=[`getClipboardTextAndImageContent`,`getClipboardId`,`getClipboardTextContent`,`isCutOperation`];status=`invisible`;originSheetId;copiedData;_isCutOperation=!1;clipboardId=new Xl().uuidv4();fileStore;uuidGenerator;constructor(e){super(e),this.fileStore=e.external.fileStore,this.uuidGenerator=new Xl}allowDispatch(e){switch(e.type){case`CUT`:let t=this.getters.getSelectedZones();return this.isCutAllowedOn(t);case`PASTE_FROM_OS_CLIPBOARD`:{let t=this.convertTextToClipboardData(e.clipboardContent.text??``),n=e.pasteOption;return this.isPasteAllowed(e.target,t,{pasteOption:n,isCutOperation:!1})}case`PASTE`:{if(!this.copiedData)return`EmptyClipboard`;let t=e.pasteOption;return this.isPasteAllowed(e.target,this.copiedData,{pasteOption:t,isCutOperation:this._isCutOperation})}case`COPY_PASTE_CELLS_ABOVE`:{let e=this.getters.getSelectedZones();if(e.length>1||e[0].top===0&&e[0].bottom===0)return`InvalidCopyPasteSelection`;let t=this.getters.getSelectedZone(),n=this.getCopiedDataAbove(t);return this.isPasteAllowed(e,n,{isCutOperation:!1})}case`COPY_PASTE_CELLS_ON_LEFT`:{let e=this.getters.getSelectedZones();if(e.length>1||e[0].left===0&&e[0].right===0)return`InvalidCopyPasteSelection`;let t=this.getters.getSelectedZone(),n=this.getCopiedDataOnLeft(t);return this.isPasteAllowed(e,n,{isCutOperation:!1})}case`COPY_PASTE_CELLS_ON_ZONE`:{let e=this.getters.getSelectedZones();if(e.length>1)return`InvalidCopyPasteSelection`;let t=this.getters.getSelectedZone(),n=this.getCopiedDataOnLeft(t);return this.isPasteAllowed(e,n,{isCutOperation:!1})}case`INSERT_CELL`:{let{cut:t,paste:n}=this.getInsertCellsTargets(e.zone,e.shiftDimension),r=this.copy(t,`shiftCells`);return this.isPasteAllowed(n,r,{isCutOperation:!0})}case`DELETE_CELL`:{let{cut:t,paste:n}=this.getDeleteCellsTargets(e.zone,e.shiftDimension),r=this.copy(t,`shiftCells`);return this.isPasteAllowed(n,r,{isCutOperation:!0})}}return`Success`}handle(e){switch(e.type){case`COPY`:case`CUT`:let t=this.getters.getSelectedZones();this.status=`visible`,this.originSheetId=this.getters.getActiveSheetId(),this._isCutOperation=e.type===`CUT`,this.copiedData=this.copy(t);break;case`PASTE_FROM_OS_CLIPBOARD`:{this._isCutOperation=!1;let t=e.clipboardContent;if(t.data?.version!==qj()&&(t={...t},delete t.data),t.imageData){let n=this.getters.getActiveSheetId(),r=this.uuidGenerator.uuidv4(),i=t.imageData,a=U_(this.getters,i.size);this.dispatch(`CREATE_IMAGE`,{definition:i,size:a,col:e.target[0].left,row:e.target[0].top,offset:{x:0,y:0},sheetId:n,figureId:r})}t.data?this.copiedData=t.data:this.copiedData=this.convertTextToClipboardData(t.text??``);let n=e.pasteOption;this.paste(e.target,this.copiedData,{pasteOption:n,selectTarget:!0,isCutOperation:!1}),this.status=`invisible`,this.copiedData=void 0;break}case`PASTE`:{let 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,!1);break}case`COPY_PASTE_CELLS_ABOVE`:{let e=this.getters.getSelectedZone();this.originSheetId=this.getters.getActiveSheetId();let t=this.getCopiedDataAbove(e);this.paste([e],t,{isCutOperation:!1,selectTarget:!0})}break;case`COPY_PASTE_CELLS_ON_LEFT`:{let e=this.getters.getSelectedZone();this.originSheetId=this.getters.getActiveSheetId();let t=this.getCopiedDataOnLeft(e);this.paste([e],t,{isCutOperation:!1,selectTarget:!0})}break;case`COPY_PASTE_CELLS_ON_ZONE`:{let e=this.getters.getSelectedZone();this.originSheetId=this.getters.getActiveSheetId();let t=this.getCopiedDataAboveOnLeft(e);this.paste([e],t,{isCutOperation:!1,selectTarget:!0})}break;case`CLEAN_CLIPBOARD_HIGHLIGHT`:this.status=`invisible`;break;case`DELETE_CELL`:{let{cut:t,paste:n}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);if(!_n(t[0])){this.dispatch(`CLEAR_CELLS`,{target:[e.zone],sheetId:this.getters.getActiveSheetId()});break}let r=this.copy(t,`shiftCells`);this.paste(n,r,{isCutOperation:!0});break}case`INSERT_CELL`:{let{cut:t,paste:n}=this.getInsertCellsTargets(e.zone,e.shiftDimension),r=this.copy(t,`shiftCells`);this.paste(n,r,{isCutOperation:!0});break}case`ADD_COLUMNS_ROWS`:if(this.status=`invisible`,!this._isCutOperation||e.sheetId!==this.copiedData?.sheetId)return;this.isColRowDirtyingClipboard(e.position===`before`?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:qs(e)&&(this.status=`invisible`)}}getCopiedDataAbove(e){let t=e.top!==e.bottom,n={...e,bottom:t?e.top:e.top-1,top:t?e.top:e.top-1};return this.copy([n])}getCopiedDataOnLeft(e){let t=e.left!==e.right,n={...e,right:t?e.left:e.left-1,left:t?e.left:e.left-1};return this.copy([n])}getCopiedDataAboveOnLeft(e){let t={...e,right:e.left,bottom:e.top};return this.copy([t])}convertTextToClipboardData(e){let t=this.selectClipboardHandlers({figureId:!0}).concat(this.selectClipboardHandlers({})),n={};for(let{handlerName:r,handler:i}of t){let t=i.convertTextToClipboardData(e);n[r]=t;for(let e of[`sheetId`,`cells`,`zones`,`figureId`])t&&e in t&&(n[e]=t[e])}return n}selectClipboardHandlers(e){let t=`figureId`in e?iW.figureHandlers:iW.cellHandlers;return t.getKeys().map(e=>({handlerName:e,handler:new(t.get(e))(this.getters,this.dispatch)}))}isCutAllowedOn(e){let t=this.getClipboardData(e);for(let{handler:e}of this.selectClipboardHandlers(t)){let n=e.isCutAllowed(t);if(n!==`Success`)return n}return`Success`}isPasteAllowed(e,t,n){for(let{handler:r}of this.selectClipboardHandlers(t)){let i=r.isPasteAllowed(this.getters.getActiveSheetId(),e,t,{...n});if(i!==`Success`)return i}return`Success`}isColRowDirtyingClipboard(e,t){if(!this.copiedData||!this.copiedData.zones)return!1;let{zones:n}=this.copiedData;for(let r of n)if(t===`COL`&&e<=r.right||t===`ROW`&&e<=r.bottom)return!0;return!1}copy(e,t=`copyPaste`){let n={},r=this.getClipboardData(e);for(let{handlerName:e,handler:i}of this.selectClipboardHandlers(r)){let a=i.copy(r,this._isCutOperation,t);n[e]=a;for(let e of[`sheetId`,`cells`,`zones`,`figureId`])a&&e in a&&(n[e]=a[e])}return n}paste(e,t,n){if(!t)return;let r=this.getters.getActiveSheetId(),i=this.selectClipboardHandlers(t),{target:a,zone:o,selectedZones:s}=OP(r,e,t,i,n);o!==void 0&&this.addMissingDimensions(r,o.right-o.left+1,o.bottom-o.top+1,o.left,o.top),DP(i,t,a,n),n?.selectTarget&&kP(this.selection,e,s)}addMissingDimensions(e,t,n,r,i){let a=n+i-this.getters.getNumberRows(e);a>0&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`ROW`,base:this.getters.getNumberRows(e)-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:a,position:`after`});let o=t+r-this.getters.getNumberCols(e);o>0&&this.dispatch(`ADD_COLUMNS_ROWS`,{dimension:`COL`,base:this.getters.getNumberCols(e)-1,sheetId:e,sheetName:this.getters.getSheetName(e),quantity:o,position:`after`})}getClipboardTextContent(){return this.getPlainTextContent()}getClipboardId(){return this.clipboardId}async getClipboardTextAndImageContent(){let e=await this.getImageContent(),t=e?.type,n={"text/plain":this.getPlainTextContent(),"text/html":await this.getHTMLContent()};return t&&e&&(n[t]=e),n}getSheetData(){let e={version:qj(),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?.compiledFormula?e?.content||``:e.evaluatedCell?.formattedValue||``).join(` `)).join(`
119
119
  `)||` `}async getHTMLContent(){let e=``,t=this.copiedData?.cells;if(!t)if(this.copiedData?.figureId){let t=this.copiedData.figureId,n=this.getters.getFigureSheetId(t);e=this.getters.getFigure(n,t).tag===`image`?await this.craftImageHTML(t):` `}else e=` `;else if(t.length===1&&t[0].length===1)e=`${this.getters.getCellText(t[0][0].position)}`;else if(t[0][0]){let n=`<table border="1" style="border-collapse:collapse">`;for(let e of t){n+=`<tr>`;for(let t of e){if(!t)continue;let e=U(rv(this.getters.getCellComputedStyle(t.position))),r=this.getters.getCellText(t.position);n+=`<td style="${e}">`+hj(r)+`</td>`}n+=`</tr>`}n+=`</table>`,e=n}else return``;return`<div data-osheet-clipboard='${hj(JSON.stringify(this.getSheetData()))}'>${e}</div>`}readFileAsDataURL(e){return new Promise(t=>{let n=new FileReader;n.onload=()=>t(n.result),n.readAsDataURL(e)})}async craftImageHTML(e){if(!this.fileStore)return` `;let t=this.getters.getImage(e).path,n=await this.fileStore?.getFile(t)||null;return n?`<img src="${hj(await this.readFileAsDataURL(n))}" />`:` `}async getImageContent(){let e=this.copiedData?.figureId;if(!e)return;let t=this.getters.getFigureSheetId(e),n=this.getters.getFigure(t,e),r;if(n.tag===`image`){if(!this.fileStore)return;let t=this.getters.getImage(e).path;if(r=await this.fileStore?.getFile(t),r.type!==`image/png`){if(r.size>5242880){this.ui.notifyUI({text:k(`The file you are trying to copy is too large (>%sMB).
120
120
  It will not be added to your OS clipboard.
@@ -950,4 +950,4 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
950
950
  <Relationships xmlns="${du.Relationships}">
951
951
  <Relationship ${J(e)} />
952
952
  </Relationships>
953
- `),`_rels/.rels`)}function FZ(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=Ht(e,n,{compute:(e,t)=>e.slice(0,31-String(t).length)+t}),n.push(e),e!==r.name&&(t[r.name]=e,r.name=e)}if(!Object.keys(t).length)return e;let r=Object.keys(t).sort((e,t)=>t.length-e.length),i=JSON.stringify(e);for(let e of r){let n=RegExp(`'?${qe(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function IZ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Mn(mn(e.range)).numberOfRows>1);return e}var LZ=class e extends ir{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},t={},n=[],r=new Xl,i=!1){let a=performance.now();console.debug(`##### Model creation #####`),super(),pa(),n=iM(e,n);let o=Xj(e,i);this.state=new XY,this.uuidGenerator=r,this.config=this.setupConfig(t),this.session=this.setupSession(o.revisionId),this.coreGetters={},this.range=new qY(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.getRangeData=this.range.getRangeData.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.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.selection=new YY(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 Gq.getAll())this.setupCorePlugin(e,o);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(n);for(let e of Jq.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of qq.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of Kq.getAll()){let t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.config.mode!==`export_verification`&&(this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),t.snapshotRequested||e[`[Content_Types].xml`]&&!this.getters.isReadonly())){let e=performance.now();console.debug(`Snapshot requested`),this.session.snapshot(this.exportData()),console.debug(`Snapshot taken in`,performance.now()-e,`ms`)}console.debug(`Model created in`,performance.now()-a,`ms`),console.debug(`######`)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:_t(()=>this.exportData());await this.session.leave(e)}setupUiPlugin(e){let t=new e(this.uiPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}for(let n of e.layers)this.renderers[n]||(this.renderers[n]=[]),this.renderers[n].push(t);return t}setupCoreViewPlugin(e){let t=new e(this.coreViewPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}return t}setupCorePlugin(e,t){let n=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in n))throw Error(`Invalid getter name: ${t} for plugin ${n.constructor}`);if(t in this.coreGetters)throw Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=n[t].bind(n)}n.import(t),this.corePlugins.push(n),this.coreHandlers.push(n),this.handlers.push(n)}onRemoteRevisionReceived({commands:e}){for(let t of e){let e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new dq(WY({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{if(!this.checkDispatchAllowedRemoteCommand(e).isSuccessful){this.dispatchToHandlers(this.coreHandlers,{type:`UNDO`,commands:[e]});return}this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1}}),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){let t=e.client||{id:this.uuidGenerator.smallUuid(),name:k(`Anonymous`).toString()},n=e.transportService||new JJ,r=e.mode===`readonly`||e.mode===`dashboard`||e.mode===`export_verification`;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:r?new IY(n):n,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){let t=e.loadLocales||(()=>Promise.resolve(ho));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,custom:this.config.custom,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){let t=qs(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return this.processCommandResults(t)}processCommandResults(e){return e.some(e=>e!==`Success`)?new Ys(e.flat()):Ys.Success}checkDispatchAllowedRemoteCommand(e){let t=this.coreHandlers.map(t=>t.allowDispatch(e));return this.processCommandResults(t)}checkDispatchAllowedCoreCommand(e){return this.handlers.map(t=>t.allowDispatch(e))}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map(t=>t.allowDispatch(e))}finalize(){this.status=3;for(let e of this.handlers)e.finalize();this.status=0,this.trigger(`command-finalized`)}canDispatch=(e,t)=>this.checkDispatchAllowed(RZ(e,t));dispatch=(e,t)=>{let n=RZ(e,t),r=this.status;if(this.getters.isReadonly()&&!Js(n))return new Ys(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new Ys(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return this.trigger(`update`),this.trigger(`command-rejected`,{command:n,result:t}),t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{let t=performance.now();qs(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize();let r=performance.now()-t;r>5&&console.debug(e,r,`ms`)});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(qs(n)){let e=this.checkDispatchAllowed(n);if(!e.isSuccessful)return e;this.state.addCommand(n)}this.dispatchToHandlers(this.handlers,n);break;case 3:throw Error(`Cannot dispatch commands in the finalize state`);case 2:if(qs(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return Ys.Success};dispatchFromCorePlugin=(e,t)=>{let n=RZ(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,Ys.Success};dispatchToHandlers(e,t){let n=qs(t);for(let r of e)!n&&r instanceof VW||r.beforeHandle(t);for(let r of e)!n&&r instanceof VW||r.handle(t);this.trigger(`command-dispatched`,t)}drawLayer(e,t){let n=this.renderers[t];if(n)for(let r of n)e.ctx.save(),r.drawLayer(e,t),e.ctx.restore()}exportData(){let t=this._exportData(!0),n=this._exportData(!1),r={...this.config,mode:`export_verification`,client:{id:`exporter`,name:`exporter`},snapshotRequested:!1,transportService:new JJ};return w(n,new e(b(t),r)._exportData(!1))?t:(n.isNotSquishable=!0,n)}_exportData(e){let t=dM();for(let n of this.handlers)n instanceof VW&&n.export(t,e);return t.revisionId=this.session.getRevisionId()||`START_REVISION`,t=b(t),t}updateMode(e){this.config.mode=e,this.trigger(`update`)}async exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=pM();for(let t of this.handlers)t instanceof BW&&await t.exportForExcel(e);return e=b(e),EZ(e)}};function RZ(e,t={}){let n=b(t);return n.type=e,n}function zZ(e){return!GI.includes(e.horizontalGroupBy)||!GI.includes(e.verticalGroupBy)?`InvalidChartDefinition`:`Success`}var BZ=class e extends Ff{dataSets;labelRange;background;type=`calendar`;showValues;colorScale;axesDesign;horizontalGroupBy;verticalGroupBy;legendPosition;missingValueColor;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.showValues=e.showValues,this.colorScale=e.colorScale,this.axesDesign=e.axesDesign,this.horizontalGroupBy=e.horizontalGroupBy,this.verticalGroupBy=e.verticalGroupBy,this.legendPosition=e.legendPosition,this.missingValueColor=e.missingValueColor}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md,zZ)}static getDefinitionFromContextCreation(e){let t=`left`;return e.legendPosition===`right`&&(t=`right`),{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,title:e.title||{text:``},type:`calendar`,labelRange:e.auxiliaryRange||void 0,showValues:e.showValues,axesDesign:e.axesDesign,legendPosition:t,horizontalGroupBy:`day_of_week`,verticalGroupBy:`month_number`}}getContextCreation(){let e=[{dataRange:this.getters.getRangeString(this.dataSets[0].dataRange,this.sheetId)}];return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)}));return{type:`calendar`,background:this.background,dataSets:r,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,colorScale:this.colorScale,axesDesign:this.axesDesign,horizontalGroupBy:this.horizontalGroupBy,verticalGroupBy:this.verticalGroupBy,legendPosition:this.legendPosition,missingValueColor:this.missingValueColor}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function VZ(e,t){let n=e.getDefinition(),r=Jh(n,e.dataSets,e.labelRange,t),{labels:i,datasets:a}=nf(n,r);return{chartJsConfig:{type:`calendar`,data:{labels:i,datasets:a},options:{...Kp,indexAxis:`x`,layout:Mg(n,r),scales:zd(n,a),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:n_(n,r),chartShowValuesPlugin:Kg(n,r),chartColorScalePlugin:Bd(n,r),background:{color:e.background}}}}}}var HZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;dataSetsHaveTitle;dataSetDesign;axesDesign;type=`combo`;showValues;hideDataMarkers;zoomable;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.hideDataMarkers=e.hideDataMarkers,this.zoomable=e.zoomable}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.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,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId),type:this.dataSetDesign?.[t]?.type??(t?`line`:`bar`)});return{type:`combo`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues,hideDataMarkers:this.hideDataMarkers,zoomable:this.zoomable,humanize:this.humanize}}getDefinitionForExcel(){let{dataSets:e,labelRange:t}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),n=this.getDefinition();return{...n,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t,verticalAxis:_d(n)}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}static getDefinitionFromContextCreation(e){let 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,hideDataMarkers:e.hideDataMarkers,zoomable:e.zoomable,humanize:e.humanize}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}};function UZ(e,t){let n=e.getDefinition(),r=Gh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`bar`,data:{labels:r.labels,datasets:cf(n,r)},options:{...Kp,layout:jg(n,r),scales:Rd(n,r),plugins:{title:Zg(n,t),legend:Rg(n,r),tooltip:t_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var WZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;type=`funnel`;dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;showValues;funnelColors;cumulative;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.horizontal=!0,this.funnelColors=e.funnelColors,this.cumulative=e.cumulative}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:`none`,title:e.title||{text:``},type:`funnel`,labelRange:e.auxiliaryRange||void 0,showValues:e.showValues,axesDesign:e.axesDesign,funnelColors:e.funnelColors,horizontal:!0,cumulative:e.cumulative,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`funnel`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,horizontal:this.horizontal,axesDesign:this.axesDesign,showValues:this.showValues,funnelColors:this.funnelColors,cumulative:this.cumulative,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function GZ(e,t){let n=e.getDefinition(),r=eg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`funnel`,data:{labels:r.labels,datasets:df(n,r)},options:{...Kp,indexAxis:`y`,layout:jg(n,r),scales:qd(n,r),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:l_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var KZ=class e extends Ff{dataSets;labelRange;background;legendPosition;type=`geo`;dataSetsHaveTitle;dataSetDesign;colorScale;missingValueColor;region;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`geo`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,colorScale:this.colorScale,missingValueColor:this.missingValueColor,region:this.region,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function qZ(e,t){let n=e.getDefinition(),r=$h(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`choropleth`,data:{datasets:uf(n,r)},options:{...Kp,layout:jg(n,r),scales:Kd(n,r),plugins:{title:Zg(n,t),tooltip:c_(n,r),legend:{display:!1},background:{color:e.background}}}}}}var JZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;type=`pyramid`;dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;stacked=!0;showValues;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`pyramid`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:!0,stacked:!0,showValues:this.showValues,humanize:this.humanize}}getDefinitionForExcel(e){let{dataSets:t,labelRange:n}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),r=this.getDefinition(),{dataSetsValues:i}=Yh(r,this.dataSets,this.labelRange,e),a=Math.max(...i.map(e=>Math.max(...e.data.map(Math.abs))));return{...r,horizontal:!0,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:t,labelRange:n,verticalAxis:_d(r),maxValue:a}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function YZ(e,t){let n=e.getDefinition(),r=Yh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`bar`,data:{labels:r.labels,datasets:tf(n,r)},options:{...Kp,indexAxis:`y`,layout:jg(n,r),scales:Wd(n,r),plugins:{title:Zg(n,t),legend:Pg(n,r),tooltip:o_(n,r),chartShowValuesPlugin:Jg(n,r),background:{color:e.background}}}}}}var XZ=class e extends Ff{dataSets;labelRange;background;legendPosition;stacked;aggregated;type=`radar`;dataSetsHaveTitle;dataSetDesign;fillArea;showValues;hideDataMarkers;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.hideDataMarkers=e.hideDataMarkers}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,hideDataMarkers:e.hideDataMarkers,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`radar`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,fillArea:this.fillArea,showValues:this.showValues,hideDataMarkers:this.hideDataMarkers,humanize:this.humanize}}getDefinitionForExcel(){let{dataSets:e,labelRange:t}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function ZZ(e,t){let n=e.getDefinition(),r=Qh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`radar`,data:{labels:r.labels,datasets:lf(n,r)},options:{...Kp,layout:jg(n,r),scales:Gd(n,r),plugins:{title:Zg(n,t),legend:Bg(n,r),tooltip:s_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var QZ=class e extends Ff{dataSets;labelRange;background;legendPosition;type=`sunburst`;dataSetsHaveTitle;showValues;showLabels;valuesDesign;groupColors;pieHolePercentage;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showValues=e.showValues,this.showLabels=e.showLabels,this.valuesDesign=e.valuesDesign,this.groupColors=e.groupColors,this.pieHolePercentage=e.pieHolePercentage}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){let t=[];return e.hierarchicalRanges?.length?t.push(...e.hierarchicalRanges):e.auxiliaryRange&&t.push({...e.range?.[0],dataRange:e.auxiliaryRange}),{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??`top`,title:e.title||{text:``},type:`sunburst`,labelRange:e.range?.[0]?.dataRange,showValues:e.showValues,showLabels:e.showLabels,valuesDesign:e.valuesDesign,groupColors:e.groupColors,humanize:e.humanize}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getContextCreation(){let e=this.dataSets.at(-1)?.dataRange;return{...this,range:this.labelRange?[{dataRange:this.getters.getRangeString(this.labelRange,this.sheetId)}]:[],auxiliaryRange:e?this.getters.getRangeString(e,this.sheetId):void 0,hierarchicalRanges:this.dataSets.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))}}getDefinitionWithSpecificDataSets(e,t,n){return{type:`sunburst`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)})),legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,showLabels:this.showLabels,valuesDesign:this.valuesDesign,groupColors:this.groupColors,pieHolePercentage:this.pieHolePercentage,humanize:this.humanize}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function $Z(e,t){let n=e.getDefinition(),r=tg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`doughnut`,data:{datasets:pf(n,r)},options:{cutout:e.pieHolePercentage===void 0?`25%`:`${e.pieHolePercentage}%`,...Kp,layout:jg(n,r),plugins:{title:Zg(n,t),legend:Vg(n,r),tooltip:u_(n,r),sunburstLabelsPlugin:qg(n,r),sunburstHoverPlugin:{enabled:!0},background:{color:e.background}}}}}}var eQ=class e extends Ff{static defaults={background:oe,legendPosition:`top`,dataSetsHaveTitle:!1,showHeaders:!0,headersColor:`#000000`};dataSets;labelRange;background;legendPosition;type=`treemap`;dataSetsHaveTitle;showHeaders;headerDesign;showValues;showLabels;valuesDesign;coloringOptions;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showHeaders=e.showHeaders,this.headerDesign=e.headerDesign,this.showValues=e.showValues,this.showLabels=e.showLabels,this.valuesDesign=e.valuesDesign,this.coloringOptions=e.coloringOptions}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){let t=[];return e.hierarchicalRanges?.length?t.push(...e.hierarchicalRanges):e.auxiliaryRange&&t.push({...e.range?.[0],dataRange:e.auxiliaryRange}),{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??`top`,title:e.title||{text:``},type:`treemap`,labelRange:e.range?.[0]?.dataRange,showValues:e.showValues,showHeaders:e.showHeaders,headerDesign:e.headerDesign,showLabels:e.showLabels,valuesDesign:e.valuesDesign,coloringOptions:e.treemapColoringOptions,humanize:e.humanize}}getContextCreation(){let e=this.dataSets.at(-1)?.dataRange;return{...this,range:this.labelRange?[{dataRange:this.getters.getRangeString(this.labelRange,this.sheetId)}]:[],auxiliaryRange:e?this.getters.getRangeString(e,this.sheetId):void 0,hierarchicalRanges:this.dataSets.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)}));return{type:`treemap`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,showHeaders:this.showHeaders,headerDesign:this.headerDesign,showLabels:this.showLabels,valuesDesign:this.valuesDesign,coloringOptions:this.coloringOptions,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function tQ(e,t){let n=e.getDefinition(),r=tg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`treemap`,data:{labels:r.labels,datasets:vf(n,r)},options:{...Kp,layout:jg(n,r),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:d_(n,r),background:{color:e.background}}}}}}v_.add(`bar`,{match:e=>e===`bar`,createChart:(e,t,n)=>new g_(e,t,n),getChartRuntime:__,validateChartDefinition:g_.validateChartDefinition,transformDefinition:g_.transformDefinition,getChartDefinitionFromContextCreation:g_.getDefinitionFromContextCreation,sequence:10}),v_.add(`combo`,{match:e=>e===`combo`,createChart:(e,t,n)=>new HZ(e,t,n),getChartRuntime:UZ,validateChartDefinition:HZ.validateChartDefinition,transformDefinition:HZ.transformDefinition,getChartDefinitionFromContextCreation:HZ.getDefinitionFromContextCreation,sequence:15}),v_.add(`line`,{match:e=>e===`line`,createChart:(e,t,n)=>new F_(e,t,n),getChartRuntime:I_,validateChartDefinition:F_.validateChartDefinition,transformDefinition:F_.transformDefinition,getChartDefinitionFromContextCreation:F_.getDefinitionFromContextCreation,sequence:20}),v_.add(`pie`,{match:e=>e===`pie`,createChart:(e,t,n)=>new L_(e,t,n),getChartRuntime:R_,validateChartDefinition:L_.validateChartDefinition,transformDefinition:L_.transformDefinition,getChartDefinitionFromContextCreation:L_.getDefinitionFromContextCreation,sequence:30}),v_.add(`scorecard`,{match:e=>e===`scorecard`,createChart:(e,t,n)=>new Gf(e,t,n),getChartRuntime:qf,validateChartDefinition:Gf.validateChartDefinition,transformDefinition:Gf.transformDefinition,getChartDefinitionFromContextCreation:Gf.getDefinitionFromContextCreation,sequence:40}),v_.add(`gauge`,{match:e=>e===`gauge`,createChart:(e,t,n)=>new k_(e,t,n),getChartRuntime:A_,validateChartDefinition:k_.validateChartDefinition,transformDefinition:k_.transformDefinition,getChartDefinitionFromContextCreation:k_.getDefinitionFromContextCreation,sequence:50}),v_.add(`scatter`,{match:e=>e===`scatter`,createChart:(e,t,n)=>new uL(e,t,n),getChartRuntime:dL,validateChartDefinition:uL.validateChartDefinition,transformDefinition:uL.transformDefinition,getChartDefinitionFromContextCreation:uL.getDefinitionFromContextCreation,sequence:60}),v_.add(`waterfall`,{match:e=>e===`waterfall`,createChart:(e,t,n)=>new z_(e,t,n),getChartRuntime:B_,validateChartDefinition:z_.validateChartDefinition,transformDefinition:z_.transformDefinition,getChartDefinitionFromContextCreation:z_.getDefinitionFromContextCreation,sequence:70}),v_.add(`pyramid`,{match:e=>e===`pyramid`,createChart:(e,t,n)=>new JZ(e,t,n),getChartRuntime:YZ,validateChartDefinition:JZ.validateChartDefinition,transformDefinition:JZ.transformDefinition,getChartDefinitionFromContextCreation:JZ.getDefinitionFromContextCreation,sequence:80,dataSeriesLimit:2}),v_.add(`radar`,{match:e=>e===`radar`,createChart:(e,t,n)=>new XZ(e,t,n),getChartRuntime:ZZ,validateChartDefinition:XZ.validateChartDefinition,transformDefinition:XZ.transformDefinition,getChartDefinitionFromContextCreation:XZ.getDefinitionFromContextCreation,sequence:80}),v_.add(`geo`,{match:e=>e===`geo`,createChart:(e,t,n)=>new KZ(e,t,n),getChartRuntime:qZ,validateChartDefinition:KZ.validateChartDefinition,transformDefinition:KZ.transformDefinition,getChartDefinitionFromContextCreation:KZ.getDefinitionFromContextCreation,sequence:90,dataSeriesLimit:1}),v_.add(`funnel`,{match:e=>e===`funnel`,createChart:(e,t,n)=>new WZ(e,t,n),getChartRuntime:GZ,validateChartDefinition:WZ.validateChartDefinition,transformDefinition:WZ.transformDefinition,getChartDefinitionFromContextCreation:WZ.getDefinitionFromContextCreation,sequence:100,dataSeriesLimit:1}),v_.add(`sunburst`,{match:e=>e===`sunburst`,createChart:(e,t,n)=>new QZ(e,t,n),getChartRuntime:$Z,validateChartDefinition:QZ.validateChartDefinition,transformDefinition:QZ.transformDefinition,getChartDefinitionFromContextCreation:QZ.getDefinitionFromContextCreation,sequence:30}),v_.add(`treemap`,{match:e=>e===`treemap`,createChart:(e,t,n)=>new eQ(e,t,n),getChartRuntime:tQ,validateChartDefinition:eQ.validateChartDefinition,transformDefinition:eQ.transformDefinition,getChartDefinitionFromContextCreation:eQ.getDefinitionFromContextCreation,sequence:100}),v_.add(`calendar`,{match:e=>e===`calendar`,createChart:(e,t,n)=>new BZ(e,t,n),getChartRuntime:(e,t)=>VZ(e,t),validateChartDefinition:BZ.validateChartDefinition,transformDefinition:BZ.transformDefinition,getChartDefinitionFromContextCreation:BZ.getDefinitionFromContextCreation,sequence:110,dataSeriesLimit:1}),Q_.add(`line`,{matcher:e=>e.type===`line`&&!e.stacked&&!e.fillArea,displayName:k(`Line`),chartType:`line`,chartSubtype:`line`,subtypeDefinition:{stacked:!1,fillArea:!1},category:`line`,preview:`o-spreadsheet-ChartPreview.LINE_CHART`}).add(`stacked_line`,{matcher:e=>e.type===`line`&&!e.fillArea&&!!e.stacked,displayName:k(`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=>e.type===`line`&&!e.stacked&&!!e.fillArea,displayName:k(`Area`),chartType:`line`,chartSubtype:`area`,subtypeDefinition:{stacked:!1,fillArea:!0},category:`area`,preview:`o-spreadsheet-ChartPreview.AREA_CHART`}).add(`stacked_area`,{matcher:e=>e.type===`line`&&e.stacked&&!!e.fillArea,displayName:k(`Stacked Area`),chartType:`line`,chartSubtype:`stacked_area`,subtypeDefinition:{stacked:!0,fillArea:!0},category:`area`,preview:`o-spreadsheet-ChartPreview.STACKED_AREA_CHART`}).add(`scatter`,{displayName:k(`Scatter`),chartType:`scatter`,chartSubtype:`scatter`,category:`misc`,preview:`o-spreadsheet-ChartPreview.SCATTER_CHART`}).add(`column`,{matcher:e=>e.type===`bar`&&!e.stacked&&!e.horizontal,displayName:k(`Column`),chartType:`bar`,chartSubtype:`column`,subtypeDefinition:{stacked:!1,horizontal:!1},category:`column`,preview:`o-spreadsheet-ChartPreview.COLUMN_CHART`}).add(`stacked_column`,{matcher:e=>e.type===`bar`&&e.stacked&&!e.horizontal,displayName:k(`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=>e.type===`bar`&&!e.stacked&&!!e.horizontal,displayName:k(`Bar`),chartType:`bar`,chartSubtype:`bar`,subtypeDefinition:{horizontal:!0,stacked:!1},category:`bar`,preview:`o-spreadsheet-ChartPreview.BAR_CHART`}).add(`stacked_bar`,{matcher:e=>e.type===`bar`&&e.stacked&&!!e.horizontal,displayName:k(`Stacked Bar`),chartType:`bar`,chartSubtype:`stacked_bar`,subtypeDefinition:{horizontal:!0,stacked:!0},category:`bar`,preview:`o-spreadsheet-ChartPreview.STACKED_BAR_CHART`}).add(`combo`,{displayName:k(`Combo`),chartSubtype:`combo`,chartType:`combo`,category:`line`,preview:`o-spreadsheet-ChartPreview.COMBO_CHART`}).add(`pie`,{matcher:e=>e.type===`pie`&&!e.isDoughnut,displayName:k(`Pie`),chartSubtype:`pie`,chartType:`pie`,subtypeDefinition:{isDoughnut:!1},category:`pie`,preview:`o-spreadsheet-ChartPreview.PIE_CHART`}).add(`doughnut`,{matcher:e=>e.type===`pie`&&!!e.isDoughnut,displayName:k(`Doughnut`),chartSubtype:`doughnut`,chartType:`pie`,subtypeDefinition:{isDoughnut:!0},category:`pie`,preview:`o-spreadsheet-ChartPreview.DOUGHNUT_CHART`}).add(`gauge`,{displayName:k(`Gauge`),chartSubtype:`gauge`,chartType:`gauge`,category:`misc`,preview:`o-spreadsheet-ChartPreview.GAUGE_CHART`}).add(`scorecard`,{displayName:k(`Scorecard`),chartSubtype:`scorecard`,chartType:`scorecard`,category:`misc`,preview:`o-spreadsheet-ChartPreview.SCORECARD_CHART`}).add(`waterfall`,{displayName:k(`Waterfall`),chartSubtype:`waterfall`,chartType:`waterfall`,category:`misc`,preview:`o-spreadsheet-ChartPreview.WATERFALL_CHART`}).add(`pyramid`,{displayName:k(`Population Pyramid`),chartSubtype:`pyramid`,chartType:`pyramid`,category:`misc`,preview:`o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART`}).add(`radar`,{matcher:e=>e.type===`radar`&&!e.fillArea,displayName:k(`Radar`),chartSubtype:`radar`,chartType:`radar`,subtypeDefinition:{fillArea:!1},category:`misc`,preview:`o-spreadsheet-ChartPreview.RADAR_CHART`}).add(`filled_radar`,{matcher:e=>e.type===`radar`&&!!e.fillArea,displayName:k(`Filled Radar`),chartType:`radar`,chartSubtype:`filled_radar`,subtypeDefinition:{fillArea:!0},category:`misc`,preview:`o-spreadsheet-ChartPreview.FILLED_RADAR_CHART`}).add(`geo`,{displayName:k(`Geo Chart`),chartSubtype:`geo`,chartType:`geo`,category:`misc`,preview:`o-spreadsheet-ChartPreview.GEO_CHART`}).add(`funnel`,{displayName:k(`Funnel`),chartSubtype:`funnel`,chartType:`funnel`,category:`misc`,preview:`o-spreadsheet-ChartPreview.FUNNEL_CHART`}).add(`sunburst`,{matcher:e=>e.type===`sunburst`,displayName:k(`Sunburst`),chartSubtype:`sunburst`,chartType:`sunburst`,category:`hierarchical`,preview:`o-spreadsheet-ChartPreview.SUNBURST_CHART`}).add(`treemap`,{matcher:e=>e.type===`treemap`,displayName:k(`Tree Map`),chartType:`treemap`,chartSubtype:`treemap`,category:`hierarchical`,preview:`o-spreadsheet-ChartPreview.TREE_MAP_CHART`}).add(`calendar`,{displayName:k(`Calendar`),chartSubtype:`calendar`,chartType:`calendar`,category:`misc`,preview:`o-spreadsheet-ChartPreview.CALENDAR_CHART`});var nQ=class extends aK{queuedBordersToAdd={};copy(e){let t=e.sheetId;if(e.zones.length===0)return;let{rowsIndexes:n,columnsIndexes:r}=e,i=[];for(let e of n){let n=[];for(let i of r){let r={col:i,row:e,sheetId:t};n.push(this.getters.getCellBorder(r))}i.push(n)}return{borders:i}}paste(e,t,n){let r=e.sheetId;if(n.pasteOption===`asValue`)return;let i=e.zones;if(!n.isCutOperation)this.pasteFromCopy(r,i,t.borders);else{let{left:e,top:n}=i[0];this.pasteZone(r,e,n,t.borders)}this.executeQueuedChanges(r)}pasteZone(e,t,n,r){for(let[i,a]of r.entries())for(let[r,o]of a.entries()){let a={col:t+r,row:n+i,sheetId:e};this.pasteBorder(o,a)}}pasteBorder(e,t){let n={...this.getters.getCellBorder(t),...e},r=JSON.stringify(n);this.queuedBordersToAdd[r]||(this.queuedBordersToAdd[r]=[]),this.queuedBordersToAdd[r].push(E(t))}executeQueuedChanges(e){for(let t in this.queuedBordersToAdd){let n=this.queuedBordersToAdd[t],r=JSON.parse(t),i=nn(n,[]);this.dispatch(`SET_BORDERS_ON_TARGET`,{sheetId:e,target:i,border:r})}this.queuedBordersToAdd={}}},rQ=class extends iK{copy(e){}},iQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);if(n.tag!==`carousel`)return;let r={...n},i=this.getters.getCarousel(e.figureId),a={};for(let e of i.items)if(e.type===`chart`){let n=this.getters.getChart(e.chartId);if(!n)throw Error(`No chart for the given id: ${e.chartId}`);a[e.chartId]=n.copyInSheetId(t)}return{figureId:e.figureId,copiedFigure:r,copiedCarousel:i,copiedCharts:a,copiedSheetId:t}}getPasteTarget(e){return{zones:[],figureId:new Xl().smallUuid(),sheetId:e}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=e.sheetId,{width:o,height:s}=t.copiedFigure,c=this.getters.getMaxAnchorOffset(a,s,o),{left:l,top:u}=r[0],d={x:0,y:0};l>c.col&&(l=c.col,d.x=c.offset.x),u>c.row&&(u=c.row,d.y=c.offset.y),this.dispatch(`CREATE_CAROUSEL`,{figureId:i,sheetId:a,definition:{items:[]},col:l,row:u,offset:d,size:{height:s,width:o}});let f=new Xl,p=b(t.copiedCarousel.items);for(let e of p){if(e.type!==`chart`)continue;let n=t.copiedCharts[e.chartId],r=f.smallUuid(),o=n.copyInSheetId(a).getDefinition();this.dispatch(`CREATE_CHART`,{figureId:i,chartId:r,sheetId:a,definition:o}),e.chartId=r}this.dispatch(`UPDATE_CAROUSEL`,{sheetId:a,figureId:i,definition:{...t.copiedCarousel,items:p}}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.copiedSheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},aQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);if(n.tag!==`chart`)return;let r={...n},i=this.getters.getChartFromFigureId(e.figureId);if(!i)throw Error(`No chart for the given id: ${e.figureId}`);let a=i.copyInSheetId(t);return{figureId:e.figureId,copiedFigure:r,copiedChart:a}}getPasteTarget(e,t,n,r){return{zones:[],figureId:new Xl().smallUuid(),sheetId:e}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=e.sheetId,{width:o,height:s}=t.copiedFigure,c=t.copiedChart.copyInSheetId(a),l=this.getters.getMaxAnchorOffset(a,s,o),{left:u,top:d}=r[0],f={x:0,y:0};u>l.col&&(u=l.col,f.x=l.offset.x),d>l.row&&(d=l.row,f.y=l.offset.y),this.dispatch(`CREATE_CHART`,{figureId:i,chartId:new Xl().smallUuid(),sheetId:a,definition:c.getDefinition(),col:u,row:d,offset:f,size:{height:s,width:o}}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.copiedChart.sheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},oQ=class extends aK{uuidGenerator=new Xl;queuedChanges={};copy(e){if(!e.zones.length)return;let{rowsIndexes:t,columnsIndexes:n}=e,r=e.sheetId,i=[];for(let e of t){let t=[];for(let i of n){let n=Array.from(this.getters.getRulesByCell(r,i,e));t.push({position:{col:i,row:e,sheetId:r},rules:n})}i.push(t)}return{cfRules:i}}paste(e,t,n){if(this.queuedChanges={},n.pasteOption===`asValue`)return;let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t):this.pasteFromCopy(i,r,t.cfRules,n),this.executeQueuedChanges()}pasteFromCut(e,t,n){let r=t[0];this.pasteZone(e,r.left,r.top,n.cfRules,{isCutOperation:!0})}pasteZone(e,t,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){let o={col:t+r,row:n+a,sheetId:e};this.pasteCf(s,o,i?.isCutOperation)}}pasteCf(e,t,n){if(e?.rules&&e.rules.length>0){let r=E(e.position),i=E(t);for(let a of e.rules){let o=[];if(n&&o.push(r),e.position.sheetId===t.sheetId)this.adaptCFRules(e.position.sheetId,a,[i],o);else{this.adaptCFRules(e.position.sheetId,a,[],o);let n=this.getCFToCopyTo(t.sheetId,a);this.adaptCFRules(t.sheetId,n,[i],[])}}}}adaptCFRules(e,t,n,r){this.queuedChanges[e]||(this.queuedChanges[e]=[]);let i=this.queuedChanges[e].find(e=>e.cf.id===t.id);i?(i.toAdd.push(...n),i.toRemove.push(...r)):this.queuedChanges[e].push({toAdd:n,toRemove:r,cf:t})}executeQueuedChanges(){for(let e in this.queuedChanges)for(let{toAdd:t,toRemove:n,cf:r}of this.queuedChanges[e]){let i=this.getters.getAdaptedCfRanges(e,r,t,n);if(i){if(i.length===0){this.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{id:r.id,sheetId:e});continue}this.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:r.id,rule:r.rule,stopIfTrue:r.stopIfTrue},ranges:i,sheetId:e})}}}getCFToCopyTo(e,t){let n=this.getters.getConditionalFormats(e).find(e=>e.stopIfTrue===t.stopIfTrue&&w(e.rule,t.rule)),r=this.queuedChanges[e];return!n&&r&&(n=r.find(e=>e.cf.stopIfTrue===t.stopIfTrue&&w(e.cf.rule,t.rule))?.cf),n||{...t,id:this.uuidGenerator.smallUuid(),ranges:[]}}},sQ=class extends aK{uuidGenerator=new Xl;queuedChanges={};copy(e){let{rowsIndexes:t,columnsIndexes:n}=e,r=e.sheetId,i=[];for(let e of t){let t=[];for(let i of n){let n={sheetId:r,col:i,row:e},a=this.getters.getValidationRuleForCell(n);t.push({position:n,rule:a})}i.push(t)}return{dvRules:i}}paste(e,t,n){if(this.queuedChanges={},n.pasteOption)return;let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t):this.pasteFromCopy(i,r,t.dvRules),this.executeQueuedChanges()}pasteFromCut(e,t,n){let r=t[0];this.pasteZone(e,r.left,r.top,n.dvRules,{isCutOperation:!0})}pasteZone(e,t,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){let o={col:t+r,row:n+a,sheetId:e};this.pasteDataValidation(s,o,i?.isCutOperation)}}pasteDataValidation(e,t,n){if(e){let r=E(t),i=E(e.position),a=e.rule;if(!a){let e=this.getters.getValidationRuleForCell(t);e&&this.adaptDataValidationRule(t.sheetId,e,[],[r]);return}let o=[];if(n&&o.push(i),e.position.sheetId===t.sheetId){let n=this.getDataValidationRuleToCopyTo(t.sheetId,a,!1);this.adaptDataValidationRule(e.position.sheetId,n,[r],o)}else{let n=this.getters.getValidationRuleForCell(e.position);n&&this.adaptDataValidationRule(e.position.sheetId,n,[],o);let i=this.getDataValidationRuleToCopyTo(t.sheetId,a);this.adaptDataValidationRule(t.sheetId,i,[r],[])}}}getDataValidationRuleToCopyTo(e,t,n=!0){let r=this.getters.getDataValidationRules(e).find(e=>w(t.criterion,e.criterion)&&t.isBlocking===e.isBlocking),i=this.queuedChanges[e];return!r&&i&&(r=i.find(e=>w(t.criterion,e.rule.criterion)&&t.isBlocking===e.rule.isBlocking)?.rule),r||{...t,id:n?this.uuidGenerator.smallUuid():t.id,ranges:[]}}adaptDataValidationRule(e,t,n,r){this.queuedChanges[e]||(this.queuedChanges[e]=[]);let i=this.queuedChanges[e].find(e=>e.rule.id===t.id);i?(i.toAdd.push(...n),i.toRemove.push(...r)):this.queuedChanges[e].push({toAdd:n,toRemove:r,rule:t})}executeQueuedChanges(){for(let e in this.queuedChanges)for(let{toAdd:t,toRemove:n,rule:r}of this.queuedChanges[e]){let i=nn([...nn(r.ranges.map(e=>e.zone),n),...t],[]);if(i.length===0){this.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:e,id:r.id});continue}this.dispatch(`ADD_DATA_VALIDATION_RULE`,{rule:{id:r.id,criterion:r.criterion,isBlocking:r.isBlocking},ranges:i.map(t=>this.getters.getRangeDataFromZone(e,t)),sheetId:e})}}},cQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);let r={...n};if(n.tag!==`image`)return;let i=b(this.getters.getImage(e.figureId));return{figureId:e.figureId,copiedFigure:r,copiedImage:i,sheetId:t}}getPasteTarget(e,t,n,r){return{sheetId:e,zones:[],figureId:new Xl().smallUuid()}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=this.getters.getActiveSheetId(),{width:o,height:s}=t.copiedFigure,c=b(t.copiedImage),l=this.getters.getMaxAnchorOffset(a,s,o),{left:u,top:d}=r[0],f={x:0,y:0};u>l.col&&(u=l.col,f.x=l.offset.x),d>l.row&&(d=l.row,f.y=l.offset.y),this.dispatch(`CREATE_IMAGE`,{figureId:i,sheetId:a,col:u,row:d,offset:f,size:{height:s,width:o},definition:c}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.sheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},lQ=class extends aK{copy(e){let t=this.getters.getActiveSheetId(),{rowsIndexes:n,columnsIndexes:r}=e,i=[];for(let e of n){let n=[];for(let i of r){let r={col:i,row:e,sheetId:t};n.push(this.getters.getMerge(r))}i.push(n)}return{merges:i,sheetId:t}}paste(e,t,n){if(n.isCutOperation){let e=t.merges.flat().filter(C);this.dispatch(`REMOVE_MERGE`,{sheetId:t.sheetId,target:e})}this.pasteFromCopy(e.sheetId,e.zones,t.merges,n)}pasteZone(e,t,n,r){for(let[i,a]of r.entries())for(let[r,o]of a.entries()){let a={col:t+r,row:n+i,sheetId:e};this.pasteMerge(o,a)}}pasteMerge(e,t){if(!e||this.getters.isInMerge(t))return;let{sheetId:n,col:r,row:i}=t;this.dispatch(`ADD_MERGE`,{sheetId:n,force:!0,target:[{left:r,top:i,right:r+e.right-e.left,bottom:i+e.bottom-e.top}]})}},uQ=class extends aK{copy(e){return{zones:e.clippedZones,sheetId:e.sheetId}}paste(e,t,n){if(n.isCutOperation){let n=e.zones[0];this.dispatch(`MOVE_RANGES`,{target:t.zones,sheetId:t.sheetId,sheetName:this.getters.getSheetName(t.sheetId),targetSheetId:e.sheetId,col:n.left,row:n.top})}}},dQ=class extends aK{isPasteAllowed(e,t,n,r){if(!(`cells`in n))return`Success`;let{xSplit:i,ySplit:a}=this.getters.getPaneDivisions(e);return qn(wP(t,n.cells),i,a)?`FrozenPaneOverlap`:`Success`}},fQ=class extends aK{copy(e,t,n=`copyPaste`){let r=e.sheetId,{rowsIndexes:i,columnsIndexes:a,zones:o}=e,s=new Set,c=[];for(let e of i){let l=[];c.push(l);for(let c of a){let a={col:c,row:e,sheetId:r},u=this.getters.getTable(a);if(!u){l.push({});continue}let d=this.getters.getCoreTable(a),f=d?.range.zone,p;if(!s.has(u.id)&&d&&f&&o.some(e=>jn(f,e))){s.add(u.id);let{numberOfRows:e}=Mn(f);for(let n=f.top;n<=f.bottom;n++)!t&&!i.includes(n)&&e--;let n=d.range,r=this.getters.extendRange(d.range,`ROW`,n.zone.top+e-1-n.zone.bottom);p={range:this.getters.getRangeData(r),config:d.config,type:d.type}}if(u.isPivotTable){let t=u.range.zone.top===e&&u.range.zone.left===c,n=o.some(e=>jn(u.range.zone,e));(t||n)&&s.add(u.id)}n!==`shiftCells`&&l.push({table:p,style:this.getTableStyleToCopy(a),isWholeTableCopied:s.has(u.id)})}}return{tableCells:c,sheetId:e.sheetId}}getTableStyleToCopy(e){let t=Ct({...this.getters.getCellTableStyle(e),hideGridLines:!1}),n=this.getters.getCellStyle(e),r=this.getters.getCellTableBorder(e),i=this.getters.getCellBorder(e);return{style:{...t,...Ct(n)},border:{...r,...Ct(i)}}}paste(e,t,n){let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t,n):this.pasteFromCopy(i,r,t.tableCells,n)}pasteFromCut(e,t,n,r){for(let e of n.tableCells)for(let t of e)t.table&&this.dispatch(`REMOVE_TABLE`,{sheetId:n.sheetId,target:[this.getters.getRangeFromRangeData(t.table.range).zone]});let i=t[0];this.pasteZone(e,i.left,i.top,n.tableCells,r)}pasteZone(e,t,n,r,i){for(let a=0;a<r.length;a++){let o=r[a];for(let r=0;r<o.length;r++){let s=o[r];if(!s)continue;let c={col:t+r,row:n+a,sheetId:e};this.pasteTableCell(e,s,c,i)}}if(r.length===1)for(let i=0;i<r[0].length;i++)this.dispatch(`AUTOFILL_TABLE_COLUMN`,{col:t+i,row:n,sheetId:e})}pasteTableCell(e,t,n,r){if(t.table&&!r?.pasteOption){let{range:r}=t.table,i=Mn(this.getters.getRangeFromRangeData(r).zone),a={left:n.col,top:n.row,right:n.col+i.numberOfCols-1,bottom:n.row+i.numberOfRows-1};this.dispatch(`CREATE_TABLE`,{sheetId:n.sheetId,ranges:[this.getters.getRangeDataFromZone(e,a)],config:t.table.config,tableType:t.table.type})}this.getters.getCoreTable(n)||r?.pasteOption===`asValue`||(!r?.pasteOption&&!t.isWholeTableCopied||r?.pasteOption===`onlyFormat`)&&(t.style?.style&&this.dispatch(`UPDATE_CELL`,{...n,style:t.style.style}),t.style?.border&&this.dispatch(`SET_BORDER`,{...n,border:t.style.border}))}};iW.figureHandlers.add(`chart`,aQ).add(`image`,cQ).add(`carousel`,iQ),iW.cellHandlers.add(`dataValidation`,sQ).add(`cell`,oK).add(`sheet`,dQ).add(`merge`,lQ).add(`border`,nQ).add(`table`,fQ).add(`conditionalFormat`,oQ).add(`references`,uQ);let pQ={},mQ={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,DESKTOP_BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},hQ={autoCompleteProviders:wN,autofillModifiersRegistry:lK,autofillRulesRegistry:uK,cellMenuRegistry:YH,colMenuRegistry:sU,errorTypes:ha,linkMenuRegistry:yP,functionRegistry:uO,featurePluginRegistry:Kq,iconsOnCellRegistry:zG,statefulUIPluginRegistry:qq,coreViewsPluginRegistry:Jq,corePluginRegistry:Gq,rowMenuRegistry:mU,sidePanelRegistry:vV,figureRegistry:Rv,chartSidePanelComponentRegistry:SL,chartComponentRegistry:_v,chartRegistry:v_,chartSubtypeRegistry:Q_,topbarMenuRegistry:DJ,topbarComponentRegistry:qJ,clickableCellRegistry:tJ,otRegistry:kK,inverseCommandRegistry:iJ,urlRegistry:$s,cellPopoverRegistry:yM,numberFormatMenuRegistry:SJ,repeatLocalCommandTransformRegistry:bq,repeatCommandTransformRegistry:yq,clipboardHandlersRegistries:iW,pivotRegistry:uB,pivotTimeAdapterRegistry:Ym,pivotSidePanelRegistry:TB,pivotNormalizationValueRegistry:Dh,supportedPivotPositionalFormulaRegistry:IW,pivotToFunctionValueRegistry:Oh,migrationStepRegistry:Gj,chartJsExtensionRegistry:Zl},gQ={arg:W,isEvaluationError:M,toBoolean:F,toJsDate:I,toNumber:N,toString:P,toNormalizedPivotValue:Ch,toFunctionPivotValue:Th,toXC:T,toZone:mn,toUnboundedZone:pn,toCartesian:tn,numberToLetters:Kt,lettersToNumber:qt,UuidGenerator:Xl,formatValue:z,createCurrencyFormat:ps,ColorGenerator:ii,computeTextWidth:Ml,createEmptyWorkbookData:dM,createEmptySheet:uM,createEmptyExcelSheet:fM,rgbaToHex:Fr,colorToRGBA:Ir,positionToZone:E,isDefined:C,isMatrix:Ta,lazy:_t,genericRepeat:KJ,createAction:h,createActions:p,transformRangeData:rr,deepEquals:w,overlap:On,union:wn,isInside:An,deepCopy:b,expandZoneOnInsertion:bn,reduceZoneOnDeletion:Cn,unquote:Xe,getMaxObjectId:hh,getFirstPivotFunction:hB,getNumberOfPivotFunctions:_B,parseDimension:vh,isDateOrDatetimeField:yh,makeFieldProposal:vB,periodYearToComparable:Jm,insertTokenAfterArgSeparator:bB,insertTokenAfterLeftParenthesis:xB,mergeContiguousZones:er,getPivotHighlights:ez,pivotTimeAdapter:Xm,UNDO_REDO_PIVOT_COMMANDS:tK,createPivotFormula:Sh,areDomainArgsFieldsValid:xh,splitReference:zc,sanitizeSheetName:Qe,getUniqueText:Ht,isNumber:ra,isDateTime:Ti,createCustomFields:Ph,schemeToColorScale:Rm,isDateTimeFormat:os,jsDateToNumber:zi,numberToJsDate:Li,DateTime:O,parseFormat:Ao,isFormula:Ut,domainToColRowDomain:Fz},_Q={isMarkdownLink:it,parseMarkdownLink:st,markdownLink:ot,openLink:ic,urlRepresentation:rc},vQ={Checkbox:eP,Section:Q,Select:EM,RoundColorPicker:BN,ChartDataSeries:TI,ChartErrorSection:DI,ChartLabelRange:OI,ChartTitle:MI,ChartPanel:EL,ChartFigure:Iv,ChartJsComponent:Pf,ClickableCellSortIcon:LW,ZoomableChartJsComponent:lv,Grid:FW,GridOverlay:uW,ScorecardChart:Op,GaugeChartComponent:hv,LineConfigPanel:aL,BarConfigPanel:AI,PieChartDesignPanel:cL,GenericChartConfigPanel:kI,ChartWithAxisDesignPanel:HI,GenericZoomableChartDesignPanel:UI,LineChartDesignPanel:oL,GaugeChartConfigPanel:$I,GaugeChartDesignPanel:eL,ScorecardChartConfigPanel:pL,ScorecardChartDesignPanel:mL,GeoChartDesignPanel:rL,RadarChartDesignPanel:lL,WaterfallChartDesignPanel:xL,ComboChartDesignPanel:XI,FunnelChartDesignPanel:QI,SunburstChartDesignPanel:hL,TreeMapChartDesignPanel:bL,ChartTypePicker:wL,FigureComponent:zv,MenuPopover:Nv,Popover:kv,SelectionInput:YN,ValidationMessages:EI,AddDimensionButton:az,PivotDimensionGranularity:sz,PivotDimensionOrder:cz,PivotDimension:oz,PivotLayoutConfigurator:kz,PivotHTMLRenderer:zW,PivotDeferUpdate:nz,PivotTitleSection:Az,CogWheelMenu:SI,TextInput:gI,SidePanelCollapsible:TM,RadioSelection:PI,GeoChartRegionSelectSection:tL,ChartDashboardMenu:Pv,FullScreenFigure:RW,NumberInput:RI,TopBar:MY,Composer:ZM},yQ={useDragAndDropListItems:HN,useHighlights:NL,useHighlightsOnHover:ML},bQ={useStoreProvider:lr,DependencyContainer:ar,CellPopoverStore:aP,ComposerFocusStore:xr,CellComposerStore:WU,FindAndReplaceStore:BL,HighlightStore:EN,DelayedHoveredCellStore:Bv,HoveredTableStore:sW,ModelStore:mr,NotificationStore:DN,RendererStore:vr,SelectionInputStore:JN,SpreadsheetStore:yr,useStore:D,useLocalStore:ur,SidePanelStore:bV,PivotSidePanelStore:CB,PivotMeasureDisplayPanelStore:QR,ClientFocusStore:gU,GridRenderer:vW};function xQ(e,t){return uO.add(e,t),{addFunction:(e,t)=>xQ(e,t)}}let SQ={DEFAULT_LOCALE:R,HIGHLIGHT_COLOR:ee,PIVOT_STATIC_TABLE_CONFIG:Re,PIVOT_INSERT_TABLE_STYLE_ID:ze,ChartTerms:tm,FIGURE_ID_SPLITTER:`??`,GRID_ICON_EDGE_LENGTH:17,GRID_ICON_MARGIN:2},CQ={...V_,...h_};e.AbstractCellClipboardHandler=aK,e.AbstractChart=Ff,e.AbstractFigureClipboardHandler=rQ,e.CellErrorType=A,e.ClientDisconnectedError=uq,e.CommandResult=Zs,e.CompiledFormula=yz,e.CorePlugin=VW,e.CoreViewPlugin=pG,e.DEFAULT_LOCALE=R,e.DEFAULT_LOCALES=ho,e.DispatchResult=Ys,e.EvaluationError=j,e.LocalTransportService=JJ,e.Model=LZ,e.PivotRuntimeDefinition=jz,e.Registry=B,e.Revision=lq,e.SPREADSHEET_DIMENSIONS=mQ,e.Spreadsheet=FY,e.SpreadsheetPivotTable=Qz,e.UIPlugin=sK,e.__info__=pQ,e.addFunction=xQ,e.addRenderingLayer=_r,e.astToFormula=BU,e.canExecuteInReadonly=Js,e.categories=dO,e.chartHelpers=CQ,e.components=vQ,e.constants=SQ,e.convertAstNodes=dN,e.coreTypes=Ks,e.createAutocompleteArgumentsProvider=Yq,e.findCellInNewZone=Vn,e.functionCache=_z,e.getCaretDownSvg=TO,e.getCaretUpSvg=EO,e.helpers=gQ,e.hooks=yQ,e.invalidateCFEvaluationCommands=Vs,e.invalidateChartEvaluationCommands=zs,e.invalidateDependenciesCommands=Bs,e.invalidateEvaluationCommands=Rs,e.isCoreCommand=qs,e.isSheetDependent=Ms,e.iterateAstNodes=fN,e.links=_Q,e.load=Xj,e.lockedSheetAllowedCommands=Gs,e.parse=lN,e.parseTokens=uN,e.readonlyAllowedCommands=Ws,e.registries=hQ,e.setDefaultSheetViewSize=Ie,e.setTranslationMethod=fa,e.stores=bQ,e.tokenColors=We,e.tokenize=Tu,pQ.version=`19.2.20`,pQ.date=`2026-07-13T06:27:10.918Z`,pQ.hash=`99a9aef`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
953
+ `),`_rels/.rels`)}function FZ(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=Ht(e,n,{compute:(e,t)=>e.slice(0,31-String(t).length)+t}),n.push(e),e!==r.name&&(t[r.name]=e,r.name=e)}if(!Object.keys(t).length)return e;let r=Object.keys(t).sort((e,t)=>t.length-e.length),i=JSON.stringify(e);for(let e of r){let n=RegExp(`'?${qe(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function IZ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Mn(mn(e.range)).numberOfRows>1);return e}var LZ=class e extends ir{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},t={},n=[],r=new Xl,i=!1){let a=performance.now();console.debug(`##### Model creation #####`),super(),pa(),n=iM(e,n);let o=Xj(e,i);this.state=new XY,this.uuidGenerator=r,this.config=this.setupConfig(t),this.session=this.setupSession(o.revisionId),this.coreGetters={},this.range=new qY(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.getRangeData=this.range.getRangeData.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.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.selection=new YY(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 Gq.getAll())this.setupCorePlugin(e,o);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(n);for(let e of Jq.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of qq.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of Kq.getAll()){let t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.config.mode!==`export_verification`&&(this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),t.snapshotRequested||e[`[Content_Types].xml`]&&!this.getters.isReadonly())){let e=performance.now();console.debug(`Snapshot requested`),this.session.snapshot(this.exportData()),console.debug(`Snapshot taken in`,performance.now()-e,`ms`)}console.debug(`Model created in`,performance.now()-a,`ms`),console.debug(`######`)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:_t(()=>this.exportData());await this.session.leave(e)}setupUiPlugin(e){let t=new e(this.uiPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}for(let n of e.layers)this.renderers[n]||(this.renderers[n]=[]),this.renderers[n].push(t);return t}setupCoreViewPlugin(e){let t=new e(this.coreViewPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}return t}setupCorePlugin(e,t){let n=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in n))throw Error(`Invalid getter name: ${t} for plugin ${n.constructor}`);if(t in this.coreGetters)throw Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=n[t].bind(n)}n.import(t),this.corePlugins.push(n),this.coreHandlers.push(n),this.handlers.push(n)}onRemoteRevisionReceived({commands:e}){for(let t of e){let e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new dq(WY({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{if(!this.checkDispatchAllowedRemoteCommand(e).isSuccessful){this.dispatchToHandlers(this.coreHandlers,{type:`UNDO`,commands:[e]});return}this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1}}),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){let t=e.client||{id:this.uuidGenerator.smallUuid(),name:k(`Anonymous`).toString()},n=e.transportService||new JJ,r=e.mode===`readonly`||e.mode===`dashboard`||e.mode===`export_verification`;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:r?new IY(n):n,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){let t=e.loadLocales||(()=>Promise.resolve(ho));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,custom:this.config.custom,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){let t=qs(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return this.processCommandResults(t)}processCommandResults(e){return e.some(e=>e!==`Success`)?new Ys(e.flat()):Ys.Success}checkDispatchAllowedRemoteCommand(e){let t=this.coreHandlers.map(t=>t.allowDispatch(e));return this.processCommandResults(t)}checkDispatchAllowedCoreCommand(e){return this.handlers.map(t=>t.allowDispatch(e))}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map(t=>t.allowDispatch(e))}finalize(){this.status=3;for(let e of this.handlers)e.finalize();this.status=0,this.trigger(`command-finalized`)}canDispatch=(e,t)=>this.checkDispatchAllowed(RZ(e,t));dispatch=(e,t)=>{let n=RZ(e,t),r=this.status;if(this.getters.isReadonly()&&!Js(n))return new Ys(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new Ys(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return this.trigger(`update`),this.trigger(`command-rejected`,{command:n,result:t}),t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{let t=performance.now();qs(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize();let r=performance.now()-t;r>5&&console.debug(e,r,`ms`)});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(qs(n)){let e=this.checkDispatchAllowed(n);if(!e.isSuccessful)return e;this.state.addCommand(n)}this.dispatchToHandlers(this.handlers,n);break;case 3:throw Error(`Cannot dispatch commands in the finalize state`);case 2:if(qs(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return Ys.Success};dispatchFromCorePlugin=(e,t)=>{let n=RZ(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,Ys.Success};dispatchToHandlers(e,t){let n=qs(t);for(let r of e)!n&&r instanceof VW||r.beforeHandle(t);for(let r of e)!n&&r instanceof VW||r.handle(t);this.trigger(`command-dispatched`,t)}drawLayer(e,t){let n=this.renderers[t];if(n)for(let r of n)e.ctx.save(),r.drawLayer(e,t),e.ctx.restore()}exportData(){let t=this._exportData(!0),n=this._exportData(!1),r={...this.config,mode:`export_verification`,client:{id:`exporter`,name:`exporter`},snapshotRequested:!1,transportService:new JJ};return w(n,new e(b(t),r)._exportData(!1))?t:(n.isNotSquishable=!0,n)}_exportData(e){let t=dM();for(let n of this.handlers)n instanceof VW&&n.export(t,e);return t.revisionId=this.session.getRevisionId()||`START_REVISION`,t=b(t),t}updateMode(e){this.config.mode=e,this.trigger(`update`)}async exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=pM();for(let t of this.handlers)t instanceof BW&&await t.exportForExcel(e);return e=b(e),EZ(e)}};function RZ(e,t={}){let n=b(t);return n.type=e,n}function zZ(e){return!GI.includes(e.horizontalGroupBy)||!GI.includes(e.verticalGroupBy)?`InvalidChartDefinition`:`Success`}var BZ=class e extends Ff{dataSets;labelRange;background;type=`calendar`;showValues;colorScale;axesDesign;horizontalGroupBy;verticalGroupBy;legendPosition;missingValueColor;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.showValues=e.showValues,this.colorScale=e.colorScale,this.axesDesign=e.axesDesign,this.horizontalGroupBy=e.horizontalGroupBy,this.verticalGroupBy=e.verticalGroupBy,this.legendPosition=e.legendPosition,this.missingValueColor=e.missingValueColor}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md,zZ)}static getDefinitionFromContextCreation(e){let t=`left`;return e.legendPosition===`right`&&(t=`right`),{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,title:e.title||{text:``},type:`calendar`,labelRange:e.auxiliaryRange||void 0,showValues:e.showValues,axesDesign:e.axesDesign,legendPosition:t,horizontalGroupBy:`day_of_week`,verticalGroupBy:`month_number`}}getContextCreation(){let e=[{dataRange:this.getters.getRangeString(this.dataSets[0].dataRange,this.sheetId)}];return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)}));return{type:`calendar`,background:this.background,dataSets:r,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,colorScale:this.colorScale,axesDesign:this.axesDesign,horizontalGroupBy:this.horizontalGroupBy,verticalGroupBy:this.verticalGroupBy,legendPosition:this.legendPosition,missingValueColor:this.missingValueColor}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function VZ(e,t){let n=e.getDefinition(),r=Jh(n,e.dataSets,e.labelRange,t),{labels:i,datasets:a}=nf(n,r);return{chartJsConfig:{type:`calendar`,data:{labels:i,datasets:a},options:{...Kp,indexAxis:`x`,layout:Mg(n,r),scales:zd(n,a),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:n_(n,r),chartShowValuesPlugin:Kg(n,r),chartColorScalePlugin:Bd(n,r),background:{color:e.background}}}}}}var HZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;dataSetsHaveTitle;dataSetDesign;axesDesign;type=`combo`;showValues;hideDataMarkers;zoomable;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.hideDataMarkers=e.hideDataMarkers,this.zoomable=e.zoomable}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.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,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId),type:this.dataSetDesign?.[t]?.type??(t?`line`:`bar`)});return{type:`combo`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,showValues:this.showValues,hideDataMarkers:this.hideDataMarkers,zoomable:this.zoomable,humanize:this.humanize}}getDefinitionForExcel(){let{dataSets:e,labelRange:t}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),n=this.getDefinition();return{...n,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t,verticalAxis:_d(n)}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}static getDefinitionFromContextCreation(e){let 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,hideDataMarkers:e.hideDataMarkers,zoomable:e.zoomable,humanize:e.humanize}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}};function UZ(e,t){let n=e.getDefinition(),r=Gh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`bar`,data:{labels:r.labels,datasets:cf(n,r)},options:{...Kp,layout:jg(n,r),scales:Rd(n,r),plugins:{title:Zg(n,t),legend:Rg(n,r),tooltip:t_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var WZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;type=`funnel`;dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;showValues;funnelColors;cumulative;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.horizontal=!0,this.funnelColors=e.funnelColors,this.cumulative=e.cumulative}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){return{background:e.background,dataSets:e.range??[],dataSetsHaveTitle:e.dataSetsHaveTitle??!1,aggregated:e.aggregated??!1,legendPosition:`none`,title:e.title||{text:``},type:`funnel`,labelRange:e.auxiliaryRange||void 0,showValues:e.showValues,axesDesign:e.axesDesign,funnelColors:e.funnelColors,horizontal:!0,cumulative:e.cumulative,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`funnel`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,horizontal:this.horizontal,axesDesign:this.axesDesign,showValues:this.showValues,funnelColors:this.funnelColors,cumulative:this.cumulative,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function GZ(e,t){let n=e.getDefinition(),r=eg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`funnel`,data:{labels:r.labels,datasets:df(n,r)},options:{...Kp,indexAxis:`y`,layout:jg(n,r),scales:qd(n,r),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:l_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var KZ=class e extends Ff{dataSets;labelRange;background;legendPosition;type=`geo`;dataSetsHaveTitle;dataSetDesign;colorScale;missingValueColor;region;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`geo`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,colorScale:this.colorScale,missingValueColor:this.missingValueColor,region:this.region,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function qZ(e,t){let n=e.getDefinition(),r=$h(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`choropleth`,data:{datasets:uf(n,r)},options:{...Kp,layout:jg(n,r),scales:Kd(n,r),plugins:{title:Zg(n,t),tooltip:c_(n,r),legend:{display:!1},background:{color:e.background}}}}}}var JZ=class e extends Ff{dataSets;labelRange;background;legendPosition;aggregated;type=`pyramid`;dataSetsHaveTitle;dataSetDesign;axesDesign;horizontal=!0;stacked=!0;showValues;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`pyramid`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,aggregated:this.aggregated,axesDesign:this.axesDesign,horizontal:!0,stacked:!0,showValues:this.showValues,humanize:this.humanize}}getDefinitionForExcel(e){let{dataSets:t,labelRange:n}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle)),r=this.getDefinition(),{dataSetsValues:i}=Yh(r,this.dataSets,this.labelRange,e),a=Math.max(...i.map(e=>Math.max(...e.data.map(Math.abs))));return{...r,horizontal:!0,backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:t,labelRange:n,verticalAxis:_d(r),maxValue:a}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function YZ(e,t){let n=e.getDefinition(),r=Yh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`bar`,data:{labels:r.labels,datasets:tf(n,r)},options:{...Kp,indexAxis:`y`,layout:jg(n,r),scales:Wd(n,r),plugins:{title:Zg(n,t),legend:Pg(n,r),tooltip:o_(n,r),chartShowValuesPlugin:Jg(n,r),background:{color:e.background}}}}}}var XZ=class e extends Ff{dataSets;labelRange;background;legendPosition;stacked;aggregated;type=`radar`;dataSetsHaveTitle;dataSetDesign;fillArea;showValues;hideDataMarkers;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,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,this.hideDataMarkers=e.hideDataMarkers}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}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,hideDataMarkers:e.hideDataMarkers,humanize:e.humanize}}getContextCreation(){let e=[];for(let[t,n]of this.dataSets.entries())e.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(n.dataRange,this.sheetId)});return{...this,range:e,auxiliaryRange:this.labelRange?this.getters.getRangeString(this.labelRange,this.sheetId):void 0}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=[];for(let[t,i]of e.entries())r.push({...this.dataSetDesign?.[t],dataRange:this.getters.getRangeString(i.dataRange,n||this.sheetId)});return{type:`radar`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,stacked:this.stacked,aggregated:this.aggregated,fillArea:this.fillArea,showValues:this.showValues,hideDataMarkers:this.hideDataMarkers,humanize:this.humanize}}getDefinitionForExcel(){let{dataSets:e,labelRange:t}=this.getCommonDataSetAttributesForExcel(this.labelRange,this.dataSets,hd(this.labelRange,this.dataSets[0],this.dataSetsHaveTitle));return{...this.getDefinition(),backgroundColor:V(this.background||`#FFFFFF`),fontColor:V(dd(this.background)),dataSets:e,labelRange:t}}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function ZZ(e,t){let n=e.getDefinition(),r=Qh(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`radar`,data:{labels:r.labels,datasets:lf(n,r)},options:{...Kp,layout:jg(n,r),scales:Gd(n,r),plugins:{title:Zg(n,t),legend:Bg(n,r),tooltip:s_(n,r),chartShowValuesPlugin:Gg(n,r),background:{color:e.background}}}}}}var QZ=class e extends Ff{dataSets;labelRange;background;legendPosition;type=`sunburst`;dataSetsHaveTitle;showValues;showLabels;valuesDesign;groupColors;pieHolePercentage;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showValues=e.showValues,this.showLabels=e.showLabels,this.valuesDesign=e.valuesDesign,this.groupColors=e.groupColors,this.pieHolePercentage=e.pieHolePercentage}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){let t=[];return e.hierarchicalRanges?.length?t.push(...e.hierarchicalRanges):e.auxiliaryRange&&t.push({...e.range?.[0],dataRange:e.auxiliaryRange}),{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??`top`,title:e.title||{text:``},type:`sunburst`,labelRange:e.range?.[0]?.dataRange,showValues:e.showValues,showLabels:e.showLabels,valuesDesign:e.valuesDesign,groupColors:e.groupColors,humanize:e.humanize}}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getContextCreation(){let e=this.dataSets.at(-1)?.dataRange;return{...this,range:this.labelRange?[{dataRange:this.getters.getRangeString(this.labelRange,this.sheetId)}]:[],auxiliaryRange:e?this.getters.getRangeString(e,this.sheetId):void 0,hierarchicalRanges:this.dataSets.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))}}getDefinitionWithSpecificDataSets(e,t,n){return{type:`sunburst`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)})),legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,showLabels:this.showLabels,valuesDesign:this.valuesDesign,groupColors:this.groupColors,pieHolePercentage:this.pieHolePercentage,humanize:this.humanize}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function $Z(e,t){let n=e.getDefinition(),r=tg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`doughnut`,data:{datasets:pf(n,r)},options:{cutout:e.pieHolePercentage===void 0?`25%`:`${e.pieHolePercentage}%`,...Kp,layout:jg(n,r),plugins:{title:Zg(n,t),legend:Vg(n,r),tooltip:u_(n,r),sunburstLabelsPlugin:qg(n,r),sunburstHoverPlugin:{enabled:!0},background:{color:e.background}}}}}}var eQ=class e extends Ff{static defaults={background:oe,legendPosition:`top`,dataSetsHaveTitle:!1,showHeaders:!0,headersColor:`#000000`};dataSets;labelRange;background;legendPosition;type=`treemap`;dataSetsHaveTitle;showHeaders;headerDesign;showValues;showLabels;valuesDesign;coloringOptions;constructor(e,t,n){super(e,t,n),this.dataSets=od(n,e.dataSets,t,e.dataSetsHaveTitle),this.labelRange=nl(n,t,e.labelRange),this.background=e.background,this.legendPosition=e.legendPosition,this.dataSetsHaveTitle=e.dataSetsHaveTitle,this.showHeaders=e.showHeaders,this.headerDesign=e.headerDesign,this.showValues=e.showValues,this.showLabels=e.showLabels,this.valuesDesign=e.valuesDesign,this.coloringOptions=e.coloringOptions}static transformDefinition(e,t,n){return ud(e,t,n)}static validateChartDefinition(e,t){return e.checkValidations(t,pd,md)}static getDefinitionFromContextCreation(e){let t=[];return e.hierarchicalRanges?.length?t.push(...e.hierarchicalRanges):e.auxiliaryRange&&t.push({...e.range?.[0],dataRange:e.auxiliaryRange}),{background:e.background,dataSets:t,dataSetsHaveTitle:e.dataSetsHaveTitle??!1,legendPosition:e.legendPosition??`top`,title:e.title||{text:``},type:`treemap`,labelRange:e.range?.[0]?.dataRange,showValues:e.showValues,showHeaders:e.showHeaders,headerDesign:e.headerDesign,showLabels:e.showLabels,valuesDesign:e.valuesDesign,coloringOptions:e.treemapColoringOptions,humanize:e.humanize}}getContextCreation(){let e=this.dataSets.at(-1)?.dataRange;return{...this,range:this.labelRange?[{dataRange:this.getters.getRangeString(this.labelRange,this.sheetId)}]:[],auxiliaryRange:e?this.getters.getRangeString(e,this.sheetId):void 0,hierarchicalRanges:this.dataSets.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,this.sheetId)}))}}duplicateInDuplicatedSheet(t){let n=rd(this.sheetId,t,this.dataSets),r=id(this.sheetId,t,this.labelRange);return new e(this.getDefinitionWithSpecificDataSets(n,r,t),t,this.getters)}copyInSheetId(t){return new e(this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange,t),t,this.getters)}getDefinition(){return this.getDefinitionWithSpecificDataSets(this.dataSets,this.labelRange)}getDefinitionWithSpecificDataSets(e,t,n){let r=e.map(e=>({dataRange:this.getters.getRangeString(e.dataRange,n||this.sheetId)}));return{type:`treemap`,dataSetsHaveTitle:e.length?!!e[0].labelCell:!1,background:this.background,dataSets:r,legendPosition:this.legendPosition,labelRange:t?this.getters.getRangeString(t,n||this.sheetId):void 0,title:this.title,showValues:this.showValues,showHeaders:this.showHeaders,headerDesign:this.headerDesign,showLabels:this.showLabels,valuesDesign:this.valuesDesign,coloringOptions:this.coloringOptions,humanize:this.humanize}}getDefinitionForExcel(){}updateRanges({applyChange:t}){let{dataSets:n,labelRange:r,isStale:i}=nd(this.getters,t,this.dataSets,this.labelRange);return i?new e(this.getDefinitionWithSpecificDataSets(n,r),this.sheetId,this.getters):this}};function tQ(e,t){let n=e.getDefinition(),r=tg(n,e.dataSets,e.labelRange,t);return{chartJsConfig:{type:`treemap`,data:{labels:r.labels,datasets:vf(n,r)},options:{...Kp,layout:jg(n,r),plugins:{title:Zg(n,t),legend:{display:!1},tooltip:d_(n,r),background:{color:e.background}}}}}}v_.add(`bar`,{match:e=>e===`bar`,createChart:(e,t,n)=>new g_(e,t,n),getChartRuntime:__,validateChartDefinition:g_.validateChartDefinition,transformDefinition:g_.transformDefinition,getChartDefinitionFromContextCreation:g_.getDefinitionFromContextCreation,sequence:10}),v_.add(`combo`,{match:e=>e===`combo`,createChart:(e,t,n)=>new HZ(e,t,n),getChartRuntime:UZ,validateChartDefinition:HZ.validateChartDefinition,transformDefinition:HZ.transformDefinition,getChartDefinitionFromContextCreation:HZ.getDefinitionFromContextCreation,sequence:15}),v_.add(`line`,{match:e=>e===`line`,createChart:(e,t,n)=>new F_(e,t,n),getChartRuntime:I_,validateChartDefinition:F_.validateChartDefinition,transformDefinition:F_.transformDefinition,getChartDefinitionFromContextCreation:F_.getDefinitionFromContextCreation,sequence:20}),v_.add(`pie`,{match:e=>e===`pie`,createChart:(e,t,n)=>new L_(e,t,n),getChartRuntime:R_,validateChartDefinition:L_.validateChartDefinition,transformDefinition:L_.transformDefinition,getChartDefinitionFromContextCreation:L_.getDefinitionFromContextCreation,sequence:30}),v_.add(`scorecard`,{match:e=>e===`scorecard`,createChart:(e,t,n)=>new Gf(e,t,n),getChartRuntime:qf,validateChartDefinition:Gf.validateChartDefinition,transformDefinition:Gf.transformDefinition,getChartDefinitionFromContextCreation:Gf.getDefinitionFromContextCreation,sequence:40}),v_.add(`gauge`,{match:e=>e===`gauge`,createChart:(e,t,n)=>new k_(e,t,n),getChartRuntime:A_,validateChartDefinition:k_.validateChartDefinition,transformDefinition:k_.transformDefinition,getChartDefinitionFromContextCreation:k_.getDefinitionFromContextCreation,sequence:50}),v_.add(`scatter`,{match:e=>e===`scatter`,createChart:(e,t,n)=>new uL(e,t,n),getChartRuntime:dL,validateChartDefinition:uL.validateChartDefinition,transformDefinition:uL.transformDefinition,getChartDefinitionFromContextCreation:uL.getDefinitionFromContextCreation,sequence:60}),v_.add(`waterfall`,{match:e=>e===`waterfall`,createChart:(e,t,n)=>new z_(e,t,n),getChartRuntime:B_,validateChartDefinition:z_.validateChartDefinition,transformDefinition:z_.transformDefinition,getChartDefinitionFromContextCreation:z_.getDefinitionFromContextCreation,sequence:70}),v_.add(`pyramid`,{match:e=>e===`pyramid`,createChart:(e,t,n)=>new JZ(e,t,n),getChartRuntime:YZ,validateChartDefinition:JZ.validateChartDefinition,transformDefinition:JZ.transformDefinition,getChartDefinitionFromContextCreation:JZ.getDefinitionFromContextCreation,sequence:80,dataSeriesLimit:2}),v_.add(`radar`,{match:e=>e===`radar`,createChart:(e,t,n)=>new XZ(e,t,n),getChartRuntime:ZZ,validateChartDefinition:XZ.validateChartDefinition,transformDefinition:XZ.transformDefinition,getChartDefinitionFromContextCreation:XZ.getDefinitionFromContextCreation,sequence:80}),v_.add(`geo`,{match:e=>e===`geo`,createChart:(e,t,n)=>new KZ(e,t,n),getChartRuntime:qZ,validateChartDefinition:KZ.validateChartDefinition,transformDefinition:KZ.transformDefinition,getChartDefinitionFromContextCreation:KZ.getDefinitionFromContextCreation,sequence:90,dataSeriesLimit:1}),v_.add(`funnel`,{match:e=>e===`funnel`,createChart:(e,t,n)=>new WZ(e,t,n),getChartRuntime:GZ,validateChartDefinition:WZ.validateChartDefinition,transformDefinition:WZ.transformDefinition,getChartDefinitionFromContextCreation:WZ.getDefinitionFromContextCreation,sequence:100,dataSeriesLimit:1}),v_.add(`sunburst`,{match:e=>e===`sunburst`,createChart:(e,t,n)=>new QZ(e,t,n),getChartRuntime:$Z,validateChartDefinition:QZ.validateChartDefinition,transformDefinition:QZ.transformDefinition,getChartDefinitionFromContextCreation:QZ.getDefinitionFromContextCreation,sequence:30}),v_.add(`treemap`,{match:e=>e===`treemap`,createChart:(e,t,n)=>new eQ(e,t,n),getChartRuntime:tQ,validateChartDefinition:eQ.validateChartDefinition,transformDefinition:eQ.transformDefinition,getChartDefinitionFromContextCreation:eQ.getDefinitionFromContextCreation,sequence:100}),v_.add(`calendar`,{match:e=>e===`calendar`,createChart:(e,t,n)=>new BZ(e,t,n),getChartRuntime:(e,t)=>VZ(e,t),validateChartDefinition:BZ.validateChartDefinition,transformDefinition:BZ.transformDefinition,getChartDefinitionFromContextCreation:BZ.getDefinitionFromContextCreation,sequence:110,dataSeriesLimit:1}),Q_.add(`line`,{matcher:e=>e.type===`line`&&!e.stacked&&!e.fillArea,displayName:k(`Line`),chartType:`line`,chartSubtype:`line`,subtypeDefinition:{stacked:!1,fillArea:!1},category:`line`,preview:`o-spreadsheet-ChartPreview.LINE_CHART`}).add(`stacked_line`,{matcher:e=>e.type===`line`&&!e.fillArea&&!!e.stacked,displayName:k(`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=>e.type===`line`&&!e.stacked&&!!e.fillArea,displayName:k(`Area`),chartType:`line`,chartSubtype:`area`,subtypeDefinition:{stacked:!1,fillArea:!0},category:`area`,preview:`o-spreadsheet-ChartPreview.AREA_CHART`}).add(`stacked_area`,{matcher:e=>e.type===`line`&&e.stacked&&!!e.fillArea,displayName:k(`Stacked Area`),chartType:`line`,chartSubtype:`stacked_area`,subtypeDefinition:{stacked:!0,fillArea:!0},category:`area`,preview:`o-spreadsheet-ChartPreview.STACKED_AREA_CHART`}).add(`scatter`,{displayName:k(`Scatter`),chartType:`scatter`,chartSubtype:`scatter`,category:`misc`,preview:`o-spreadsheet-ChartPreview.SCATTER_CHART`}).add(`column`,{matcher:e=>e.type===`bar`&&!e.stacked&&!e.horizontal,displayName:k(`Column`),chartType:`bar`,chartSubtype:`column`,subtypeDefinition:{stacked:!1,horizontal:!1},category:`column`,preview:`o-spreadsheet-ChartPreview.COLUMN_CHART`}).add(`stacked_column`,{matcher:e=>e.type===`bar`&&e.stacked&&!e.horizontal,displayName:k(`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=>e.type===`bar`&&!e.stacked&&!!e.horizontal,displayName:k(`Bar`),chartType:`bar`,chartSubtype:`bar`,subtypeDefinition:{horizontal:!0,stacked:!1},category:`bar`,preview:`o-spreadsheet-ChartPreview.BAR_CHART`}).add(`stacked_bar`,{matcher:e=>e.type===`bar`&&e.stacked&&!!e.horizontal,displayName:k(`Stacked Bar`),chartType:`bar`,chartSubtype:`stacked_bar`,subtypeDefinition:{horizontal:!0,stacked:!0},category:`bar`,preview:`o-spreadsheet-ChartPreview.STACKED_BAR_CHART`}).add(`combo`,{displayName:k(`Combo`),chartSubtype:`combo`,chartType:`combo`,category:`line`,preview:`o-spreadsheet-ChartPreview.COMBO_CHART`}).add(`pie`,{matcher:e=>e.type===`pie`&&!e.isDoughnut,displayName:k(`Pie`),chartSubtype:`pie`,chartType:`pie`,subtypeDefinition:{isDoughnut:!1},category:`pie`,preview:`o-spreadsheet-ChartPreview.PIE_CHART`}).add(`doughnut`,{matcher:e=>e.type===`pie`&&!!e.isDoughnut,displayName:k(`Doughnut`),chartSubtype:`doughnut`,chartType:`pie`,subtypeDefinition:{isDoughnut:!0},category:`pie`,preview:`o-spreadsheet-ChartPreview.DOUGHNUT_CHART`}).add(`gauge`,{displayName:k(`Gauge`),chartSubtype:`gauge`,chartType:`gauge`,category:`misc`,preview:`o-spreadsheet-ChartPreview.GAUGE_CHART`}).add(`scorecard`,{displayName:k(`Scorecard`),chartSubtype:`scorecard`,chartType:`scorecard`,category:`misc`,preview:`o-spreadsheet-ChartPreview.SCORECARD_CHART`}).add(`waterfall`,{displayName:k(`Waterfall`),chartSubtype:`waterfall`,chartType:`waterfall`,category:`misc`,preview:`o-spreadsheet-ChartPreview.WATERFALL_CHART`}).add(`pyramid`,{displayName:k(`Population Pyramid`),chartSubtype:`pyramid`,chartType:`pyramid`,category:`misc`,preview:`o-spreadsheet-ChartPreview.POPULATION_PYRAMID_CHART`}).add(`radar`,{matcher:e=>e.type===`radar`&&!e.fillArea,displayName:k(`Radar`),chartSubtype:`radar`,chartType:`radar`,subtypeDefinition:{fillArea:!1},category:`misc`,preview:`o-spreadsheet-ChartPreview.RADAR_CHART`}).add(`filled_radar`,{matcher:e=>e.type===`radar`&&!!e.fillArea,displayName:k(`Filled Radar`),chartType:`radar`,chartSubtype:`filled_radar`,subtypeDefinition:{fillArea:!0},category:`misc`,preview:`o-spreadsheet-ChartPreview.FILLED_RADAR_CHART`}).add(`geo`,{displayName:k(`Geo Chart`),chartSubtype:`geo`,chartType:`geo`,category:`misc`,preview:`o-spreadsheet-ChartPreview.GEO_CHART`}).add(`funnel`,{displayName:k(`Funnel`),chartSubtype:`funnel`,chartType:`funnel`,category:`misc`,preview:`o-spreadsheet-ChartPreview.FUNNEL_CHART`}).add(`sunburst`,{matcher:e=>e.type===`sunburst`,displayName:k(`Sunburst`),chartSubtype:`sunburst`,chartType:`sunburst`,category:`hierarchical`,preview:`o-spreadsheet-ChartPreview.SUNBURST_CHART`}).add(`treemap`,{matcher:e=>e.type===`treemap`,displayName:k(`Tree Map`),chartType:`treemap`,chartSubtype:`treemap`,category:`hierarchical`,preview:`o-spreadsheet-ChartPreview.TREE_MAP_CHART`}).add(`calendar`,{displayName:k(`Calendar`),chartSubtype:`calendar`,chartType:`calendar`,category:`misc`,preview:`o-spreadsheet-ChartPreview.CALENDAR_CHART`});var nQ=class extends aK{queuedBordersToAdd={};copy(e){let t=e.sheetId;if(e.zones.length===0)return;let{rowsIndexes:n,columnsIndexes:r}=e,i=[];for(let e of n){let n=[];for(let i of r){let r={col:i,row:e,sheetId:t};n.push(this.getters.getCellBorder(r))}i.push(n)}return{borders:i}}paste(e,t,n){let r=e.sheetId;if(n.pasteOption===`asValue`)return;let i=e.zones;if(!n.isCutOperation)this.pasteFromCopy(r,i,t.borders);else{let{left:e,top:n}=i[0];this.pasteZone(r,e,n,t.borders)}this.executeQueuedChanges(r)}pasteZone(e,t,n,r){for(let[i,a]of r.entries())for(let[r,o]of a.entries()){let a={col:t+r,row:n+i,sheetId:e};this.pasteBorder(o,a)}}pasteBorder(e,t){let n={...this.getters.getCellBorder(t),...e},r=JSON.stringify(n);this.queuedBordersToAdd[r]||(this.queuedBordersToAdd[r]=[]),this.queuedBordersToAdd[r].push(E(t))}executeQueuedChanges(e){for(let t in this.queuedBordersToAdd){let n=this.queuedBordersToAdd[t],r=JSON.parse(t),i=nn(n,[]);this.dispatch(`SET_BORDERS_ON_TARGET`,{sheetId:e,target:i,border:r})}this.queuedBordersToAdd={}}},rQ=class extends iK{copy(e){}},iQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);if(n.tag!==`carousel`)return;let r={...n},i=this.getters.getCarousel(e.figureId),a={};for(let e of i.items)if(e.type===`chart`){let n=this.getters.getChart(e.chartId);if(!n)throw Error(`No chart for the given id: ${e.chartId}`);a[e.chartId]=n.copyInSheetId(t)}return{figureId:e.figureId,copiedFigure:r,copiedCarousel:i,copiedCharts:a,copiedSheetId:t}}getPasteTarget(e){return{zones:[],figureId:new Xl().smallUuid(),sheetId:e}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=e.sheetId,{width:o,height:s}=t.copiedFigure,c=this.getters.getMaxAnchorOffset(a,s,o),{left:l,top:u}=r[0],d={x:0,y:0};l>c.col&&(l=c.col,d.x=c.offset.x),u>c.row&&(u=c.row,d.y=c.offset.y),this.dispatch(`CREATE_CAROUSEL`,{figureId:i,sheetId:a,definition:{items:[]},col:l,row:u,offset:d,size:{height:s,width:o}});let f=new Xl,p=b(t.copiedCarousel.items);for(let e of p){if(e.type!==`chart`)continue;let n=t.copiedCharts[e.chartId],r=f.smallUuid(),o=n.copyInSheetId(a).getDefinition();this.dispatch(`CREATE_CHART`,{figureId:i,chartId:r,sheetId:a,definition:o}),e.chartId=r}this.dispatch(`UPDATE_CAROUSEL`,{sheetId:a,figureId:i,definition:{...t.copiedCarousel,items:p}}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.copiedSheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},aQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);if(n.tag!==`chart`)return;let r={...n},i=this.getters.getChartFromFigureId(e.figureId);if(!i)throw Error(`No chart for the given id: ${e.figureId}`);let a=i.copyInSheetId(t);return{figureId:e.figureId,copiedFigure:r,copiedChart:a}}getPasteTarget(e,t,n,r){return{zones:[],figureId:new Xl().smallUuid(),sheetId:e}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=e.sheetId,{width:o,height:s}=t.copiedFigure,c=t.copiedChart.copyInSheetId(a),l=this.getters.getMaxAnchorOffset(a,s,o),{left:u,top:d}=r[0],f={x:0,y:0};u>l.col&&(u=l.col,f.x=l.offset.x),d>l.row&&(d=l.row,f.y=l.offset.y),this.dispatch(`CREATE_CHART`,{figureId:i,chartId:new Xl().smallUuid(),sheetId:a,definition:c.getDefinition(),col:u,row:d,offset:f,size:{height:s,width:o}}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.copiedChart.sheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},oQ=class extends aK{uuidGenerator=new Xl;queuedChanges={};copy(e){if(!e.zones.length)return;let{rowsIndexes:t,columnsIndexes:n}=e,r=e.sheetId,i=[];for(let e of t){let t=[];for(let i of n){let n=Array.from(this.getters.getRulesByCell(r,i,e));t.push({position:{col:i,row:e,sheetId:r},rules:n})}i.push(t)}return{cfRules:i}}paste(e,t,n){if(this.queuedChanges={},n.pasteOption===`asValue`)return;let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t):this.pasteFromCopy(i,r,t.cfRules,n),this.executeQueuedChanges()}pasteFromCut(e,t,n){let r=t[0];this.pasteZone(e,r.left,r.top,n.cfRules,{isCutOperation:!0})}pasteZone(e,t,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){let o={col:t+r,row:n+a,sheetId:e};this.pasteCf(s,o,i?.isCutOperation)}}pasteCf(e,t,n){if(e?.rules&&e.rules.length>0){let r=E(e.position),i=E(t);for(let a of e.rules){let o=[];if(n&&o.push(r),e.position.sheetId===t.sheetId)this.adaptCFRules(e.position.sheetId,a,[i],o);else{this.adaptCFRules(e.position.sheetId,a,[],o);let n=this.getCFToCopyTo(t.sheetId,a);this.adaptCFRules(t.sheetId,n,[i],[])}}}}adaptCFRules(e,t,n,r){this.queuedChanges[e]||(this.queuedChanges[e]=[]);let i=this.queuedChanges[e].find(e=>e.cf.id===t.id);i?(i.toAdd.push(...n),i.toRemove.push(...r)):this.queuedChanges[e].push({toAdd:n,toRemove:r,cf:t})}executeQueuedChanges(){for(let e in this.queuedChanges)for(let{toAdd:t,toRemove:n,cf:r}of this.queuedChanges[e]){let i=this.getters.getAdaptedCfRanges(e,r,t,n);if(i){if(i.length===0){this.dispatch(`REMOVE_CONDITIONAL_FORMAT`,{id:r.id,sheetId:e});continue}this.dispatch(`ADD_CONDITIONAL_FORMAT`,{cf:{id:r.id,rule:r.rule,stopIfTrue:r.stopIfTrue},ranges:i,sheetId:e})}}}getCFToCopyTo(e,t){let n=this.getters.getConditionalFormats(e).find(e=>e.stopIfTrue===t.stopIfTrue&&w(e.rule,t.rule)),r=this.queuedChanges[e];return!n&&r&&(n=r.find(e=>e.cf.stopIfTrue===t.stopIfTrue&&w(e.cf.rule,t.rule))?.cf),n||{...t,id:this.uuidGenerator.smallUuid(),ranges:[]}}},sQ=class extends aK{uuidGenerator=new Xl;queuedChanges={};copy(e){let{rowsIndexes:t,columnsIndexes:n}=e,r=e.sheetId,i=[];for(let e of t){let t=[];for(let i of n){let n={sheetId:r,col:i,row:e},a=this.getters.getValidationRuleForCell(n);t.push({position:n,rule:a})}i.push(t)}return{dvRules:i}}paste(e,t,n){if(this.queuedChanges={},n.pasteOption)return;let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t):this.pasteFromCopy(i,r,t.dvRules),this.executeQueuedChanges()}pasteFromCut(e,t,n){let r=t[0];this.pasteZone(e,r.left,r.top,n.dvRules,{isCutOperation:!0})}pasteZone(e,t,n,r,i){for(let[a,o]of r.entries())for(let[r,s]of o.entries()){let o={col:t+r,row:n+a,sheetId:e};this.pasteDataValidation(s,o,i?.isCutOperation)}}pasteDataValidation(e,t,n){if(e){let r=E(t),i=E(e.position),a=e.rule;if(!a){let e=this.getters.getValidationRuleForCell(t);e&&this.adaptDataValidationRule(t.sheetId,e,[],[r]);return}let o=[];if(n&&o.push(i),e.position.sheetId===t.sheetId){let n=this.getDataValidationRuleToCopyTo(t.sheetId,a,!1);this.adaptDataValidationRule(e.position.sheetId,n,[r],o)}else{let n=this.getters.getValidationRuleForCell(e.position);n&&this.adaptDataValidationRule(e.position.sheetId,n,[],o);let i=this.getDataValidationRuleToCopyTo(t.sheetId,a);this.adaptDataValidationRule(t.sheetId,i,[r],[])}}}getDataValidationRuleToCopyTo(e,t,n=!0){let r=this.getters.getDataValidationRules(e).find(e=>w(t.criterion,e.criterion)&&t.isBlocking===e.isBlocking),i=this.queuedChanges[e];return!r&&i&&(r=i.find(e=>w(t.criterion,e.rule.criterion)&&t.isBlocking===e.rule.isBlocking)?.rule),r||{...t,id:n?this.uuidGenerator.smallUuid():t.id,ranges:[]}}adaptDataValidationRule(e,t,n,r){this.queuedChanges[e]||(this.queuedChanges[e]=[]);let i=this.queuedChanges[e].find(e=>e.rule.id===t.id);i?(i.toAdd.push(...n),i.toRemove.push(...r)):this.queuedChanges[e].push({toAdd:n,toRemove:r,rule:t})}executeQueuedChanges(){for(let e in this.queuedChanges)for(let{toAdd:t,toRemove:n,rule:r}of this.queuedChanges[e]){let i=nn([...nn(r.ranges.map(e=>e.zone),n),...t],[]);if(i.length===0){this.dispatch(`REMOVE_DATA_VALIDATION_RULE`,{sheetId:e,id:r.id});continue}this.dispatch(`ADD_DATA_VALIDATION_RULE`,{rule:{id:r.id,criterion:r.criterion,isBlocking:r.isBlocking},ranges:i.map(t=>this.getters.getRangeDataFromZone(e,t)),sheetId:e})}}},cQ=class extends rQ{copy(e){let t=e.sheetId,n=this.getters.getFigure(t,e.figureId);if(!n)throw Error(`No figure for the given id: ${e.figureId}`);let r={...n};if(n.tag!==`image`)return;let i=b(this.getters.getImage(e.figureId));return{figureId:e.figureId,copiedFigure:r,copiedImage:i,sheetId:t}}getPasteTarget(e,t,n,r){return{sheetId:e,zones:[],figureId:new Xl().smallUuid()}}paste(e,t,n){if(!e.figureId)return;let{zones:r,figureId:i}=e,a=this.getters.getActiveSheetId(),{width:o,height:s}=t.copiedFigure,c=b(t.copiedImage),l=this.getters.getMaxAnchorOffset(a,s,o),{left:u,top:d}=r[0],f={x:0,y:0};u>l.col&&(u=l.col,f.x=l.offset.x),d>l.row&&(d=l.row,f.y=l.offset.y),this.dispatch(`CREATE_IMAGE`,{figureId:i,sheetId:a,col:u,row:d,offset:f,size:{height:s,width:o},definition:c}),n.isCutOperation&&this.dispatch(`DELETE_FIGURE`,{sheetId:t.sheetId,figureId:t.copiedFigure.id}),this.dispatch(`SELECT_FIGURE`,{figureId:i})}isPasteAllowed(e,t,n,r){return t.length===0?`EmptyTarget`:r?.pasteOption===void 0?`Success`:`WrongFigurePasteOption`}},lQ=class extends aK{copy(e){let t=this.getters.getActiveSheetId(),{rowsIndexes:n,columnsIndexes:r}=e,i=[];for(let e of n){let n=[];for(let i of r){let r={col:i,row:e,sheetId:t};n.push(this.getters.getMerge(r))}i.push(n)}return{merges:i,sheetId:t}}paste(e,t,n){if(n.isCutOperation){let e=t.merges.flat().filter(C);this.dispatch(`REMOVE_MERGE`,{sheetId:t.sheetId,target:e})}this.pasteFromCopy(e.sheetId,e.zones,t.merges,n)}pasteZone(e,t,n,r){for(let[i,a]of r.entries())for(let[r,o]of a.entries()){let a={col:t+r,row:n+i,sheetId:e};this.pasteMerge(o,a)}}pasteMerge(e,t){if(!e||this.getters.isInMerge(t))return;let{sheetId:n,col:r,row:i}=t;this.dispatch(`ADD_MERGE`,{sheetId:n,force:!0,target:[{left:r,top:i,right:r+e.right-e.left,bottom:i+e.bottom-e.top}]})}},uQ=class extends aK{copy(e){return{zones:e.clippedZones,sheetId:e.sheetId}}paste(e,t,n){if(n.isCutOperation){let n=e.zones[0];this.dispatch(`MOVE_RANGES`,{target:t.zones,sheetId:t.sheetId,sheetName:this.getters.getSheetName(t.sheetId),targetSheetId:e.sheetId,col:n.left,row:n.top})}}},dQ=class extends aK{isPasteAllowed(e,t,n,r){if(!(`cells`in n))return`Success`;let{xSplit:i,ySplit:a}=this.getters.getPaneDivisions(e);return qn(wP(t,n.cells),i,a)?`FrozenPaneOverlap`:`Success`}},fQ=class extends aK{copy(e,t,n=`copyPaste`){let r=e.sheetId,{rowsIndexes:i,columnsIndexes:a,zones:o}=e,s=new Set,c=[];for(let e of i){let l=[];c.push(l);for(let c of a){let a={col:c,row:e,sheetId:r},u=this.getters.getTable(a);if(!u){l.push({});continue}let d=this.getters.getCoreTable(a),f=d?.range.zone,p;if(!s.has(u.id)&&d&&f&&o.some(e=>jn(f,e))){s.add(u.id);let{numberOfRows:e}=Mn(f);for(let n=f.top;n<=f.bottom;n++)!t&&!i.includes(n)&&e--;let n=d.range,r=this.getters.extendRange(d.range,`ROW`,n.zone.top+e-1-n.zone.bottom);p={range:this.getters.getRangeData(r),config:d.config,type:d.type}}if(u.isPivotTable){let t=u.range.zone.top===e&&u.range.zone.left===c,n=o.some(e=>jn(u.range.zone,e));(t||n)&&s.add(u.id)}n!==`shiftCells`&&l.push({table:p,style:this.getTableStyleToCopy(a),isWholeTableCopied:s.has(u.id)})}}return{tableCells:c,sheetId:e.sheetId}}getTableStyleToCopy(e){let t=Ct({...this.getters.getCellTableStyle(e),hideGridLines:!1}),n=this.getters.getCellStyle(e),r=this.getters.getCellTableBorder(e),i=this.getters.getCellBorder(e);return{style:{...t,...Ct(n)},border:{...r,...Ct(i)}}}paste(e,t,n){let r=e.zones,i=e.sheetId;n.isCutOperation?this.pasteFromCut(i,r,t,n):this.pasteFromCopy(i,r,t.tableCells,n)}pasteFromCut(e,t,n,r){for(let e of n.tableCells)for(let t of e)t.table&&this.dispatch(`REMOVE_TABLE`,{sheetId:n.sheetId,target:[this.getters.getRangeFromRangeData(t.table.range).zone]});let i=t[0];this.pasteZone(e,i.left,i.top,n.tableCells,r)}pasteZone(e,t,n,r,i){for(let a=0;a<r.length;a++){let o=r[a];for(let r=0;r<o.length;r++){let s=o[r];if(!s)continue;let c={col:t+r,row:n+a,sheetId:e};this.pasteTableCell(e,s,c,i)}}if(r.length===1)for(let i=0;i<r[0].length;i++)this.dispatch(`AUTOFILL_TABLE_COLUMN`,{col:t+i,row:n,sheetId:e})}pasteTableCell(e,t,n,r){if(t.table&&!r?.pasteOption){let{range:r}=t.table,i=Mn(this.getters.getRangeFromRangeData(r).zone),a={left:n.col,top:n.row,right:n.col+i.numberOfCols-1,bottom:n.row+i.numberOfRows-1};this.dispatch(`CREATE_TABLE`,{sheetId:n.sheetId,ranges:[this.getters.getRangeDataFromZone(e,a)],config:t.table.config,tableType:t.table.type})}this.getters.getCoreTable(n)||r?.pasteOption===`asValue`||(!r?.pasteOption&&!t.isWholeTableCopied||r?.pasteOption===`onlyFormat`)&&(t.style?.style&&this.dispatch(`UPDATE_CELL`,{...n,style:t.style.style}),t.style?.border&&this.dispatch(`SET_BORDER`,{...n,border:t.style.border}))}};iW.figureHandlers.add(`chart`,aQ).add(`image`,cQ).add(`carousel`,iQ),iW.cellHandlers.add(`dataValidation`,sQ).add(`cell`,oK).add(`sheet`,dQ).add(`merge`,lQ).add(`border`,nQ).add(`table`,fQ).add(`conditionalFormat`,oQ).add(`references`,uQ);let pQ={},mQ={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,DESKTOP_BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},hQ={autoCompleteProviders:wN,autofillModifiersRegistry:lK,autofillRulesRegistry:uK,cellMenuRegistry:YH,colMenuRegistry:sU,errorTypes:ha,linkMenuRegistry:yP,functionRegistry:uO,featurePluginRegistry:Kq,iconsOnCellRegistry:zG,statefulUIPluginRegistry:qq,coreViewsPluginRegistry:Jq,corePluginRegistry:Gq,rowMenuRegistry:mU,sidePanelRegistry:vV,figureRegistry:Rv,chartSidePanelComponentRegistry:SL,chartComponentRegistry:_v,chartRegistry:v_,chartSubtypeRegistry:Q_,topbarMenuRegistry:DJ,topbarComponentRegistry:qJ,clickableCellRegistry:tJ,otRegistry:kK,inverseCommandRegistry:iJ,urlRegistry:$s,cellPopoverRegistry:yM,numberFormatMenuRegistry:SJ,repeatLocalCommandTransformRegistry:bq,repeatCommandTransformRegistry:yq,clipboardHandlersRegistries:iW,pivotRegistry:uB,pivotTimeAdapterRegistry:Ym,pivotSidePanelRegistry:TB,pivotNormalizationValueRegistry:Dh,supportedPivotPositionalFormulaRegistry:IW,pivotToFunctionValueRegistry:Oh,migrationStepRegistry:Gj,chartJsExtensionRegistry:Zl},gQ={arg:W,isEvaluationError:M,toBoolean:F,toJsDate:I,toNumber:N,toString:P,toNormalizedPivotValue:Ch,toFunctionPivotValue:Th,toXC:T,toZone:mn,toUnboundedZone:pn,toCartesian:tn,numberToLetters:Kt,lettersToNumber:qt,UuidGenerator:Xl,formatValue:z,createCurrencyFormat:ps,ColorGenerator:ii,computeTextWidth:Ml,createEmptyWorkbookData:dM,createEmptySheet:uM,createEmptyExcelSheet:fM,rgbaToHex:Fr,colorToRGBA:Ir,positionToZone:E,isDefined:C,isMatrix:Ta,lazy:_t,genericRepeat:KJ,createAction:h,createActions:p,transformRangeData:rr,deepEquals:w,overlap:On,union:wn,isInside:An,deepCopy:b,expandZoneOnInsertion:bn,reduceZoneOnDeletion:Cn,unquote:Xe,getMaxObjectId:hh,getFirstPivotFunction:hB,getNumberOfPivotFunctions:_B,parseDimension:vh,isDateOrDatetimeField:yh,makeFieldProposal:vB,periodYearToComparable:Jm,insertTokenAfterArgSeparator:bB,insertTokenAfterLeftParenthesis:xB,mergeContiguousZones:er,getPivotHighlights:ez,pivotTimeAdapter:Xm,UNDO_REDO_PIVOT_COMMANDS:tK,createPivotFormula:Sh,areDomainArgsFieldsValid:xh,splitReference:zc,sanitizeSheetName:Qe,getUniqueText:Ht,isNumber:ra,isDateTime:Ti,createCustomFields:Ph,schemeToColorScale:Rm,isDateTimeFormat:os,jsDateToNumber:zi,numberToJsDate:Li,DateTime:O,parseFormat:Ao,isFormula:Ut,domainToColRowDomain:Fz,PositionMap:SV},_Q={isMarkdownLink:it,parseMarkdownLink:st,markdownLink:ot,openLink:ic,urlRepresentation:rc},vQ={Checkbox:eP,Section:Q,Select:EM,RoundColorPicker:BN,ChartDataSeries:TI,ChartErrorSection:DI,ChartLabelRange:OI,ChartTitle:MI,ChartPanel:EL,ChartFigure:Iv,ChartJsComponent:Pf,ClickableCellSortIcon:LW,ZoomableChartJsComponent:lv,Grid:FW,GridOverlay:uW,ScorecardChart:Op,GaugeChartComponent:hv,LineConfigPanel:aL,BarConfigPanel:AI,PieChartDesignPanel:cL,GenericChartConfigPanel:kI,ChartWithAxisDesignPanel:HI,GenericZoomableChartDesignPanel:UI,LineChartDesignPanel:oL,GaugeChartConfigPanel:$I,GaugeChartDesignPanel:eL,ScorecardChartConfigPanel:pL,ScorecardChartDesignPanel:mL,GeoChartDesignPanel:rL,RadarChartDesignPanel:lL,WaterfallChartDesignPanel:xL,ComboChartDesignPanel:XI,FunnelChartDesignPanel:QI,SunburstChartDesignPanel:hL,TreeMapChartDesignPanel:bL,ChartTypePicker:wL,FigureComponent:zv,MenuPopover:Nv,Popover:kv,SelectionInput:YN,ValidationMessages:EI,AddDimensionButton:az,PivotDimensionGranularity:sz,PivotDimensionOrder:cz,PivotDimension:oz,PivotLayoutConfigurator:kz,PivotHTMLRenderer:zW,PivotDeferUpdate:nz,PivotTitleSection:Az,CogWheelMenu:SI,TextInput:gI,SidePanelCollapsible:TM,RadioSelection:PI,GeoChartRegionSelectSection:tL,ChartDashboardMenu:Pv,FullScreenFigure:RW,NumberInput:RI,TopBar:MY,Composer:ZM},yQ={useDragAndDropListItems:HN,useHighlights:NL,useHighlightsOnHover:ML},bQ={useStoreProvider:lr,DependencyContainer:ar,CellPopoverStore:aP,ComposerFocusStore:xr,CellComposerStore:WU,FindAndReplaceStore:BL,HighlightStore:EN,DelayedHoveredCellStore:Bv,HoveredTableStore:sW,ModelStore:mr,NotificationStore:DN,RendererStore:vr,SelectionInputStore:JN,SpreadsheetStore:yr,useStore:D,useLocalStore:ur,SidePanelStore:bV,PivotSidePanelStore:CB,PivotMeasureDisplayPanelStore:QR,ClientFocusStore:gU,GridRenderer:vW};function xQ(e,t){return uO.add(e,t),{addFunction:(e,t)=>xQ(e,t)}}let SQ={DEFAULT_LOCALE:R,HIGHLIGHT_COLOR:ee,PIVOT_STATIC_TABLE_CONFIG:Re,PIVOT_INSERT_TABLE_STYLE_ID:ze,ChartTerms:tm,FIGURE_ID_SPLITTER:`??`,GRID_ICON_EDGE_LENGTH:17,GRID_ICON_MARGIN:2},CQ={...V_,...h_};e.AbstractCellClipboardHandler=aK,e.AbstractChart=Ff,e.AbstractFigureClipboardHandler=rQ,e.CellErrorType=A,e.ClientDisconnectedError=uq,e.CommandResult=Zs,e.CompiledFormula=yz,e.CorePlugin=VW,e.CoreViewPlugin=pG,e.DEFAULT_LOCALE=R,e.DEFAULT_LOCALES=ho,e.DispatchResult=Ys,e.EvaluationError=j,e.LocalTransportService=JJ,e.Model=LZ,e.PivotRuntimeDefinition=jz,e.Registry=B,e.Revision=lq,e.SPREADSHEET_DIMENSIONS=mQ,e.Spreadsheet=FY,e.SpreadsheetPivotTable=Qz,e.UIPlugin=sK,e.__info__=pQ,e.addFunction=xQ,e.addRenderingLayer=_r,e.astToFormula=BU,e.canExecuteInReadonly=Js,e.categories=dO,e.chartHelpers=CQ,e.components=vQ,e.constants=SQ,e.convertAstNodes=dN,e.coreTypes=Ks,e.createAutocompleteArgumentsProvider=Yq,e.findCellInNewZone=Vn,e.functionCache=_z,e.getCaretDownSvg=TO,e.getCaretUpSvg=EO,e.helpers=gQ,e.hooks=yQ,e.invalidateCFEvaluationCommands=Vs,e.invalidateChartEvaluationCommands=zs,e.invalidateDependenciesCommands=Bs,e.invalidateEvaluationCommands=Rs,e.isCoreCommand=qs,e.isSheetDependent=Ms,e.iterateAstNodes=fN,e.links=_Q,e.load=Xj,e.lockedSheetAllowedCommands=Gs,e.parse=lN,e.parseTokens=uN,e.readonlyAllowedCommands=Ws,e.registries=hQ,e.setDefaultSheetViewSize=Ie,e.setTranslationMethod=fa,e.stores=bQ,e.tokenColors=We,e.tokenize=Tu,pQ.version=`19.2.22`,pQ.date=`2026-07-23T07:41:01.568Z`,pQ.hash=`2fb92b4`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);