@odoo/o-spreadsheet 16.0.0 → 16.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- !function(e,t){"use strict";let o=e=>e;function n(e,...t){if(1===t.length&&"object"==typeof t[0]){const o=t[0];e=e.replace(/\%\(?([^\)]+)\)s/g,((e,t)=>o[t]))}else t.length>0&&(e=e.replace(/\%s/g,(()=>t.shift())));return e}const i=function(e,...t){return n(o(e),...t)},r=function(e,...t){return new s(e,t)};class s extends String{constructor(e,t){super(e),this.values=t}valueOf(){const e=super.valueOf();return n(o(e),...this.values)}toString(){return this.valueOf()}}var a,l;!function(e){e.NotAvailable="#N/A",e.InvalidReference="#REF",e.BadExpression="#BAD_EXPR",e.CircularDependency="#CYCLE",e.UnknownFunction="#NAME?",e.GenericError="#ERROR"}(a||(a={})),function(e){e[e.silent=0]="silent",e[e.error=1]="error"}(l||(l={}));class c extends Error{constructor(e,t,o=l.error){super(t),this.errorType=e,this.logLevel=o}}class h extends c{constructor(e){super(a.BadExpression,e)}}class d extends c{constructor(){super(a.CircularDependency,r("Circular reference"))}}class u extends c{constructor(){super(a.InvalidReference,r("Invalid reference"))}}class g extends c{constructor(){super(a.NotAvailable,r("Data not available"),l.silent)}}class p extends c{constructor(e){super(a.UnknownFunction,r('Unknown function: "%s"',e))}}const f=.5,m="#f5f5f5",v="#F8F9FA",b="#E8EAED",S="#595959",C="#666666",E="#3266ca",w="#FFFFFF",y=11982760,x="#01666b",R="#188038",I="#E6F4EA",T="#CEEAD6",A=["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#f3f3f3","#ffffff","#980000","#ff0000","#ff9900","#ffff00","#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff","#e6b8af","#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc","#dd7e6b","#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd","#cc4125","#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0","#a61c00","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#85200c","#990000","#b45f06","#bf9000","#38761d","#134f5c","#1155cc","#0b5394","#351c75","#741b47","#5b0f00","#660000","#783f04","#7f6000","#274e13","#0c343d","#1c4587","#073763","#20124d","#4c1130"],O=26,M=48,N=96,_=23,F=15,D=18,k=14,$=4,L=4,P=3,U=L,V=17,z=250,B=1,H="400",W=10,G="'Roboto', arial",q=["thin","#000"],Z=["thin",R],j=/[ymd:]/,X=a.InvalidReference,Y="START_REVISION",K=20,Q=.4,J=["'","*","?","/","\\","[","]"],ee=/'|\*|\?|\/|\\|\[|\]/,te="|",oe=r("Invalid expression");var ne;!function(e){e[e.Grid=0]="Grid",e[e.Highlight=5]="Highlight",e[e.Figure=10]="Figure",e[e.ScrollBar=15]="ScrollBar",e[e.Dropdown=16]="Dropdown",e[e.Composer=20]="Composer",e[e.ColorPicker=25]="ColorPicker",e[e.IconPicker=25]="IconPicker",e[e.Popover=30]="Popover",e[e.ChartAnchor=1e3]="ChartAnchor"}(ne||(ne={}));const ie=[{pt:7.5,px:10},{pt:8,px:11},{pt:9,px:12},{pt:10,px:13},{pt:10.5,px:14},{pt:11,px:15},{pt:12,px:16},{pt:14,px:18.7},{pt:15,px:20},{pt:16,px:21.3},{pt:18,px:24},{pt:22,px:29.3},{pt:24,px:32},{pt:26,px:34.7},{pt:36,px:48}],re={};for(let e of ie)re[e.pt]=e.px;const se=new Date(1899,11,30),ae=864e5,le=2e3,ce=(new Date).getFullYear(),he=new Date(0)-se,de=/^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/,ue=/^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/,ge=/((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;function pe(e){let t;const o=(e=e.trim()).match(ge);if(o){if(t=function(e){if(e=e.trim(),ge.test(e)){const t=/AM/i.test(e),o=/PM/i.test(e),n=(t||o?e.substring(0,e.length-2).trim():e).split(/:/),i=n.length>=2,r=3===n.length;let s=Number(n[0]),a=i?Number(n[1]):0,l=r?Number(n[2]):0,c=r?"hh:mm:ss":"hh:mm";if(t||o)c+=" a";else if(!i)return null;s>=12&&t?s-=12:s<12&&o&&(s+=12),a+=Math.floor(l/60),l%=60,s+=Math.floor(a/60),a%=60,s>=24&&(c="hhhh:mm:ss");return{value:s/24+a/1440+l/86400,format:c,jsDate:new Date(1899,11,30,s,a,l)}}return null}(o[0]),null===t)return null;e=e.replace(o[0],"").trim()}let n;const i=e.match(de),r=e.match(ue);if(i||r){let t;if(i?(t=i[0],n=fe(t,"mdy")):(t=r[0],n=fe(t,"ymd")),null===n)return null;e=e.replace(t,"").trim()}return""!==e||!n&&!t?null:n&&t?{value:n.value+t.value,format:n.format+" "+("hhhh:mm:ss"===t.format?"hh:mm:ss":t.format),jsDate:new Date(n.jsDate.getFullYear()+t.jsDate.getFullYear()-1899,n.jsDate.getMonth()+t.jsDate.getMonth()-11,n.jsDate.getDate()+t.jsDate.getDate()-30,n.jsDate.getHours()+t.jsDate.getHours(),n.jsDate.getMinutes()+t.jsDate.getMinutes(),n.jsDate.getSeconds()+t.jsDate.getSeconds())}:n||t}function fe(e,t){const o="mdy"===t;if(o||"ymd"===t){const t=e.split(/\/|-|\s/),n=o?0:1,i=o?1:2,r=o?2:0,s=Number(t[n]),a=Number(t[i]),l=2===t[n].length&&s<10||2===t[i].length&&a<10,c=t[r]?function(e){const t=Number(e);switch(e.length){case 1:return le+t;case 2:return le+(le+t>ce+10?-100:0)+t;case 3:case 4:return t}return 0}(t[r]):ce,h=new Date(c,s-1,a),d=e.match(/\/|-|\s/)[0];if(h.getMonth()!==s-1||h.getDate()!==a)return null;const u=h-se;let g=l?`mm${d}dd`:`m${d}d`;return t[r]&&(g=o?g+d+"yyyy":"yyyy"+d+g),{value:Math.round(u/ae),format:g,jsDate:h}}return null}function me(e){const t=Math.trunc(e);let o=new Date(t*ae-he),n=e-t;n=n<0?1+n:n;const i=Math.round(24*n),r=Math.round(24*(n-i/24)*60),s=Math.round(24*(n-i/24-r/24/60)*60*60);return o.setHours(i),o.setMinutes(r),o.setSeconds(s),o}function ve(e){const t=e.getTime()-se.getTime();return Math.round(t/ae)}function be(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function Se(e){return be(e)===e.getDate()}function Ce(e,t,o){const n=e.getFullYear(),i=e.getMonth(),r=e.getDate(),s=new Date(n,i+t);return o&&r===be(e)||r>be(s)?s.setDate(be(s)):s.setDate(r),s}function Ee(e){const t=Math.trunc(e);return t%4==0&&t%100!=0||t%400==0}function we(e,t,o){if(e===t)return 0;if(e>t){const o=t;t=e,e=o}const n=me(e),i=me(t);let r=n.getDate(),s=i.getDate();const a=n.getMonth(),l=i.getMonth(),c=n.getFullYear(),h=i.getFullYear();let d=0,u=0;switch(o){case 0:31===r&&(r=30),30===r&&31===s&&(s=30),1===a&&r===(Ee(c)?29:28)&&(r=30,1===l&&s===(Ee(h)?29:28)&&(s=30)),d=c+(30*a+r)/360,u=h+(30*l+s)/360;break;case 1:let o=365;const n=c===h;if(!n&&!(c+1===h)||!n&&a<l||!n&&a===l&&r<s){let e=0,t=0;for(let o=c;o<=h;o++)e++,t+=Ee(o)?366:365;o=t/e}else n?Ee(c)&&(o=366):(Ee(c)&&a<2&&(o=366),Ee(h)&&(l>1||1===l&&29===s)&&(o=366));d=e/o,u=t/o;break;case 2:d=e/360,u=t/360;break;case 3:d=e/365,u=t/365;break;case 4:31===r&&(r=30),31===s&&(s=30),d=c+(30*a+r)/360,u=h+(30*l+s)/360}return u-d}function ye(e){return JSON.stringify(e,Object.keys(e).sort())}function xe(e){return'"'===e[0]&&(e=e.slice(1)),'"'===e[e.length-1]&&"\\"!==e[e.length-2]?e.slice(0,e.length-1):e}function Re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ie(e){const t=Array.isArray(e)?[]:{};switch(typeof e){case"object":if(null===e)return e;if(function(e){return"clone"in e&&e.clone instanceof Function}(e))return e.clone();if(!(function(e){return"object"==typeof e&&(null==e?void 0:e.constructor)===Object}(e)||e instanceof Array))throw new Error("Unsupported type: only objects and arrays are supported");for(const o in e)t[o]=Ie(e[o]);return t;case"number":case"string":case"boolean":case"function":case"undefined":return e;default:throw new Error("Unsupported type: "+typeof e)}}function Te(e){return e.startsWith("'")&&(e=e.slice(1,-1).replace(/''/g,"'")),e}function Ae(e){var t;return(null===(t=e.match(/\w/g))||void 0===t?void 0:t.length)!==e.length&&(e=`'${e}'`),e}function Oe(e,t,o){return e<t?t:e>o?o:e}function Me(e,t,o){e.save(),e.font=Ne(o);const n=e.measureText(t).width;return e.restore(),n}function Ne(e){return`${e.italic?"italic ":""}${e.bold?"bold":H} ${_e(e)}px ${G}`}function _e(e){const t=e.fontSize||W;if(!re[t])throw new Error("Size of the font is not supported");return re[t]}function Fe(e,t,o=1){if(t<=e&&o>0)return[];if(0===o)throw new Error("range() step must not be zero");const n=Math.ceil(Math.abs((t-e)/o)),i=Array(n);for(let t=0;t<n;t++)i[t]=e+t*o;return i}function De(e){return e.reduce(((e,t,o,n)=>{if(1===Math.abs(t-n[o-1])){e[e.length-1].push(t)}else e.push([t]);return e}),[])}function*ke(e,t){t.next();for(const o of e){const e=t.next();yield{...o,next:e.done?void 0:e.value}}}function $e(e){const t=e.toUpperCase();return"TRUE"===t||"FALSE"===t}function Le(e){return null!==pe(e)}const Pe=/^\[([^\[]+)\]\((.+)\)$/,Ue=/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/;function Ve(e){return Pe.test(e)}function ze(e,t){return`[${e}](${t})`}function Be(e){const t=e.match(Pe)||[],o=t[1],n=t[2];if(!o||!n)throw new Error(`Could not parse markdown link ${e}.`);return{label:o,url:n}}const He="o-spreadsheet://";function We(e){if(!Ve(e))return!1;const{url:t}=Be(e);return t.startsWith(He)}function Ge(e){return`${He}${e}`}function qe(e){if(e.startsWith(He))return e.substr(He.length);throw new Error(`${e} is not a valid sheet link`)}function Ze(e){return void 0!==e}function je(e){return void 0===e||Object.values(e).every((e=>"object"==typeof e?je(e):!e))}function Xe(e,t){for(let[o,n]of Object.entries(t))if(ye(n)===ye(e))return parseInt(o,10);const o=Object.keys(t),n=0===o.length?0:Math.max(...o.map((e=>parseInt(e,10))));return t[n+1]=e,n+1}function Ye(e){let t="";for(let o=0,n=e.length;o<n;o++)t+=e[o];return t}function Ke(e){let t,o=!1;const n=()=>(o||(t=e instanceof Function?e():e,o=!0),t);return n.map=e=>Ke((()=>e(n()))),n}function Qe(e,t){let o=e.slice(t).find((e=>e));return o||(o=e.slice(0,t).reverse().find((e=>e))),o||""}function Je(e,t){return"after"===e?t+1:t}function et(e,t){if(e===t)return!0;if(e&&!t||t&&!e)return!1;const o=new Set;Object.keys(e).forEach((e=>o.add(e))),Object.keys(t).forEach((e=>o.add(e)));for(let n of o){if(typeof e[n]!=typeof e[n])return!1;if("object"==typeof e[n]){if(!et(e[n],t[n]))return!1}else if(e[n]!==t[n])return!1}return!0}function tt(e){const t={...e};return Object.keys(t).forEach((e=>!t[e]&&delete t[e])),t}function ot(e){return e?e.toLowerCase():""}const nt=["#eb6d00","#0074d9","#ad8e00","#169ed4","#b10dc9","#00a82d","#00a3a3","#f012be","#3d9970","#111111","#62A300","#ff4136","#949494","#85144b","#001f3f"];function it(e){return st(e.toString(16).padStart(6,"0"))}let rt=0;function st(e){if(e.includes("rgba"))throw new Error(`rgba() conversion currently not supported: ${e}`);if(e.includes("rgb"))return function(e){return"#"+Ye(e.slice(4,-1).split(",").map((e=>parseInt(e,10).toString(16).padStart(2,"0")))).toUpperCase()}(e);if(3!==(e=e.replace("#","").toUpperCase()).length&&4!==e.length||(e=e.split("").reduce(((e,t)=>e+t+t),"")),""!==e.replace(/[a-f0-9]/gi,""))throw new Error("invalid color");return"#"+e}function at(e){try{const{r:t,g:o,b:n,a:i}=ut(e);return lt(t)&&lt(o)&&lt(n)&&lt(i)}catch(e){return!1}}const lt=e=>e>=0&&e<=255;function ct(e,t,o,n=1){if(!lt(e)||!lt(t)||!lt(o)||n<0||n>1)throw new Error(`Invalid RGBA values ${[e,t,o,n]}`);return{a:n,b:o,g:t,r:e}}function ht(e){let{r:t,g:o,b:n}=ut(e);t/=255,o/=255,n/=255;const i=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4;return.2126*i(t)+.7152*i(o)+.0722*i(n)}function dt(e){let t=e.r.toString(16),o=e.g.toString(16),n=e.b.toString(16),i=Math.round(255*e.a).toString(16);return 1==t.length&&(t="0"+t),1==o.length&&(o="0"+o),1==n.length&&(n="0"+n),1==i.length&&(i="0"+i),"ff"===i&&(i=""),"#"+t+o+n+i}function ut(e){let t,o,n,i;if(7===(e=st(e)).length)t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),n=parseInt(e[5]+e[6],16),i=255;else{if(9!==e.length)throw new Error("Invalid color");t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),n=parseInt(e[5]+e[6],16),i=parseInt(e[7]+e[8],16)}return i=+(i/255).toFixed(3),{a:i,r:t,g:o,b:n}}function gt(e){(e={...e}).s/=100,e.l/=100;let t=(1-Math.abs(2*e.l-1))*e.s,o=t*(1-Math.abs(e.h/60%2-1)),n=e.l-t/2,i=0,r=0,s=0;return 0<=e.h&&e.h<60?(i=t,r=o,s=0):60<=e.h&&e.h<120?(i=o,r=t,s=0):120<=e.h&&e.h<180?(i=0,r=t,s=o):180<=e.h&&e.h<240?(i=0,r=o,s=t):240<=e.h&&e.h<300?(i=o,r=0,s=t):300<=e.h&&e.h<360&&(i=t,r=0,s=o),i=Math.round(255*(i+n)),r=Math.round(255*(r+n)),s=Math.round(255*(s+n)),{a:e.a,r:i,g:r,b:s}}function pt(e){const t=e.r/255,o=e.g/255,n=e.b/255;let i=Math.min(t,o,n),r=Math.max(t,o,n),s=r-i,a=0,l=0,c=0;return a=0==s?0:r==t?(o-n)/s%6:r==o?(n-t)/s+2:(t-o)/s+4,a=Math.round(60*a),a<0&&(a+=360),c=(r+i)/2,l=0==s?0:s/(1-Math.abs(2*c-1)),l=+(100*l).toFixed(1),c=+(100*c).toFixed(1),{a:e.a,h:a,s:l,l:c}}const ft=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,"i"),mt=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,"i"),vt=new RegExp(/^([A-Z]{1,3})+$/,"i"),bt=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,"i"),St=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,"i"),Ct=new RegExp(/^\s*('.+'!|[^']+!)?/.source+"("+[ft.source,/(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*:\s*(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*/i.source,/\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*:\s*\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*/i.source].join("|")+")"+/$/.source,"i");function Et(e){return bt.test(e)}function wt(e){return St.test(e)}function yt(e){return vt.test(e)}function xt(e){return mt.test(e)}function Rt(e){const t=e.split("!"),o=t.pop();return{sheetName:Te(t.join("!"))||void 0,xc:o}}function It(e){if(e<0)throw new Error(`number must be positive. Got ${e}`);return e<26?String.fromCharCode(65+e):It(Math.floor(e/26)-1)+It(e%26)}function Tt(e){let t=0;const o=e.length;for(let n=0;n<o;n++){t+=(e.charCodeAt(n)-65+(n<o-1?1:0))*26**(o-n-1)}return t}function At(e){const t=(e=e.toUpperCase().trim()).match(ft);if(null!==t){const[o,n,i]=t;if(o===e){return{col:Tt(n),row:parseInt(i,10)-1}}}throw new Error(`Invalid cell description: ${e}`)}function Ot(e,t,o={colFixed:!1,rowFixed:!1}){return(o.colFixed?"$":"")+It(e)+(o.rowFixed?"$":"")+String(t+1)}const Mt=140,Nt=20,_t=.035;function Ft(e){return Nt+(Mt-Nt)*Math.exp(-_t*(e-1))}const Dt=20,kt=/(\d+?)(?=(\d{3})+(?!\d)|$)/g,$t=/0/g,Lt={};function Pt(e){let t=Lt[e];return void 0===t&&(t=function(e){if(""===e)throw new Error("A format cannot be empty");let t=0,o=[];for(;t<e.length;){let n;if("["===e.charAt(t)){if("$"!==e.charAt(t+1))throw new Error(`Currency formats have to be prefixed by a $: ${e}`);if(n=e.substring(t+1).indexOf("]")+t+2,0===n)throw new Error(`Invalid currency brackets format: ${e}`);const i=e.substring(t+2,n-1);if(i.includes("["))throw new Error(`Invalid currency format: ${e}`);o.push({type:"STRING",format:i})}else{const i=e.substring(t).indexOf("[");n=i>-1?i+t:e.length;const r=e.substring(t,n);r.match(j)?o.push({type:"DATE",format:r}):o.push({type:"NUMBER",format:Yt(r)})}t=n}return o}(e),Lt[e]=t),t}function Ut(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":t||(t=qt(e));return function(e,t){if("DATE"===t[0].type)return Ht(e,t[0].format);let o=e<0?"-":"";for(let n of t)switch(n.type){case"NUMBER":o+=Vt(Math.abs(e),n.format);break;case"STRING":o+=n.format}return o}(e,Pt(t));case"object":return"0"}}function Vt(e,t){t.isPercent&&(e*=100),e/=t.magnitude;let o=0;void 0!==t.decimalPart&&(o=t.decimalPart.length);const{integerDigits:n,decimalDigits:i}=Bt(e,o);let r=function(e,t,o){var n;const i="0"===e?"":e;let r=i;const s=t.length-i.length;if(s>0){const e=(t.substring(0,s).match($t)||[]).length;r="0".repeat(e)+r}o&&(r=(null===(n=r.match(kt))||void 0===n?void 0:n.join(","))||r);return r}(n,t.integerPart,t.thousandsSeparator);return void 0!==t.decimalPart&&(r+="."+function(e,t){let o=e;if(t.length-e.length>0){const n=(t.substring(e.length,t.length+1).match($t)||[]).length;o+="0".repeat(n)}return o}(i||"",t.decimalPart)),t.isPercent&&(r+="%"),r}const zt=[];function Bt(e,t=Dt){let o=zt[t];o||(o=new Intl.NumberFormat("en-US",{maximumFractionDigits:t,useGrouping:!1}),zt[t]=o);const[n,i]=o.format(e).split(".");return{integerDigits:n,decimalDigits:i}}function Ht(e,t){const o=me(e),n=t.indexOf("h");let i="",r="";return n>0?(i=Wt(o,t.substring(0,n-1)),r=Gt(o,t.substring(n))):0===n?r=Gt(o,t):n<0&&(i=Wt(o,t)),i+(i&&r?" ":"")+r}function Wt(e,t){const o=t.match(/\/|-|\s/)[0];return t.split(o).map((o=>{switch(o){case"d":return e.getDate();case"dd":return e.getDate().toString().padStart(2,"0");case"m":return e.getMonth()+1;case"mm":return String(e.getMonth()+1).padStart(2,"0");case"yyyy":return e.getFullYear();default:throw new Error(`invalid format: ${t}`)}})).join(o)}function Gt(e,t){let o=t.split(/:|\s/);const n=e.getHours(),i="a"===o[o.length-1];let r=n,s="";return i&&(r=0===r?12:r>12?r-12:r,s=n>=12?" PM":" AM",o.pop()),o.map((o=>{switch(o){case"hhhh":return Math.floor((e.getTime()-se)/36e5).toString();case"hh":return r.toString().padStart(2,"0");case"mm":return e.getMinutes().toString().padStart(2,"0");case"ss":return e.getSeconds().toString().padStart(2,"0");default:throw new Error(`invalid format: ${t}`)}})).join(":")+s}function qt(e){let{decimalDigits:t}=Bt(e,10);return t?"0."+"0".repeat(t.length):"0"}function Zt(e,t,o){return Qt(Pt(e||"#,##0").map((e=>"NUMBER"===e.type?[{...e,format:{...e.format,magnitude:t,decimalPart:void 0}},{type:"STRING",format:o}]:e)).flat())}function jt(e,t){var o;const n={...e},i=Math.sign(t),r=(null===(o=n.decimalPart)||void 0===o?void 0:o.length)||0,s=Math.min(Math.max(0,r+i),Dt);return n.decimalPart="0".repeat(s),""===n.decimalPart&&delete n.decimalPart,n}const Xt=/,*?$/;function Yt(e){var t;if(function(e){return Boolean(e.replace(Kt,""))}(e=e.trim()))throw new Error(`Invalid number format: ${e}`);const o=e.includes("%"),n=(null===(t=e.match(Xt))||void 0===t?void 0:t[0])||"",i=n?1e3**n.length:1;let r=e.slice(0,e.length-(n.length||0));const s=r.includes(",");if(r.match(/\..*,/))throw new Error("A format can't contain ',' symbol in the decimal part");r=r.replace("%","").replace(",","");const a=r.match(/[\%|,]/);if(a)throw new Error(`A format can only contain a single '${a[0]}' symbol`);const[l,c]=r.split(".");if(c&&c.length>20)throw new Error("A format can't contain more than 20 decimal places");return void 0!==c?{integerPart:l,isPercent:o,thousandsSeparator:s,decimalPart:c,magnitude:i}:{integerPart:l,isPercent:o,thousandsSeparator:s,magnitude:i}}const Kt=/[,#0.%]/g;function Qt(e){let t="";for(let o of e){let e;switch(o.type){case"NUMBER":const t=o.format;e=t.integerPart,t.thousandsSeparator&&(e=e.slice(0,-3)+","+e.slice(-3)),void 0!==t.decimalPart&&(e+="."+t.decimalPart),t.isPercent&&(e+="%"),t.magnitude&&(e+=",".repeat(Math.log10(t.magnitude)/3));break;case"STRING":e=`[$${o.format}]`;break;case"DATE":e=o.format}t+=e}return t}const Jt=/^-?\d+(\.?\d*(e\d+)?)?|^-?\.\d+/,eo="(\\s*(\\d+(,\\d{3,})*(\\.\\d*)?)|(\\.\\d+))(e(\\+|-)?\\d+)?(\\s*%)?",to="(\\s*-)?",oo="(\\s*[\\$€])?",no="^(("+[to+oo+eo,to+eo+oo,oo+to+eo].join(")|(")+"))$",io=new RegExp(no,"i");function ro(e){return!!e&&io.test(e.trim())}const so=/[,\$€]+/g;function ao(e){e=e.replace(so,"");let t=Number(e);return isNaN(t)&&e.includes("%")&&(t=Number(e.split("%")[0]),!isNaN(t))?t/100:t}function lo(e,t,o){const n=[...e].sort(((e,t)=>e-t));let i=(n.length+(o?-1:1))*t;if(o||i--,Number.isInteger(i))return n[i];const r=Math.ceil(i),s=Math.floor(i);return n[r]*(i-s)+n[s]*(r-i)}class co{constructor(e,t){this.getSheetSize=t,this.prefixSheet=!1,this._zone=e.zone,this.parts=e.parts,this.prefixSheet=e.prefixSheet,this.invalidXc=e.invalidXc,this.sheetId=e.sheetId,this.invalidSheetName=e.invalidSheetName}static fromRange(e,t){return e instanceof co?e:new co(e,t.getSheetSize)}get unboundedZone(){return this._zone}get zone(){const{left:e,top:t,bottom:o,right:n}=this._zone;if(void 0!==n&&void 0!==o)return{left:e,top:t,right:n,bottom:o};if(void 0===o&&void 0!==n)return{right:n,top:t,left:e,bottom:this.getSheetSize(this.sheetId).height-1};if(void 0===n&&void 0!==o)return{bottom:o,left:e,top:t,right:this.getSheetSize(this.sheetId).width-1};throw new Error(r("Bad zone format"))}static getRangeParts(e,t){const o=e.split(":").map((e=>{const t=wt(e);return{colFixed:!t&&e.startsWith("$"),rowFixed:t?e.startsWith("$"):e.includes("$",1)}})),n=void 0===t.bottom,i=void 0===t.right;return n&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed,t.left===t.right&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed)),i&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed,t.top===t.bottom&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed)),o}get isFullCol(){return void 0===this._zone.bottom}get isFullRow(){return void 0===this._zone.right}get rangeData(){return{_zone:this._zone,_sheetId:this.sheetId}}orderZone(){if(void 0!==this._zone.right&&this._zone.right<this._zone.left){let e=this._zone.right;this._zone.right=this._zone.left,this._zone.left=e;let t=this.parts[1].colFixed;this.parts[1].colFixed=this.parts[0].colFixed,this.parts[0].colFixed=t}if(void 0!==this._zone.bottom&&this._zone.bottom<this._zone.top){let e=this._zone.bottom;this._zone.bottom=this._zone.top,this._zone.top=e;let t=this.parts[1].rowFixed;this.parts[1].rowFixed=this.parts[0].rowFixed,this.parts[0].rowFixed=t}}clone(e){return new co({zone:(null==e?void 0:e.zone)?e.zone:{...this._zone},sheetId:(null==e?void 0:e.sheetId)?e.sheetId:this.sheetId,invalidSheetName:e&&"invalidSheetName"in e?e.invalidSheetName:this.invalidSheetName,invalidXc:e&&"invalidXc"in e?e.invalidXc:this.invalidXc,parts:(null==e?void 0:e.parts)?e.parts:this.parts.map((e=>({rowFixed:e.rowFixed,colFixed:e.colFixed}))),prefixSheet:(null==e?void 0:e.prefixSheet)?e.prefixSheet:this.prefixSheet},this.getSheetSize)}}function ho(e,t,o){const n=o.sheetId===e?t:o.sheetId;return o.clone({sheetId:n})}function uo(e,t,o){return o?e.getRangeFromSheetXC(t,o):void 0}function go(e){const t=[];for(let o=0;o<e;o++){const e={cells:{}};t.push(e)}return t}class po{constructor(){this.isFastIdStrategy=!1,this.fastIdStart=0}setIsFastStrategy(e){this.isFastIdStrategy=e}uuidv4(){return this.isFastIdStrategy?(this.fastIdStart++,String(this.fastIdStart)):window.crypto&&window.crypto.getRandomValues?([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))):"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}function fo(e){const t=function(e){const t=(e=e.split("!").pop()).replace(/\$/g,"").split(":").map((e=>e.trim()));let o,n,i,r,s=!1,a=!1,l=!1;const c=t[0],h=t[1]&&t[1];if(Et(c))i=r=Tt(c),o=n=0,s=!0;else if(wt(c))o=n=parseInt(c,10)-1,i=r=0,a=!0;else{const e=At(c);i=r=e.col,o=n=e.row,l=!0}if(2===t.length)if(Et(h))r=Tt(h),s=!0;else if(wt(h))n=parseInt(h,10)-1,a=!0;else{const e=At(h);r=e.col,n=e.row,o=s?n:o,i=a?r:i,l=!0}if(s&&a)throw new Error("Wrong zone xc. The zone cannot be at the same time a full column and a full row");const d={top:o,left:i,bottom:s?void 0:n,right:a?void 0:r};return l=l&&(a||s),l&&(d.hasHeader=l),d}(e);if(void 0!==t.right&&t.right<t.left){const e=t.left;t.left=t.right,t.right=e}if(void 0!==t.bottom&&t.bottom<t.top){const e=t.top;t.top=t.bottom,t.bottom=e}return t}function mo(e){const t=fo(e);if(void 0===t.bottom||void 0===t.right)throw new Error("This does not support unbounded ranges");return t}function vo(e){const{bottom:t,top:o,left:n,right:i}=e;return!(void 0!==t&&isNaN(t)||isNaN(o)||isNaN(n)||void 0!==i&&isNaN(i))&&((void 0===e.bottom||e.bottom>=e.top&&e.bottom>=0)&&(void 0===e.right||e.right>=e.left&&e.right>=0)&&e.top>=0&&e.left>=0)}function bo(e){const{top:t,bottom:o,left:n,right:i}=e,s="hasHeader"in e&&e.hasHeader,a=t===o&&n===i;if(void 0===o&&void 0!==i)return 0!==t||s?`${Ot(n,t)}:${It(i)}`:`${It(n)}:${It(i)}`;if(void 0===i&&void 0!==o)return 0!==n||s?`${Ot(n,t)}:${o+1}`:`${t+1}:${o+1}`;if(void 0!==o&&void 0!==i)return a?Ot(n,t):`${Ot(n,t)}:${Ot(i,o)}`;throw new Error(r("Bad zone format"))}function So(e,t,o,n,i){const r="left"===t?"columns":"rows",s="before"===n?o-1:o,a=e["left"===t?"right":"bottom"];return e[t]<=s&&a&&a>s?Do(e,r,"RESIZE",i):s<e[t]?Do(e,r,"MOVE",i):{...e}}function Co(e,t,o,n,i){const r="left"===t?"columns":"rows",s="before"===n?o-1:o,a="left"===t?"right":"bottom";return e[t]<=s&&e[a]>s?Do(e,r,"RESIZE",i):s<e[t]?Do(e,r,"MOVE",i):{...e}}function Eo(e,t,o){const n="left"===t?"right":"bottom";let i=e[t],r=e[n];for(let s of o.sort(((e,t)=>t-e)))e[t]>s&&(i--,r--),e[t]<s&&e[n]>=s&&r--;return{...e,[t]:i,[n]:r}}function wo(e,t,o){const n="left"===t?"right":"bottom";let i=e[t],r=e[n];const s=e[n];for(let n of o.sort(((e,t)=>t-e)))e[t]>n&&(i--,void 0!==r&&r--),void 0!==s&&void 0!==r&&e[t]<=n&&s>=n&&r--;if(!(void 0!==r&&i>r))return{...e,[t]:i,[n]:r}}function yo(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:Math.max(...e.map((e=>e.bottom))),right:Math.max(...e.map((e=>e.right)))}}function xo(e,t){if(Io(e,t))return{top:Math.max(e.top,t.top),left:Math.max(e.left,t.left),bottom:Math.min(e.bottom,t.bottom),right:Math.min(e.right,t.right)}}function Ro(e,t){return e.left===t.left&&e.right===t.right&&e.top===t.top&&e.bottom===t.bottom}function Io(e,t){return!(e.bottom<t.top||t.bottom<e.top)&&!(e.right<t.left||t.right<e.left)}function To(e,t,o){const{left:n,right:i,top:r,bottom:s}=o;return e>=n&&e<=i&&t>=r&&t<=s}function Ao(e,t){return Ro(yo(t,e),t)}function Oo(e,t){const o=e.map(fo),n=t.map(mo),i=Math.max(...o.concat(n).map((e=>e.bottom||0))),r=Math.max(...o.concat(n).map((e=>e.right||0))),s=o.map((e=>({...e,bottom:void 0===e.bottom?i+1:e.bottom,right:void 0===e.right?r+1:e.right}))),a=n.map((e=>({...e,bottom:void 0===e.bottom?i+1:e.bottom,right:void 0===e.right?r+1:e.right}))),l=function(e,t){const o=new Set(t.map((({col:e,row:t})=>`${e}-${t}`)));return e.filter((({col:e,row:t})=>!o.has(`${e}-${t}`)))}(s.map(Fo).flat(),a.map(Fo).flat()),c=function(e){if(0===e.length)return[];const[t,...o]=[...e].sort(((e,t)=>e.row-t.row)).sort(((e,t)=>e.col-t.col)),n=[];let i=Lo(t);for(const{col:e,row:t}of o)if(!To(e,t,i))if(e===i.left&&t===i.bottom+1){const e=i.bottom+1;i={...i,bottom:e}}else n.push(i),i=Lo({col:e,row:t});return[...n,i]}(l);return function(e){if(0===e.length)return[];if(e.some((e=>e.left!==e.right)))throw new Error("only columns can be merged");const t=[],o=Mo(e),n=(e,t)=>e.top===t.top&&e.bottom===t.bottom&&e.right+1===t.left;for(;o.length;){const e=o.reduce(((e,t)=>n(e,t)?yo(e,t):e),o.shift());t.push(e)}return Mo(t)}(c).map((e=>({...e,bottom:e.bottom===i+1?void 0:e.bottom,right:e.right===r+1?void 0:e.right}))).map(bo)}function Mo(e){const t=[...e].sort(((e,t)=>t.right-e.right)).sort(((e,t)=>t.bottom-e.bottom)).sort(((e,t)=>e.top-t.top)).sort(((e,t)=>e.left-t.left)).reverse(),o=[];for(;0!==t.length;){const e=t.shift();t.some((t=>Ao(e,t)))||o.push(e)}return o.reverse()}function No(e){return{height:e.bottom-e.top+1,width:e.right-e.left+1}}function _o(e){const{width:t,height:o}=No(e);return 1===t||1===o}function Fo(e){const t=[],[o,n]=[e.right,e.left].sort(((e,t)=>e-t)),[i,r]=[e.top,e.bottom].sort(((e,t)=>e-t));for(const e of Fe(o,n+1))for(const o of Fe(i,r+1))t.push({col:e,row:o});return t}function Do(e,t,o,n){const i="both"===t?n[0]:"columns"===t?n:0,r="both"===t?n[1]:"rows"===t?n:0,s="hasHeader"in e&&e.hasHeader;let a;a=!function(e){return void 0===e.bottom}(e)||s?!(Po(e)&&!s)||"columns"!==t:"rows"!==t;const l={...e};return a&&"MOVE"===o&&(l.left+=i,l.top+=r),void 0!==l.right&&(l.right+=i),void 0!==l.bottom&&(l.bottom+=r),l}function ko(e,t){let o,n;const{left:i,right:r,top:s,bottom:a}=e,{left:l,right:c,top:h,bottom:d}=t;return o=l!=i?l:c!=r?c:l,n=h!=s?h:d!=a?d:h,{col:o,row:n}}function $o(e){return{top:Math.min(e.top,e.bottom),bottom:Math.max(e.top,e.bottom),left:Math.min(e.left,e.right),right:Math.max(e.left,e.right)}}function Lo(e){return{left:e.col,right:e.col,top:e.row,bottom:e.row}}function Po(e){return void 0===e.right}function Uo(e){return(e.bottom-e.top+1)*(e.right-e.left+1)}function Vo(...e){return e.length<2||1===Oo(e.map(bo),[]).length}class zo{constructor(){this.content={}}add(e,t){return this.content[e]=t,this}get(e){const t=this.content[e];if(!t&&!(e in this.content))throw new Error(`Cannot find ${e} in this registry!`);return t}contains(e){return e in this.content}getAll(){return Object.values(this.content)}getKeys(){return Object.keys(this.content)}remove(e){delete this.content[e]}}const Bo=new zo,Ho=new zo;class Wo extends t.Component{constructor(){super(...arguments),this.canvas=t.useRef("graphContainer")}get background(){return this.chartRuntime.background}get canvasStyle(){return`background-color: ${this.background}`}get chartRuntime(){const e=this.env.model.getters.getChartRuntime(this.env.model.getters.getActiveSheetId(),this.props.figure.id);if(!("chartJsConfig"in e))throw new Error("Unsupported chart runtime");return e}setup(){t.onMounted((()=>{const e=this.chartRuntime;this.createChart(e.chartJsConfig)}));let e=this.chartRuntime;t.onPatched((()=>{const t=this.chartRuntime;et(e,t)||(this.updateChartJs(t),e=t)}))}createChart(e){const t=this.canvas.el.getContext("2d");this.chart=new window.Chart(t,e)}updateChartJs(e){var t,o,n,i;const r=e.chartJsConfig;r.data&&r.data.datasets?(this.chart.data=r.data,(null===(t=r.options)||void 0===t?void 0:t.title)&&(this.chart.config.options.title=r.options.title),r.options&&"valueLabel"in r.options&&(null===(o=r.options)||void 0===o?void 0:o.valueLabel)&&(this.chart.config.options.valueLabel=r.options.valueLabel)):this.chart.data.datasets=void 0,this.chart.config.options.legend=null===(n=r.options)||void 0===n?void 0:n.legend,this.chart.config.options.scales=null===(i=r.options)||void 0===i?void 0:i.scales,this.chart.update({duration:0})}}Wo.template="o-spreadsheet-ChartJsComponent",Ho.add("line",Wo),Ho.add("bar",Wo),Ho.add("pie",Wo),Ho.add("gauge",Wo);const Go=new zo;var qo;Go.add("INCREMENT_MODIFIER",{apply:(e,t)=>{var o;e.current+=e.increment;const n=e.current.toString(),i=Ut(e.current,null===(o=t.cell)||void 0===o?void 0:o.format);return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:n},tooltip:n?{props:{content:i}}:void 0}}}).add("COPY_MODIFIER",{apply:(e,t,o)=>{var n,i;const r=(null===(n=t.cell)||void 0===n?void 0:n.content)||"";return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:null===(i=t.cell)||void 0===i?void 0:i.formattedValue}}:void 0}}}).add("FORMULA_MODIFIER",{apply:(e,t,o,n)=>{e.current+=e.increment;let i=0,r=0;switch(n){case"up":i=0,r=-e.current;break;case"down":i=0,r=e.current;break;case"left":i=-e.current,r=0;break;case"right":i=e.current,r=0}if(!t.cell||!t.cell.isFormula())return{cellData:{}};const s=t.sheetId,a=o.createAdaptedRanges(t.cell.dependencies,i,r,s),l=o.buildFormulaContent(s,t.cell,a);return{cellData:{border:t.border,style:t.cell.style,format:t.cell.format,content:l},tooltip:l?{props:{content:l}}:void 0}}}),function(e){e.boolean="boolean",e.number="number",e.text="text",e.empty="empty",e.error="error"}(qo||(qo={}));const Zo=new Set(["RENAME_SHEET","DELETE_SHEET","CREATE_SHEET","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","DELETE_CELL","INSERT_CELL","UNDO","REDO"]),jo=new Set([...Zo,"DUPLICATE_SHEET","EVALUATE_CELLS","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","MOVE_CONDITIONAL_FORMAT"]),Xo=new Set(["START","ACTIVATE_SHEET","COPY","PREPARE_SELECTION_INPUT_EXPANSION","STOP_SELECTION_INPUT","RESIZE_SHEETVIEW","SET_VIEWPORT_OFFSET","SELECT_SEARCH_NEXT_MATCH","SELECT_SEARCH_PREVIOUS_MATCH","REFRESH_SEARCH","UPDATE_SEARCH","CLEAR_SEARCH","EVALUATE_CELLS","SET_CURRENT_CONTENT","SET_FORMULA_VISIBILITY","OPEN_CELL_POPOVER","CLOSE_CELL_POPOVER","UPDATE_FILTER"]),Yo=new Set(["UPDATE_CELL","UPDATE_CELL_POSITION","CLEAR_CELL","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","HIDE_SHEET","SHOW_SHEET","MOVE_RANGES","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","MOVE_CONDITIONAL_FORMAT","CREATE_FIGURE","DELETE_FIGURE","UPDATE_FIGURE","SET_FORMATTING","CLEAR_FORMATTING","SET_BORDER","CREATE_CHART","UPDATE_CHART","CREATE_FILTER_TABLE","REMOVE_FILTER_TABLE"]);function Ko(e){return Yo.has(e.type)}class Qo{constructor(e=[]){Array.isArray(e)||(e=[e]),e=[...new Set(e)],this.reasons=e.filter((e=>0!==e))}static get Success(){return new Qo}get isSuccessful(){return 0===this.reasons.length}isCancelledBecause(e){return this.reasons.includes(e)}}var Jo,en,tn;e.CommandResult=void 0,(Jo=e.CommandResult||(e.CommandResult={}))[Jo.Success=0]="Success",Jo[Jo.CancelledForUnknownReason=1]="CancelledForUnknownReason",Jo[Jo.WillRemoveExistingMerge=2]="WillRemoveExistingMerge",Jo[Jo.MergeIsDestructive=3]="MergeIsDestructive",Jo[Jo.CellIsMerged=4]="CellIsMerged",Jo[Jo.InvalidTarget=5]="InvalidTarget",Jo[Jo.EmptyUndoStack=6]="EmptyUndoStack",Jo[Jo.EmptyRedoStack=7]="EmptyRedoStack",Jo[Jo.NotEnoughElements=8]="NotEnoughElements",Jo[Jo.NotEnoughSheets=9]="NotEnoughSheets",Jo[Jo.MissingSheetName=10]="MissingSheetName",Jo[Jo.DuplicatedSheetName=11]="DuplicatedSheetName",Jo[Jo.DuplicatedSheetId=12]="DuplicatedSheetId",Jo[Jo.ForbiddenCharactersInSheetName=13]="ForbiddenCharactersInSheetName",Jo[Jo.WrongSheetMove=14]="WrongSheetMove",Jo[Jo.WrongSheetPosition=15]="WrongSheetPosition",Jo[Jo.InvalidAnchorZone=16]="InvalidAnchorZone",Jo[Jo.SelectionOutOfBound=17]="SelectionOutOfBound",Jo[Jo.TargetOutOfSheet=18]="TargetOutOfSheet",Jo[Jo.WrongCutSelection=19]="WrongCutSelection",Jo[Jo.WrongPasteSelection=20]="WrongPasteSelection",Jo[Jo.WrongPasteOption=21]="WrongPasteOption",Jo[Jo.WrongFigurePasteOption=22]="WrongFigurePasteOption",Jo[Jo.EmptyClipboard=23]="EmptyClipboard",Jo[Jo.EmptyRange=24]="EmptyRange",Jo[Jo.InvalidRange=25]="InvalidRange",Jo[Jo.InvalidZones=26]="InvalidZones",Jo[Jo.InvalidSheetId=27]="InvalidSheetId",Jo[Jo.InputAlreadyFocused=28]="InputAlreadyFocused",Jo[Jo.MaximumRangesReached=29]="MaximumRangesReached",Jo[Jo.InvalidChartDefinition=30]="InvalidChartDefinition",Jo[Jo.InvalidDataSet=31]="InvalidDataSet",Jo[Jo.InvalidLabelRange=32]="InvalidLabelRange",Jo[Jo.InvalidScorecardKeyValue=33]="InvalidScorecardKeyValue",Jo[Jo.InvalidScorecardBaseline=34]="InvalidScorecardBaseline",Jo[Jo.InvalidGaugeDataRange=35]="InvalidGaugeDataRange",Jo[Jo.EmptyGaugeRangeMin=36]="EmptyGaugeRangeMin",Jo[Jo.GaugeRangeMinNaN=37]="GaugeRangeMinNaN",Jo[Jo.EmptyGaugeRangeMax=38]="EmptyGaugeRangeMax",Jo[Jo.GaugeRangeMaxNaN=39]="GaugeRangeMaxNaN",Jo[Jo.GaugeRangeMinBiggerThanRangeMax=40]="GaugeRangeMinBiggerThanRangeMax",Jo[Jo.GaugeLowerInflectionPointNaN=41]="GaugeLowerInflectionPointNaN",Jo[Jo.GaugeUpperInflectionPointNaN=42]="GaugeUpperInflectionPointNaN",Jo[Jo.GaugeLowerBiggerThanUpper=43]="GaugeLowerBiggerThanUpper",Jo[Jo.InvalidAutofillSelection=44]="InvalidAutofillSelection",Jo[Jo.WrongComposerSelection=45]="WrongComposerSelection",Jo[Jo.MinBiggerThanMax=46]="MinBiggerThanMax",Jo[Jo.LowerBiggerThanUpper=47]="LowerBiggerThanUpper",Jo[Jo.MidBiggerThanMax=48]="MidBiggerThanMax",Jo[Jo.MinBiggerThanMid=49]="MinBiggerThanMid",Jo[Jo.FirstArgMissing=50]="FirstArgMissing",Jo[Jo.SecondArgMissing=51]="SecondArgMissing",Jo[Jo.MinNaN=52]="MinNaN",Jo[Jo.MidNaN=53]="MidNaN",Jo[Jo.MaxNaN=54]="MaxNaN",Jo[Jo.ValueUpperInflectionNaN=55]="ValueUpperInflectionNaN",Jo[Jo.ValueLowerInflectionNaN=56]="ValueLowerInflectionNaN",Jo[Jo.MinInvalidFormula=57]="MinInvalidFormula",Jo[Jo.MidInvalidFormula=58]="MidInvalidFormula",Jo[Jo.MaxInvalidFormula=59]="MaxInvalidFormula",Jo[Jo.ValueUpperInvalidFormula=60]="ValueUpperInvalidFormula",Jo[Jo.ValueLowerInvalidFormula=61]="ValueLowerInvalidFormula",Jo[Jo.InvalidSortZone=62]="InvalidSortZone",Jo[Jo.WaitingSessionConfirmation=63]="WaitingSessionConfirmation",Jo[Jo.MergeOverlap=64]="MergeOverlap",Jo[Jo.TooManyHiddenElements=65]="TooManyHiddenElements",Jo[Jo.Readonly=66]="Readonly",Jo[Jo.InvalidViewportSize=67]="InvalidViewportSize",Jo[Jo.InvalidScrollingDirection=68]="InvalidScrollingDirection",Jo[Jo.FigureDoesNotExist=69]="FigureDoesNotExist",Jo[Jo.InvalidConditionalFormatId=70]="InvalidConditionalFormatId",Jo[Jo.InvalidCellPopover=71]="InvalidCellPopover",Jo[Jo.EmptyTarget=72]="EmptyTarget",Jo[Jo.InvalidFreezeQuantity=73]="InvalidFreezeQuantity",Jo[Jo.FrozenPaneOverlap=74]="FrozenPaneOverlap",Jo[Jo.ValuesNotChanged=75]="ValuesNotChanged",Jo[Jo.InvalidFilterZone=76]="InvalidFilterZone",Jo[Jo.FilterOverlap=77]="FilterOverlap",Jo[Jo.FilterNotFound=78]="FilterNotFound",Jo[Jo.MergeInFilter=79]="MergeInFilter",Jo[Jo.NonContinuousTargets=80]="NonContinuousTargets",Jo[Jo.DuplicatedFigureId=81]="DuplicatedFigureId",Jo[Jo.InvalidSelectionStep=82]="InvalidSelectionStep",Jo[Jo.DuplicatedChartId=83]="DuplicatedChartId",function(e){e.UP="up",e.DOWN="down",e.LEFT="left",e.RIGHT="right"}(en||(en={})),function(e){e[e.Background=0]="Background",e[e.Highlights=1]="Highlights",e[e.Clipboard=2]="Clipboard",e[e.Search=3]="Search",e[e.Chart=4]="Chart",e[e.Selection=5]="Selection",e[e.Autofill=6]="Autofill",e[e.Headers=7]="Headers"}(tn||(tn={}));const on=new zo;on.add("simple_value_copy",{condition:(e,t)=>{var o;return 1===t.length&&!e.isFormula()&&!(null===(o=e.format)||void 0===o?void 0:o.match(j))},generateRule:()=>({type:"COPY_MODIFIER"}),sequence:10}).add("copy_text",{condition:e=>!e.isFormula()&&e.evaluated.type===qo.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_number",{condition:e=>e.evaluated.type===qo.number,generateRule:(e,t)=>{const o=function(e,t){let o=[],n=!1;for(let i of t)if(i===e&&(n=!0),(null==i?void 0:i.evaluated.type)===qo.number)o.push(i.evaluated.value);else{if(n)return o;o=[]}return o}(e,t);let n=1;return 2==o.length?n=2*(o[1]-o[0]):o.length>2&&(n=function(e){const t=[];let o=e[0];for(let n=1;n<e.length;n++){const i=e[n];t.push(i-o),o=i}return t.reduce(((e,t)=>e+t),0)/t.length}(o)*o.length),{type:"INCREMENT_MODIFIER",increment:n,current:e.evaluated.type===qo.number?e.evaluated.value:0}},sequence:40});const nn={};let rn=0;function sn(e,...t){const o="__sheet__"+rn++;return function(e,t){const o=document.createElement("style");o.textContent=function(e){const t=e.split(/(\{|\}|;)/).map((e=>e.trim())),o=[],n=[];let i=[];function r(e,t){const n=[];for(const i of o[e]){let s=t&&t+" "+i||i;s.includes("&")&&(s=i.replace(/&/g,t||"")),e<o.length-1&&(s=r(e+1,s)),n.push(s)}return n.join(", ")}function s(){i.length&&(n.push(r(0)+" {"),n.push(...i),n.push("}"),i=[])}for(;t.length;){let e=t.shift();"}"===e?(s(),o.pop()):("{"===t[0]&&(s(),o.push(e.split(/\s*,\s*/)),t.shift()),";"===t[0]&&i.push(" "+e+";"))}return n.join("\n")}(t),nn[e]=o}(o,String.raw(e,...t)),function(e){const t=nn[e];t.setAttribute("component",e),document.head.appendChild(t)}(o),o}function an({strikethrough:e,underline:t}){return e||t?`${e?"line-through":""} ${t?"underline":""}`:"none"}function ln(e){return"\n"+Object.entries(e).map((([e,t])=>`${e}: ${t};`)).join("\n")+"\n"}sn`
1
+ !function(e,t){"use strict";let o=e=>e;function n(e,...t){if(1===t.length&&"object"==typeof t[0]){const o=t[0];e=e.replace(/\%\(?([^\)]+)\)s/g,((e,t)=>o[t]))}else t.length>0&&(e=e.replace(/\%s/g,(()=>t.shift())));return e}const i=function(e,...t){return n(o(e),...t)},r=function(e,...t){return new s(e,t)};class s extends String{constructor(e,t){super(e),this.values=t}valueOf(){const e=super.valueOf();return n(o(e),...this.values)}toString(){return this.valueOf()}}var a,l;!function(e){e.NotAvailable="#N/A",e.InvalidReference="#REF",e.BadExpression="#BAD_EXPR",e.CircularDependency="#CYCLE",e.UnknownFunction="#NAME?",e.GenericError="#ERROR"}(a||(a={})),function(e){e[e.silent=0]="silent",e[e.error=1]="error"}(l||(l={}));class c extends Error{constructor(e,t,o=l.error){super(t),this.errorType=e,this.logLevel=o}}class h extends c{constructor(e){super(a.BadExpression,e)}}class d extends c{constructor(){super(a.CircularDependency,r("Circular reference"))}}class u extends c{constructor(){super(a.InvalidReference,r("Invalid reference"))}}class g extends c{constructor(){super(a.NotAvailable,r("Data not available"),l.silent)}}class p extends c{constructor(e){super(a.UnknownFunction,r('Unknown function: "%s"',e))}}const f=.5,m="#f5f5f5",v="#F8F9FA",b="#E8EAED",S="#595959",C="#666666",E="#3266ca",w="#FFFFFF",y=11982760,x="#01666b",R="#188038",I="#E6F4EA",T="#CEEAD6",A=["#000000","#434343","#666666","#999999","#b7b7b7","#cccccc","#d9d9d9","#efefef","#f3f3f3","#ffffff","#980000","#ff0000","#ff9900","#ffff00","#00ff00","#00ffff","#4a86e8","#0000ff","#9900ff","#ff00ff","#e6b8af","#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#c9daf8","#cfe2f3","#d9d2e9","#ead1dc","#dd7e6b","#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#a4c2f4","#9fc5e8","#b4a7d6","#d5a6bd","#cc4125","#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6d9eeb","#6fa8dc","#8e7cc3","#c27ba0","#a61c00","#cc0000","#e69138","#f1c232","#6aa84f","#45818e","#3c78d8","#3d85c6","#674ea7","#a64d79","#85200c","#990000","#b45f06","#bf9000","#38761d","#134f5c","#1155cc","#0b5394","#351c75","#741b47","#5b0f00","#660000","#783f04","#7f6000","#274e13","#0c343d","#1c4587","#073763","#20124d","#4c1130"],O=26,M=48,N=96,_=23,F=15,D=18,k=14,$=4,L=4,P=3,U=L,V=17,z=250,B=1,H="400",W=10,G="'Roboto', arial",q=["thin","#000"],Z=["thin",R],j=/[ymd:]/,X=a.InvalidReference,Y="START_REVISION",K=20,Q=.4,J=["'","*","?","/","\\","[","]"],ee=/'|\*|\?|\/|\\|\[|\]/,te="|",oe=r("Invalid expression");var ne;!function(e){e[e.Grid=0]="Grid",e[e.Highlight=5]="Highlight",e[e.Figure=10]="Figure",e[e.ScrollBar=15]="ScrollBar",e[e.Dropdown=16]="Dropdown",e[e.Composer=20]="Composer",e[e.ColorPicker=25]="ColorPicker",e[e.IconPicker=25]="IconPicker",e[e.Popover=30]="Popover",e[e.ChartAnchor=1e3]="ChartAnchor"}(ne||(ne={}));const ie=[{pt:7.5,px:10},{pt:8,px:11},{pt:9,px:12},{pt:10,px:13},{pt:10.5,px:14},{pt:11,px:15},{pt:12,px:16},{pt:14,px:18.7},{pt:15,px:20},{pt:16,px:21.3},{pt:18,px:24},{pt:22,px:29.3},{pt:24,px:32},{pt:26,px:34.7},{pt:36,px:48}],re={};for(let e of ie)re[e.pt]=e.px;const se=new Date(1899,11,30),ae=864e5,le=2e3,ce=(new Date).getFullYear(),he=new Date(0)-se,de=/^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/,ue=/^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/,ge=/((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;function pe(e){let t;const o=(e=e.trim()).match(ge);if(o){if(t=function(e){if(e=e.trim(),ge.test(e)){const t=/AM/i.test(e),o=/PM/i.test(e),n=(t||o?e.substring(0,e.length-2).trim():e).split(/:/),i=n.length>=2,r=3===n.length;let s=Number(n[0]),a=i?Number(n[1]):0,l=r?Number(n[2]):0,c=r?"hh:mm:ss":"hh:mm";if(t||o)c+=" a";else if(!i)return null;s>=12&&t?s-=12:s<12&&o&&(s+=12),a+=Math.floor(l/60),l%=60,s+=Math.floor(a/60),a%=60,s>=24&&(c="hhhh:mm:ss");return{value:s/24+a/1440+l/86400,format:c,jsDate:new Date(1899,11,30,s,a,l)}}return null}(o[0]),null===t)return null;e=e.replace(o[0],"").trim()}let n;const i=e.match(de),r=e.match(ue);if(i||r){let t;if(i?(t=i[0],n=fe(t,"mdy")):(t=r[0],n=fe(t,"ymd")),null===n)return null;e=e.replace(t,"").trim()}return""!==e||!n&&!t?null:n&&t?{value:n.value+t.value,format:n.format+" "+("hhhh:mm:ss"===t.format?"hh:mm:ss":t.format),jsDate:new Date(n.jsDate.getFullYear()+t.jsDate.getFullYear()-1899,n.jsDate.getMonth()+t.jsDate.getMonth()-11,n.jsDate.getDate()+t.jsDate.getDate()-30,n.jsDate.getHours()+t.jsDate.getHours(),n.jsDate.getMinutes()+t.jsDate.getMinutes(),n.jsDate.getSeconds()+t.jsDate.getSeconds())}:n||t}function fe(e,t){const o="mdy"===t;if(o||"ymd"===t){const t=e.split(/\/|-|\s/),n=o?0:1,i=o?1:2,r=o?2:0,s=Number(t[n]),a=Number(t[i]),l=2===t[n].length&&s<10||2===t[i].length&&a<10,c=t[r]?function(e){const t=Number(e);switch(e.length){case 1:return le+t;case 2:return le+(le+t>ce+10?-100:0)+t;case 3:case 4:return t}return 0}(t[r]):ce,h=new Date(c,s-1,a),d=e.match(/\/|-|\s/)[0];if(h.getMonth()!==s-1||h.getDate()!==a)return null;const u=h-se;let g=l?`mm${d}dd`:`m${d}d`;return t[r]&&(g=o?g+d+"yyyy":"yyyy"+d+g),{value:Math.round(u/ae),format:g,jsDate:h}}return null}function me(e){const t=Math.trunc(e);let o=new Date(t*ae-he),n=e-t;n=n<0?1+n:n;const i=Math.round(24*n),r=Math.round(24*(n-i/24)*60),s=Math.round(24*(n-i/24-r/24/60)*60*60);return o.setHours(i),o.setMinutes(r),o.setSeconds(s),o}function ve(e){const t=e.getTime()-se.getTime();return Math.round(t/ae)}function be(e){return new Date(e.getFullYear(),e.getMonth()+1,0).getDate()}function Se(e){return be(e)===e.getDate()}function Ce(e,t,o){const n=e.getFullYear(),i=e.getMonth(),r=e.getDate(),s=new Date(n,i+t);return o&&r===be(e)||r>be(s)?s.setDate(be(s)):s.setDate(r),s}function Ee(e){const t=Math.trunc(e);return t%4==0&&t%100!=0||t%400==0}function we(e,t,o){if(e===t)return 0;if(e>t){const o=t;t=e,e=o}const n=me(e),i=me(t);let r=n.getDate(),s=i.getDate();const a=n.getMonth(),l=i.getMonth(),c=n.getFullYear(),h=i.getFullYear();let d=0,u=0;switch(o){case 0:31===r&&(r=30),30===r&&31===s&&(s=30),1===a&&r===(Ee(c)?29:28)&&(r=30,1===l&&s===(Ee(h)?29:28)&&(s=30)),d=c+(30*a+r)/360,u=h+(30*l+s)/360;break;case 1:let o=365;const n=c===h;if(!n&&!(c+1===h)||!n&&a<l||!n&&a===l&&r<s){let e=0,t=0;for(let o=c;o<=h;o++)e++,t+=Ee(o)?366:365;o=t/e}else n?Ee(c)&&(o=366):(Ee(c)&&a<2&&(o=366),Ee(h)&&(l>1||1===l&&29===s)&&(o=366));d=e/o,u=t/o;break;case 2:d=e/360,u=t/360;break;case 3:d=e/365,u=t/365;break;case 4:31===r&&(r=30),31===s&&(s=30),d=c+(30*a+r)/360,u=h+(30*l+s)/360}return u-d}function ye(e){return JSON.stringify(e,Object.keys(e).sort())}function xe(e){return'"'===e[0]&&(e=e.slice(1)),'"'===e[e.length-1]&&"\\"!==e[e.length-2]?e.slice(0,e.length-1):e}function Re(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ie(e){const t=Array.isArray(e)?[]:{};switch(typeof e){case"object":if(null===e)return e;if(function(e){return"clone"in e&&e.clone instanceof Function}(e))return e.clone();if(!(function(e){return"object"==typeof e&&(null==e?void 0:e.constructor)===Object}(e)||e instanceof Array))throw new Error("Unsupported type: only objects and arrays are supported");for(const o in e)t[o]=Ie(e[o]);return t;case"number":case"string":case"boolean":case"function":case"undefined":return e;default:throw new Error("Unsupported type: "+typeof e)}}function Te(e){return e.startsWith("'")&&(e=e.slice(1,-1).replace(/''/g,"'")),e}function Ae(e){var t;return(null===(t=e.match(/\w/g))||void 0===t?void 0:t.length)!==e.length&&(e=`'${e}'`),e}function Oe(e,t,o){return e<t?t:e>o?o:e}function Me(e,t,o){e.save(),e.font=Ne(o);const n=e.measureText(t).width;return e.restore(),n}function Ne(e){return`${e.italic?"italic ":""}${e.bold?"bold":H} ${_e(e)}px ${G}`}function _e(e){const t=e.fontSize||W;if(!re[t])throw new Error("Size of the font is not supported");return re[t]}function Fe(e,t,o=1){if(t<=e&&o>0)return[];if(0===o)throw new Error("range() step must not be zero");const n=Math.ceil(Math.abs((t-e)/o)),i=Array(n);for(let t=0;t<n;t++)i[t]=e+t*o;return i}function De(e){return e.reduce(((e,t,o,n)=>{if(1===Math.abs(t-n[o-1])){e[e.length-1].push(t)}else e.push([t]);return e}),[])}function*ke(e,t){t.next();for(const o of e){const e=t.next();yield{...o,next:e.done?void 0:e.value}}}function $e(e){const t=e.toUpperCase();return"TRUE"===t||"FALSE"===t}function Le(e){return null!==pe(e)}const Pe=/^\[([^\[]+)\]\((.+)\)$/,Ue=/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/;function Ve(e){return Pe.test(e)}function ze(e,t){return`[${e}](${t})`}function Be(e){const t=e.match(Pe)||[],o=t[1],n=t[2];if(!o||!n)throw new Error(`Could not parse markdown link ${e}.`);return{label:o,url:n}}const He="o-spreadsheet://";function We(e){if(!Ve(e))return!1;const{url:t}=Be(e);return t.startsWith(He)}function Ge(e){return`${He}${e}`}function qe(e){if(e.startsWith(He))return e.substr(He.length);throw new Error(`${e} is not a valid sheet link`)}function Ze(e){return void 0!==e}function je(e){return void 0===e||Object.values(e).every((e=>"object"==typeof e?je(e):!e))}function Xe(e,t){for(let[o,n]of Object.entries(t))if(ye(n)===ye(e))return parseInt(o,10);const o=Object.keys(t),n=0===o.length?0:Math.max(...o.map((e=>parseInt(e,10))));return t[n+1]=e,n+1}function Ye(e){let t="";for(let o=0,n=e.length;o<n;o++)t+=e[o];return t}function Ke(e){let t,o=!1;const n=()=>(o||(t=e instanceof Function?e():e,o=!0),t);return n.map=e=>Ke((()=>e(n()))),n}function Qe(e,t){let o=e.slice(t).find((e=>e));return o||(o=e.slice(0,t).reverse().find((e=>e))),o||""}function Je(e,t){return"after"===e?t+1:t}function et(e,t){if(e===t)return!0;if(e&&!t||t&&!e)return!1;const o=new Set;Object.keys(e).forEach((e=>o.add(e))),Object.keys(t).forEach((e=>o.add(e)));for(let n of o){if(typeof e[n]!=typeof e[n])return!1;if("object"==typeof e[n]){if(!et(e[n],t[n]))return!1}else if(e[n]!==t[n])return!1}return!0}function tt(e){const t={...e};return Object.keys(t).forEach((e=>!t[e]&&delete t[e])),t}function ot(e){return e?e.toLowerCase():""}const nt=["#eb6d00","#0074d9","#ad8e00","#169ed4","#b10dc9","#00a82d","#00a3a3","#f012be","#3d9970","#111111","#62A300","#ff4136","#949494","#85144b","#001f3f"];function it(e){return st(e.toString(16).padStart(6,"0"))}let rt=0;function st(e){if(e.includes("rgba"))throw new Error(`rgba() conversion currently not supported: ${e}`);if(e.includes("rgb"))return function(e){return"#"+Ye(e.slice(4,-1).split(",").map((e=>parseInt(e,10).toString(16).padStart(2,"0")))).toUpperCase()}(e);if(3!==(e=e.replace("#","").toUpperCase()).length&&4!==e.length||(e=e.split("").reduce(((e,t)=>e+t+t),"")),""!==e.replace(/[a-f0-9]/gi,""))throw new Error("invalid color");return"#"+e}function at(e){try{const{r:t,g:o,b:n,a:i}=ut(e);return lt(t)&&lt(o)&&lt(n)&&lt(i)}catch(e){return!1}}const lt=e=>e>=0&&e<=255;function ct(e,t,o,n=1){if(!lt(e)||!lt(t)||!lt(o)||n<0||n>1)throw new Error(`Invalid RGBA values ${[e,t,o,n]}`);return{a:n,b:o,g:t,r:e}}function ht(e){let{r:t,g:o,b:n}=ut(e);t/=255,o/=255,n/=255;const i=e=>e<=.03928?e/12.92:((e+.055)/1.055)**2.4;return.2126*i(t)+.7152*i(o)+.0722*i(n)}function dt(e){let t=e.r.toString(16),o=e.g.toString(16),n=e.b.toString(16),i=Math.round(255*e.a).toString(16);return 1==t.length&&(t="0"+t),1==o.length&&(o="0"+o),1==n.length&&(n="0"+n),1==i.length&&(i="0"+i),"ff"===i&&(i=""),"#"+t+o+n+i}function ut(e){let t,o,n,i;if(7===(e=st(e)).length)t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),n=parseInt(e[5]+e[6],16),i=255;else{if(9!==e.length)throw new Error("Invalid color");t=parseInt(e[1]+e[2],16),o=parseInt(e[3]+e[4],16),n=parseInt(e[5]+e[6],16),i=parseInt(e[7]+e[8],16)}return i=+(i/255).toFixed(3),{a:i,r:t,g:o,b:n}}function gt(e){(e={...e}).s/=100,e.l/=100;let t=(1-Math.abs(2*e.l-1))*e.s,o=t*(1-Math.abs(e.h/60%2-1)),n=e.l-t/2,i=0,r=0,s=0;return 0<=e.h&&e.h<60?(i=t,r=o,s=0):60<=e.h&&e.h<120?(i=o,r=t,s=0):120<=e.h&&e.h<180?(i=0,r=t,s=o):180<=e.h&&e.h<240?(i=0,r=o,s=t):240<=e.h&&e.h<300?(i=o,r=0,s=t):300<=e.h&&e.h<360&&(i=t,r=0,s=o),i=Math.round(255*(i+n)),r=Math.round(255*(r+n)),s=Math.round(255*(s+n)),{a:e.a,r:i,g:r,b:s}}function pt(e){const t=e.r/255,o=e.g/255,n=e.b/255;let i=Math.min(t,o,n),r=Math.max(t,o,n),s=r-i,a=0,l=0,c=0;return a=0==s?0:r==t?(o-n)/s%6:r==o?(n-t)/s+2:(t-o)/s+4,a=Math.round(60*a),a<0&&(a+=360),c=(r+i)/2,l=0==s?0:s/(1-Math.abs(2*c-1)),l=+(100*l).toFixed(1),c=+(100*c).toFixed(1),{a:e.a,h:a,s:l,l:c}}const ft=new RegExp(/\$?([A-Z]{1,3})\$?([0-9]{1,7})/,"i"),mt=new RegExp(/^\$?([A-Z]{1,3})\$?([0-9]{1,7})$/,"i"),vt=new RegExp(/^([A-Z]{1,3})+$/,"i"),bt=new RegExp(/^\s*('.+'!|[^']+!)?\$?([A-Z]{1,3})$/,"i"),St=new RegExp(/^\s*('.+'!|[^']+!)?\$?([0-9]{1,7})$/,"i"),Ct=new RegExp(/^\s*('.+'!|[^']+!)?/.source+"("+[ft.source,/(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*:\s*(\$?[A-Z]{1,3})?\$?[0-9]{1,7}\s*/i.source,/\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*:\s*\$?[A-Z]{1,3}(\$?[0-9]{1,7})?\s*/i.source].join("|")+")"+/$/.source,"i");function Et(e){return bt.test(e)}function wt(e){return St.test(e)}function yt(e){return vt.test(e)}function xt(e){return mt.test(e)}function Rt(e){const t=e.split("!"),o=t.pop();return{sheetName:Te(t.join("!"))||void 0,xc:o}}function It(e){if(e<0)throw new Error(`number must be positive. Got ${e}`);return e<26?String.fromCharCode(65+e):It(Math.floor(e/26)-1)+It(e%26)}function Tt(e){let t=0;const o=e.length;for(let n=0;n<o;n++){t+=(e.charCodeAt(n)-65+(n<o-1?1:0))*26**(o-n-1)}return t}function At(e){const t=(e=e.toUpperCase().trim()).match(ft);if(null!==t){const[o,n,i]=t;if(o===e){return{col:Tt(n),row:parseInt(i,10)-1}}}throw new Error(`Invalid cell description: ${e}`)}function Ot(e,t,o={colFixed:!1,rowFixed:!1}){return(o.colFixed?"$":"")+It(e)+(o.rowFixed?"$":"")+String(t+1)}const Mt=140,Nt=20,_t=.035;function Ft(e){return Nt+(Mt-Nt)*Math.exp(-_t*(e-1))}const Dt=20,kt=/(\d+?)(?=(\d{3})+(?!\d)|$)/g,$t=/0/g,Lt={};function Pt(e){let t=Lt[e];return void 0===t&&(t=function(e){if(""===e)throw new Error("A format cannot be empty");let t=0,o=[];for(;t<e.length;){let n;if("["===e.charAt(t)){if("$"!==e.charAt(t+1))throw new Error(`Currency formats have to be prefixed by a $: ${e}`);if(n=e.substring(t+1).indexOf("]")+t+2,0===n)throw new Error(`Invalid currency brackets format: ${e}`);const i=e.substring(t+2,n-1);if(i.includes("["))throw new Error(`Invalid currency format: ${e}`);o.push({type:"STRING",format:i})}else{const i=e.substring(t).indexOf("[");n=i>-1?i+t:e.length;const r=e.substring(t,n);r.match(j)?o.push({type:"DATE",format:r}):o.push({type:"NUMBER",format:Yt(r)})}t=n}return o}(e),Lt[e]=t),t}function Ut(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":t||(t=qt(e));return function(e,t){if("DATE"===t[0].type)return Ht(e,t[0].format);let o=e<0?"-":"";for(let n of t)switch(n.type){case"NUMBER":o+=Vt(Math.abs(e),n.format);break;case"STRING":o+=n.format}return o}(e,Pt(t));case"object":return"0"}}function Vt(e,t){t.isPercent&&(e*=100),e/=t.magnitude;let o=0;void 0!==t.decimalPart&&(o=t.decimalPart.length);const{integerDigits:n,decimalDigits:i}=Bt(e,o);let r=function(e,t,o){var n;const i="0"===e?"":e;let r=i;const s=t.length-i.length;if(s>0){const e=(t.substring(0,s).match($t)||[]).length;r="0".repeat(e)+r}o&&(r=(null===(n=r.match(kt))||void 0===n?void 0:n.join(","))||r);return r}(n,t.integerPart,t.thousandsSeparator);return void 0!==t.decimalPart&&(r+="."+function(e,t){let o=e;if(t.length-e.length>0){const n=(t.substring(e.length,t.length+1).match($t)||[]).length;o+="0".repeat(n)}return o}(i||"",t.decimalPart)),t.isPercent&&(r+="%"),r}const zt=[];function Bt(e,t=Dt){let o=zt[t];o||(o=new Intl.NumberFormat("en-US",{maximumFractionDigits:t,useGrouping:!1}),zt[t]=o);const[n,i]=o.format(e).split(".");return{integerDigits:n,decimalDigits:i}}function Ht(e,t){const o=me(e),n=t.indexOf("h");let i="",r="";return n>0?(i=Wt(o,t.substring(0,n-1)),r=Gt(o,t.substring(n))):0===n?r=Gt(o,t):n<0&&(i=Wt(o,t)),i+(i&&r?" ":"")+r}function Wt(e,t){const o=t.match(/\/|-|\s/)[0];return t.split(o).map((o=>{switch(o){case"d":return e.getDate();case"dd":return e.getDate().toString().padStart(2,"0");case"m":return e.getMonth()+1;case"mm":return String(e.getMonth()+1).padStart(2,"0");case"yyyy":return e.getFullYear();default:throw new Error(`invalid format: ${t}`)}})).join(o)}function Gt(e,t){let o=t.split(/:|\s/);const n=e.getHours(),i="a"===o[o.length-1];let r=n,s="";return i&&(r=0===r?12:r>12?r-12:r,s=n>=12?" PM":" AM",o.pop()),o.map((o=>{switch(o){case"hhhh":return Math.floor((e.getTime()-se)/36e5).toString();case"hh":return r.toString().padStart(2,"0");case"mm":return e.getMinutes().toString().padStart(2,"0");case"ss":return e.getSeconds().toString().padStart(2,"0");default:throw new Error(`invalid format: ${t}`)}})).join(":")+s}function qt(e){let{decimalDigits:t}=Bt(e,10);return t?"0."+"0".repeat(t.length):"0"}function Zt(e,t,o){return Qt(Pt(e||"#,##0").map((e=>"NUMBER"===e.type?[{...e,format:{...e.format,magnitude:t,decimalPart:void 0}},{type:"STRING",format:o}]:e)).flat())}function jt(e,t){var o;const n={...e},i=Math.sign(t),r=(null===(o=n.decimalPart)||void 0===o?void 0:o.length)||0,s=Math.min(Math.max(0,r+i),Dt);return n.decimalPart="0".repeat(s),""===n.decimalPart&&delete n.decimalPart,n}const Xt=/,*?$/;function Yt(e){var t;if(function(e){return Boolean(e.replace(Kt,""))}(e=e.trim()))throw new Error(`Invalid number format: ${e}`);const o=e.includes("%"),n=(null===(t=e.match(Xt))||void 0===t?void 0:t[0])||"",i=n?1e3**n.length:1;let r=e.slice(0,e.length-(n.length||0));const s=r.includes(",");if(r.match(/\..*,/))throw new Error("A format can't contain ',' symbol in the decimal part");r=r.replace("%","").replace(",","");const a=r.match(/[\%|,]/);if(a)throw new Error(`A format can only contain a single '${a[0]}' symbol`);const[l,c]=r.split(".");if(c&&c.length>20)throw new Error("A format can't contain more than 20 decimal places");return void 0!==c?{integerPart:l,isPercent:o,thousandsSeparator:s,decimalPart:c,magnitude:i}:{integerPart:l,isPercent:o,thousandsSeparator:s,magnitude:i}}const Kt=/[,#0.%]/g;function Qt(e){let t="";for(let o of e){let e;switch(o.type){case"NUMBER":const t=o.format;e=t.integerPart,t.thousandsSeparator&&(e=e.slice(0,-3)+","+e.slice(-3)),void 0!==t.decimalPart&&(e+="."+t.decimalPart),t.isPercent&&(e+="%"),t.magnitude&&(e+=",".repeat(Math.log10(t.magnitude)/3));break;case"STRING":e=`[$${o.format}]`;break;case"DATE":e=o.format}t+=e}return t}const Jt=/^-?\d+(\.?\d*(e\d+)?)?|^-?\.\d+/,eo="(\\s*(\\d+(,\\d{3,})*(\\.\\d*)?)|(\\.\\d+))(e(\\+|-)?\\d+)?(\\s*%)?",to="(\\s*-)?",oo="(\\s*[\\$€])?",no="^(("+[to+oo+eo,to+eo+oo,oo+to+eo].join(")|(")+"))$",io=new RegExp(no,"i");function ro(e){return!!e&&io.test(e.trim())}const so=/[,\$€]+/g;function ao(e){e=e.replace(so,"");let t=Number(e);return isNaN(t)&&e.includes("%")&&(t=Number(e.split("%")[0]),!isNaN(t))?t/100:t}function lo(e,t,o){const n=[...e].sort(((e,t)=>e-t));let i=(n.length+(o?-1:1))*t;if(o||i--,Number.isInteger(i))return n[i];const r=Math.ceil(i),s=Math.floor(i);return n[r]*(i-s)+n[s]*(r-i)}class co{constructor(e,t){this.getSheetSize=t,this.prefixSheet=!1,this._zone=e.zone,this.parts=e.parts,this.prefixSheet=e.prefixSheet,this.invalidXc=e.invalidXc,this.sheetId=e.sheetId,this.invalidSheetName=e.invalidSheetName}static fromRange(e,t){return e instanceof co?e:new co(e,t.getSheetSize)}get unboundedZone(){return this._zone}get zone(){const{left:e,top:t,bottom:o,right:n}=this._zone;if(void 0!==n&&void 0!==o)return{left:e,top:t,right:n,bottom:o};if(void 0===o&&void 0!==n)return{right:n,top:t,left:e,bottom:this.getSheetSize(this.sheetId).height-1};if(void 0===n&&void 0!==o)return{bottom:o,left:e,top:t,right:this.getSheetSize(this.sheetId).width-1};throw new Error(r("Bad zone format"))}static getRangeParts(e,t){const o=e.split(":").map((e=>{const t=wt(e);return{colFixed:!t&&e.startsWith("$"),rowFixed:t?e.startsWith("$"):e.includes("$",1)}})),n=void 0===t.bottom,i=void 0===t.right;return n&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed,t.left===t.right&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed)),i&&(o[0].colFixed=o[0].colFixed||o[1].colFixed,o[1].colFixed=o[0].colFixed||o[1].colFixed,t.top===t.bottom&&(o[0].rowFixed=o[0].rowFixed||o[1].rowFixed,o[1].rowFixed=o[0].rowFixed||o[1].rowFixed)),o}get isFullCol(){return void 0===this._zone.bottom}get isFullRow(){return void 0===this._zone.right}get rangeData(){return{_zone:this._zone,_sheetId:this.sheetId}}orderZone(){if(void 0!==this._zone.right&&this._zone.right<this._zone.left){let e=this._zone.right;this._zone.right=this._zone.left,this._zone.left=e;let t=this.parts[1].colFixed;this.parts[1].colFixed=this.parts[0].colFixed,this.parts[0].colFixed=t}if(void 0!==this._zone.bottom&&this._zone.bottom<this._zone.top){let e=this._zone.bottom;this._zone.bottom=this._zone.top,this._zone.top=e;let t=this.parts[1].rowFixed;this.parts[1].rowFixed=this.parts[0].rowFixed,this.parts[0].rowFixed=t}}clone(e){return new co({zone:(null==e?void 0:e.zone)?e.zone:{...this._zone},sheetId:(null==e?void 0:e.sheetId)?e.sheetId:this.sheetId,invalidSheetName:e&&"invalidSheetName"in e?e.invalidSheetName:this.invalidSheetName,invalidXc:e&&"invalidXc"in e?e.invalidXc:this.invalidXc,parts:(null==e?void 0:e.parts)?e.parts:this.parts.map((e=>({rowFixed:e.rowFixed,colFixed:e.colFixed}))),prefixSheet:(null==e?void 0:e.prefixSheet)?e.prefixSheet:this.prefixSheet},this.getSheetSize)}}function ho(e,t,o){const n=o.sheetId===e?t:o.sheetId;return o.clone({sheetId:n})}function uo(e,t,o){return o?e.getRangeFromSheetXC(t,o):void 0}function go(e){const t=[];for(let o=0;o<e;o++){const e={cells:{}};t.push(e)}return t}class po{constructor(){this.isFastIdStrategy=!1,this.fastIdStart=0}setIsFastStrategy(e){this.isFastIdStrategy=e}uuidv4(){return this.isFastIdStrategy?(this.fastIdStart++,String(this.fastIdStart)):window.crypto&&window.crypto.getRandomValues?([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))):"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}}function fo(e){const t=function(e){const t=(e=e.split("!").pop()).replace(/\$/g,"").split(":").map((e=>e.trim()));let o,n,i,r,s=!1,a=!1,l=!1;const c=t[0],h=t[1]&&t[1];if(Et(c))i=r=Tt(c),o=n=0,s=!0;else if(wt(c))o=n=parseInt(c,10)-1,i=r=0,a=!0;else{const e=At(c);i=r=e.col,o=n=e.row,l=!0}if(2===t.length)if(Et(h))r=Tt(h),s=!0;else if(wt(h))n=parseInt(h,10)-1,a=!0;else{const e=At(h);r=e.col,n=e.row,o=s?n:o,i=a?r:i,l=!0}if(s&&a)throw new Error("Wrong zone xc. The zone cannot be at the same time a full column and a full row");const d={top:o,left:i,bottom:s?void 0:n,right:a?void 0:r};return l=l&&(a||s),l&&(d.hasHeader=l),d}(e);if(void 0!==t.right&&t.right<t.left){const e=t.left;t.left=t.right,t.right=e}if(void 0!==t.bottom&&t.bottom<t.top){const e=t.top;t.top=t.bottom,t.bottom=e}return t}function mo(e){const t=fo(e);if(void 0===t.bottom||void 0===t.right)throw new Error("This does not support unbounded ranges");return t}function vo(e){const{bottom:t,top:o,left:n,right:i}=e;return!(void 0!==t&&isNaN(t)||isNaN(o)||isNaN(n)||void 0!==i&&isNaN(i))&&((void 0===e.bottom||e.bottom>=e.top&&e.bottom>=0)&&(void 0===e.right||e.right>=e.left&&e.right>=0)&&e.top>=0&&e.left>=0)}function bo(e){const{top:t,bottom:o,left:n,right:i}=e,s="hasHeader"in e&&e.hasHeader,a=t===o&&n===i;if(void 0===o&&void 0!==i)return 0!==t||s?`${Ot(n,t)}:${It(i)}`:`${It(n)}:${It(i)}`;if(void 0===i&&void 0!==o)return 0!==n||s?`${Ot(n,t)}:${o+1}`:`${t+1}:${o+1}`;if(void 0!==o&&void 0!==i)return a?Ot(n,t):`${Ot(n,t)}:${Ot(i,o)}`;throw new Error(r("Bad zone format"))}function So(e,t,o,n,i){const r="left"===t?"columns":"rows",s="before"===n?o-1:o,a=e["left"===t?"right":"bottom"];return e[t]<=s&&a&&a>s?Do(e,r,"RESIZE",i):s<e[t]?Do(e,r,"MOVE",i):{...e}}function Co(e,t,o,n,i){const r="left"===t?"columns":"rows",s="before"===n?o-1:o,a="left"===t?"right":"bottom";return e[t]<=s&&e[a]>s?Do(e,r,"RESIZE",i):s<e[t]?Do(e,r,"MOVE",i):{...e}}function Eo(e,t,o){const n="left"===t?"right":"bottom";let i=e[t],r=e[n];for(let s of o.sort(((e,t)=>t-e)))e[t]>s&&(i--,r--),e[t]<s&&e[n]>=s&&r--;return{...e,[t]:i,[n]:r}}function wo(e,t,o){const n="left"===t?"right":"bottom";let i=e[t],r=e[n];const s=e[n];for(let n of o.sort(((e,t)=>t-e)))e[t]>n&&(i--,void 0!==r&&r--),void 0!==s&&void 0!==r&&e[t]<=n&&s>=n&&r--;if(!(void 0!==r&&i>r))return{...e,[t]:i,[n]:r}}function yo(...e){return{top:Math.min(...e.map((e=>e.top))),left:Math.min(...e.map((e=>e.left))),bottom:Math.max(...e.map((e=>e.bottom))),right:Math.max(...e.map((e=>e.right)))}}function xo(e,t){if(Io(e,t))return{top:Math.max(e.top,t.top),left:Math.max(e.left,t.left),bottom:Math.min(e.bottom,t.bottom),right:Math.min(e.right,t.right)}}function Ro(e,t){return e.left===t.left&&e.right===t.right&&e.top===t.top&&e.bottom===t.bottom}function Io(e,t){return!(e.bottom<t.top||t.bottom<e.top)&&!(e.right<t.left||t.right<e.left)}function To(e,t,o){const{left:n,right:i,top:r,bottom:s}=o;return e>=n&&e<=i&&t>=r&&t<=s}function Ao(e,t){return Ro(yo(t,e),t)}function Oo(e,t){const o=e.map(fo),n=t.map(mo),i=Math.max(...o.concat(n).map((e=>e.bottom||0))),r=Math.max(...o.concat(n).map((e=>e.right||0))),s=o.map((e=>({...e,bottom:void 0===e.bottom?i+1:e.bottom,right:void 0===e.right?r+1:e.right}))),a=n.map((e=>({...e,bottom:void 0===e.bottom?i+1:e.bottom,right:void 0===e.right?r+1:e.right}))),l=function(e,t){const o=new Set(t.map((({col:e,row:t})=>`${e}-${t}`)));return e.filter((({col:e,row:t})=>!o.has(`${e}-${t}`)))}(s.map(Fo).flat(),a.map(Fo).flat()),c=function(e){if(0===e.length)return[];const[t,...o]=[...e].sort(((e,t)=>e.row-t.row)).sort(((e,t)=>e.col-t.col)),n=[];let i=Lo(t);for(const{col:e,row:t}of o)if(!To(e,t,i))if(e===i.left&&t===i.bottom+1){const e=i.bottom+1;i={...i,bottom:e}}else n.push(i),i=Lo({col:e,row:t});return[...n,i]}(l);return function(e){if(0===e.length)return[];if(e.some((e=>e.left!==e.right)))throw new Error("only columns can be merged");const t=[],o=Mo(e),n=(e,t)=>e.top===t.top&&e.bottom===t.bottom&&e.right+1===t.left;for(;o.length;){const e=o.reduce(((e,t)=>n(e,t)?yo(e,t):e),o.shift());t.push(e)}return Mo(t)}(c).map((e=>({...e,bottom:e.bottom===i+1?void 0:e.bottom,right:e.right===r+1?void 0:e.right}))).map(bo)}function Mo(e){const t=[...e].sort(((e,t)=>t.right-e.right)).sort(((e,t)=>t.bottom-e.bottom)).sort(((e,t)=>e.top-t.top)).sort(((e,t)=>e.left-t.left)).reverse(),o=[];for(;0!==t.length;){const e=t.shift();t.some((t=>Ao(e,t)))||o.push(e)}return o.reverse()}function No(e){return{height:e.bottom-e.top+1,width:e.right-e.left+1}}function _o(e){const{width:t,height:o}=No(e);return 1===t||1===o}function Fo(e){const t=[],[o,n]=[e.right,e.left].sort(((e,t)=>e-t)),[i,r]=[e.top,e.bottom].sort(((e,t)=>e-t));for(const e of Fe(o,n+1))for(const o of Fe(i,r+1))t.push({col:e,row:o});return t}function Do(e,t,o,n){const i="both"===t?n[0]:"columns"===t?n:0,r="both"===t?n[1]:"rows"===t?n:0,s="hasHeader"in e&&e.hasHeader;let a;a=!function(e){return void 0===e.bottom}(e)||s?!(Po(e)&&!s)||"columns"!==t:"rows"!==t;const l={...e};return a&&"MOVE"===o&&(l.left+=i,l.top+=r),void 0!==l.right&&(l.right+=i),void 0!==l.bottom&&(l.bottom+=r),l}function ko(e,t){let o,n;const{left:i,right:r,top:s,bottom:a}=e,{left:l,right:c,top:h,bottom:d}=t;return o=l!=i?l:c!=r?c:l,n=h!=s?h:d!=a?d:h,{col:o,row:n}}function $o(e){return{top:Math.min(e.top,e.bottom),bottom:Math.max(e.top,e.bottom),left:Math.min(e.left,e.right),right:Math.max(e.left,e.right)}}function Lo(e){return{left:e.col,right:e.col,top:e.row,bottom:e.row}}function Po(e){return void 0===e.right}function Uo(e){return(e.bottom-e.top+1)*(e.right-e.left+1)}function Vo(...e){return e.length<2||1===Oo(e.map(bo),[]).length}class zo{constructor(){this.content={}}add(e,t){return this.content[e]=t,this}get(e){const t=this.content[e];if(!t&&!(e in this.content))throw new Error(`Cannot find ${e} in this registry!`);return t}contains(e){return e in this.content}getAll(){return Object.values(this.content)}getKeys(){return Object.keys(this.content)}remove(e){delete this.content[e]}}const Bo=new zo,Ho=new zo;class Wo extends t.Component{constructor(){super(...arguments),this.canvas=t.useRef("graphContainer")}get background(){return this.chartRuntime.background}get canvasStyle(){return`background-color: ${this.background}`}get chartRuntime(){const e=this.env.model.getters.getChartRuntime(this.props.figure.id);if(!("chartJsConfig"in e))throw new Error("Unsupported chart runtime");return e}setup(){t.onMounted((()=>{const e=this.chartRuntime;this.createChart(e.chartJsConfig)}));let e=this.chartRuntime;t.onPatched((()=>{const t=this.chartRuntime;et(e,t)||(this.updateChartJs(t),e=t)}))}createChart(e){const t=this.canvas.el.getContext("2d");this.chart=new window.Chart(t,e)}updateChartJs(e){var t,o,n,i;const r=e.chartJsConfig;r.data&&r.data.datasets?(this.chart.data=r.data,(null===(t=r.options)||void 0===t?void 0:t.title)&&(this.chart.config.options.title=r.options.title),r.options&&"valueLabel"in r.options&&(null===(o=r.options)||void 0===o?void 0:o.valueLabel)&&(this.chart.config.options.valueLabel=r.options.valueLabel)):this.chart.data.datasets=void 0,this.chart.config.options.legend=null===(n=r.options)||void 0===n?void 0:n.legend,this.chart.config.options.scales=null===(i=r.options)||void 0===i?void 0:i.scales,this.chart.update({duration:0})}}Wo.template="o-spreadsheet-ChartJsComponent",Ho.add("line",Wo),Ho.add("bar",Wo),Ho.add("pie",Wo),Ho.add("gauge",Wo);const Go=new zo;var qo;Go.add("INCREMENT_MODIFIER",{apply:(e,t)=>{var o;e.current+=e.increment;const n=e.current.toString(),i=Ut(e.current,null===(o=t.cell)||void 0===o?void 0:o.format);return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:n},tooltip:n?{props:{content:i}}:void 0}}}).add("COPY_MODIFIER",{apply:(e,t,o)=>{var n,i;const r=(null===(n=t.cell)||void 0===n?void 0:n.content)||"";return{cellData:{border:t.border,style:t.cell&&t.cell.style,format:t.cell&&t.cell.format,content:r},tooltip:r?{props:{content:null===(i=t.cell)||void 0===i?void 0:i.formattedValue}}:void 0}}}).add("FORMULA_MODIFIER",{apply:(e,t,o,n)=>{e.current+=e.increment;let i=0,r=0;switch(n){case"up":i=0,r=-e.current;break;case"down":i=0,r=e.current;break;case"left":i=-e.current,r=0;break;case"right":i=e.current,r=0}if(!t.cell||!t.cell.isFormula())return{cellData:{}};const s=t.sheetId,a=o.createAdaptedRanges(t.cell.dependencies,i,r,s),l=o.buildFormulaContent(s,t.cell,a);return{cellData:{border:t.border,style:t.cell.style,format:t.cell.format,content:l},tooltip:l?{props:{content:l}}:void 0}}}),function(e){e.boolean="boolean",e.number="number",e.text="text",e.empty="empty",e.error="error"}(qo||(qo={}));const Zo=new Set(["RENAME_SHEET","DELETE_SHEET","CREATE_SHEET","ADD_COLUMNS_ROWS","REMOVE_COLUMNS_ROWS","DELETE_CELL","INSERT_CELL","UNDO","REDO"]),jo=new Set([...Zo,"DUPLICATE_SHEET","EVALUATE_CELLS","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","MOVE_CONDITIONAL_FORMAT"]),Xo=new Set(["START","ACTIVATE_SHEET","COPY","PREPARE_SELECTION_INPUT_EXPANSION","STOP_SELECTION_INPUT","RESIZE_SHEETVIEW","SET_VIEWPORT_OFFSET","SELECT_SEARCH_NEXT_MATCH","SELECT_SEARCH_PREVIOUS_MATCH","REFRESH_SEARCH","UPDATE_SEARCH","CLEAR_SEARCH","EVALUATE_CELLS","SET_CURRENT_CONTENT","SET_FORMULA_VISIBILITY","OPEN_CELL_POPOVER","CLOSE_CELL_POPOVER","UPDATE_FILTER"]),Yo=new Set(["UPDATE_CELL","UPDATE_CELL_POSITION","CLEAR_CELL","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","HIDE_SHEET","SHOW_SHEET","MOVE_RANGES","ADD_CONDITIONAL_FORMAT","REMOVE_CONDITIONAL_FORMAT","MOVE_CONDITIONAL_FORMAT","CREATE_FIGURE","DELETE_FIGURE","UPDATE_FIGURE","SET_FORMATTING","CLEAR_FORMATTING","SET_BORDER","CREATE_CHART","UPDATE_CHART","CREATE_FILTER_TABLE","REMOVE_FILTER_TABLE"]);function Ko(e){return Yo.has(e.type)}class Qo{constructor(e=[]){Array.isArray(e)||(e=[e]),e=[...new Set(e)],this.reasons=e.filter((e=>0!==e))}static get Success(){return new Qo}get isSuccessful(){return 0===this.reasons.length}isCancelledBecause(e){return this.reasons.includes(e)}}var Jo,en,tn;e.CommandResult=void 0,(Jo=e.CommandResult||(e.CommandResult={}))[Jo.Success=0]="Success",Jo[Jo.CancelledForUnknownReason=1]="CancelledForUnknownReason",Jo[Jo.WillRemoveExistingMerge=2]="WillRemoveExistingMerge",Jo[Jo.MergeIsDestructive=3]="MergeIsDestructive",Jo[Jo.CellIsMerged=4]="CellIsMerged",Jo[Jo.InvalidTarget=5]="InvalidTarget",Jo[Jo.EmptyUndoStack=6]="EmptyUndoStack",Jo[Jo.EmptyRedoStack=7]="EmptyRedoStack",Jo[Jo.NotEnoughElements=8]="NotEnoughElements",Jo[Jo.NotEnoughSheets=9]="NotEnoughSheets",Jo[Jo.MissingSheetName=10]="MissingSheetName",Jo[Jo.DuplicatedSheetName=11]="DuplicatedSheetName",Jo[Jo.DuplicatedSheetId=12]="DuplicatedSheetId",Jo[Jo.ForbiddenCharactersInSheetName=13]="ForbiddenCharactersInSheetName",Jo[Jo.WrongSheetMove=14]="WrongSheetMove",Jo[Jo.WrongSheetPosition=15]="WrongSheetPosition",Jo[Jo.InvalidAnchorZone=16]="InvalidAnchorZone",Jo[Jo.SelectionOutOfBound=17]="SelectionOutOfBound",Jo[Jo.TargetOutOfSheet=18]="TargetOutOfSheet",Jo[Jo.WrongCutSelection=19]="WrongCutSelection",Jo[Jo.WrongPasteSelection=20]="WrongPasteSelection",Jo[Jo.WrongPasteOption=21]="WrongPasteOption",Jo[Jo.WrongFigurePasteOption=22]="WrongFigurePasteOption",Jo[Jo.EmptyClipboard=23]="EmptyClipboard",Jo[Jo.EmptyRange=24]="EmptyRange",Jo[Jo.InvalidRange=25]="InvalidRange",Jo[Jo.InvalidZones=26]="InvalidZones",Jo[Jo.InvalidSheetId=27]="InvalidSheetId",Jo[Jo.InputAlreadyFocused=28]="InputAlreadyFocused",Jo[Jo.MaximumRangesReached=29]="MaximumRangesReached",Jo[Jo.InvalidChartDefinition=30]="InvalidChartDefinition",Jo[Jo.InvalidDataSet=31]="InvalidDataSet",Jo[Jo.InvalidLabelRange=32]="InvalidLabelRange",Jo[Jo.InvalidScorecardKeyValue=33]="InvalidScorecardKeyValue",Jo[Jo.InvalidScorecardBaseline=34]="InvalidScorecardBaseline",Jo[Jo.InvalidGaugeDataRange=35]="InvalidGaugeDataRange",Jo[Jo.EmptyGaugeRangeMin=36]="EmptyGaugeRangeMin",Jo[Jo.GaugeRangeMinNaN=37]="GaugeRangeMinNaN",Jo[Jo.EmptyGaugeRangeMax=38]="EmptyGaugeRangeMax",Jo[Jo.GaugeRangeMaxNaN=39]="GaugeRangeMaxNaN",Jo[Jo.GaugeRangeMinBiggerThanRangeMax=40]="GaugeRangeMinBiggerThanRangeMax",Jo[Jo.GaugeLowerInflectionPointNaN=41]="GaugeLowerInflectionPointNaN",Jo[Jo.GaugeUpperInflectionPointNaN=42]="GaugeUpperInflectionPointNaN",Jo[Jo.GaugeLowerBiggerThanUpper=43]="GaugeLowerBiggerThanUpper",Jo[Jo.InvalidAutofillSelection=44]="InvalidAutofillSelection",Jo[Jo.WrongComposerSelection=45]="WrongComposerSelection",Jo[Jo.MinBiggerThanMax=46]="MinBiggerThanMax",Jo[Jo.LowerBiggerThanUpper=47]="LowerBiggerThanUpper",Jo[Jo.MidBiggerThanMax=48]="MidBiggerThanMax",Jo[Jo.MinBiggerThanMid=49]="MinBiggerThanMid",Jo[Jo.FirstArgMissing=50]="FirstArgMissing",Jo[Jo.SecondArgMissing=51]="SecondArgMissing",Jo[Jo.MinNaN=52]="MinNaN",Jo[Jo.MidNaN=53]="MidNaN",Jo[Jo.MaxNaN=54]="MaxNaN",Jo[Jo.ValueUpperInflectionNaN=55]="ValueUpperInflectionNaN",Jo[Jo.ValueLowerInflectionNaN=56]="ValueLowerInflectionNaN",Jo[Jo.MinInvalidFormula=57]="MinInvalidFormula",Jo[Jo.MidInvalidFormula=58]="MidInvalidFormula",Jo[Jo.MaxInvalidFormula=59]="MaxInvalidFormula",Jo[Jo.ValueUpperInvalidFormula=60]="ValueUpperInvalidFormula",Jo[Jo.ValueLowerInvalidFormula=61]="ValueLowerInvalidFormula",Jo[Jo.InvalidSortZone=62]="InvalidSortZone",Jo[Jo.WaitingSessionConfirmation=63]="WaitingSessionConfirmation",Jo[Jo.MergeOverlap=64]="MergeOverlap",Jo[Jo.TooManyHiddenElements=65]="TooManyHiddenElements",Jo[Jo.Readonly=66]="Readonly",Jo[Jo.InvalidViewportSize=67]="InvalidViewportSize",Jo[Jo.InvalidScrollingDirection=68]="InvalidScrollingDirection",Jo[Jo.FigureDoesNotExist=69]="FigureDoesNotExist",Jo[Jo.InvalidConditionalFormatId=70]="InvalidConditionalFormatId",Jo[Jo.InvalidCellPopover=71]="InvalidCellPopover",Jo[Jo.EmptyTarget=72]="EmptyTarget",Jo[Jo.InvalidFreezeQuantity=73]="InvalidFreezeQuantity",Jo[Jo.FrozenPaneOverlap=74]="FrozenPaneOverlap",Jo[Jo.ValuesNotChanged=75]="ValuesNotChanged",Jo[Jo.InvalidFilterZone=76]="InvalidFilterZone",Jo[Jo.FilterOverlap=77]="FilterOverlap",Jo[Jo.FilterNotFound=78]="FilterNotFound",Jo[Jo.MergeInFilter=79]="MergeInFilter",Jo[Jo.NonContinuousTargets=80]="NonContinuousTargets",Jo[Jo.DuplicatedFigureId=81]="DuplicatedFigureId",Jo[Jo.InvalidSelectionStep=82]="InvalidSelectionStep",Jo[Jo.DuplicatedChartId=83]="DuplicatedChartId",Jo[Jo.ChartDoesNotExist=84]="ChartDoesNotExist",function(e){e.UP="up",e.DOWN="down",e.LEFT="left",e.RIGHT="right"}(en||(en={})),function(e){e[e.Background=0]="Background",e[e.Highlights=1]="Highlights",e[e.Clipboard=2]="Clipboard",e[e.Search=3]="Search",e[e.Chart=4]="Chart",e[e.Selection=5]="Selection",e[e.Autofill=6]="Autofill",e[e.Headers=7]="Headers"}(tn||(tn={}));const on=new zo;on.add("simple_value_copy",{condition:(e,t)=>{var o;return 1===t.length&&!e.isFormula()&&!(null===(o=e.format)||void 0===o?void 0:o.match(j))},generateRule:()=>({type:"COPY_MODIFIER"}),sequence:10}).add("copy_text",{condition:e=>!e.isFormula()&&e.evaluated.type===qo.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_number",{condition:e=>e.evaluated.type===qo.number,generateRule:(e,t)=>{const o=function(e,t){let o=[],n=!1;for(let i of t)if(i===e&&(n=!0),(null==i?void 0:i.evaluated.type)===qo.number)o.push(i.evaluated.value);else{if(n)return o;o=[]}return o}(e,t);let n=1;return 2==o.length?n=2*(o[1]-o[0]):o.length>2&&(n=function(e){const t=[];let o=e[0];for(let n=1;n<e.length;n++){const i=e[n];t.push(i-o),o=i}return t.reduce(((e,t)=>e+t),0)/t.length}(o)*o.length),{type:"INCREMENT_MODIFIER",increment:n,current:e.evaluated.type===qo.number?e.evaluated.value:0}},sequence:40});const nn={};let rn=0;function sn(e,...t){const o="__sheet__"+rn++;return function(e,t){const o=document.createElement("style");o.textContent=function(e){const t=e.split(/(\{|\}|;)/).map((e=>e.trim())),o=[],n=[];let i=[];function r(e,t){const n=[];for(const i of o[e]){let s=t&&t+" "+i||i;s.includes("&")&&(s=i.replace(/&/g,t||"")),e<o.length-1&&(s=r(e+1,s)),n.push(s)}return n.join(", ")}function s(){i.length&&(n.push(r(0)+" {"),n.push(...i),n.push("}"),i=[])}for(;t.length;){let e=t.shift();"}"===e?(s(),o.pop()):("{"===t[0]&&(s(),o.push(e.split(/\s*,\s*/)),t.shift()),";"===t[0]&&i.push(" "+e+";"))}return n.join("\n")}(t),nn[e]=o}(o,String.raw(e,...t)),function(e){const t=nn[e];t.setAttribute("component",e),document.head.appendChild(t)}(o),o}function an({strikethrough:e,underline:t}){return e||t?`${e?"line-through":""} ${t?"underline":""}`:"none"}function ln(e){return"\n"+Object.entries(e).map((([e,t])=>`${e}: ${t};`)).join("\n")+"\n"}sn`
2
2
  .o-error-tooltip {
3
3
  font-size: 13px;
4
4
  background-color: white;
@@ -488,7 +488,7 @@
488
488
  box-sizing: border-box;
489
489
  }
490
490
  }
491
- `;class Ur extends t.Component{constructor(){super(...arguments),this.state=t.useState({openedMenu:void 0,sectionRuleDispatchResult:void 0})}get designErrorMessages(){var e;return[...(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.reasons)||[]].map((e=>Oi.Errors[e]||Oi.Errors.Unexpected))}updateBackgroundColor(e){this.state.openedMenu=void 0,this.props.updateChart({background:e})}updateTitle(e){this.props.updateChart({title:e.target.value})}isRangeMinInvalid(){var e,t,o;return!!((null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(36))||(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(37))||(null===(o=this.state.sectionRuleDispatchResult)||void 0===o?void 0:o.isCancelledBecause(40)))}isRangeMaxInvalid(){var e,t,o;return!!((null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(38))||(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(39))||(null===(o=this.state.sectionRuleDispatchResult)||void 0===o?void 0:o.isCancelledBecause(40)))}get isLowerInflectionPointInvalid(){var e,t;return!(!(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(41))&&!(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(43)))}get isUpperInflectionPointInvalid(){var e,t;return!(!(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(42))&&!(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(43)))}updateInflectionPointValue(e,t){const o=Ie(this.props.definition.sectionRule);o[e].value=t.target.value,this.updateSectionRule(o)}updateInflectionPointType(e,t){const o=Ie(this.props.definition.sectionRule);o[e].type=t.target.value,this.updateSectionRule(o)}updateSectionColor(e,t){const o=Ie(this.props.definition.sectionRule);o.colors[e]=t,this.updateSectionRule(o),this.closeMenus()}updateRangeMin(e){let t=Ie(this.props.definition.sectionRule);t={...t,rangeMin:e.target.value},this.updateSectionRule(t)}updateRangeMax(e){let t=Ie(this.props.definition.sectionRule);t={...t,rangeMax:e.target.value},this.updateSectionRule(t)}toggleMenu(e){const t=this.state.openedMenu===e;this.closeMenus(),t||(this.state.openedMenu=e)}updateSectionRule(e){this.state.sectionRuleDispatchResult=this.props.updateChart({sectionRule:e})}closeMenus(){this.state.openedMenu=void 0}}Ur.template="o-spreadsheet-GaugeChartDesignPanel",Ur.components={ColorPicker:kr};class Vr extends Pi{get canTreatLabelsAsText(){const e=this.env.model.getters.getChart(this.props.sheetId,this.props.figureId);return!!(e&&e instanceof xr)&&function(e,t){return Rr(e,t)||Ir(e,t)}(e,this.env.model.getters)}onUpdateLabelsAsText(e){this.props.updateChart({labelsAsText:e.target.checked})}onUpdateStacked(e){this.props.updateChart({stacked:e.target.checked})}}Vr.template="o-spreadsheet-LineConfigPanel";class zr extends $r{}zr.template="o-spreadsheet-LineChartDesignPanel";class Br extends t.Component{constructor(){super(...arguments),this.state=t.useState({keyValueDispatchResult:void 0,baselineDispatchResult:void 0}),this.keyValue=this.props.definition.keyValue,this.baseline=this.props.definition.baseline}get errorMessages(){var e,t;return[...(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.reasons)||[],...(null===(t=this.state.baselineDispatchResult)||void 0===t?void 0:t.reasons)||[]].map((e=>Oi.Errors[e]||Oi.Errors.Unexpected))}get isKeyValueInvalid(){var e;return!!(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.isCancelledBecause(33))}get isBaselineInvalid(){var e;return!!(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.isCancelledBecause(34))}onKeyValueRangeChanged(e){this.keyValue=e[0]}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart({keyValue:this.keyValue})}onBaselineRangeChanged(e){this.baseline=e[0]}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart({baseline:this.baseline})}updateBaselineMode(e){this.props.updateChart({baselineMode:e.target.value})}}Br.template="o-spreadsheet-ScorecardChartConfigPanel",Br.components={SelectionInput:Li};class Hr extends t.Component{constructor(){super(...arguments),this.state=t.useState({openedColorPicker:void 0})}updateTitle(e){this.props.updateChart({title:e.target.value})}updateBaselineDescr(e){this.props.updateChart({baselineDescr:e.target.value})}openColorPicker(e){this.state.openedColorPicker=e}setColor(e,t){switch(t){case"backgroundColor":this.props.updateChart({background:e});break;case"baselineColorDown":this.props.updateChart({baselineColorDown:e});break;case"baselineColorUp":this.props.updateChart({baselineColorUp:e})}this.state.openedColorPicker=void 0}}Hr.template="o-spreadsheet-ScorecardChartDesignPanel",Hr.components={ColorPicker:kr};const Wr=new zo;Wr.add("line",{configuration:Vr,design:zr}).add("bar",{configuration:Ui,design:Lr}).add("pie",{configuration:Pi,design:$r}).add("gauge",{configuration:Pr,design:Ur}).add("scorecard",{configuration:Br,design:Hr}),sn`
491
+ `;class Ur extends t.Component{constructor(){super(...arguments),this.state=t.useState({openedMenu:void 0,sectionRuleDispatchResult:void 0})}get designErrorMessages(){var e;return[...(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.reasons)||[]].map((e=>Oi.Errors[e]||Oi.Errors.Unexpected))}updateBackgroundColor(e){this.state.openedMenu=void 0,this.props.updateChart({background:e})}updateTitle(e){this.props.updateChart({title:e.target.value})}isRangeMinInvalid(){var e,t,o;return!!((null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(36))||(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(37))||(null===(o=this.state.sectionRuleDispatchResult)||void 0===o?void 0:o.isCancelledBecause(40)))}isRangeMaxInvalid(){var e,t,o;return!!((null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(38))||(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(39))||(null===(o=this.state.sectionRuleDispatchResult)||void 0===o?void 0:o.isCancelledBecause(40)))}get isLowerInflectionPointInvalid(){var e,t;return!(!(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(41))&&!(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(43)))}get isUpperInflectionPointInvalid(){var e,t;return!(!(null===(e=this.state.sectionRuleDispatchResult)||void 0===e?void 0:e.isCancelledBecause(42))&&!(null===(t=this.state.sectionRuleDispatchResult)||void 0===t?void 0:t.isCancelledBecause(43)))}updateInflectionPointValue(e,t){const o=Ie(this.props.definition.sectionRule);o[e].value=t.target.value,this.updateSectionRule(o)}updateInflectionPointType(e,t){const o=Ie(this.props.definition.sectionRule);o[e].type=t.target.value,this.updateSectionRule(o)}updateSectionColor(e,t){const o=Ie(this.props.definition.sectionRule);o.colors[e]=t,this.updateSectionRule(o),this.closeMenus()}updateRangeMin(e){let t=Ie(this.props.definition.sectionRule);t={...t,rangeMin:e.target.value},this.updateSectionRule(t)}updateRangeMax(e){let t=Ie(this.props.definition.sectionRule);t={...t,rangeMax:e.target.value},this.updateSectionRule(t)}toggleMenu(e){const t=this.state.openedMenu===e;this.closeMenus(),t||(this.state.openedMenu=e)}updateSectionRule(e){this.state.sectionRuleDispatchResult=this.props.updateChart({sectionRule:e})}closeMenus(){this.state.openedMenu=void 0}}Ur.template="o-spreadsheet-GaugeChartDesignPanel",Ur.components={ColorPicker:kr};class Vr extends Pi{get canTreatLabelsAsText(){const e=this.env.model.getters.getChart(this.props.figureId);return!!(e&&e instanceof xr)&&function(e,t){return Rr(e,t)||Ir(e,t)}(e,this.env.model.getters)}onUpdateLabelsAsText(e){this.props.updateChart({labelsAsText:e.target.checked})}onUpdateStacked(e){this.props.updateChart({stacked:e.target.checked})}}Vr.template="o-spreadsheet-LineConfigPanel";class zr extends $r{}zr.template="o-spreadsheet-LineChartDesignPanel";class Br extends t.Component{constructor(){super(...arguments),this.state=t.useState({keyValueDispatchResult:void 0,baselineDispatchResult:void 0}),this.keyValue=this.props.definition.keyValue,this.baseline=this.props.definition.baseline}get errorMessages(){var e,t;return[...(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.reasons)||[],...(null===(t=this.state.baselineDispatchResult)||void 0===t?void 0:t.reasons)||[]].map((e=>Oi.Errors[e]||Oi.Errors.Unexpected))}get isKeyValueInvalid(){var e;return!!(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.isCancelledBecause(33))}get isBaselineInvalid(){var e;return!!(null===(e=this.state.keyValueDispatchResult)||void 0===e?void 0:e.isCancelledBecause(34))}onKeyValueRangeChanged(e){this.keyValue=e[0]}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart({keyValue:this.keyValue})}onBaselineRangeChanged(e){this.baseline=e[0]}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart({baseline:this.baseline})}updateBaselineMode(e){this.props.updateChart({baselineMode:e.target.value})}}Br.template="o-spreadsheet-ScorecardChartConfigPanel",Br.components={SelectionInput:Li};class Hr extends t.Component{constructor(){super(...arguments),this.state=t.useState({openedColorPicker:void 0})}updateTitle(e){this.props.updateChart({title:e.target.value})}updateBaselineDescr(e){this.props.updateChart({baselineDescr:e.target.value})}openColorPicker(e){this.state.openedColorPicker=e}setColor(e,t){switch(t){case"backgroundColor":this.props.updateChart({background:e});break;case"baselineColorDown":this.props.updateChart({baselineColorDown:e});break;case"baselineColorUp":this.props.updateChart({baselineColorUp:e})}this.state.openedColorPicker=void 0}}Hr.template="o-spreadsheet-ScorecardChartDesignPanel",Hr.components={ColorPicker:kr};const Wr=new zo;Wr.add("line",{configuration:Vr,design:zr}).add("bar",{configuration:Ui,design:Lr}).add("pie",{configuration:Pi,design:$r}).add("gauge",{configuration:Pr,design:Ur}).add("scorecard",{configuration:Br,design:Hr}),sn`
492
492
  .o-chart {
493
493
  .o-panel {
494
494
  display: flex;
@@ -518,7 +518,7 @@
518
518
  border-bottom: 4px solid;
519
519
  }
520
520
  }
521
- `;class Gr extends t.Component{constructor(){super(...arguments),this.shouldUpdateChart=!0}get figureId(){return this.state.figureId}get sheetId(){return this.state.sheetId}setup(){const e=this.env.model.getters.getSelectedFigureId();if(!e)throw new Error(r("Cannot open the chart side panel while no chart are selected"));this.state=t.useState({panel:"configuration",figureId:e,sheetId:this.env.model.getters.getActiveSheetId()}),t.onWillUpdateProps((()=>{const e=this.env.model.getters.getSelectedFigureId();e&&e!==this.state.figureId?(this.state.figureId=e,this.state.sheetId=this.env.model.getters.getActiveSheetId(),this.shouldUpdateChart=!1):this.shouldUpdateChart=!0,this.env.model.getters.isChartDefined(this.sheetId,this.figureId)||this.props.onCloseSidePanel()}))}updateChart(e){if(!this.shouldUpdateChart)return;const t={...this.getChartDefinition(),...e};return this.env.model.dispatch("UPDATE_CHART",{definition:t,id:this.figureId,sheetId:this.sheetId})}onTypeChange(e){const t=this.env.model.getters.getContextCreationChart(this.sheetId,this.figureId);if(!t)throw new Error("Chart not defined.");const o=function(e,t){return Bo.get(t).getChartDefinitionFromContextCreation(e)}(t,e);this.env.model.dispatch("UPDATE_CHART",{definition:o,id:this.figureId,sheetId:this.sheetId})}get chartPanel(){const e=this.env.model.getters.getChartType(this.sheetId,this.figureId);if(!e)throw new Error("Chart not defined.");const t=Wr.get(e);if(!t)throw new Error(`Component is not defined for type ${e}`);return t}getChartDefinition(){return this.env.model.getters.getChartDefinition(this.sheetId,this.figureId)}get chartTypes(){return function(){const e={};for(const t of Bo.getKeys())e[t]=Bo.get(t).name;return e}()}activatePanel(e){this.state.panel=e}}Gr.template="o-spreadsheet-ChartPanel";function qr(e){e=`<svg xmlns="http://www.w3.org/2000/svg" ${e.slice(4)}`;const t=new Image;return t.src="data:image/svg+xml; charset=utf8, "+encodeURIComponent(e),t}const Zr={arrowGood:{template:"ARROW_UP",img:qr('<svg class="o-cf-icon arrow-up" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#00A04A" d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path></svg>')},arrowNeutral:{template:"ARROW_RIGHT",img:qr('<svg class="o-cf-icon arrow-right" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#F0AD4E" d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path></svg>')},arrowBad:{template:"ARROW_DOWN",img:qr('<svg class="o-cf-icon arrow-down" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#DC6965" d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path></svg>')},smileyGood:{template:"SMILE",img:qr('<svg class="o-cf-icon smile" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#00A04A" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"></path></svg>')},smileyNeutral:{template:"MEH",img:qr('<svg class="o-cf-icon meh" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#F0AD4E" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"></path></svg>')},smileyBad:{template:"FROWN",img:qr('<svg class="o-cf-icon frown" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#DC6965" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"></path></svg>')},dotGood:{template:"GREEN_DOT",img:qr('<svg class="o-cf-icon green-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#00A04A" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotNeutral:{template:"YELLOW_DOT",img:qr('<svg class="o-cf-icon yellow-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#F0AD4E" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotBad:{template:"RED_DOT",img:qr('<svg class="o-cf-icon red-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#DC6965" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')}},jr={arrows:{good:"arrowGood",neutral:"arrowNeutral",bad:"arrowBad"},smiley:{good:"smileyGood",neutral:"smileyNeutral",bad:"smileyBad"},dots:{good:"dotGood",neutral:"dotNeutral",bad:"dotBad"}};sn`
521
+ `;class Gr extends t.Component{constructor(){super(...arguments),this.shouldUpdateChart=!0}get figureId(){return this.state.figureId}get sheetId(){return this.state.sheetId}setup(){const e=this.env.model.getters.getSelectedFigureId();if(!e)throw new Error(r("Cannot open the chart side panel while no chart are selected"));this.state=t.useState({panel:"configuration",figureId:e,sheetId:this.env.model.getters.getActiveSheetId()}),t.onWillUpdateProps((()=>{const e=this.env.model.getters.getSelectedFigureId();e&&e!==this.state.figureId?(this.state.figureId=e,this.state.sheetId=this.env.model.getters.getActiveSheetId(),this.shouldUpdateChart=!1):this.shouldUpdateChart=!0,this.env.model.getters.isChartDefined(this.figureId)||this.props.onCloseSidePanel()}))}updateChart(e){if(!this.shouldUpdateChart)return;const t={...this.getChartDefinition(),...e};return this.env.model.dispatch("UPDATE_CHART",{definition:t,id:this.figureId,sheetId:this.sheetId})}onTypeChange(e){const t=this.env.model.getters.getContextCreationChart(this.figureId);if(!t)throw new Error("Chart not defined.");const o=function(e,t){return Bo.get(t).getChartDefinitionFromContextCreation(e)}(t,e);this.env.model.dispatch("UPDATE_CHART",{definition:o,id:this.figureId,sheetId:this.sheetId})}get chartPanel(){const e=this.env.model.getters.getChartType(this.figureId);if(!e)throw new Error("Chart not defined.");const t=Wr.get(e);if(!t)throw new Error(`Component is not defined for type ${e}`);return t}getChartDefinition(e=this.figureId){return this.env.model.getters.getChartDefinition(e)}get chartTypes(){return function(){const e={};for(const t of Bo.getKeys())e[t]=Bo.get(t).name;return e}()}activatePanel(e){this.state.panel=e}}Gr.template="o-spreadsheet-ChartPanel";function qr(e){e=`<svg xmlns="http://www.w3.org/2000/svg" ${e.slice(4)}`;const t=new Image;return t.src="data:image/svg+xml; charset=utf8, "+encodeURIComponent(e),t}const Zr={arrowGood:{template:"ARROW_UP",img:qr('<svg class="o-cf-icon arrow-up" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#00A04A" d="M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z"></path></svg>')},arrowNeutral:{template:"ARROW_RIGHT",img:qr('<svg class="o-cf-icon arrow-right" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#F0AD4E" d="M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z"></path></svg>')},arrowBad:{template:"ARROW_DOWN",img:qr('<svg class="o-cf-icon arrow-down" width="10" height="10" focusable="false" viewBox="0 0 448 512"><path fill="#DC6965" d="M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z"></path></svg>')},smileyGood:{template:"SMILE",img:qr('<svg class="o-cf-icon smile" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#00A04A" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm4 72.6c-20.8 25-51.5 39.4-84 39.4s-63.2-14.3-84-39.4c-8.5-10.2-23.7-11.5-33.8-3.1-10.2 8.5-11.5 23.6-3.1 33.8 30 36 74.1 56.6 120.9 56.6s90.9-20.6 120.9-56.6c8.5-10.2 7.1-25.3-3.1-33.8-10.1-8.4-25.3-7.1-33.8 3.1z"></path></svg>')},smileyNeutral:{template:"MEH",img:qr('<svg class="o-cf-icon meh" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#F0AD4E" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm8 144H160c-13.2 0-24 10.8-24 24s10.8 24 24 24h176c13.2 0 24-10.8 24-24s-10.8-24-24-24z"></path></svg>')},smileyBad:{template:"FROWN",img:qr('<svg class="o-cf-icon frown" width="10" height="10" focusable="false" viewBox="0 0 496 512"><path fill="#DC6965" d="M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 448c-110.3 0-200-89.7-200-200S137.7 56 248 56s200 89.7 200 200-89.7 200-200 200zm-80-216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm160-64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-80 128c-40.2 0-78 17.7-103.8 48.6-8.5 10.2-7.1 25.3 3.1 33.8 10.2 8.4 25.3 7.1 33.8-3.1 16.6-19.9 41-31.4 66.9-31.4s50.3 11.4 66.9 31.4c8.1 9.7 23.1 11.9 33.8 3.1 10.2-8.5 11.5-23.6 3.1-33.8C326 321.7 288.2 304 248 304z"></path></svg>')},dotGood:{template:"GREEN_DOT",img:qr('<svg class="o-cf-icon green-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#00A04A" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotNeutral:{template:"YELLOW_DOT",img:qr('<svg class="o-cf-icon yellow-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#F0AD4E" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')},dotBad:{template:"RED_DOT",img:qr('<svg class="o-cf-icon red-dot" width="10" height="10" focusable="false" viewBox="0 0 512 512"><path fill="#DC6965" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z"></path></svg>')}},jr={arrows:{good:"arrowGood",neutral:"arrowNeutral",bad:"arrowBad"},smiley:{good:"smileyGood",neutral:"smileyNeutral",bad:"smileyBad"},dots:{good:"dotGood",neutral:"dotNeutral",bad:"dotBad"}};sn`
522
522
  .o-icon-picker {
523
523
  position: absolute;
524
524
  z-index: ${ne.IconPicker};
@@ -894,7 +894,7 @@
894
894
  }
895
895
  }
896
896
  }
897
- `;class os extends t.Component{constructor(){super(...arguments),this.ctx=document.createElement("canvas").getContext("2d")}get runtime(){return this.env.model.getters.getChartRuntime(this.env.model.getters.getActiveSheetId(),this.props.figure.id)}get title(){return this.runtime.title}get keyValue(){return this.runtime.keyValue}get baseline(){return this.runtime.baselineDisplay}get baselineDescr(){const e=this.runtime.baselineDescr||"";return this.baseline&&e?" "+e:e}get baselineArrowDirection(){return this.runtime.baselineArrow}get backgroundColor(){return this.runtime.background}get primaryFontColor(){return this.runtime.fontColor}get secondaryFontColor(){return ht(this.primaryFontColor)<=.3?"#757575":"#bbbbbb"}get figure(){return this.props.figure}get chartStyle(){return`\n padding:${this.chartPadding}px;\n background:${this.backgroundColor};\n `}get chartContentStyle(){return`\n height:${this.getDrawableHeight()}px;\n `}get chartPadding(){return.02*this.props.figure.width}getTextStyles(){var e,t,o;const n=.96*this.props.figure.width,i=this.getWidestElement(),r=i.getElementMaxFontSize(this.getDrawableHeight(),this);let s=function(e,t,o,n=.25){let i=1;if(o(i)>e)return i;if(o(t)<e)return t;let r=(i+t)/2,s=o(r),a=0;for(;Math.abs(s-e)>n&&a<20;)s>=e?t=(i+t)/2:i=(i+t)/2,r=(i+t)/2,s=o(r),a++;return r}(n,r,(e=>i.getElementWidth(e,this.ctx,this)))/r;const a=(new is).getElementMaxFontSize(this.getDrawableHeight(),this)*s,l=(new ns).getElementMaxFontSize(this.getDrawableHeight(),this)*s;return{titleStyle:this.getTextStyle({fontSize:18,color:this.secondaryFontColor}),keyStyle:this.getTextStyle({fontSize:a,cellStyle:null===(e=this.runtime)||void 0===e?void 0:e.keyValueStyle,color:this.primaryFontColor}),baselineStyle:this.getTextStyle({fontSize:l}),baselineValueStyle:this.getTextStyle({fontSize:l,cellStyle:null===(t=this.runtime)||void 0===t?void 0:t.baselineStyle,color:(null===(o=this.runtime)||void 0===o?void 0:o.baselineColor)||this.secondaryFontColor}),baselineDescrStyle:this.getTextStyle({fontSize:.9*l,color:this.secondaryFontColor})}}getTextStyle(e){const t=function(e){const t={};if(!e)return t;if(e.bold&&(t["font-weight"]="bold"),e.italic&&(t["font-style"]="italic"),e.strikethrough||e.underline){let o=e.strikethrough?"line-through":"";o=e.underline?o+" underline":o,t["text-decoration"]=o}return e.textColor&&(t.color=e.textColor),t}(e.cellStyle);return t["font-size"]=`${e.fontSize}px`,t.display="inline-block",!t.color&&e.color&&(t.color=e.color),ln(t)}getDrawableHeight(){const e=2*this.chartPadding;let t=this.props.figure.height-e;return t-=this.title?18*ts:0,t}getWidestElement(){const e=new ns,t=new is;return e.getElementWidth(.35,this.ctx,this)>t.getElementWidth(.65,this.ctx,this)?e:t}}os.template="o-spreadsheet-ScorecardChart";class ns{getElementWidth(e,t,o){if(!o.runtime)return 0;const n=o.baseline,i="neutral"!==o.baselineArrowDirection?"A "+n:n;t.font=`${e}px ${G}`;let r=t.measureText(i).width;return t.font=`${.9*e}px ${G}`,r+=t.measureText(o.baselineDescr).width,r}getElementMaxFontSize(e,t){if(!t.runtime)return 0;return(""!==t.baseline||t.baselineDescr?.35*e:0)/ts}}class is{getElementWidth(e,t,o){if(!o.runtime)return 0;const n=o.keyValue||"";return t.font=`${e}px ${G}`,t.measureText(n).width}getElementMaxFontSize(e,t){if(!t.runtime)return 0;return(""!==t.baseline||t.baselineDescr?.65*e:e)/ts}}Ho.add("scorecard",os),sn`
897
+ `;class os extends t.Component{constructor(){super(...arguments),this.ctx=document.createElement("canvas").getContext("2d")}get runtime(){return this.env.model.getters.getChartRuntime(this.props.figure.id)}get title(){return this.runtime.title}get keyValue(){return this.runtime.keyValue}get baseline(){return this.runtime.baselineDisplay}get baselineDescr(){const e=this.runtime.baselineDescr||"";return this.baseline&&e?" "+e:e}get baselineArrowDirection(){return this.runtime.baselineArrow}get backgroundColor(){return this.runtime.background}get primaryFontColor(){return this.runtime.fontColor}get secondaryFontColor(){return ht(this.primaryFontColor)<=.3?"#757575":"#bbbbbb"}get figure(){return this.props.figure}get chartStyle(){return`\n padding:${this.chartPadding}px;\n background:${this.backgroundColor};\n `}get chartContentStyle(){return`\n height:${this.getDrawableHeight()}px;\n `}get chartPadding(){return.02*this.props.figure.width}getTextStyles(){var e,t,o;const n=.96*this.props.figure.width,i=this.getWidestElement(),r=i.getElementMaxFontSize(this.getDrawableHeight(),this);let s=function(e,t,o,n=.25){let i=1;if(o(i)>e)return i;if(o(t)<e)return t;let r=(i+t)/2,s=o(r),a=0;for(;Math.abs(s-e)>n&&a<20;)s>=e?t=(i+t)/2:i=(i+t)/2,r=(i+t)/2,s=o(r),a++;return r}(n,r,(e=>i.getElementWidth(e,this.ctx,this)))/r;const a=(new is).getElementMaxFontSize(this.getDrawableHeight(),this)*s,l=(new ns).getElementMaxFontSize(this.getDrawableHeight(),this)*s;return{titleStyle:this.getTextStyle({fontSize:18,color:this.secondaryFontColor}),keyStyle:this.getTextStyle({fontSize:a,cellStyle:null===(e=this.runtime)||void 0===e?void 0:e.keyValueStyle,color:this.primaryFontColor}),baselineStyle:this.getTextStyle({fontSize:l}),baselineValueStyle:this.getTextStyle({fontSize:l,cellStyle:null===(t=this.runtime)||void 0===t?void 0:t.baselineStyle,color:(null===(o=this.runtime)||void 0===o?void 0:o.baselineColor)||this.secondaryFontColor}),baselineDescrStyle:this.getTextStyle({fontSize:.9*l,color:this.secondaryFontColor})}}getTextStyle(e){const t=function(e){const t={};if(!e)return t;if(e.bold&&(t["font-weight"]="bold"),e.italic&&(t["font-style"]="italic"),e.strikethrough||e.underline){let o=e.strikethrough?"line-through":"";o=e.underline?o+" underline":o,t["text-decoration"]=o}return e.textColor&&(t.color=e.textColor),t}(e.cellStyle);return t["font-size"]=`${e.fontSize}px`,t.display="inline-block",!t.color&&e.color&&(t.color=e.color),ln(t)}getDrawableHeight(){const e=2*this.chartPadding;let t=this.props.figure.height-e;return t-=this.title?18*ts:0,t}getWidestElement(){const e=new ns,t=new is;return e.getElementWidth(.35,this.ctx,this)>t.getElementWidth(.65,this.ctx,this)?e:t}}os.template="o-spreadsheet-ScorecardChart";class ns{getElementWidth(e,t,o){if(!o.runtime)return 0;const n=o.baseline,i="neutral"!==o.baselineArrowDirection?"A "+n:n;t.font=`${e}px ${G}`;let r=t.measureText(i).width;return t.font=`${.9*e}px ${G}`,r+=t.measureText(o.baselineDescr).width,r}getElementMaxFontSize(e,t){if(!t.runtime)return 0;return(""!==t.baseline||t.baselineDescr?.35*e:0)/ts}}class is{getElementWidth(e,t,o){if(!o.runtime)return 0;const n=o.keyValue||"";return t.font=`${e}px ${G}`,t.measureText(n).width}getElementMaxFontSize(e,t){if(!t.runtime)return 0;return(""!==t.baseline||t.baselineDescr?.65*e:e)/ts}}Ho.add("scorecard",os),sn`
898
898
  .o-chart-container {
899
899
  width: 100%;
900
900
  height: 100%;
@@ -919,7 +919,7 @@
919
919
  }
920
920
  }
921
921
  }
922
- `;class rs extends t.Component{constructor(){super(...arguments),this.menuState=t.useState({isOpen:!1,position:null,menuItems:[]}),this.chartContainerRef=t.useRef("chartContainer"),this.menuButtonRef=t.useRef("menuButton"),this.menuButtonPosition=Sn(this.menuButtonRef),this.position=Sn(this.chartContainerRef)}getMenuItemRegistry(){const e=new Tn;return e.add("edit",{name:r("Edit"),sequence:1,action:()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.openSidePanel("ChartPanel")}}),e.add("copy",{name:r("Copy"),sequence:2,action:async()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.model.dispatch("COPY"),await this.env.clipboard.writeText(this.env.model.getters.getClipboardContent())}}),e.add("cut",{name:r("Cut"),sequence:3,action:async()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.model.dispatch("CUT"),await this.env.clipboard.writeText(this.env.model.getters.getClipboardContent())}}),e.add("delete",{name:r("Delete"),sequence:10,action:()=>{this.env.model.dispatch("DELETE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:this.props.figure.id}),this.props.sidePanelIsOpen&&this.env.toggleSidePanel("ChartPanel"),this.props.onFigureDeleted()}}),e}get chartType(){return this.env.model.getters.getChartType(this.env.model.getters.getActiveSheetId(),this.props.figure.id)}onContextMenu(e){const t={x:this.position.x+e.offsetX,y:this.position.y+e.offsetY};this.openContextMenu(t)}showMenu(){const e={x:this.menuButtonPosition.x-z,y:this.menuButtonPosition.y};this.openContextMenu(e)}openContextMenu(e){const t=this.getMenuItemRegistry();this.menuState.isOpen=!0,this.menuState.menuItems=t.getAll().filter((e=>e.isVisible(this.env))),this.menuState.position=e}get chartComponent(){const e=this.chartType,t=Ho.get(e);if(!t)throw new Error(`Component is not defined for type ${e}`);return t}}function ss(e,t,o=(()=>{})){const n=r=>{t(r),window.removeEventListener("mousedown",o),window.removeEventListener("mouseup",n),window.removeEventListener("dragstart",i),window.removeEventListener("mousemove",e),window.removeEventListener("wheel",e)};function i(e){e.preventDefault()}window.addEventListener("mousedown",o),window.addEventListener("mouseup",n),window.addEventListener("dragstart",i),window.addEventListener("mousemove",e),window.addEventListener("wheel",e)}function as(e,t,o,n=!1){let i,r,s,a,l,c=null;const h=e.model.getters,d=h.getActiveSheetId(),u=bn();let g,p;const f=o=>{if(i=o,c)return;const{x:s,y:m}=h.getMainViewportCoordinates();let{top:v,left:b,bottom:S,right:C}=h.getActiveMainViewport(),{scrollX:E,scrollY:w}=h.getActiveSheetDOMScrollInfo();const{xSplit:y,ySplit:x}=h.getPaneDivisions(d);let R=!1,I=Mt;const T=i.clientX-u.left;if(g=h.getColIndex(T),"vertical"!==n){const t=r.clientX-u.left,o=h.getEdgeScrollCol(T,t,a);if(o.canEdgeScroll){let t;switch(R=!0,I=Math.min(I,o.delay),o.direction){case"reset":g=y,t=y;break;case 1:g=C,t=b+1;break;case-1:for(g=b-1;e.model.getters.isColHidden(d,g);)g--;t=g}E=h.getColDimensions(d,t).start-s}}const A=i.clientY-u.top;if(p=h.getRowIndex(A),"horizontal"!==n){const t=r.clientY-u.top,o=h.getEdgeScrollRow(A,t,l);if(o.canEdgeScroll){let t;switch(R=!0,I=Math.min(I,o.delay),o.direction){case"reset":p=x,t=x;break;case 1:p=S,t=v+o.direction;break;case-1:for(p=v-1;e.model.getters.isRowHidden(d,p);)p--;t=p}w=e.model.getters.getRowDimensions(d,t).start-m}}R||(-1===p&&(p=A<0?0:h.getNumberRows(d)-1),-1===g&&T<0&&(g=T<0?0:h.getNumberCols(d)-1)),t(g,p,i),R&&(e.model.dispatch("SET_VIEWPORT_OFFSET",{offsetX:E,offsetY:w}),c=setTimeout((()=>{c=null,f(i)}),Math.round(I))),r=i};ss(f,(()=>{clearTimeout(c),o()}),(e=>{r=e,s=e,a=s.clientX-u.left,l=s.clientY-u.top}))}rs.template="o-spreadsheet-ChartFigure",rs.components={Menu:En},sn`
922
+ `;class rs extends t.Component{constructor(){super(...arguments),this.menuState=t.useState({isOpen:!1,position:null,menuItems:[]}),this.chartContainerRef=t.useRef("chartContainer"),this.menuButtonRef=t.useRef("menuButton"),this.menuButtonPosition=Sn(this.menuButtonRef),this.position=Sn(this.chartContainerRef)}getMenuItemRegistry(){const e=new Tn;return e.add("edit",{name:r("Edit"),sequence:1,action:()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.openSidePanel("ChartPanel")}}),e.add("copy",{name:r("Copy"),sequence:2,action:async()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.model.dispatch("COPY"),await this.env.clipboard.writeText(this.env.model.getters.getClipboardContent())}}),e.add("cut",{name:r("Cut"),sequence:3,action:async()=>{this.env.model.dispatch("SELECT_FIGURE",{id:this.props.figure.id}),this.env.model.dispatch("CUT"),await this.env.clipboard.writeText(this.env.model.getters.getClipboardContent())}}),e.add("delete",{name:r("Delete"),sequence:10,action:()=>{this.env.model.dispatch("DELETE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:this.props.figure.id}),this.props.sidePanelIsOpen&&this.env.toggleSidePanel("ChartPanel"),this.props.onFigureDeleted()}}),e}get chartType(){return this.env.model.getters.getChartType(this.props.figure.id)}onContextMenu(e){const t={x:this.position.x+e.offsetX,y:this.position.y+e.offsetY};this.openContextMenu(t)}showMenu(){const e={x:this.menuButtonPosition.x-z,y:this.menuButtonPosition.y};this.openContextMenu(e)}openContextMenu(e){const t=this.getMenuItemRegistry();this.menuState.isOpen=!0,this.menuState.menuItems=t.getAll().filter((e=>e.isVisible(this.env))),this.menuState.position=e}get chartComponent(){const e=this.chartType,t=Ho.get(e);if(!t)throw new Error(`Component is not defined for type ${e}`);return t}}function ss(e,t,o=(()=>{})){const n=r=>{t(r),window.removeEventListener("mousedown",o),window.removeEventListener("mouseup",n),window.removeEventListener("dragstart",i),window.removeEventListener("mousemove",e),window.removeEventListener("wheel",e)};function i(e){e.preventDefault()}window.addEventListener("mousedown",o),window.addEventListener("mouseup",n),window.addEventListener("dragstart",i),window.addEventListener("mousemove",e),window.addEventListener("wheel",e)}function as(e,t,o,n=!1){let i,r,s,a,l,c=null;const h=e.model.getters,d=h.getActiveSheetId(),u=bn();let g,p;const f=o=>{if(i=o,c)return;const{x:s,y:m}=h.getMainViewportCoordinates();let{top:v,left:b,bottom:S,right:C}=h.getActiveMainViewport(),{scrollX:E,scrollY:w}=h.getActiveSheetDOMScrollInfo();const{xSplit:y,ySplit:x}=h.getPaneDivisions(d);let R=!1,I=Mt;const T=i.clientX-u.left;if(g=h.getColIndex(T),"vertical"!==n){const t=r.clientX-u.left,o=h.getEdgeScrollCol(T,t,a);if(o.canEdgeScroll){let t;switch(R=!0,I=Math.min(I,o.delay),o.direction){case"reset":g=y,t=y;break;case 1:g=C,t=b+1;break;case-1:for(g=b-1;e.model.getters.isColHidden(d,g);)g--;t=g}E=h.getColDimensions(d,t).start-s}}const A=i.clientY-u.top;if(p=h.getRowIndex(A),"horizontal"!==n){const t=r.clientY-u.top,o=h.getEdgeScrollRow(A,t,l);if(o.canEdgeScroll){let t;switch(R=!0,I=Math.min(I,o.delay),o.direction){case"reset":p=x,t=x;break;case 1:p=S,t=v+o.direction;break;case-1:for(p=v-1;e.model.getters.isRowHidden(d,p);)p--;t=p}w=e.model.getters.getRowDimensions(d,t).start-m}}R||(-1===p&&(p=A<0?0:h.getNumberRows(d)-1),-1===g&&T<0&&(g=T<0?0:h.getNumberCols(d)-1)),t(g,p,i),R&&(e.model.dispatch("SET_VIEWPORT_OFFSET",{offsetX:E,offsetY:w}),c=setTimeout((()=>{c=null,f(i)}),Math.round(I))),r=i};ss(f,(()=>{clearTimeout(c),o()}),(e=>{r=e,s=e,a=s.clientX-u.left,l=s.clientY-u.top}))}rs.template="o-spreadsheet-ChartFigure",rs.components={Menu:En},sn`
923
923
  .o-autofill {
924
924
  height: 6px;
925
925
  width: 6px;
@@ -1363,7 +1363,7 @@
1363
1363
  onScroll.bind="onScroll"
1364
1364
  />`,Qg.defaultProps={position:{top:0}};const Jg={ROW:xi,COL:yi,CELL:wi};class ep extends t.Component{constructor(){super(...arguments),this.HEADER_HEIGHT=O,this.HEADER_WIDTH=M,this.keyDownMapping={ENTER:()=>{const e=this.env.model.getters.getActiveCell();!e||e.isEmpty()?this.props.onGridComposerCellFocused():this.props.onComposerContentFocused()},TAB:()=>this.env.model.selection.moveAnchorCell("right",1),"SHIFT+TAB":()=>this.env.model.selection.moveAnchorCell("left",1),F2:()=>{const e=this.env.model.getters.getActiveCell();!e||e.isEmpty()?this.props.onGridComposerCellFocused():this.props.onComposerContentFocused()},DELETE:()=>{this.env.model.dispatch("DELETE_CONTENT",{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},BACKSPACE:()=>{this.env.model.dispatch("DELETE_CONTENT",{sheetId:this.env.model.getters.getActiveSheetId(),target:this.env.model.getters.getSelectedZones()})},"CTRL+A":()=>this.env.model.selection.loopSelection(),"CTRL+S":()=>{var e,t;null===(t=(e=this.props).onSaveRequested)||void 0===t||t.call(e)},"CTRL+Z":()=>this.env.model.dispatch("REQUEST_UNDO"),"CTRL+Y":()=>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}}),"ALT+=":()=>{var e;const t=this.env.model.getters.getActiveSheetId(),o=this.env.model.getters.getSelectedZone(),{anchor:n}=this.env.model.getters.getSelection(),i=this.env.model.getters.getAutomaticSums(t,o,n.cell);if(this.env.model.getters.isSingleCellOrMerge(t,o)||this.env.model.getters.isEmpty(t,o)&&i.length<=1){const o=(null===(e=i[0])||void 0===e?void 0:e.zone)?this.env.model.getters.zoneToXC(t,i[0].zone):"",n=`=SUM(${o})`;this.props.onGridComposerCellFocused(n,{start:5,end:5+o.length})}else this.env.model.dispatch("SUM_SELECTION")},"CTRL+HOME":()=>{const e=this.env.model.getters.getActiveSheetId(),{col:t,row:o}=this.env.model.getters.getNextVisibleCellPosition(e,0,0);this.env.model.selection.selectCell(t,o)},"CTRL+END":()=>{const e=this.env.model.getters.getActiveSheetId(),t=this.env.model.getters.findVisibleHeader(e,"COL",Fe(0,this.env.model.getters.getNumberCols(e)).reverse()),o=this.env.model.getters.findVisibleHeader(e,"ROW",Fe(0,this.env.model.getters.getNumberRows(e)).reverse());this.env.model.selection.selectCell(t,o)},"SHIFT+ ":()=>{const e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),left:0,right:this.env.model.getters.getNumberCols(e)-1},o=this.env.model.getters.getPosition();this.env.model.selection.selectZone({cell:o,zone:t})},"CTRL+ ":()=>{const e=this.env.model.getters.getActiveSheetId(),t={...this.env.model.getters.getSelectedZone(),top:0,bottom:this.env.model.getters.getNumberRows(e)-1},o=this.env.model.getters.getPosition();this.env.model.selection.selectZone({cell:o,zone:t})},"CTRL+SHIFT+ ":()=>{this.env.model.selection.selectAll()},"SHIFT+PAGEDOWN":()=>{this.env.model.dispatch("ACTIVATE_NEXT_SHEET")},"SHIFT+PAGEUP":()=>{this.env.model.dispatch("ACTIVATE_PREVIOUS_SHEET")},PAGEDOWN:()=>this.env.model.dispatch("SHIFT_VIEWPORT_DOWN"),PAGEUP:()=>this.env.model.dispatch("SHIFT_VIEWPORT_UP")}}setup(){this.menuState=t.useState({isOpen:!1,position:null,menuItems:[]}),this.gridRef=t.useRef("grid"),this.hiddenInput=t.useRef("hiddenInput"),this.canvasPosition=Sn(this.gridRef),this.hoveredCell=t.useState({col:void 0,row:void 0}),t.useExternalListener(document.body,"cut",this.copy.bind(this,!0)),t.useExternalListener(document.body,"copy",this.copy.bind(this,!1)),t.useExternalListener(document.body,"paste",this.paste),t.onMounted((()=>this.focus())),this.props.exposeFocus((()=>this.focus())),Wg("canvas",this.env.model,(()=>this.env.model.getters.getSheetViewDimensionWithHeaders())),t.useEffect((()=>this.focus()),(()=>[this.env.model.getters.getActiveSheetId()])),this.onMouseWheel=Gg(((e,t)=>{this.moveCanvas(e,t),this.hoveredCell.col=void 0,this.hoveredCell.row=void 0}))}onCellHovered({col:e,row:t}){this.hoveredCell.col=e,this.hoveredCell.row=t}get gridOverlayDimensions(){return"\n top: 26px;\n left: 48px;\n height: calc(100% - 41px);\n width: calc(100% - 63px);\n "}onClosePopover(){this.closeOpenedPopover(),this.focus()}focus(){this.env.model.getters.getSelectedFigureId()||"inactive"!==this.env.model.getters.getEditionMode()||this.hiddenInput.el.focus()}get gridEl(){if(!this.gridRef.el)throw new Error("Grid el is not defined.");return this.gridRef.el}getAutofillPosition(){const e=this.env.model.getters.getSelectedZone(),t=this.env.model.getters.getVisibleRect(e);return{left:t.x+t.width-4,top:t.y+t.height-4}}isAutoFillActive(){const 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!(0===t.width||0===t.height)}onGridResized({height:e,width:t}){this.env.model.dispatch("RESIZE_SHEETVIEW",{width:t,height:e,gridOffsetX:M,gridOffsetY:O})}moveCanvas(e,t){const{scrollX:o,scrollY:n}=this.env.model.getters.getActiveSheetDOMScrollInfo();this.env.model.dispatch("SET_VIEWPORT_OFFSET",{offsetX:Math.max(o+e,0),offsetY:Math.max(n+t,0)})}getClientPositionKey(e){var t,o,n;return`${e.id}-${null===(t=e.position)||void 0===t?void 0:t.sheetId}-${null===(o=e.position)||void 0===o?void 0:o.col}-${null===(n=e.position)||void 0===n?void 0:n.row}`}isCellHovered(e,t){return this.hoveredCell.col===e&&this.hoveredCell.row===t}onCellClicked(e,t,{ctrlKey:o,shiftKey:n}){o&&this.env.model.dispatch("PREPARE_SELECTION_INPUT_EXPANSION"),this.closeOpenedPopover(),"editing"===this.env.model.getters.getEditionMode()&&this.env.model.dispatch("STOP_EDITION"),n?this.env.model.selection.setAnchorCorner(e,t):o?this.env.model.selection.addCellToSelection(e,t):this.env.model.selection.selectCell(e,t);let i=e,r=t;as(this.env,((e,t)=>{(e!==i&&-1!=e||t!==r&&-1!=t)&&(i=-1===e?i:e,r=-1===t?r:t,this.env.model.selection.setAnchorCorner(i,r))}),(()=>{this.env.model.dispatch("STOP_SELECTION_INPUT"),this.env.model.getters.isPaintingFormat()&&this.env.model.dispatch("PASTE",{target:this.env.model.getters.getSelectedZones()})}))}onCellDoubleClicked(e,t){const o=this.env.model.getters.getActiveSheetId();({col:e,row:t}=this.env.model.getters.getMainCellPosition(o,e,t));const n=this.env.model.getters.getCell(o,e,t);!n||n.isEmpty()?this.props.onGridComposerCellFocused():this.props.onComposerContentFocused()}closeOpenedPopover(){this.env.model.dispatch("CLOSE_CELL_POPOVER")}processArrows(e){e.preventDefault(),e.stopPropagation(),this.closeOpenedPopover();const t={ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up"}[e.key];e.shiftKey?this.env.model.selection.resizeAnchorZone(t,e.ctrlKey?"end":1):this.env.model.selection.moveAnchorCell(t,e.ctrlKey?"end":1),this.env.model.getters.isPaintingFormat()&&this.env.model.dispatch("PASTE",{target:this.env.model.getters.getSelectedZones()})}onKeydown(e){if(e.key.startsWith("Arrow"))return void this.processArrows(e);let t="";e.ctrlKey&&(t+="CTRL+"),e.metaKey&&(t+="CTRL+"),e.altKey&&(t+="ALT+"),e.shiftKey&&(t+="SHIFT+"),t+=e.key.toUpperCase();let o=this.keyDownMapping[t];return o?(e.preventDefault(),e.stopPropagation(),void o()):void 0}onInput(e){e.data&&(e.preventDefault(),e.stopPropagation(),this.props.onGridComposerCellFocused(e.data))}onInputContextMenu(e){e.preventDefault();const t=this.env.model.getters.getSelectedZone(),{left:o,top:n}=t;let i="CELL";this.env.model.dispatch("STOP_EDITION"),this.env.model.getters.getActiveCols().has(o)?i="COL":this.env.model.getters.getActiveRows().has(n)&&(i="ROW");const{x:r,y:s,width:a,height:l}=this.env.model.getters.getVisibleRect(t);this.toggleContextMenu(i,r+a,s+l)}onCellRightClicked(e,t,{x:o,y:n}){const i=this.env.model.getters.getSelectedZones();let r="CELL";To(e,t,i[i.length-1])?this.env.model.getters.getActiveCols().has(e)?r="COL":this.env.model.getters.getActiveRows().has(t)&&(r="ROW"):(this.env.model.selection.getBackToDefault(),this.env.model.selection.selectCell(e,t)),this.toggleContextMenu(r,o,n)}toggleContextMenu(e,t,o){this.closeOpenedPopover(),this.menuState.isOpen=!0,this.menuState.position={x:t,y:o},this.menuState.menuItems=Jg[e].getAll().filter((e=>!e.isVisible||e.isVisible(this.env)))}copy(e,t){if(!this.gridEl.contains(document.activeElement))return;if("inactive"!==this.env.model.getters.getEditionMode())return;e?Vn(this.env):this.env.model.dispatch("COPY");const o=this.env.model.getters.getClipboardContent();t.clipboardData.setData("text/plain",o),t.preventDefault()}paste(e){if(!this.gridEl.contains(document.activeElement))return;const t=e.clipboardData;if(t.types.indexOf("text/plain")>-1){const e=t.getData("text/plain"),o=this.env.model.getters.getSelectedZones();this.env.model.getters.getClipboardContent()===e?Gn(this.env,o):qn(this.env,o,e)}}closeMenu(){this.menuState.isOpen=!1,this.focus()}}ep.template="o-spreadsheet-Grid",ep.components={GridComposer:Mg,GridOverlay:Pg,GridPopover:Ug,HeadersOverlay:Hg,Menu:En,Autofill:ls,ClientTag:hs,Highlight:jg,Popover:Cn,VerticalScrollBar:Qg,HorizontalScrollBar:Kg,FilterIconsOverlay:Dg};class tp{constructor(e,t,o){this.id=e,this.style=o.style,this.format=o.format,this.lazyEvaluated=t.map((e=>({...e,format:o.format||e.format})))}isFormula(){return!1}isLink(){return!1}isEmpty(){return!1}get evaluated(){return this.lazyEvaluated()}get formattedValue(){return Ut(this.evaluated.value,this.evaluated.format)}get composerContent(){return this.content}get defaultAlign(){switch(this.evaluated.type){case qo.number:case qo.empty:return"right";case qo.boolean:case qo.error:return"center";case qo.text:return"left"}}get isAutoSummable(){var e;switch(this.evaluated.type){case qo.empty:case qo.text:return!0;case qo.number:return!(null===(e=this.evaluated.format)||void 0===e?void 0:e.match(j));case qo.error:case qo.boolean:return!1}}}class op extends tp{constructor(e,t={}){super(e,Ke({value:"",type:qo.empty}),t),this.content=""}isEmpty(){return!0}}class np extends tp{constructor(e,t,o={}){super(e,Ke({value:t,type:qo.number}),o),this.content=Ut(this.evaluated.value)}get composerContent(){var e;return(null===(e=this.format)||void 0===e?void 0:e.includes("%"))?100*this.evaluated.value+"%":super.composerContent}}class ip extends tp{constructor(e,t,o={}){super(e,Ke({value:t,type:qo.boolean}),o),this.content=this.evaluated.value?"TRUE":"FALSE"}}class rp extends tp{constructor(e,t,o={}){super(e,Ke({value:t,type:qo.text}),o),this.content=this.evaluated.value}}class sp extends np{constructor(e,t,o){super(e,t,o),this.format=o.format}get composerContent(){return Ut(this.evaluated.value,this.format)}}class ap extends tp{constructor(e,t,o={}){var n;const r=Be(t);o={...o,style:{...o.style,textColor:(null===(n=o.style)||void 0===n?void 0:n.textColor)||x}},r.label=i(r.label),super(e,Ke({value:r.label,type:qo.text}),o),this.link=r,this.content=t}isLink(){return!0}get composerContent(){return this.link.label}}class lp extends ap{constructor(e,t,o={}){super(e,t,o),this.link.url=this.withHttp(this.link.url),this.link.isExternal=!0,this.content=ze(this.link.label,this.link.url),this.urlRepresentation=this.link.url,this.isUrlEditable=!0}action(e){window.open(this.link.url,"_blank")}withHttp(e){return/^https?:\/\//i.test(e)?e:`https://${e}`}}class cp extends ap{constructor(e,t,o={},n){super(e,t,o),this.sheetName=n,this.sheetId=qe(this.link.url),this.isUrlEditable=!1}action(e){e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e.model.getters.getActiveSheetId(),sheetIdTo:this.sheetId})}get urlRepresentation(){return this.sheetName(this.sheetId)||r("Invalid sheet")}}class hp extends tp{constructor(e,t,o,n,i){super(t,Ke({value:"Loading...",type:qo.text}),i),this.buildFormulaString=e,this.compiledFormula=o,this.dependencies=n}get content(){return this.buildFormulaString(this)}isFormula(){return!0}assignEvaluation(e){this.lazyEvaluated=e.map((e=>{if(e instanceof c)return{value:e.errorType,type:qo.error,error:e};const{value:t,format:o}=e;switch(typeof t){case"number":return{value:t||0,format:o,type:qo.number};case"boolean":return{value:t,format:o,type:qo.boolean};case"string":return{value:t,format:o,type:qo.text};case"object":return{value:0,format:o,type:qo.number};default:return{value:"",type:qo.empty}}}))}}class dp extends tp{constructor(e,t,o,n){super(e,Ke({value:o.errorType,type:qo.error,error:o}),n),this.content=t}}function up(e){return""===e?"":ro(e)?ao(e):$e(e)?"TRUE"===e.toUpperCase():Le(e)?pe(e).value:e}_n.add("Formula",{sequence:10,match:e=>e.startsWith("="),createCell:(e,t,o,n,i)=>{const r=lg(t),s=r.dependencies.map((e=>i.getRangeFromSheetXC(n,e)));return new hp((e=>i.buildFormulaContent(n,e)),e,r,s,o)}}).add("Empty",{sequence:20,match:e=>""===e,createCell:(e,t,o)=>new op(e,o)}).add("NumberWithDateTimeFormat",{sequence:25,match:(e,t)=>!!t&&ro(e)&&function(e){try{return Ht(1,e),!0}catch(e){return!1}}(t),createCell:(e,t,o)=>{const n=o.format;return new sp(e,ao(t),{...o,format:n})}}).add("Number",{sequence:30,match:e=>ro(e),createCell:(e,t,o)=>(o.format||(o.format=function(e){const t=e.includes(".")?"0.00":"0",o=e.match(/[\$€]/);if(o){const n=e.match(/[\d]/),i="[$"+o.values().next().value+"]";return n.index<o.index?"#,##"+t+i:i+"#,##"+t}if(e.includes("%"))return t+"%";return}(t)),new np(e,ao(t),o))}).add("Boolean",{sequence:40,match:e=>$e(e),createCell:(e,t,o)=>new ip(e,"TRUE"===t.toUpperCase(),o)}).add("DateTime",{sequence:50,match:e=>Le(e),createCell:(e,t,o)=>{const n=pe(t),i=o.format||n.format;return new sp(e,n.value,{...o,format:i})}}).add("MarkdownSheetLink",{sequence:60,match:e=>We(e),createCell:(e,t,o,n,i)=>new cp(e,t,o,(e=>i.tryGetSheetName(e)))}).add("MarkdownLink",{sequence:70,match:e=>Ve(e),createCell:(e,t,o)=>new lp(e,t,o)}).add("WebLink",{sequence:80,match:e=>{return t=e,Ue.test(t);var t},createCell:(e,t,o)=>new lp(e,ze(t,t),o)});class gp{constructor(e){this.xmlString=e}toString(){return this.xmlString}}const pp=["areaChart","area3DChart","lineChart","line3DChart","stockChart","radarChart","scatterChart","pieChart","pie3DChart","doughnutChart","barChart","bar3DChart","ofPieChart","surfaceChart","surface3DChart","bubbleChart"],fp="000000",mp={arrow:"3Arrows",smiley:"3Symbols",dot:"3TrafficLights1"},vp={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"},bp="http://schemas.openxmlformats.org/drawingml/2006/main",Sp="http://schemas.openxmlformats.org/drawingml/2006/chart",Cp={workbook:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",sheet:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+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"},Ep={document:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",sheet:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet",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"},wp="http://schemas.openxmlformats.org/officeDocument/2006/relationships",yp=.75,xp=.1317,Rp=8.43,Ip=12.75,Tp=30,Ap=100,Op=164,Mp={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}]},Np=["ACOT","ACOTH","AGGREGATE","ARABIC","BASE","BETA.DIST","BETA.INV","BINOM.DIST","BINOM.DIST.RANGE","BINOM.INV","BITAND","BITLSHIFT","BITOR","BITRSHIFT","BITXOR","CEILING.MATH","CEILING.PRECISE","CHISQ.DIST","CHISQ.DIST.RT","CHISQ.INV","CHISQ.INV.RT","CHISQ.TEST","COMBINA","CONCAT","CONFIDENCE.NORM","CONFIDENCE.T","COT","COTH","COVARIANCE.P","COVARIANCE.S","CSC","CSCH","DAYS","DECIMAL","ERF.PRECISE","ERFC.PRECISE","EXPON.DIST","F.DIST","F.DIST.RT","F.INV","F.INV.RT","F.TEST","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","HYPGEOM.DIST","IFNA","IFS","IMCOSH","IMCOT","IMCSC","IMCSCH","IMSEC","IMSECH","IMSINH","IMTAN","ISFORMULA","ISOWEEKNUM","LOGNORM.DIST","LOGNORM.INV","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","QUARTILE.EXC","QUARTILE.INC","QUERYSTRING","RANK.AVG","RANK.EQ","RRI","SEC","SECH","SHEET","SHEETS","SKEW.P","STDEV.P","STDEV.S","SWITCH","T.DIST","T.DIST.2T","T.DIST.RT","T.INV","T.INV.2T","T.TEST","TEXTJOIN","UNICHAR","UNICODE","VAR.P","VAR.S","WEBSERVICE","WEIBULL.DIST","XOR","Z.TEST"],_p="[Content_Types].xml";var Fp;!function(e){e.DiagonalBorderNotSupported="Diagonal Borders",e.BorderStyleNotSupported="Border style",e.FillStyleNotSupported="Fill Style",e.FontNotSupported="Font",e.HorizontalAlignmentNotSupported="Horizontal Alignment",e.VerticalAlignmentNotSupported="Vertical Alignments",e.MultipleRulesCfNotSupported="Multiple rules conditional formats",e.CfTypeNotSupported="Conditional format type",e.CfFormatBorderNotSupported="Borders in conditional formats",e.CfFormatAlignmentNotSupported="Alignment in conditional formats",e.CfFormatNumFmtNotSupported="Num formats in conditional formats",e.CfIconSetEmptyIconNotSupported="IconSets with empty icons",e.BadlyFormattedHyperlink="Badly formatted hyperlink",e.NumFmtIdNotSupported="Number format"}(Fp||(Fp={}));class Dp{constructor(){this._parsingWarnings=new Set,this._conversionWarnings=new Set}addParsingWarning(e){this._parsingWarnings.add(e)}addConversionWarning(e){this._conversionWarnings.add(e)}get warnings(){return[...this._parsingWarnings,...this._conversionWarnings]}generateNotSupportedWarning(e,t,o){let n=`${e} ${t?'"'+t+'" is':"are"} not yet supported. `;o&&(n+=`Only ${o.join(", ")} are currently supported.`),this._conversionWarnings.has(n)||this._conversionWarnings.add(n)}}const kp=["thin"],$p=["general","left","center","right"],Lp=["Arial"],Pp=["solid"],Up=["expression","cellIs","colorScale","iconSet","containsText","notContainsText","beginsWith","endsWith","containsBlanks","notContainsBlanks"],Vp={b:"boolean",d:"date",e:"error",inlineStr:"inlineStr",n:"number",s:"sharedString",str:"str"},zp={dashDot:"thin",dashDotDot:"thin",dashed:"thin",dotted:"thin",double:"thin",hair:"thin",medium:"thin",mediumDashDot:"thin",mediumDashDotDot:"thin",mediumDashed:"thin",none:void 0,slantDashDot:"thin",thick:"thin",thin:"thin"},Bp={general:void 0,left:"left",center:"center",right:"right",fill:"left",justify:"left",centerContinuous:"center",distributed:"center"};const Hp={aboveAverage:void 0,expression:void 0,cellIs:void 0,colorScale:void 0,dataBar:void 0,iconSet:void 0,top10:void 0,uniqueValues:void 0,duplicateValues:void 0,containsText:"ContainsText",notContainsText:"NotContains",beginsWith:"BeginsWith",endsWith:"EndsWith",containsBlanks:"IsEmpty",notContainsBlanks:"IsNotEmpty",containsErrors:void 0,notContainsErrors:void 0,timePeriod:void 0},Wp={num:"number",percent:"percentage",max:"value",min:"value",percentile:"percentile",formula:"formula"},Gp={NoIcons:void 0,"3Arrows":"arrows","3ArrowsGray":"arrows","3Symbols":"smiley","3Symbols2":"smiley","3Signs":"dots","3Flags":"dots","3TrafficLights1":"dots","3TrafficLights2":"dots","4Arrows":"arrows","4ArrowsGray":"arrows","4RedToBlack":"dots","4Rating":"smiley","4TrafficLights":"dots","5Arrows":"arrows","5ArrowsGray":"arrows","5Rating":"smiley","5Quarters":"dots","3Stars":"smiley","3Triangles":"arrows","5Boxes":"dots"},qp={b:"bottom",t:"top",l:"left",r:"right",tr:"right"},Zp={areaChart:void 0,area3DChart:void 0,lineChart:"line",line3DChart:void 0,stockChart:void 0,radarChart:void 0,scatterChart:void 0,pieChart:"pie",pie3DChart:void 0,doughnutChart:"pie",barChart:"bar",bar3DChart:void 0,ofPieChart:void 0,surfaceChart:void 0,surface3DChart:void 0,bubbleChart:void 0},jp={1:"AVERAGE",2:"COUNT",3:"COUNTA",4:"MAX",5:"MIN",6:"PRODUCT",7:"STDEV",8:"STDEVP",9:"SUM",10:"VAR",11:"VARP",101:"AVERAGE",102:"COUNT",103:"COUNTA",104:"MAX",105:"MIN",106:"PRODUCT",107:"STDEV",108:"STDEVP",109:"SUM",110:"VAR",111:"VARP"},Xp={0:"",1:"0",2:"0.00",3:"#,#00",4:"#,##0.00",9:"0%",10:"0.00%",11:void 0,12:void 0,13:void 0,14:"m/d/yyyy",15:"m/d/yyyy",16:"m/d/yyyy",17:"m/d/yyyy",18:"hh:mm:ss a",19:"hh:mm:ss a",20:"hhhh:mm:ss",21:"hhhh:mm:ss",22:"m/d/yy h:mm",37:void 0,38:void 0,39:void 0,40:void 0,45:"hhhh:mm:ss",46:"hhhh:mm:ss",47:"hhhh:mm:ss",48:void 0,49:void 0},Yp={0:1,"0.00":2,"#,#00":3,"#,##0.00":4,"0%":9,"0.00%":10,"0.00E+00":11,"# ?/?":12,"# ??/??":13,"mm-dd-yy":14,"d-mm-yy":15,"mm-yy":16,"mmm-yy":17,"h:mm AM/PM":18,"h:mm:ss AM/PM":19,"h:mm":20,"h:mm:ss":21,"m/d/yy h:mm":22,"#,##0 ;(#,##0)":37,"#,##0 ;[Red](#,##0)":38,"#,##0.00;(#,##0.00)":39,"#,##0.00;[Red](#,##0.00)":40,"mm:ss":45,"[h]:mm:ss":46,"mmss.0":47,"##0.0E+0":48,"@":49,"hh:mm:ss a":19},Kp={0:"000000",1:"FFFFFF",2:"FF0000",3:"00FF00",4:"0000FF",5:"FFFF00",6:"FF00FF",7:"00FFFF",8:"000000",9:"FFFFFF",10:"FF0000",11:"00FF00",12:"0000FF",13:"FFFF00",14:"FF00FF",15:"00FFFF",16:"800000",17:"008000",18:"000080",19:"808000",20:"800080",21:"008080",22:"C0C0C0",23:"808080",24:"9999FF",25:"993366",26:"FFFFCC",27:"CCFFFF",28:"660066",29:"FF8080",30:"0066CC",31:"CCCCFF",32:"000080",33:"FF00FF",34:"FFFF00",35:"00FFFF",36:"800080",37:"800000",38:"008080",39:"0000FF",40:"00CCFF",41:"CCFFFF",42:"CCFFCC",43:"FFFF99",44:"99CCFF",45:"FF99CC",46:"CC99FF",47:"FFCC99",48:"3366FF",49:"33CCCC",50:"99CC00",51:"FFCC00",52:"FF9900",53:"FF6600",54:"666699",55:"969696",56:"003366",57:"339966",58:"003300",59:"333300",60:"993300",61:"993366",62:"333399",63:"333333",64:"000000",65:"FFFFFF"};function Qp(e){if(!e)return;let t;if(e.rgb)t=e.rgb;else if(e.auto)t=fp;else{if(!e.indexed)return;t=Kp[e.indexed]}var o;return t=6===(o=t).length?"#"+o+"FF":"#"+o.slice(2)+o.slice(0,2),e.tint&&(t=function(e,t){const o=ut(e),n=pt(o);t<0&&(n.l=n.l*(1+t));t>0&&(n.l=n.l*(1-t)+(100-100*(1-t)));return dt(gt(n))}(t,e.tint)),t=t.toUpperCase(),9===t.length&&t.endsWith("FF")&&(t=t.slice(0,7)),t}function Jp(e,t){const o=e.split("/"),n=t.split("/");let i="",r=0;for(let e=0;e<o.length-1;e++)o[e]===n[e]?r++:i+="../";return i+=n.slice(r).join("/"),i}function ef(e,t=0){const o={};for(let n=0;n<e.length;n++)e[n]&&(o[n+t]=e[n]);return o}function tf(e){const t=[];for(let o of Object.keys(e).map(Number))t[o]=e[o];return t}function of(e){return e.replace(/_x([0-9a-zA-Z]{4})_/g,((e,t)=>String.fromCharCode(parseInt(t,16))))}function nf(e,t){const o=e.borders.map((e=>{!function(e,t){e.diagonal&&t.generateNotSupportedWarning(Fp.DiagonalBorderNotSupported)}(e,t);const o={top:rf(e.top,t),bottom:rf(e.bottom,t),left:rf(e.left,t),right:rf(e.right,t)};return Object.keys(o).forEach((e=>void 0===o[e]&&delete o[e])),o}));return ef(o,1)}function rf(e,t){if(!e)return;!function(e,t){kp.includes(e.style)||t.generateNotSupportedWarning(Fp.BorderStyleNotSupported,e.style,kp)}(e,t);const o=zp[e.style];return o?[o,Qp(e.color)]:void 0}function sf(e,t){return ef(e.styles.map((o=>af({fontStyle:e.fonts[o.fontId],fillStyle:e.fills[o.fillId],alignment:o.alignment},t))),1)}function af(e,t){var o,n,i,r,s,a,l,c,h,d,u,g;return function(e,t,o){e&&e.name&&!Lp.includes(e.name)&&o.generateNotSupportedWarning(Fp.FontNotSupported,e.name,Lp);t&&t.patternType&&!Pp.includes(t.patternType)&&o.generateNotSupportedWarning(Fp.FillStyleNotSupported,t.patternType,Pp)}(null==e?void 0:e.fontStyle,null==e?void 0:e.fillStyle,t),function(e,t){e&&!$p.includes(e)&&t.generateNotSupportedWarning(Fp.HorizontalAlignmentNotSupported,e,$p)}(null===(o=null==e?void 0:e.alignment)||void 0===o?void 0:o.horizontal,t),function(e,t){e&&t.generateNotSupportedWarning(Fp.VerticalAlignmentNotSupported)}(null===(n=null==e?void 0:e.alignment)||void 0===n?void 0:n.vertical,t),{bold:null===(i=e.fontStyle)||void 0===i?void 0:i.bold,italic:null===(r=e.fontStyle)||void 0===r?void 0:r.italic,strikethrough:null===(s=e.fontStyle)||void 0===s?void 0:s.strike,underline:null===(a=e.fontStyle)||void 0===a?void 0:a.underline,align:(null===(l=e.alignment)||void 0===l?void 0:l.horizontal)?Bp[e.alignment.horizontal]:void 0,fillColor:"solid"===(null===(c=e.fillStyle)||void 0===c?void 0:c.patternType)?Qp(null===(h=e.fillStyle)||void 0===h?void 0:h.fgColor):Qp(null===(d=e.fillStyle)||void 0===d?void 0:d.bgColor),textColor:Qp(null===(u=e.fontStyle)||void 0===u?void 0:u.color),fontSize:(null===(g=e.fontStyle)||void 0===g?void 0:g.size)?hf(e.fontStyle.size):void 0}}function lf(e,t){const o=[];for(let n of e.styles){const i=cf(n.numFmtId,e.numFmts,t);i&&(o[n.numFmtId]=i)}return ef(o,1)}function cf(e,t,o){var n,i,r;if(0===e)return;let s=Xp[e]||(null===(n=t.find((t=>t.id===e)))||void 0===n?void 0:n.format);if(s)try{let e=s.replace(/(.*?);.*/,"$1");e=e.replace(/\[(.*)-[A-Z0-9]{3}\]/g,"[$1]"),e=e.replace(/\[\$\]/g,"");const t=(null===(i=e.match(/"/g))||void 0===i?void 0:i.length)||0;if(t/2+((null===(r=e.match(/\[/g))||void 0===r?void 0:r.length)||0)>1)throw new Error("Multiple escaped blocks in format");return e=e.replace(/"(.*)"/g,"[$$$1]"),e=e.replace(/_.{1}/g,""),e=e.replace(/\*.{1}/g,""),e=e.replace(/\\ /g," "),Ut(0,e),e}catch(e){}o.generateNotSupportedWarning(Fp.NumFmtIdNotSupported,s||`nmFmtId ${e}`)}function hf(e){return Object.keys(re).map(Number).reduce(((t,o)=>Math.abs(o-e)<Math.abs(t-e)?o:t))}function df(e,t,o){const n=[];let i=1;for(let s of e){if(0===s.cfRules.length)continue;ff(s,t,o);const e=s.cfRules[0];let a;const l=[];if(void 0!==e.dxfId||"colorScale"===e.type||"iconSet"===e.type){switch(e.type){case"aboveAverage":case"containsErrors":case"notContainsErrors":case"dataBar":case"duplicateValues":case"expression":case"top10":case"uniqueValues":case"timePeriod":continue;case"colorScale":const t=uf(i++,s);t&&n.push(t);continue;case"iconSet":const c=gf(i++,s,o);c&&n.push(c);continue;case"containsText":case"notContainsText":case"beginsWith":case"endsWith":if(!e.text)continue;a=Hp[e.type],l.push(e.text);break;case"containsBlanks":case"notContainsBlanks":a=Hp[e.type];break;case"cellIs":if(!e.operator||!e.formula||0===e.formula.length)continue;a=(r=e.operator).slice(0,1).toUpperCase()+r.slice(1),l.push(e.formula[0]),2===e.formula.length&&l.push(e.formula[1])}a&&void 0!==e.dxfId&&n.push({id:(i++).toString(),ranges:s.sqref,stopIfTrue:e.stopIfTrue,rule:{type:"CellIsRule",operator:a,values:l,style:af({fontStyle:t[e.dxfId].font,fillStyle:t[e.dxfId].fill},o)}})}}var r;return n}function uf(e,t){const o=t.cfRules[0].colorScale;if(!o||o.cfvos.length!==o.colors.length||o.cfvos.length<2||o.cfvos.length>3)return;const n=[];for(let e=0;e<o.cfvos.length;e++)n.push({color:(i=Qp(o.colors[e])||"#FFFFFF",9===i.length&&(i=i.slice(0,7)),parseInt(i.replace("#",""),16)),type:Wp[o.cfvos[e].type],value:o.cfvos[e].value});var i;const r=n[0],s=2===n.length?n[1]:n[2],a=3===n.length?n[1]:void 0;return{id:e.toString(),stopIfTrue:t.cfRules[0].stopIfTrue,ranges:t.sqref,rule:{type:"ColorScaleRule",minimum:r,midpoint:a,maximum:s}}}function gf(e,t,o){const n=t.cfRules[0].iconSet;if(!n)return;let i=n.cfvos,r=n.cfIcons;if(i.length<3||r&&r.length<3)return;i.length>3&&(i=[i[0],i[Math.floor(i.length/2)],i[i.length-1]]),r&&r.length>3&&(r=[r[0],r[Math.floor(r.length/2)],r[r.length-1]]);const s=[];for(let e=1;e<=2;e++){const t=Wp[i[e].type];if("value"===t)return;s.push({value:i[e].value||"",operator:i[e].gte?"ge":"gt",type:t})}let a={lower:r?pf(r[0].iconSet,r[0].iconId):pf(n.iconSet,0),middle:r?pf(r[1].iconSet,r[1].iconId):pf(n.iconSet,1),upper:r?pf(r[2].iconSet,r[2].iconId):pf(n.iconSet,2)};n.reverse&&(a={upper:a.lower,middle:a.middle,lower:a.upper});for(let e of Object.keys(a))if(!a[e])switch(o.generateNotSupportedWarning(Fp.CfIconSetEmptyIconNotSupported),e){case"upper":a[e]=jr.dots.good;break;case"middle":a[e]=jr.dots.neutral;break;case"lower":a[e]=jr.dots.bad}return{id:e.toString(),stopIfTrue:t.cfRules[0].stopIfTrue,ranges:t.sqref,rule:{type:"IconSetRule",icons:a,upperInflectionPoint:s[1],lowerInflectionPoint:s[0]}}}function pf(e,t){const o=Gp[e];return o?0===t?jr[o].bad:1===t?jr[o].neutral:jr[o].good:""}function ff(e,t,o){if(e.cfRules.length>1&&o.generateNotSupportedWarning(Fp.MultipleRulesCfNotSupported),Up.includes(e.cfRules[0].type)||o.generateNotSupportedWarning(Fp.CfTypeNotSupported,e.cfRules[0].type),e.cfRules[0].dxfId){const n=t[e.cfRules[0].dxfId];n.border&&o.generateNotSupportedWarning(Fp.CfFormatBorderNotSupported),n.alignment&&o.generateNotSupportedWarning(Fp.CfFormatAlignmentNotSupported),n.numFmt&&o.generateNotSupportedWarning(Fp.CfFormatNumFmtNotSupported)}}function mf(e){switch(e){case"IsNotEmpty":case"NotContains":return"notContainsBlanks";case"IsEmpty":return"containsBlanks";default:return e.charAt(0).toLowerCase()+e.slice(1)}}function vf(e){return Math.round(yp*e*window.devicePixelRatio*100)/100}function bf(e){return Math.round(xp*e*100)/100}function Sf(e){if(e)return{style:e[0],color:{rgb:e[1]}}}function Cf(e,t){let o={};e.style&&(o=t.styles[e.style]);const n=e.format?t.formats[e.format]:void 0,i={};if(e.border){const o=t.borders[e.border];i.left=Sf(o.left),i.right=Sf(o.right),i.bottom=Sf(o.bottom),i.top=Sf(o.top)}const r={font:{size:(null==o?void 0:o.fontSize)||W,color:{rgb:(null==o?void 0:o.textColor)?o.textColor:"000000"},family:2,name:"Arial"},fill:(null==o?void 0:o.fillColor)?{fgColor:{rgb:o.fillColor}}:{reservedAttribute:"none"},numFmt:n?{format:n,id:0}:void 0,border:i||{},alignment:{vertical:"center",horizontal:o.align}};return r.font.strike=!!(null==o?void 0:o.strikethrough)||void 0,r.font.underline=!!(null==o?void 0:o.underline)||void 0,r.font.bold=!!(null==o?void 0:o.bold)||void 0,r.font.italic=!!(null==o?void 0:o.italic)||void 0,r}function Ef(e,t){const{id:o}=yf(t.font,e.fonts),{id:n}=yf(t.fill,e.fills),{id:i}=yf(t.border,e.borders),r=function(e,t){if(!e)return 0;let o=Yp[e.format];if(!o){const{id:n}=yf(e,t);o=n+Op}return o}(t.numFmt,e.numFmts),s={fontId:o,fillId:n,borderId:i,numFmtId:r,alignment:{vertical:t.alignment.vertical,horizontal:t.alignment.horizontal}},{id:a}=yf(s,e.styles);return a}function wf(e,t,o){let n,i=e.find((e=>e.path===t));return i?(n=`rId${(i.rels.length+1).toString()}`,i.rels.push({...o,id:n})):(n="rId1",e.push({path:t,rels:[{...o,id:n}]})),n}function yf(e,t){for(let[o,n]of Object.entries(t))if(JSON.stringify(n)===JSON.stringify(e))return{id:parseInt(o,10),list:t};let o=t.findIndex((t=>JSON.stringify(t)===JSON.stringify(e)));return-1===o&&(t.push(e),o=t.length-1),{id:o,list:t}}const xf=[];function Rf(e){const t=xf.findIndex((t=>t===e));return-1===t?(xf.push(e),xf.length):t+1}function If(e){return Math.round(914400*e/96)}function Tf(e,t,o){let n,i,r=e;if(({xc:r,sheetName:n}=Rt(e)),n){const e=o.sheets.findIndex((e=>e.name===n));if(e<0)throw new Error("Unable to find a sheet with the name "+n);i=e}else i=Number(t);const s=fo(r);return void 0===s.right&&(s.right=o.sheets[i].colNumber),void 0===s.bottom&&(s.bottom=o.sheets[i].rowNumber),(s.right-s.left+1)*(s.bottom-s.top+1)}function Af(e){return Math.round(96*e/914400)}function Of(e,t){var o;let n=0;for(let i=0;i<e;i++){const e=t.cols.find((e=>i>=e.min&&i<=e.max));(null==e?void 0:e.width)?n+=e.width:(null===(o=t.sheetFormat)||void 0===o?void 0:o.defaultColWidth)?n+=t.sheetFormat.defaultColWidth:n+=Rp}return n/xp}function Mf(e,t){var o;let n=0;for(let i=0;i<e;i++){const e=t.rows[i];(null==e?void 0:e.height)?n+=e.height:(null===(o=t.sheetFormat)||void 0===o?void 0:o.defaultRowHeight)?n+=t.sheetFormat.defaultRowHeight:n+=Ip}return n/yp}function Nf(e){let t=1;return e.figures.map((o=>function(e,t,o){const n=Of(e.anchors[0].col,o)+Af(e.anchors[0].colOffset),i=Of(e.anchors[1].col,o)+Af(e.anchors[1].colOffset),r=Mf(e.anchors[0].row,o)+Af(e.anchors[0].rowOffset),s=Mf(e.anchors[1].row,o)+Af(e.anchors[1].rowOffset),a=i-n,l=s-r,c=_f(e.data);return c?{id:t,x:n,y:r,width:a,height:l,tag:"chart",data:_f(e.data)}:void 0}(o,(t++).toString(),e))).filter(Ze)}function _f(e){var t;const o=null===(t=e.dataSets[0].label)||void 0===t?void 0:t.replace(/\$/g,"");let n=e.dataSets.map((e=>e.range.replace(/\$/g,"")));return"pie"===e.type&&n.reverse(),{dataSets:n,dataSetsHaveTitle:!1,labelRange:o,title:e.title||"",type:e.type,background:Qp({rgb:e.backgroundColor})||"#FFFFFF",verticalAxisPosition:e.verticalAxisPosition,legendPosition:e.legendPosition,stacked:e.stacked||!1,labelsAsText:!1}}const Ff=new RegExp(/'?\[([0-9]*)\](.*)'?!(\$?[a-zA-Z]*\$?[0-9]*)/g),Df=new RegExp(/SUBTOTAL\(([0-9]*),/g),kf=new RegExp(ft.source,"ig");function $f(e,t){const o=function(e){const t={};for(let o of e.rows)for(let e of o.cells)e.formula&&void 0!==e.formula.sharedIndex&&e.formula.content&&(t[e.formula.sharedIndex]={refCellXc:e.xc,formula:e.formula.content});return t}(e);for(let n of e.rows.map((e=>e.cells)).flat())(null==n?void 0:n.formula)&&(n.formula.content=void 0===n.formula.sharedIndex||n.formula.content?"="+n.formula.content:"="+Pf(n.xc,o[n.formula.sharedIndex]),n.formula.content=Lf(n.formula.content,t))}function Lf(e,t){return e=(e=(e=(e=e.replace("_xlfn.","")).replace(/#REF!/g,"#REF")).replace(Df,((e,t)=>{const o=jp[t];return o?o+"(":e}))).replace(Ff,((e,o,n,i)=>{var r;o=Number(o)-1,i=i.replace(/\$/g,"");const s=t.externalBooks[o].sheetNames.findIndex((e=>e===n));if(-1===s)return e;const a=null===(r=t.externalBooks[o].datasets.find((e=>e.sheetId===s)))||void 0===r?void 0:r.data;if(!a)return e;const l=a&&a[i];return(Number(l)?l:`"${l}"`)||e}))}function Pf(e,t){const o=At(t.refCellXc);let n,i=t.formula.slice();do{if(n=kf.exec(i),n){const t=At(n[0].replace("$","")),r=At(e),s={colFixed:n[0].startsWith("$"),rowFixed:n[0].includes("$",1)},a={col:r.col-o.col,row:r.row-o.row},l={col:s.colFixed?t.col:t.col+a.col,row:s.rowFixed?t.row:t.row+a.row};i=i.slice(0,n.index)+Ot(l.col,l.row,s)+i.slice(n.index+n[0].length)}}while(n);return i}function Uf(e,t){return e.sheets.map((o=>{$f(o,e);const n=function(e){const t=[0,0];for(let o of e.rows)t[0]=Math.max(t[0],...o.cells.map((e=>At(e.xc).col))),t[1]=Math.max(t[1],o.index);return t[0]=Math.max(t[0],Tp),t[1]=Math.max(t[1],Ap),t}(o),i=o.sheetViews[0];return{id:o.sheetName,areGridLinesVisible:!i||i.showGridLines,name:o.sheetName,colNumber:n[0],rowNumber:n[1],cells:Bf(o,e,n,t),merges:o.merges,cols:Vf(o,n[0]),rows:zf(o,n[1]),conditionalFormats:df(o.cfs,e.dxfs,t),figures:Nf(o),isVisible:o.isVisible,panes:i?{xSplit:i.pane.xSplit,ySplit:i.pane.ySplit}:{xSplit:0,ySplit:0},filterTables:[]}}))}function Vf(e,t){var o;const n={};for(let r=1;r<t+1;r++){const t=e.cols.find((e=>e.min<=r&&r<=e.max));let s;s=t&&t.width?t.width:(null===(o=e.sheetFormat)||void 0===o?void 0:o.defaultColWidth)?e.sheetFormat.defaultColWidth:Rp,n[r-1]={size:(i=s,i?Math.round(i/xp*100)/100:i),isHidden:null==t?void 0:t.hidden}}var i;return n}function zf(e,t){var o;const n={};for(let r=1;r<t+1;r++){const t=e.rows.find((e=>e.index===r));let s;s=t&&t.height?t.height:(null===(o=e.sheetFormat)||void 0===o?void 0:o.defaultRowHeight)?e.sheetFormat.defaultRowHeight:Ip,n[r-1]={size:(i=s,i?Math.round(i/yp*100)/100:i),isHidden:null==t?void 0:t.hidden}}var i;return n}function Bf(e,t,o,n){const i={},r=t.sharedStrings.map((e=>e.replace(/\n/g,"")));const s=e.hyperlinks.reduce(((e,t)=>(e[t.xc]=t,e)),{});for(let o of e.rows)for(let e of o.cells)i[e.xc]={content:Hf(e,s,r,n),style:e.styleIndex?e.styleIndex+1:void 0,border:e.styleIndex?t.styles[e.styleIndex].borderId+1:void 0,format:e.styleIndex?t.styles[e.styleIndex].numFmtId+1:void 0};for(let n of e.rows.filter((e=>e.styleIndex)))for(let e=1;e<=o[0];e++){const o=Ot(e-1,n.index-1);let r=i[o];r||(r={},i[o]=r),r.style=r.style?r.style:n.styleIndex+1,r.border=r.border?r.border:t.styles[n.styleIndex].borderId+1,r.format=r.format?r.format:t.styles[n.styleIndex].numFmtId+1}for(let n of e.cols.filter((e=>e.styleIndex)))for(let e=n.min;e<=Math.min(n.max,o[0]);e++)for(let r=1;r<=o[1];r++){const o=Ot(e-1,r-1);let s=i[o];s||(s={},i[o]=s),s.style=s.style?s.style:n.styleIndex+1,s.border=s.border?s.border:t.styles[n.styleIndex].borderId+1,s.format=s.format?s.format:t.styles[n.styleIndex].numFmtId+1}return i}function Hf(e,t,o,n){let i;switch(e.type){case"sharedString":i=o[parseInt(e.value,10)];break;case"boolean":i=Number(e.value)?"TRUE":"FALSE";break;case"date":case"error":case"inlineStr":case"number":case"str":i=e.value}return i&&t[e.xc]&&(i=function(e,t,o){const n=e.display||t;e.relTarget||e.location||o.generateNotSupportedWarning(Fp.BadlyFormattedHyperlink);const i=e.relTarget?e.relTarget:Ge(Rt(e.location).sheetName);return ze(n,i)}(t[e.xc],i,n)),e.formula&&(i=e.formula.content),i}const Wf={fillColor:"#000000",textColor:"#ffffff",bold:!0},Gf={bold:!0},qf=["thin","#000000FF"];function Zf(e,t){for(const o of t.sheets)for(const t of o.tables){const n=e.sheets.find((e=>e.name===o.sheetName));n&&t.autoFilter&&(n.filterTables||(n.filterTables=[]),n.filterTables.push({range:t.ref}))}!function(e,t){var o,n,i,r;const s=tf(e.styles),a=tf(e.borders);for(let l of t.sheets)for(let t of l.tables){const c=e.sheets.find((e=>e.name===l.sheetName));if(!c)continue;const h=mo(t.ref);for(let e=0;e<t.headerRowCount;e++)jf(Wf,{...h,bottom:h.top+e},c.cells,s);for(let e=0;e<t.totalsRowCount;e++)jf(Gf,{...h,top:h.bottom-e},c.cells,s);(null===(o=t.style)||void 0===o?void 0:o.showFirstColumn)&&jf(Gf,{...h,right:h.left},c.cells,s),(null===(n=t.style)||void 0===n?void 0:n.showLastColumn)&&jf(Gf,{...h,left:h.right},c.cells,s);for(let e=h.left;e<=h.right;e++)for(let o=h.top;o<=h.bottom;o++){const n=Ot(e,o),s=c.cells[n],l={left:e===h.left||(null===(i=t.style)||void 0===i?void 0:i.showColumnStripes)?qf:void 0,right:e===h.right?qf:void 0,top:o===h.top||(null===(r=t.style)||void 0===r?void 0:r.showRowStripes)||o>h.bottom-t.totalsRowCount?qf:void 0,bottom:o===h.bottom?qf:void 0},d=(null==s?void 0:s.border)?{...a[s.border],...l}:l;let u=a.findIndex((e=>et(e,d)));-1===u&&(u=a.length,a.push(d)),s?s.border=u:c.cells[n]={border:u}}}e.styles=ef(s),e.borders=ef(a)}(e,t),function(e,t){for(let o of e){const e=t.find((e=>e.sheetName===o.name)).tables;for(let t of e){const e=t.name+"[";for(let n of Fo(mo(t.ref))){const i=Ot(n.col,n.row),r=o.cells[i];if(r&&r.content&&r.content.startsWith("=")){let o;for(;-1!==(o=r.content.indexOf(e));){let n=r.content.slice(o+e.length),s=n.indexOf("]");n.startsWith("[")&&(s=n.indexOf("]",s+1),s=n.indexOf("]",s+1)),n=n.slice(0,s);const a=Xf(n,t,i);r.content=r.content.slice(0,o)+a+r.content.slice(e.length+o+s+1)}}}}}}(e.sheets,t.sheets)}function jf(e,t,o,n){for(let i=t.left;i<=t.right;i++)for(let r=t.top;r<=t.bottom;r++){const t=Ot(i,r),s=o[t],a=(null==s?void 0:s.style)?{...n[s.style],...e}:e;let l=n.findIndex((e=>et(e,a)));-1===l&&(l=n.length,n.push(a)),s?s.style=l:o[t]={style:l}}}function Xf(e,t,o){const n=e.split(","),i=mo(t.ref),r={...i};let s=!0;if(1===n.length){const e=t.cols.findIndex((e=>e.name===n[0]));r.left=r.right=e+i.left,t.headerRowCount&&(r.top+=t.headerRowCount),t.totalsRowCount&&(r.bottom-=1)}else{switch(n[0].slice(1,n[0].length-1)){case"#All":r.top=t.headerRowCount?i.top+t.headerRowCount:i.top,r.bottom=i.bottom;break;case"#Data":r.top=t.headerRowCount?i.top+t.headerRowCount:i.top,r.bottom=t.totalsRowCount?i.bottom+1:i.bottom;break;case"#This Row":r.top=r.bottom=At(o).row;break;case"#Headers":r.top=r.bottom=i.top,t.headerRowCount||(s=!1);break;case"#Totals":r.top=r.bottom=i.bottom,t.totalsRowCount||(s=!1)}const e=n[1].slice(1,n[1].length-1),a=t.cols.findIndex((t=>t.name===e));r.left=r.right=a+i.left}return s?r.top!==r.bottom?bo(r):Ot(r.left,r.top):X}function Yf(e,t,o){return{content:(new XMLSerializer).serializeToString(e),path:t,contentType:o}}function Kf(e){return String(e).replace(/\&/g,"&amp;").replace(/\</g,"&lt;").replace(/\>/g,"&gt;").replace(/\"/g,"&quot;").replace(/\'/g,"&apos;")}function Qf(e){return new gp(e.map((([e,t])=>`${e}="${Kf(t)}"`)).join(" "))}function Jf(e){const t=(new DOMParser).parseFromString(e.toString(),"text/xml"),o=t.querySelector("parsererror");if(o){const t=o.innerHTML,n=parseInt(t.split(":")[0],10),i=e.toString().trim().split("\n"),r=i.slice(Math.max(n-3,0),Math.min(n+2,i.length)).join("\n");throw new Error(`XML string could not be parsed: ${t}\n${r}`)}return t}function em(e,t){return om`
1365
1365
  <Override ContentType="${t}" PartName="${e}" />
1366
- `}function tm(e){return new gp(e.join("\n"))}function om(e,...t){let o=[e[0]];for(let n=0;n<t.length;n++){const i=t[n]instanceof gp?t[n]:Kf(t[n]);o.push(i+e[n+1])}return new gp(Ye(o))}function nm(e){return e.replace(/[a-z0-9]+:(?=[a-z0-9]+)/gi,"")}function im(e){return e.replace(/([a-z0-9]+):(?=[a-z0-9]+)/gi,"$1\\:")}class rm{constructor(e){this.value=e}asString(){return of(String(this.value))}asBool(){return Boolean(Number(this.value))}asNum(){return Number(this.value)}}class sm{constructor(e,t,o){this.currentFile=void 0,this.rootFile=e,this.currentFile=e.file.fileName,this.xlsxFileStructure=t,this.warningManager=o,this.areNamespaceIgnored=null!==(new DOMParser).parseFromString("<t:test xmlns:t='a'/>","text/xml").querySelector("test"),this.relationships={},e.rels&&this.extractRelationships(e.rels).map((e=>{this.relationships[e.id]=e}))}extractRelationships(e){return this.mapOnElements({parent:e.xml,query:"Relationship"},(e=>({id:this.extractAttr(e,"Id",{required:!0}).asString(),target:this.extractAttr(e,"Target",{required:!0}).asString(),type:this.extractAttr(e,"Type",{required:!0}).asString()})))}getListOfFiles(){return Object.values(this.xlsxFileStructure).flat().filter(Ze)}mapOnElements(e,t){var o;const n=[],i=this.currentFile;let r;if(e.children){const t=null===(o=this.querySelector(e.parent,e.query))||void 0===o?void 0:o.children;r=t||[]}else r=this.querySelectorAll(e.parent,e.query);if(r)for(let e of r)try{n.push(t(e))}catch(t){this.catchErrorOnElement(t,e)}return this.currentFile=i,n}catchErrorOnElement(e,t){const o=t?`Error when parsing an element <${t.tagName}> of file ${this.currentFile}, skip this element. \n${e.stack}`:`Error when parsing file ${this.currentFile}.`;this.warningManager.addParsingWarning([o,e.message].join("\n"))}extractAttr(e,t,o){const n=e.attributes[t];n||this.handleMissingValue(e,`attribute "${t}"`,o);const i=(null==n?void 0:n.value)?n.value:null==o?void 0:o.default;return void 0===i?void 0:new rm(i)}extractTextContent(e,t){var o;if(void 0!==(null==t?void 0:t.default)&&"string"!=typeof t.default)throw new Error("extractTextContent default value should be a string");const n="preserve"===(null===(o=null==e?void 0:e.attributes["xml:space"])||void 0===o?void 0:o.value);let i=null==e?void 0:e.textContent;return e&&null!==i||this.handleMissingValue(e,"text content",t),i&&(i=n?i:i.trim()),i?of(i):null==t?void 0:t.default}extractChildAttr(e,t,o,n){var i;let r;r="number"==typeof t?e.children[t]:this.querySelector(e,t),r||this.handleMissingValue(e,"number"==typeof t?`child at index ${t}`:`child <${t}>`,n);const s=r?null===(i=this.extractAttr(r,o,n))||void 0===i?void 0:i.asString():null==n?void 0:n.default;return void 0!==s?new rm(s):void 0}extractChildTextContent(e,t,o){if(void 0!==(null==o?void 0:o.default)&&"string"!=typeof o.default)throw new Error("extractTextContent default value should be a string");let n=this.querySelector(e,t);return n||this.handleMissingValue(e,`child <${t}>`,o),n?this.extractTextContent(n,o):null==o?void 0:o.default}handleMissingValue(e,t,o){if(null==o?void 0:o.required){if(!(null==o?void 0:o.default))throw new Error(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, and no default value was set`);this.warningManager.addParsingWarning(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, replacing it by the default value ${o.default}`)}}extractColor(e,t,o){var n,i,r,s,a;if(!e)return o?{rgb:o}:void 0;const l=null===(n=this.extractAttr(e,"theme"))||void 0===n?void 0:n.asString();let c;if(void 0!==l){if(!t||!t.clrScheme)throw new Error("Color referencing a theme but no theme was provided");c=this.getThemeColor(l,t.clrScheme)}else c=null===(i=this.extractAttr(e,"rgb"))||void 0===i?void 0:i.asString();return{rgb:c,auto:null===(r=this.extractAttr(e,"auto"))||void 0===r?void 0:r.asBool(),indexed:null===(s=this.extractAttr(e,"indexed"))||void 0===s?void 0:s.asNum(),tint:null===(a=this.extractAttr(e,"tint"))||void 0===a?void 0:a.asNum()}}getTargetXmlFile(e){if(!e)throw new Error("Undefined target file");let t=e.target;t=t.replace("../",""),t=t.replace("./","");const o=this.getListOfFiles().find((e=>e.file.fileName.endsWith(t)));if(!o||!o.file)throw new Error("Cannot find target file");return o}querySelector(e,t){return t=this.areNamespaceIgnored?nm(t):im(t),e.querySelector(t)}querySelectorAll(e,t){return t=this.areNamespaceIgnored?nm(t):im(t),e.querySelectorAll(t)}getThemeColor(e,t){switch(e){case"0":return"FFFFFF";case"1":return"000000";case"2":return t[3].value;case"3":return t[2].value;default:return t[e].value}}}class am extends sm{getTheme(){return{clrScheme:this.mapOnElements({query:"a:clrScheme",parent:this.rootFile.file.xml,children:!0},(e=>({name:e.tagName,value:this.extractChildAttr(e,0,"val",{required:!0,default:fp}).asString(),lastClr:this.extractChildAttr(e,0,"lastClr",{default:fp}).asString()})))}}getSharedStrings(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"si"},(e=>"t"===e.children[0].tagName?this.extractTextContent(e)||"":this.mapOnElements({parent:e,query:"t"},(e=>this.extractTextContent(e)||"")).join("")))}}class lm extends sm{constructor(e,t,o,n){super(e,t,o),this.theme=n}extractConditionalFormattings(){const e=this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > conditionalFormatting"},(e=>{var t;return{sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),pivot:null===(t=this.extractAttr(e,"pivot"))||void 0===t?void 0:t.asBool(),cfRules:this.extractCFRules(e,this.theme)}}));return e.push(...this.mapOnElements({parent:this.rootFile.file.xml,query:"extLst x14:conditionalFormatting"},(e=>{var t;return{sqref:this.extractChildTextContent(e,"xm:sqref",{required:!0}).split(" "),pivot:null===(t=this.extractAttr(e,"xm:pivot"))||void 0===t?void 0:t.asBool(),cfRules:this.extractCFRules(e,this.theme)}}))),e}extractCFRules(e,t){return this.mapOnElements({parent:e,query:"cfRule, x14:cfRule"},(e=>{var o,n,i,r,s,a,l,c,h,d,u;const g=this.extractAttr(e,"type",{required:!0}).asString();if("dataBar"===g)throw new Error("Databars conditional formats are not supported.");return{type:g,priority:this.extractAttr(e,"priority",{required:!0}).asNum(),colorScale:this.extractCfColorScale(e,t),formula:this.extractCfFormula(e),iconSet:this.extractCfIconSet(e),dxfId:null===(o=this.extractAttr(e,"dxfId"))||void 0===o?void 0:o.asNum(),stopIfTrue:null===(n=this.extractAttr(e,"stopIfTrue"))||void 0===n?void 0:n.asBool(),aboveAverage:null===(i=this.extractAttr(e,"aboveAverage"))||void 0===i?void 0:i.asBool(),percent:null===(r=this.extractAttr(e,"percent"))||void 0===r?void 0:r.asBool(),bottom:null===(s=this.extractAttr(e,"bottom"))||void 0===s?void 0:s.asBool(),operator:null===(a=this.extractAttr(e,"operator"))||void 0===a?void 0:a.asString(),text:null===(l=this.extractAttr(e,"text"))||void 0===l?void 0:l.asString(),timePeriod:null===(c=this.extractAttr(e,"timePeriod"))||void 0===c?void 0:c.asString(),rank:null===(h=this.extractAttr(e,"rank"))||void 0===h?void 0:h.asNum(),stdDev:null===(d=this.extractAttr(e,"stdDev"))||void 0===d?void 0:d.asNum(),equalAverage:null===(u=this.extractAttr(e,"equalAverage"))||void 0===u?void 0:u.asBool()}}))}extractCfFormula(e){return this.mapOnElements({parent:e,query:"formula"},(e=>this.extractTextContent(e,{required:!0})))}extractCfColorScale(e,t){const o=this.querySelector(e,"colorScale");if(o)return{colors:this.mapOnElements({parent:o,query:"color"},(e=>this.extractColor(e,t,"ffffff"))),cfvos:this.extractCFVos(o)}}extractCfIconSet(e){var t,o;const n=this.querySelector(e,"iconSet, x14:iconSet");if(n)return{iconSet:this.extractAttr(n,"iconSet",{default:"3TrafficLights1"}).asString(),showValue:this.extractAttr(n,"showValue",{default:!0}).asBool(),percent:this.extractAttr(n,"percent",{default:!0}).asBool(),reverse:null===(t=this.extractAttr(n,"reverse"))||void 0===t?void 0:t.asBool(),custom:null===(o=this.extractAttr(n,"custom"))||void 0===o?void 0:o.asBool(),cfvos:this.extractCFVos(n),cfIcons:this.extractCfIcons(n)}}extractCfIcons(e){const t=this.mapOnElements({parent:e,query:"cfIcon, x14:cfIcon"},(e=>({iconSet:this.extractAttr(e,"iconSet",{required:!0}).asString(),iconId:this.extractAttr(e,"iconId",{required:!0}).asNum()})));return 0===t.length?void 0:t}extractCFVos(e){return this.mapOnElements({parent:e,query:"cfvo, x14:cfvo"},(e=>{var t,o;return{type:this.extractAttr(e,"type",{required:!0}).asString(),gte:null===(t=this.extractAttr(e,"gte",{default:!0}))||void 0===t?void 0:t.asBool(),value:e.attributes.val?null===(o=this.extractAttr(e,"val"))||void 0===o?void 0:o.asString():this.extractChildTextContent(e,"f, xm:f")}}))}}class cm extends sm{extractChart(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"c:chartSpace"},(e=>{const t=this.getChartType(e);if(!Zp[t])throw new Error(`Unsupported chart type ${t}`);const o=this.mapOnElements({parent:e,query:"c:title a:t"},(e=>e.textContent||"")).join(""),n=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:o,type:Zp[t],dataSets:this.extractChartDatasets(this.querySelector(e,`c:${t}`)),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),verticalAxisPosition:"r"===this.extractChildAttr(e,"c:valAx > c:axPos","val",{default:"l"}).asString()?"right":"left",legendPosition:qp[this.extractChildAttr(e,"c:legendPos","val",{default:"b"}).asString()],stacked:"stacked"===n,fontColor:"000000"}}))[0]}extractChartDatasets(e){return this.mapOnElements({parent:e,query:"c:ser"},(e=>({label:this.extractChildTextContent(e,"c:cat c:f"),range:this.extractChildTextContent(e,"c:val c:f",{required:!0})})))}getChartType(e){const t=this.querySelector(e,"c:plotArea");if(!t)throw new Error("Missing plot area in the chart definition.");for(let e of t.children){const t=nm(e.tagName);if(pp.some((e=>e===t)))return t}throw new Error("Unknown chart type")}}class hm extends sm{extractFigures(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"xdr:wsDr",children:!0},(e=>{if("twoCellAnchor"!==nm(e.tagName))throw new Error("Only twoCellAnchor are supported for xlsx drawings.");const t=this.querySelector(e,"c:chart");if(!t)throw new Error("Only chart figures are currently supported.");return{anchors:[this.extractFigureAnchor("xdr:from",e),this.extractFigureAnchor("xdr:to",e)],data:this.extractChart(t)}}))}extractFigureAnchor(e,t){const o=this.querySelector(t,e);if(!o)throw new Error(`Missing anchor element ${e}`);return{col:Number(this.extractChildTextContent(o,"xdr:col",{required:!0})),colOffset:Number(this.extractChildTextContent(o,"xdr:colOff",{required:!0})),row:Number(this.extractChildTextContent(o,"xdr:row",{required:!0})),rowOffset:Number(this.extractChildTextContent(o,"xdr:rowOff",{required:!0}))}}extractChart(e){const t=this.extractAttr(e,"r:id",{required:!0}).asString(),o=this.getTargetXmlFile(this.relationships[t]),n=new cm(o,this.xlsxFileStructure,this.warningManager).extractChart();if(!n)throw new Error("Unable to extract chart definition");return n}}class dm extends sm{getPivotTable(){return this.mapOnElements({query:":root",parent:this.rootFile.file.xml},(e=>({displayName:this.extractAttr(e,"name",{required:!0}).asString(),id:this.extractAttr(e,"name",{required:!0}).asString(),ref:this.extractChildAttr(e,"location","ref",{required:!0}).asString(),headerRowCount:this.extractChildAttr(e,"location","firstDataRow",{default:0}).asNum(),totalsRowCount:1,cols:[],style:{showFirstColumn:!0,showRowStripes:!0}})))[0]}}class um extends sm{getTable(){return this.mapOnElements({query:"table",parent:this.rootFile.file.xml},(e=>{var t;return{displayName:this.extractAttr(e,"displayName",{required:!0}).asString(),name:null===(t=this.extractAttr(e,"name"))||void 0===t?void 0:t.asString(),id:this.extractAttr(e,"id",{required:!0}).asString(),ref:this.extractAttr(e,"ref",{required:!0}).asString(),headerRowCount:this.extractAttr(e,"headerRowCount",{default:1}).asNum(),totalsRowCount:this.extractAttr(e,"totalsRowCount",{default:0}).asNum(),cols:this.extractTableCols(e),style:this.extractTableStyleInfo(e),autoFilter:this.extractTableAutoFilter(e)}}))[0]}extractTableCols(e){return this.mapOnElements({query:"tableColumn",parent:e},(e=>({id:this.extractAttr(e,"id",{required:!0}).asString(),name:this.extractAttr(e,"name",{required:!0}).asString(),colFormula:this.extractChildTextContent(e,"calculatedColumnFormula")})))}extractTableStyleInfo(e){return this.mapOnElements({query:"tableStyleInfo",parent:e},(e=>{var t,o,n,i,r;return{name:null===(t=this.extractAttr(e,"name"))||void 0===t?void 0:t.asString(),showFirstColumn:null===(o=this.extractAttr(e,"showFirstColumn"))||void 0===o?void 0:o.asBool(),showLastColumn:null===(n=this.extractAttr(e,"showLastColumn"))||void 0===n?void 0:n.asBool(),showRowStripes:null===(i=this.extractAttr(e,"showRowStripes"))||void 0===i?void 0:i.asBool(),showColumnStripes:null===(r=this.extractAttr(e,"showColumnStripes"))||void 0===r?void 0:r.asBool()}}))[0]}extractTableAutoFilter(e){return this.mapOnElements({query:"autoFilter",parent:e},(e=>({columns:this.extractFilterColumns(e),zone:this.extractAttr(e,"ref",{required:!0}).asString()})))[0]}extractFilterColumns(e){return this.mapOnElements({query:"tableColumn",parent:e},(t=>({colId:this.extractAttr(e,"colId",{required:!0}).asNum(),hiddenButton:this.extractAttr(e,"hiddenButton",{default:!1}).asBool(),filters:this.extractSimpleFilter(t)})))}extractSimpleFilter(e){return this.mapOnElements({query:"filter",parent:e},(e=>({val:this.extractAttr(e,"val",{required:!0}).asString()})))}}class gm extends sm{constructor(e,t,o,n){super(e,t,o),this.theme=n}getSheet(){return this.mapOnElements({query:"worksheet",parent:this.rootFile.file.xml},(e=>{const t=this.getSheetWorkbookInfo();return{sheetName:this.extractSheetName(),sheetViews:this.extractSheetViews(e),sheetFormat:this.extractSheetFormat(e),cols:this.extractCols(e),rows:this.extractRows(e),sharedFormulas:this.extractSharedFormulas(e),merges:this.extractMerges(e),cfs:this.extractConditionalFormats(),figures:this.extractFigures(e),hyperlinks:this.extractHyperLinks(e),tables:[...this.extractTables(e),...this.extractPivotTables()],isVisible:"visible"===t.state}}))[0]}extractSheetViews(e){return this.mapOnElements({parent:e,query:"sheetView"},(e=>{const t=this.querySelector(e,"pane");return{tabSelected:this.extractAttr(e,"tabSelected",{default:!1}).asBool(),showFormulas:this.extractAttr(e,"showFormulas",{default:!1}).asBool(),showGridLines:this.extractAttr(e,"showGridLines",{default:!0}).asBool(),showRowColHeaders:this.extractAttr(e,"showRowColHeaders",{default:!0}).asBool(),pane:{xSplit:t?this.extractAttr(t,"xSplit",{default:0}).asNum():0,ySplit:t?this.extractAttr(t,"ySplit",{default:0}).asNum():0}}}))}extractSheetName(){const e=Jp(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id;for(let e of this.querySelectorAll(this.xlsxFileStructure.workbook.file.xml,"sheet"))if(e.attributes["r:id"].value===t)return e.attributes.name.value;throw new Error("Missing sheet name")}getSheetWorkbookInfo(){const e=Jp(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id,o=this.mapOnElements({parent:this.xlsxFileStructure.workbook.file.xml,query:"sheet"},(e=>({relationshipId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetId:this.extractAttr(e,"sheetId",{required:!0}).asString(),sheetName:this.extractAttr(e,"name",{required:!0}).asString(),state:this.extractAttr(e,"state",{default:"visible"}).asString()}))).find((e=>e.relationshipId===t));if(!o)throw new Error("Cannot find corresponding workbook sheet");return o}extractConditionalFormats(){return new lm(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractConditionalFormattings()}extractFigures(e){return this.mapOnElements({parent:e,query:"drawing"},(e=>{var t;const o=null===(t=this.extractAttr(e,"r:id",{required:!0}))||void 0===t?void 0:t.asString(),n=this.getTargetXmlFile(this.relationships[o]);return new hm(n,this.xlsxFileStructure,this.warningManager).extractFigures()}))[0]||[]}extractTables(e){return this.mapOnElements({query:"tablePart",parent:e},(e=>{var t;const o=null===(t=this.extractAttr(e,"r:id",{required:!0}))||void 0===t?void 0:t.asString(),n=this.getTargetXmlFile(this.relationships[o]);return new um(n,this.xlsxFileStructure,this.warningManager).getTable()}))}extractPivotTables(){try{return Object.values(this.relationships).filter((e=>e.type.endsWith("pivotTable"))).map((e=>{const t=this.getTargetXmlFile(e);return new dm(t,this.xlsxFileStructure,this.warningManager).getPivotTable()}))}catch(e){return this.catchErrorOnElement(e),[]}}extractMerges(e){return this.mapOnElements({parent:e,query:"mergeCell"},(e=>this.extractAttr(e,"ref",{required:!0}).asString()))}extractSheetFormat(e){const t=this.querySelector(e,"sheetFormatPr");if(t)return{defaultColWidth:this.extractAttr(t,"defaultColWidth",{default:Rp.toString()}).asNum(),defaultRowHeight:this.extractAttr(t,"defaultRowHeight",{default:Ip.toString()}).asNum()}}extractCols(e){return this.mapOnElements({parent:e,query:"cols col"},(e=>{var t,o,n,i,r,s,a;return{width:null===(t=this.extractAttr(e,"width"))||void 0===t?void 0:t.asNum(),customWidth:null===(o=this.extractAttr(e,"customWidth"))||void 0===o?void 0:o.asBool(),bestFit:null===(n=this.extractAttr(e,"bestFit"))||void 0===n?void 0:n.asBool(),hidden:null===(i=this.extractAttr(e,"hidden"))||void 0===i?void 0:i.asBool(),min:null===(r=this.extractAttr(e,"min",{required:!0}))||void 0===r?void 0:r.asNum(),max:null===(s=this.extractAttr(e,"max",{required:!0}))||void 0===s?void 0:s.asNum(),styleIndex:null===(a=this.extractAttr(e,"style"))||void 0===a?void 0:a.asNum()}}))}extractRows(e){return this.mapOnElements({parent:e,query:"sheetData row"},(e=>{var t,o,n,i,r;return{index:null===(t=this.extractAttr(e,"r",{required:!0}))||void 0===t?void 0:t.asNum(),cells:this.extractCells(e),height:null===(o=this.extractAttr(e,"ht"))||void 0===o?void 0:o.asNum(),customHeight:null===(n=this.extractAttr(e,"customHeight"))||void 0===n?void 0:n.asBool(),hidden:null===(i=this.extractAttr(e,"hidden"))||void 0===i?void 0:i.asBool(),styleIndex:null===(r=this.extractAttr(e,"s"))||void 0===r?void 0:r.asNum()}}))}extractCells(e){return this.mapOnElements({parent:e,query:"c"},(e=>{var t,o,n;return{xc:null===(t=this.extractAttr(e,"r",{required:!0}))||void 0===t?void 0:t.asString(),styleIndex:null===(o=this.extractAttr(e,"s"))||void 0===o?void 0:o.asNum(),type:Vp[null===(n=this.extractAttr(e,"t",{default:"n"}))||void 0===n?void 0:n.asString()],value:this.extractChildTextContent(e,"v"),formula:this.extractCellFormula(e)}}))}extractCellFormula(e){var t,o;const n=this.querySelector(e,"f");if(n)return{content:this.extractTextContent(n),sharedIndex:null===(t=this.extractAttr(n,"si"))||void 0===t?void 0:t.asNum(),ref:null===(o=this.extractAttr(n,"ref"))||void 0===o?void 0:o.asString()}}extractHyperLinks(e){return this.mapOnElements({parent:e,query:"hyperlink"},(e=>{var t,o,n,i;const r=null===(t=this.extractAttr(e,"r:id"))||void 0===t?void 0:t.asString();return{xc:null===(o=this.extractAttr(e,"ref",{required:!0}))||void 0===o?void 0:o.asString(),location:null===(n=this.extractAttr(e,"location"))||void 0===n?void 0:n.asString(),display:null===(i=this.extractAttr(e,"display"))||void 0===i?void 0:i.asString(),relTarget:r?this.relationships[r].target:void 0}}))}extractSharedFormulas(e){const t=this.querySelectorAll(e,"f[si][ref]"),o={};for(let e of t){const t=this.extractAttr(e,"si",{required:!0}).asNum(),n=this.extractTextContent(e,{required:!0});o[t]=n}const n=[];for(let e=0;e<Object.keys(o).length;e++)o[e]?n.push(o[e]):(this.warningManager.addParsingWarning(`Missing shared formula ${e}, replacing it by empty formula`),n.push(""));return n}}class pm extends sm{constructor(e,t,o){super(e.styles,e,t),this.theme=o}getNumFormats(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"numFmt"},(e=>this.extractNumFormats(e)))}extractNumFormats(e){return{id:this.extractAttr(e,"numFmtId",{required:!0}).asNum(),format:this.extractAttr(e,"formatCode",{required:!0,default:""}).asString()}}getFonts(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"font"},(e=>this.extractFont(e)))}extractFont(e){var t,o,n,i;const r=this.extractChildAttr(e,"name","val",{default:"Arial"}).asString(),s=this.extractChildAttr(e,"sz","val",{default:W.toString()}).asNum(),a=this.extractColor(this.querySelector(e,"color"),this.theme),l=this.querySelector(e,"i")||void 0,c=l&&"0"!==(null===(t=l.attributes.val)||void 0===t?void 0:t.value),h=this.querySelector(e,"b")||void 0,d=h&&"0"!==(null===(o=h.attributes.val)||void 0===o?void 0:o.value),u=this.querySelector(e,"strike")||void 0,g=u&&"0"!==(null===(n=u.attributes.val)||void 0===n?void 0:n.value),p=this.querySelector(e,"u")||void 0;return{name:r,size:s,color:a,italic:c,bold:d,underline:p&&"none"!==(null===(i=p.attributes.val)||void 0===i?void 0:i.value),strike:g}}getFills(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"fill"},(e=>this.extractFill(e)))}extractFill(e){var t;const o=e.children[0];return"patternFill"===o.tagName?{patternType:null===(t=o.attributes.patternType)||void 0===t?void 0:t.value,bgColor:this.extractColor(this.querySelector(o,"bgColor"),this.theme),fgColor:this.extractColor(this.querySelector(o,"fgColor"),this.theme)}:{patternType:"solid",fgColor:this.extractColor(this.querySelectorAll(o,"color")[1],this.theme)}}getBorders(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"border"},(e=>this.extractBorder(e)))}extractBorder(e){var t,o;const n={left:this.extractSingleBorder(e,"left",this.theme),right:this.extractSingleBorder(e,"right",this.theme),top:this.extractSingleBorder(e,"top",this.theme),bottom:this.extractSingleBorder(e,"bottom",this.theme),diagonal:this.extractSingleBorder(e,"diagonal",this.theme)};return n.diagonal&&(n.diagonalUp=null===(t=this.extractAttr(e,"diagonalUp"))||void 0===t?void 0:t.asBool(),n.diagonalDown=null===(o=this.extractAttr(e,"diagonalDown"))||void 0===o?void 0:o.asBool()),n}extractSingleBorder(e,t,o){const n=this.querySelector(e,t);if(n&&n.attributes.style)return{style:this.extractAttr(n,"style",{required:!0,default:"thin"}).asString(),color:this.extractColor(n.children[0],o,"000000")}}extractAlignment(e){var t,o,n,i,r,s,a;return{horizontal:this.extractAttr(e,"horizontal",{default:"general"}).asString(),vertical:this.extractAttr(e,"vertical",{default:"center"}).asString(),textRotation:null===(t=this.extractAttr(e,"textRotation"))||void 0===t?void 0:t.asNum(),wrapText:null===(o=this.extractAttr(e,"wrapText"))||void 0===o?void 0:o.asBool(),indent:null===(n=this.extractAttr(e,"indent"))||void 0===n?void 0:n.asNum(),relativeIndent:null===(i=this.extractAttr(e,"relativeIndent"))||void 0===i?void 0:i.asNum(),justifyLastLine:null===(r=this.extractAttr(e,"justifyLastLine"))||void 0===r?void 0:r.asBool(),shrinkToFit:null===(s=this.extractAttr(e,"shrinkToFit"))||void 0===s?void 0:s.asBool(),readingOrder:null===(a=this.extractAttr(e,"readingOrder"))||void 0===a?void 0:a.asNum()}}getDxfs(){return this.mapOnElements({query:"dxf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"font"),o=this.querySelector(e,"fill"),n=this.querySelector(e,"border"),i=this.querySelector(e,"numFmt"),r=this.querySelector(e,"alignment");return{font:t?this.extractFont(t):void 0,fill:o?this.extractFill(o):void 0,numFmt:i?this.extractNumFormats(i):void 0,alignment:r?this.extractAlignment(r):void 0,border:n?this.extractBorder(n):void 0}}))}getStyles(){return this.mapOnElements({query:"cellXfs xf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"alignment");return{fontId:this.extractAttr(e,"fontId",{required:!0,default:0}).asNum(),fillId:this.extractAttr(e,"fillId",{required:!0,default:0}).asNum(),borderId:this.extractAttr(e,"borderId",{required:!0,default:0}).asNum(),numFmtId:this.extractAttr(e,"numFmtId",{required:!0,default:0}).asNum(),alignment:t?this.extractAlignment(t):void 0}}))}}class fm extends sm{getExternalBook(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"externalBook"},(e=>({rId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetNames:this.mapOnElements({parent:e,query:"sheetName"},(e=>this.extractAttr(e,"val",{required:!0}).asString())),datasets:this.extractExternalSheetData(e)})))[0]}extractExternalSheetData(e){return this.mapOnElements({parent:e,query:"sheetData"},(e=>{const t=this.mapOnElements({parent:e,query:"cell"},(e=>({xc:this.extractAttr(e,"r",{required:!0}).asString(),value:this.extractChildTextContent(e,"v",{required:!0})}))),o={};for(let e of t)o[e.xc]=e.value;return{sheetId:this.extractAttr(e,"sheetId",{required:!0}).asNum(),data:o}}))}}function mm(e,t){const o=function(e,t){const o=t[_p],n=o.querySelectorAll(`Override[ContentType="${e}"]`),i=[];for(let e of n){const t=null==e?void 0:e.attributes.PartName.value;i.push(t.substring(1))}return i}(e,t);return function(e,t){const o=[];for(let n of e){const e=vm(n,t);o.push({file:{fileName:n,xml:t[n]},rels:e?{fileName:e,xml:t[e]}:void 0})}return o}(o,t)}function vm(e,t){if(e===_p)return"_rels/.rels";let o="";const n=e.split("/");for(let e=0;e<n.length-1;e++)o+=n[e]+"/";return o+="_rels/",o+=n[n.length-1]+".rels",t[o]||(o=void 0),o}class bm{constructor(e){this.warningManager=new Dp,this.xmls={};for(let t of Object.keys(e))(t.endsWith(".xml")||t.endsWith(".rels"))&&(this.xmls[t]=Jf(new gp(e[t])))}convertXlsx(){const e=this.getXlsxData();return this.convertImportedData(e)}getXlsxData(){const e=this.buildXlsxFileStructure(),t=e.theme?new am(e.theme,e,this.warningManager).getTheme():void 0,o=e.sharedStrings?new am(e.sharedStrings,e,this.warningManager).getSharedStrings():[],n=e.sheets.sort(((e,t)=>e.file.fileName.localeCompare(t.file.fileName,void 0,{numeric:!0}))).map((o=>new gm(o,e,this.warningManager,t).getSheet())),i=e.externalLinks.map((t=>new fm(t,e,this.warningManager).getExternalBook())),r=new pm(e,this.warningManager,t);return{fonts:r.getFonts(),fills:r.getFills(),borders:r.getBorders(),dxfs:r.getDxfs(),numFmts:r.getNumFormats(),styles:r.getStyles(),sheets:n,sharedStrings:o,externalBooks:i}}buildXlsxFileStructure(){const e={sheets:mm(Cp.sheet,this.xmls),workbook:mm(Cp.workbook,this.xmls)[0],styles:mm(Cp.styles,this.xmls)[0],sharedStrings:mm(Cp.sharedStrings,this.xmls)[0],theme:mm(Cp.themes,this.xmls)[0],charts:mm(Cp.chart,this.xmls),figures:mm(Cp.drawing,this.xmls),tables:mm(Cp.table,this.xmls),pivots:mm(Cp.pivot,this.xmls),externalLinks:mm(Cp.externalLink,this.xmls)};if(!e.workbook.rels)throw Error(r("Cannot find workbook relations file"));return e}convertImportedData(e){const t={version:12,sheets:Uf(e,this.warningManager),styles:sf(e,this.warningManager),formats:lf(e,this.warningManager),borders:nf(e,this.warningManager),entities:{},revisionId:Y};return Zf(t,e),Object.keys(e.styles).map((t=>{e.styles[t]=tt(e.styles[t])})),t}}function Sm(e){const t=og(e);let o=[];return{text:"".concat(...t.map((e=>{if("REFERENCE"===e.type&&ft.test(e.value)){const t=e.value.trim();return o.includes(t)||o.push(t),`${te}${o.indexOf(t)}${te}`}return e.value}))),dependencies:o}}const Cm=12,Em="Sheet1";function wm(e,t){if(!e)return Tm();if(e["[Content_Types].xml"]){const o=new bm(e);if(e=o.convertXlsx(),t)for(let e of o.warningManager.warnings.sort())console.warn(e)}return"version"in(e=JSON.parse(JSON.stringify(e)))&&e.version<Cm&&(e=function(e){for(let t=ym.findIndex((t=>t.from===e.version));t<ym.length;t++)e=ym[t].applyMigration(e);return e}(e)),(e=Object.assign(Tm(),e,{version:Cm})).sheets=e.sheets.map(((e,t)=>Object.assign(Im(`Sheet${t+1}`,`Sheet${t+1}`),e))),0===e.sheets.length&&e.sheets.push(Im(Em,"Sheet1")),e}const ym=[{description:"add the `activeSheet` field on data",from:1,to:2,applyMigration:e=>(e.sheets&&e.sheets[0]&&(e.activeSheet=e.sheets[0].name),e)},{description:"add an id field in each sheet",from:2,to:3,applyMigration(e){if(e.sheets&&e.sheets.length)for(let t of e.sheets)t.id=t.id||t.name;return e}},{description:"activeSheet is now an id, not the name of a sheet",from:3,to:4,applyMigration(e){if(e.sheets&&e.activeSheet){const t=e.sheets.find((t=>t.name===e.activeSheet));e.activeSheet=t.id}return e}},{description:"add figures object in each sheets",from:4,to:5,applyMigration(e){for(let t of e.sheets||[])t.figures=t.figures||[];return e}},{description:"normalize the content of the cell if it is a formula to avoid parsing all the formula that vary only by the cells they use",from:5,to:6,applyMigration(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];o.content&&o.content.startsWith("=")&&(o.formula=Sm(o.content))}return e}},{description:"transform chart data structure",from:6,to:7,applyMigration(e){for(let t of e.sheets||[])for(let e in t.figures||[]){const{dataSets:o,...n}=t.figures[e].data,i=[];for(let e of o)if(e.labelCell){const t=mo(e.dataRange),o=e.labelCell+":"+Ot(t.right,t.bottom);i.push(o)}else i.push(e.dataRange);n.dataSetsHaveTitle=Boolean(o[0].labelCell),n.dataSets=i,t.figures[e].data=n}return e}},{description:"remove single quotes in sheet names",from:7,to:8,applyMigration(e){var t;const o=[],n=new RegExp(ee,"g");for(let i of e.sheets||[]){if(!i.name)continue;const e=i.name,r=e.replace(n,"_");let s=1,a=r;for(;o.includes(a);)a=`${r}${s}`,s++;i.name=a,o.push(a);const l=t=>{if(void 0===t)return t;let o=t.replace(e,a),n=t;for(;n!==o;)n=o,o=n.replace(e,a);return n};for(let e in i.cells){const t=i.cells[e];t.formula&&(t.formula.dependencies=t.formula.dependencies.map(l))}for(let e of i.figures||[])if("chart"===e.type){const t=e.data.dataSets.map(l),o=l(e.data.labelRange);e.data={...e.data,dataSets:t,labelRange:o}}for(let e of i.conditionalFormats||[]){e.ranges=e.ranges.map(l);for(const o of["minimum","maximum","midpoint","upperInflectionPoint","lowerInflectionPoint"])"formula"===(null===(t=e.rule[o])||void 0===t?void 0:t.type)&&(e.rule[o].value=l(e.rule[o].value))}}return e}},{description:"transform chart data structure with design attributes",from:8,to:9,applyMigration(e){for(const t of e.sheets||[])for(const e of t.figures||[])e.data.background=w,e.data.verticalAxisPosition="left",e.data.legendPosition="top",e.data.stacked=!1;return e}},{description:"de-normalize formula to reduce exported json size (~30%)",from:9,to:10,applyMigration(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];if(o.formula){let{text:e,dependencies:t}=o.formula;for(let[o,n]of Object.entries(t)){const t=`\\${te}${o}\\${te}`;e=e.replace(new RegExp(t,"g"),n)}o.content=e,delete o.formula}}return e}},{description:"normalize the formats of the cells",from:10,to:11,applyMigration(e){const t={};for(let o of e.sheets||[])for(let e in o.cells||[]){const n=o.cells[e];n.format&&(n.format=Xe(n.format,t))}return e.formats=t,e}},{description:"Add isVisible to sheets",from:11,to:12,applyMigration(e){for(let t of e.sheets||[])t.isVisible=!0;return e}}];function xm(e,t){return t=function(e,t){if(0!==Object.keys(e).length)return t;const o=[],n=[],i=e=>{if("CREATE_SHEET"===e.type)o.push(e.sheetId);else if("sheetId"in e&&!o.includes(e.sheetId))return{...e,sheetId:Em};return e};for(const e of t)"REMOTE_REVISION"===e.type?n.push({...e,commands:e.commands.map(i)}):n.push(e);return n}(e,t),t=Rm(t,"SORT_CELLS"),t=function(e,t){var o;const n=[],i={};for(const t of e.sheets||[])null===(o=t.figures)||void 0===o||o.forEach((e=>{"chart"===e.tag&&(i[e.id]=e.data)}));for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const o of e.commands){let e=o;switch(o.type){case"CREATE_CHART":i[o.id]=o.definition;break;case"UPDATE_CHART":if(!i[o.id]){console.log(`Fix chart definition: chart with id ${o.id} not found.`);continue}const t={...i[o.id],...o.definition};e={...o,definition:t},i[o.id]=t}t.push(e)}n.push({...e,commands:t})}else n.push(e);return n}(e,t=Rm(t,"SET_DECIMAL")),t}function Rm(e,t){const o=[];for(const n of e)"REMOTE_REVISION"===n.type?o.push({...n,commands:n.commands.filter((e=>e.type!==t))}):o.push(n);return o}function Im(e,t){return{id:e,name:t,colNumber:26,rowNumber:100,cells:{},cols:{},rows:{},merges:[],conditionalFormats:[],figures:[],filterTables:[],isVisible:!0}}function Tm(e="Sheet1"){return{version:Cm,sheets:[Im(Em,e)],entities:{},styles:{},formats:{},borders:{},revisionId:Y}}function Am(e,t){return{...Im(e,t),charts:[]}}class Om extends gg{constructor(e,t,o,n,i,r){super(t,n,i),this.dispatch=n,this.range=o,o.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.uuidGenerator=r}import(e){}export(e){}adaptRanges(e,t){}}class Mm extends Om{constructor(){super(...arguments),this.borders={}}handle(e){switch(e.type){case"ADD_MERGE":for(const t of e.target)this.addBordersToMerge(e.sheetId,t);break;case"DUPLICATE_SHEET":const t=this.borders[e.sheetId];if(t){const o=t.slice().map((e=>null==e?void 0:e.slice().map((e=>({...e})))));this.history.update("borders",e.sheetIdTo,o)}break;case"DELETE_SHEET":const o={...this.borders};delete o[e.sheetId],this.history.update("borders",o);break;case"SET_BORDER":this.setBorder(e.sheetId,e.col,e.row,e.border);break;case"SET_FORMATTING":if(e.border){const t=e.target.map((t=>this.getters.expandZone(e.sheetId,t)));this.setBorders(e.sheetId,t,e.border)}break;case"CLEAR_FORMATTING":this.clearBorders(e.sheetId,e.target);break;case"REMOVE_COLUMNS_ROWS":for(let t of e.elements)"COL"===e.dimension?this.shiftBordersHorizontally(e.sheetId,t+1,-1):this.shiftBordersVertically(e.sheetId,t+1,-1);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumns(e):this.handleAddRows(e)}}handleAddColumns(e){let t,o;"before"===e.position?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity,{moveFirstLeftBorder:!0}),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity,{moveFirstLeftBorder:!1}),t=e.base,o=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,o)}handleAddRows(e){let t,o;"before"===e.position?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity,{moveFirstTopBorder:!0}),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity,{moveFirstTopBorder:!1}),t=e.base,o=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,o)}getCellBorder(e,t,o){var n,i,r,s,a,l,c,h,d,u,g,p;const f={top:null===(r=null===(i=null===(n=this.borders[e])||void 0===n?void 0:n[t])||void 0===i?void 0:i[o])||void 0===r?void 0:r.horizontal,bottom:null===(l=null===(a=null===(s=this.borders[e])||void 0===s?void 0:s[t])||void 0===a?void 0:a[o+1])||void 0===l?void 0:l.horizontal,left:null===(d=null===(h=null===(c=this.borders[e])||void 0===c?void 0:c[t])||void 0===h?void 0:h[o])||void 0===d?void 0:d.vertical,right:null===(p=null===(g=null===(u=this.borders[e])||void 0===u?void 0:u[t+1])||void 0===g?void 0:g[o])||void 0===p?void 0:p.vertical};return f.bottom||f.left||f.right||f.top?f:null}ensureColumnBorderContinuity(e,t,o){const n=Fe(t+1,o);for(let i=0;i<this.getters.getNumberRows(e);i++){const r=this.getCellBorder(e,t,i),s=this.getCellBorder(e,o,i);if(r&&s){const t=this.getCommonSides(r,s);for(let o of n)this.addBorder(e,o,i,t)}}}ensureRowBorderContinuity(e,t,o){const n=Fe(t+1,o);for(let i=0;i<this.getters.getNumberCols(e);i++){const r=this.getCellBorder(e,i,t),s=this.getCellBorder(e,i,o);if(r&&s){const t=this.getCommonSides(r,s);for(let o of n)this.addBorder(e,i,o,t)}}}getCommonSides(e,t){const o={};for(let n of["top","bottom","left","right"])e[n]&&e[n]===t[n]&&(o[n]=e[n]);return o}getColumnsWithBorders(e){const t=this.borders[e];return t?Object.keys(t).map((e=>parseInt(e,10))):[]}getRowsRange(e){return this.borders[e]?Fe(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,o,{moveFirstLeftBorder:n}={}){this.borders[e]&&(o<0&&this.moveBordersOfColumn(e,t,o,"vertical",{destructive:!1}),this.getColumnsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((i=>{(i===t&&n||i!==t)&&this.moveBordersOfColumn(e,i,o,"vertical"),this.moveBordersOfColumn(e,i,o,"horizontal")})))}shiftBordersVertically(e,t,o,{moveFirstTopBorder:n}={}){this.borders[e]&&(o<0&&this.moveBordersOfRow(e,t,o,"horizontal",{destructive:!1}),this.getRowsRange(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((i=>{(i===t&&n||i!==t)&&this.moveBordersOfRow(e,i,o,"horizontal"),this.moveBordersOfRow(e,i,o,"vertical")})))}moveBordersOfRow(e,t,o,n,{destructive:i}={destructive:!0}){const r=this.borders[e];r&&this.getColumnsWithBorders(e).forEach((s=>{var a,l,c,h;const d=null===(l=null===(a=r[s])||void 0===a?void 0:a[t+o])||void 0===l?void 0:l[n],u=null===(h=null===(c=r[s])||void 0===c?void 0:c[t])||void 0===h?void 0:h[n];this.history.update("borders",e,s,t+o,n,i?u:u||d),this.history.update("borders",e,s,t,n,void 0)}))}moveBordersOfColumn(e,t,o,n,{destructive:i}={destructive:!0}){const r=this.borders[e];r&&this.getRowsRange(e).forEach((s=>{var a,l,c,h;const d=null===(l=null===(a=r[t+o])||void 0===a?void 0:a[s])||void 0===l?void 0:l[n],u=null===(h=null===(c=r[t])||void 0===c?void 0:c[s])||void 0===h?void 0:h[n];this.history.update("borders",e,t+o,s,n,i?u:u||d),this.history.update("borders",e,t,s,n,void 0)}))}setBorder(e,t,o,n,i=!0){var r,s,a,l,c,h,d,u,g,p,f,m,v,b,S,C;!i&&(null===(l=null===(a=null===(s=null===(r=this.borders)||void 0===r?void 0:r[e])||void 0===s?void 0:s[t])||void 0===a?void 0:a[o])||void 0===l?void 0:l.vertical)||this.history.update("borders",e,t,o,"vertical",null==n?void 0:n.left),!i&&(null===(u=null===(d=null===(h=null===(c=this.borders)||void 0===c?void 0:c[e])||void 0===h?void 0:h[t])||void 0===d?void 0:d[o])||void 0===u?void 0:u.horizontal)||this.history.update("borders",e,t,o,"horizontal",null==n?void 0:n.top),!i&&(null===(m=null===(f=null===(p=null===(g=this.borders)||void 0===g?void 0:g[e])||void 0===p?void 0:p[t+1])||void 0===f?void 0:f[o])||void 0===m?void 0:m.vertical)||this.history.update("borders",e,t+1,o,"vertical",null==n?void 0:n.right),!i&&(null===(C=null===(S=null===(b=null===(v=this.borders)||void 0===v?void 0:v[e])||void 0===b?void 0:b[t])||void 0===S?void 0:S[o+1])||void 0===C?void 0:C.horizontal)||this.history.update("borders",e,t,o+1,"horizontal",null==n?void 0:n.bottom)}clearBorders(e,t){for(let o of t){for(let t=o.top;t<=o.bottom;t++){this.history.update("borders",e,o.right+1,t,"vertical",void 0);for(let n=o.left;n<=o.right;n++)this.history.update("borders",e,n,t,void 0)}for(let t=o.left;t<=o.right;t++)this.history.update("borders",e,t,o.bottom+1,"horizontal",void 0)}}addBorder(e,t,o,n){this.setBorder(e,t,o,{...this.getCellBorder(e,t,o),...n})}setBorders(e,t,o){if("clear"===o)return this.clearBorders(e,t);for(let n of t){if("h"===o||"hv"===o||"all"===o)for(let t=n.top+1;t<=n.bottom;t++)for(let o=n.left;o<=n.right;o++)this.addBorder(e,o,t,{top:q});if("v"===o||"hv"===o||"all"===o)for(let t=n.top;t<=n.bottom;t++)for(let o=n.left+1;o<=n.right;o++)this.addBorder(e,o,t,{left:q});if("left"===o||"all"===o||"external"===o)for(let t=n.top;t<=n.bottom;t++)this.addBorder(e,n.left,t,{left:q});if("right"===o||"all"===o||"external"===o)for(let t=n.top;t<=n.bottom;t++)this.addBorder(e,n.right+1,t,{left:q});if("top"===o||"all"===o||"external"===o)for(let t=n.left;t<=n.right;t++)this.addBorder(e,t,n.top,{top:q});if("bottom"===o||"all"===o||"external"===o)for(let t=n.left;t<=n.right;t++)this.addBorder(e,t,n.bottom+1,{top:q})}}addBordersToMerge(e,t){const{left:o,right:n,top:i,bottom:r}=t,s=this.getCellBorder(e,o,i),a=this.getCellBorder(e,n,r);this.clearBorders(e,[t]),(null==s?void 0:s.top)&&this.setBorders(e,[{...t,bottom:i}],"top"),(null==s?void 0:s.left)&&this.setBorders(e,[{...t,right:o}],"left"),((null==a?void 0:a.bottom)||(null==s?void 0:s.bottom))&&this.setBorders(e,[{...t,top:r}],"bottom"),((null==a?void 0:a.right)||(null==s?void 0:s.right))&&this.setBorders(e,[{...t,left:n}],"right")}import(e){if(e.borders)for(let t of e.sheets)for(let[o,n]of Object.entries(t.cells))if(null==n?void 0:n.border){const i=e.borders[n.border],{col:r,row:s}=At(o);this.setBorder(t.id,r,s,i,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,mo(e))}export(e){let t=0;const o={};function n(e){for(let[t,n]of Object.entries(o))if(ye(n)===ye(e))return parseInt(t,10);return o[++t]=e,t}for(let t of e.sheets)for(let e=0;e<t.colNumber;e++)for(let o=0;o<t.rowNumber;o++){const i=this.getCellBorder(t.id,e,o);if(i){const r=Ot(e,o),s=t.cells[r],a=n(i);s?s.border=a:t.cells[r]={border:a}}}e.borders=o}exportForExcel(e){this.export(e)}}Mm.getters=["getCellBorder"];const Nm=new RegExp(String.fromCharCode(160),"g");class _m extends Om{constructor(){super(...arguments),this.cells={},this.createCell=function(e){const t=_n.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o,n,i,r){const s=t.find((e=>e.match(n,i.format)));if(!s)return new rp(o,n,i);try{return s.createCell(o,n,i,r,e)}catch(e){return new dp(o,n,e instanceof c?e:new h(e.message||oe),i)}}}(this.getters)}adaptRanges(e,t){for(const o of Object.keys(this.cells))for(const n of Object.values(this.cells[o]||{}))if(n.isFormula())for(const i of n.dependencies)if(!t||i.sheetId===t){const t=e(i);"NONE"!==t.changeType&&this.history.update("cells",o,n.id,"dependencies",n.dependencies.indexOf(i),t.range)}}allowDispatch(e){switch(e.type){case"UPDATE_CELL":case"CLEAR_CELL":return this.checkCellOutOfSheet(e.sheetId,e.col,e.row);default:return 0}}handle(e){switch(e.type){case"SET_FORMATTING":"style"in e&&this.setStyle(e.sheetId,e.target,e.style),"format"in e&&void 0!==e.format&&this.setFormatter(e.sheetId,e.target,e.format);break;case"CLEAR_FORMATTING":this.clearFormatting(e.sheetId,e.target);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumnsRows(e,this.copyColumnStyle.bind(this)):this.handleAddColumnsRows(e,this.copyRowStyle.bind(this));break;case"UPDATE_CELL":this.updateCell(e.sheetId,e.col,e.row,e);break;case"CLEAR_CELL":this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col,row:e.row,content:"",style:null,format:""})}}setFormatter(e,t,o){for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let i=n.left;i<=n.right;i++)this.dispatch("UPDATE_CELL",{sheetId:e,col:i,row:t,format:o})}clearFormatting(e,t){for(let o of t)for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,style:null,format:""})}handleAddColumnsRows(e,t){let o,n;"before"===e.position?(o=Fe(e.base,e.base+e.quantity),n=e.base+e.quantity):(o=Fe(e.base+1,e.base+e.quantity+1),n=e.base),t(e.sheetId,n,o)}import(e){for(let t of e.sheets)for(let o in t.cells){const n=t.cells[o],{col:i,row:r}=At(o);if((null==n?void 0:n.content)||(null==n?void 0:n.format)||(null==n?void 0:n.style)){const o=this.importCell(t.id,n,e.styles,e.formats);this.history.update("cells",t.id,o.id,o),this.dispatch("UPDATE_CELL_POSITION",{cellId:o.id,col:i,row:r,sheetId:t.id})}}}export(e){const t={},o={};for(let n of e.sheets){const e={},i=Object.keys(this.cells[n.id]||{}).map((e=>this.getters.getCellPosition(e))).sort(((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col));for(const{col:r,row:s}of i){const i=this.getters.getCell(n.id,r,s);e[Ot(r,s)]={style:i.style?Xe(i.style,t):void 0,format:i.format?Xe(i.format,o):void 0,content:i.content||void 0}}n.cells=e}e.styles=t,e.formats=o}importCell(e,t,o,n){const i=t.style&&o[t.style]||void 0,r=t.format&&n[t.format]||void 0,s=this.uuidGenerator.uuidv4(),a={format:r,style:i};return this.createCell(s,(null==t?void 0:t.content)||"",a,e)}exportForExcel(e){this.export(e);for(let t of e.sheets)for(const e in t.cells){const{col:o,row:n}=At(e),i=this.getters.getCell(t.id,o,n),r=t.cells[e];r.value=i.evaluated.value,r.isFormula=i.isFormula()}}getCells(e){return this.cells[e]||{}}getCellById(e){for(const t in this.cells){const o=this.cells[t][e];if(o)return o}}buildFormulaContent(e,t,o){const n=o||[...t.dependencies];return Ye(t.compiledFormula.tokens.map((t=>{if("REFERENCE"===t.type){const t=n.shift();return this.getters.getRangeString(t,e)}return t.value})))}getFormulaCellContent(e,t){return this.buildFormulaContent(e,t)}getCellStyle(e){return e&&e.style||{}}zoneToXC(e,t,o=[{colFixed:!1,rowFixed:!1}]){const n=Ot((t=this.getters.expandZone(e,t)).left,t.top,o[0]),i=Ot(t.right,t.bottom,o.length>1?o[1]:o[0]),r=this.getters.getMainCellPosition(e,t.left,t.top),s=this.getters.getMainCellPosition(e,t.right,t.bottom),a=r.col===s.col&&r.row===s.row;return n==i||a?n:n+":"+i}setStyle(e,t,o){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let i=n.top;i<=n.bottom;i++){const n=this.getters.getCell(e,t,i);this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:i,style:o?{...null==n?void 0:n.style,...o}:void 0})}}copyColumnStyle(e,t,o){for(let n=0;n<this.getters.getNumberRows(e);n++){const i=this.getFormat(e,t,n);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,...i})}}copyRowStyle(e,t,o){for(let n=0;n<this.getters.getNumberCols(e);n++){const i=this.getFormat(e,n,t);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:n,row:t,...i})}}getFormat(e,t,o){const n={},{col:i,row:r}=this.getters.getMainCellPosition(e,t,o),s=this.getters.getCell(e,i,r);return s&&(s.style&&(n.style=s.style),s.format&&(n.format=s.format)),n}updateCell(e,t,o,n){var i;const r=this.getters.getCell(e,t,o),s="content"in n||"formula"in n,a=s?(null===(i=n.content)||void 0===i?void 0:i.replace(Nm,""))||"":(null==r?void 0:r.content)||"";let l;l=void 0!==n.style?n.style||void 0:r?r.style:void 0;let c=("format"in n?n.format:r&&r.format)||undefined;if((s&&!a&&!n.formula||!s&&(!r||r.isEmpty()))&&!l&&!c)return void(r&&(this.history.update("cells",e,r.id,void 0),this.dispatch("UPDATE_CELL_POSITION",{cellId:void 0,col:t,row:o,sheetId:e})));const h=(null==r?void 0:r.id)||this.uuidGenerator.uuidv4(),d=s,u={format:c,style:l},g=this.createCell(h,a,u,e);r&&!d&&g.isFormula()&&g.assignEvaluation(Ke(r.evaluated)),this.history.update("cells",e,g.id,g),this.dispatch("UPDATE_CELL_POSITION",{cellId:g.id,col:t,row:o,sheetId:e})}checkCellOutOfSheet(e,t,o){if(!this.getters.tryGetSheet(e))return 27;return To(t,o,this.getters.getSheetZone(e))?0:18}}_m.getters=["zoneToXC","getCells","getFormulaCellContent","getCellStyle","buildFormulaContent","getCellById"];class Fm extends Om{constructor(){super(...arguments),this.charts={},this.createChart=function(e){const t=Bo.getAll();return function(o,n,i){const r=t.find((e=>e.match(n.type)));if(!r)throw new Error(`No builder for this chart: ${n.type}`);return r.createChart(n,i,e)}}(this.getters),this.validateChartDefinition=e=>function(e,t){const o=Bo.getAll().find((e=>e.match(t.type)));if(!o)throw new Error("Unknown chart type.");return o.validateChartDefinition(e,t)}(this,e.definition)}adaptRanges(e){for(const t of Object.keys(this.charts))for(const[o,n]of Object.entries(this.charts[t]||{}))this.history.update("charts",t,o,null==n?void 0:n.updateRanges(e))}allowDispatch(e){switch(e.type){case"CREATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartDuplicate));case"UPDATE_CHART":return this.validateChartDefinition(e);default:return 0}}handle(e){var t,o;switch(e.type){case"CREATE_CHART":this.addFigure(e.id,e.sheetId,e.position,e.size),this.addChart(e.id,e.sheetId,e.definition);break;case"UPDATE_CHART":this.addChart(e.id,e.sheetId,e.definition);break;case"DUPLICATE_SHEET":{const n=this.getters.getFigures(e.sheetId);for(const i of n)if("chart"===i.tag){const n=i.id.split("??").pop(),r=`${e.sheetIdTo}??${n}`,s=null===(o=null===(t=this.charts[e.sheetId])||void 0===t?void 0:t[i.id])||void 0===o?void 0:o.copyForSheetId(e.sheetIdTo);s&&this.dispatch("CREATE_CHART",{id:r,position:{x:i.x,y:i.y},size:{width:i.width,height:i.height},definition:s.getDefinition(),sheetId:e.sheetIdTo})}break}case"DELETE_FIGURE":this.history.update("charts",e.sheetId,e.id,void 0);break;case"DELETE_SHEET":this.history.update("charts",e.sheetId,void 0)}}getContextCreationChart(e,t){var o,n;return null===(n=null===(o=this.charts[e])||void 0===o?void 0:o[t])||void 0===n?void 0:n.getContextCreation()}getChart(e,t){var o;return null===(o=this.charts[e])||void 0===o?void 0:o[t]}getChartType(e,t){var o,n;const i=null===(n=null===(o=this.charts[e])||void 0===o?void 0:o[t])||void 0===n?void 0:n.type;if(!i)throw new Error("Chart not defined.");return i}isChartDefined(e,t){return t in(this.charts[e]||{})}getChartIds(e){return Object.keys(this.charts[e]||{})}getChartDefinition(e,t){var o,n;const i=null===(n=null===(o=this.charts[e])||void 0===o?void 0:o[t])||void 0===n?void 0:n.getDefinition();if(!i)throw new Error(`There is no chart with the given figureId: ${t}`);return i}import(e){for(let t of e.sheets)if(t.figures){const e={};for(let o of t.figures)"chart"===o.tag&&(e[o.id]=this.createChart(o.id,o.data,t.id));this.charts[t.id]=e}}export(e){if(e.sheets)for(let t of e.sheets){const e=this.getters.getFigures(t.id);for(let o of e)o&&"chart"===o.tag&&(o.data=this.getChartDefinition(t.id,o.id));t.figures=e}}exportForExcel(e){var t,o;for(let n of e.sheets){const e=this.getters.getFigures(n.id),i=[];for(let r of e)if(r&&"chart"===r.tag){const e=null===(o=null===(t=this.charts[n.id])||void 0===t?void 0:t[r.id])||void 0===o?void 0:o.getDefinitionForExcel();e&&i.push({...r,data:e})}n.charts=i}}addFigure(e,t,o={x:0,y:0},n={width:536,height:335}){if(this.getters.getFigure(t,e))return;const i={id:e,x:o.x,y:o.y,width:n.width,height:n.height,tag:"chart"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}addChart(e,t,o){this.history.update("charts",t,e,this.createChart(e,o,t))}checkChartDuplicate(e){var t;return(null===(t=this.charts[e.sheetId])||void 0===t?void 0:t[e.id])?83:0}}function Dm(e){return""===e?NaN:Number(e)}Fm.getters=["isChartDefined","getChartDefinition","getChartType","getChartIds","getChart","getContextCreationChart"];class km extends Om{constructor(){super(...arguments),this.cfRules={}}loopThroughRangesOfSheet(e,t){for(const o of this.cfRules[e])for(const n of o.ranges){const i=t(n);switch(i.changeType){case"REMOVE":let t=o.ranges.slice();t.splice(o.ranges.indexOf(n),1),t.length>=1?this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",t):this.removeConditionalFormatting(o.id,e);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",o.ranges.indexOf(n),i.range)}}}adaptRanges(e,t){if(t)this.loopThroughRangesOfSheet(t,e);else for(const t of Object.keys(this.cfRules))this.loopThroughRangesOfSheet(t,e)}allowDispatch(e){switch(e.type){case"ADD_CONDITIONAL_FORMAT":return this.checkValidations(e,this.checkCFRule,this.checkEmptyRange);case"MOVE_CONDITIONAL_FORMAT":return this.checkValidReordering(e.cfId,e.direction,e.sheetId)}return 0}handle(e){switch(e.type){case"CREATE_SHEET":this.cfRules[e.sheetId]=[];break;case"DUPLICATE_SHEET":this.history.update("cfRules",e.sheetIdTo,[]);for(const t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case"DELETE_SHEET":const t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update("cfRules",t);break;case"ADD_CONDITIONAL_FORMAT":const o={...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))};this.addConditionalFormatting(o,e.sheetId);break;case"REMOVE_CONDITIONAL_FORMAT":this.removeConditionalFormatting(e.id,e.sheetId);break;case"MOVE_CONDITIONAL_FORMAT":this.reorderConditionalFormatting(e.cfId,e.direction,e.sheetId)}}import(e){for(let t of e.sheets)this.cfRules[t.id]=t.conditionalFormats.map((e=>this.mapToConditionalFormatInternal(t.id,e)))}export(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e))))}exportForExcel(e){this.export(e)}getConditionalFormats(e){var t;return(null===(t=this.cfRules[e])||void 0===t?void 0:t.map((t=>this.mapToConditionalFormat(e,t))))||[]}getRulesSelection(e,t){const o=new Set;return t.forEach((t=>{this.getRulesByZone(e,t).forEach((e=>{o.add(e)}))})),Array.from(o)}getRulesByZone(e,t){const o=new Set;for(let n=t.top;n<=t.bottom;n++)for(let i=t.left;i<=t.right;i++){this.getRulesByCell(e,i,n).forEach((e=>{o.add(e.id)}))}return o}getRulesByCell(e,t,o){const n=[];for(let i of this.cfRules[e])for(let e of i.ranges)To(t,o,e.zone)&&n.push(i);return new Set(n.map((t=>this.mapToConditionalFormat(e,t))))}mapToConditionalFormat(e,t){return{...t,ranges:t.ranges.map((t=>this.getters.getRangeString(t,e)))}}mapToConditionalFormatInternal(e,t){const o={...t,ranges:t.ranges.map((t=>this.getters.getRangeFromSheetXC(e,t)))};return o}addConditionalFormatting(e,t){const o=this.cfRules[t].slice(),n=o.findIndex((t=>t.id===e.id)),i=this.mapToConditionalFormatInternal(t,e);n>-1?o.splice(n,1,i):o.push(i),this.history.update("cfRules",t,o)}checkValidReordering(e,t,o){if(!this.cfRules[o])return 27;const n=this.cfRules[o].findIndex((t=>t.id===e));if(-1===n)return 70;const i="up"===t?n-1:n+1;return i<0||i>=this.cfRules[o].length?70:0}checkEmptyRange(e){return e.ranges.length?0:24}checkCFRule(e){const t=e.cf.rule;switch(t.type){case"CellIsRule":return this.checkValidations(t,this.checkOperatorArgsNumber(2,["Between","NotBetween"]),this.checkOperatorArgsNumber(1,["BeginsWith","ContainsText","EndsWith","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","NotContains"]),this.checkOperatorArgsNumber(0,["IsEmpty","IsNotEmpty"]));case"ColorScaleRule":return this.checkValidations(t,this.chainValidations(this.checkThresholds(this.checkFormulaCompilation)),this.chainValidations(this.checkThresholds(this.checkNaN),this.batchValidations(this.checkMinBiggerThanMax,this.checkMinBiggerThanMid,this.checkMidBiggerThanMax)));case"IconSetRule":return this.checkValidations(t,this.chainValidations(this.checkInflectionPoints(this.checkNaN),this.checkLowerBiggerThanUpper),this.chainValidations(this.checkInflectionPoints(this.checkFormulaCompilation)))}return 0}checkOperatorArgsNumber(e,t){if(e>2)throw new Error("Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.");return o=>{if(t.includes(o.operator)){const t=[],n=e=>void 0===e||""===e;return e>=1&&n(o.values[0])&&t.push(50),e>=2&&n(o.values[1])&&t.push(51),t.length?t:0}return 0}}checkNaN(e,t){if(["number","percentage","percentile"].includes(e.type)&&(""===e.value||isNaN(e.value)))switch(t){case"min":return 52;case"max":return 54;case"mid":return 53;case"upperInflectionPoint":return 55;case"lowerInflectionPoint":return 56}return 0}checkFormulaCompilation(e,t){if("formula"!==e.type)return 0;try{lg(e.value||"")}catch(e){switch(t){case"min":return 57;case"max":return 59;case"mid":return 58;case"upperInflectionPoint":return 60;case"lowerInflectionPoint":return 61}}return 0}checkThresholds(e){return this.batchValidations((t=>e(t.minimum,"min")),(t=>e(t.maximum,"max")),(t=>t.midpoint?e(t.midpoint,"mid"):0))}checkInflectionPoints(e){return this.batchValidations((t=>e(t.lowerInflectionPoint,"lowerInflectionPoint")),(t=>e(t.upperInflectionPoint,"upperInflectionPoint")))}checkLowerBiggerThanUpper(e){const t=e.lowerInflectionPoint.value,o=e.upperInflectionPoint.value;return["number","percentage","percentile"].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(o)?47:0}checkMinBiggerThanMax(e){const t=e.minimum.value,o=e.maximum.value;return["number","percentage","percentile"].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&Dm(t)>=Dm(o)?46:0}checkMidBiggerThanMax(e){var t;const o=null===(t=e.midpoint)||void 0===t?void 0:t.value,n=e.maximum.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&Dm(o)>=Dm(n)?48:0}checkMinBiggerThanMid(e){var t;const o=e.minimum.value,n=null===(t=e.midpoint)||void 0===t?void 0:t.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&Dm(o)>=Dm(n)?49:0}removeConditionalFormatting(e,t){const o=this.cfRules[t].findIndex((t=>t.id===e));if(-1!==o){const e=this.cfRules[t].slice();e.splice(o,1),this.history.update("cfRules",t,e)}}reorderConditionalFormatting(e,t,o){const n=this.cfRules[o].findIndex((t=>t.id===e)),i="up"===t?n-1:n+1;if(!(i<0||i>=this.cfRules[o].length)&&-1!==n&&-1!==i){const e=[...this.cfRules[o]],t=e[n];e[n]=e[i],e[i]=t,this.history.update("cfRules",o,e)}}}km.getters=["getConditionalFormats","getRulesSelection","getRulesByCell"];class $m extends Om{constructor(){super(...arguments),this.figures={}}allowDispatch(e){switch(e.type){case"CREATE_FIGURE":return this.checkFigureDuplicate(e.sheetId,e.figure.id);case"UPDATE_FIGURE":case"DELETE_FIGURE":return this.checkFigureExists(e.sheetId,e.id);default:return 0}}handle(e){switch(e.type){case"CREATE_SHEET":this.figures[e.sheetId]={};break;case"DELETE_SHEET":this.deleteSheet(e.sheetId);break;case"CREATE_FIGURE":this.addFigure(e.figure,e.sheetId);break;case"UPDATE_FIGURE":const{type:t,sheetId:o,...n}=e,i=n;this.updateFigure(o,i);break;case"DELETE_FIGURE":this.removeFigure(e.id,e.sheetId)}}updateFigure(e,t){if("id"in t)for(const[o,n]of Object.entries(t))switch(o){case"x":case"y":void 0!==n&&this.history.update("figures",e,t.id,o,Math.max(n,0));break;case"width":case"height":void 0!==n&&this.history.update("figures",e,t.id,o,n)}}addFigure(e,t){this.history.update("figures",t,e.id,e)}deleteSheet(e){this.history.update("figures",e,void 0)}removeFigure(e,t){this.history.update("figures",t,e,void 0)}checkFigureExists(e,t){var o;return void 0===(null===(o=this.figures[e])||void 0===o?void 0:o[t])?69:0}checkFigureDuplicate(e,t){var o;return(null===(o=this.figures[e])||void 0===o?void 0:o[t])?81:0}getFigures(e){return Object.values(this.figures[e]||{}).filter(Ze)}getFigure(e,t){var o;return null===(o=this.figures[e])||void 0===o?void 0:o[t]}import(e){for(let t of e.sheets){const e={};t.figures.forEach((t=>{e[t.id]=t})),this.figures[t.id]=e}}export(e){for(const t of e.sheets)for(const e of this.getFigures(t.id)){const o=void 0;t.figures.push({...e,data:o})}}exportForExcel(e){this.export(e)}}$m.getters=["getFigures","getFigure"];class Lm{constructor(e){this.filters=[],this.zone=e;const t=new po;this.id=t.uuidv4();for(const o of Fe(e.left,e.right+1)){const e={...this.zone,left:o,right:o};this.filters.push(new Pm(t.uuidv4(),e))}}get contentZone(){if(this.zone.bottom!==this.zone.top)return{...this.zone,top:this.zone.top+1}}getFilterId(e){var t;return null===(t=this.filters.find((t=>t.col===e)))||void 0===t?void 0:t.id}clone(){return new Lm(this.zone)}}class Pm{constructor(e,t){if(t.left!==t.right)throw new Error("Can only define a filter on a single column");this.id=e,this.zoneWithHeaders=t}get col(){return this.zoneWithHeaders.left}get filteredZone(){const e=this.zoneWithHeaders;if(e.bottom!==e.top)return{...e,top:e.top+1}}}class Um extends Om{constructor(){super(...arguments),this.tables={}}allowDispatch(e){switch(e.type){case"CREATE_FILTER_TABLE":if(!Vo(...e.target))return 80;const t=yo(...e.target),o=()=>this.getFilterTables(e.sheetId).some((e=>Io(e.zone,t)))?77:0,n=()=>{const o=this.getters.getMergesInZone(e.sheetId,t);for(let e of o)if(Io(t,e))return 79;return 0};return this.checkValidations(e,o,n);case"ADD_MERGE":for(let t of e.target)for(let o of this.getFilterTables(e.sheetId))if(Io(o.zone,t))return 79}return 0}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("tables",e.sheetId,{});break;case"DELETE_SHEET":const t={...this.tables};delete t[e.sheetId],this.history.update("tables",t);break;case"DUPLICATE_SHEET":this.history.update("tables",e.sheetIdTo,Ie(this.tables[e.sheetId]));break;case"ADD_COLUMNS_ROWS":this.onAddColumnsRows(e);break;case"REMOVE_COLUMNS_ROWS":this.onDeleteColumnsRows(e);break;case"CREATE_FILTER_TABLE":{const t=yo(...e.target),o=this.createFilterTable(t);this.history.update("tables",e.sheetId,o.id,o);break}case"REMOVE_FILTER_TABLE":{const t={};for(const o of this.getFilterTables(e.sheetId))e.target.every((e=>!xo(e,o.zone)))&&(t[o.id]=o);this.history.update("tables",e.sheetId,t);break}case"UPDATE_CELL":{const t=e.sheetId;for(let o of this.getFilterTables(t))this.canUpdateCellCmdExtendTable(e,o)&&this.extendTableDown(t,o);break}}}getFilters(e){return this.getFilterTables(e).map((e=>e.filters)).flat()}getFilterTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(Ze):[]}getFilter(e,t,o){var n;return null===(n=this.getFilterTable(e,t,o))||void 0===n?void 0:n.filters.find((e=>e.col===t))}getFilterId(e,t,o){var n;return null===(n=this.getFilter(e,t,o))||void 0===n?void 0:n.id}getFilterTable(e,t,o){return this.getFilterTables(e).find((e=>To(t,o,e.zone)))}getFilterTablesInZone(e,t){return this.getFilterTables(e).filter((e=>Ao(e.zone,t)))}doesZonesContainFilter(e,t){for(const o of t)for(const t of this.getFilterTables(e))if(xo(o,t.zone))return!0;return!1}onAddColumnsRows(e){for(const t of this.getFilterTables(e.sheetId)){const o=So(t.zone,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity),n=[];for(const o of t.filters){const t=So(o.zoneWithHeaders,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity);n.push(new Pm(o.id,t))}if(n.length<No(o).width){for(let e=o.left;e<=o.right;e++)n.find((t=>t.col===e))||n.push(new Pm(this.uuidGenerator.uuidv4(),{...o,left:e,right:e}));n.sort(((e,t)=>e.col-t.col))}this.history.update("tables",e.sheetId,t.id,"zone",o),this.history.update("tables",e.sheetId,t.id,"filters",n)}}onDeleteColumnsRows(e){for(const t of this.getFilterTables(e.sheetId)){const o=wo(t.zone,"COL"===e.dimension?"left":"top",e.elements);if(o){if(bo(o)!==bo(t.zone)){const n=[];for(const o of t.filters){const t=wo(o.zoneWithHeaders,"COL"===e.dimension?"left":"top",e.elements);t&&n.push(new Pm(o.id,t))}this.history.update("tables",e.sheetId,t.id,"zone",o),this.history.update("tables",e.sheetId,t.id,"filters",n)}}else{const o={...this.tables[e.sheetId]};delete o[t.id],this.history.update("tables",e.sheetId,o)}}}createFilterTable(e){return new Lm(e)}extendTableDown(e,t){const o={...t.zone,bottom:t.zone.bottom+1};this.history.update("tables",e,t.id,"zone",o);for(let o=0;o<t.filters.length;o++){const n=t.filters[o],i={...n.zoneWithHeaders,bottom:n.zoneWithHeaders.bottom+1};this.history.update("tables",e,t.id,"filters",o,"zoneWithHeaders",i)}}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:o,row:n},i){var r;if(!e)return;const s=i.zone;if(!(s.bottom+1===n&&o>=s.left&&o<=s.right))return!1;for(const e of Fe(s.left,s.right+1)){if(null===(r=this.getters.getCell(t,e,n))||void 0===r?void 0:r.content)return!1;if(this.getters.getFilter(t,e,n))return!1;if(this.getters.isInMerge(t,e,n))return!1}return!0}import(e){for(const t of e.sheets)for(const e of t.filterTables||[]){const o=this.createFilterTable(mo(e.range));this.history.update("tables",t.id,o.id,o)}}export(e){for(const t of e.sheets)for(const e of this.getFilterTables(t.id))t.filterTables.push({range:bo(e.zone)})}exportForExcel(e){this.export(e)}}Um.getters=["doesZonesContainFilter","getFilter","getFilters","getFilterTable","getFilterTables","getFilterTablesInZone","getFilterId"];class Vm extends Om{constructor(){super(...arguments),this.sizes={}}handle(e){var t,o,n;switch(e.type){case"CREATE_SHEET":{const t=this.computeSheetSizes(e.sheetId),o={COL:t.COL.map((e=>({manualSize:void 0,computedSize:Ke(e)}))),ROW:t.ROW.map((e=>({manualSize:void 0,computedSize:Ke(e)})))};this.history.update("sizes",e.sheetId,o);break}case"DUPLICATE_SHEET":for(const t of this.sizes[e.sheetId].ROW)t.computedSize();for(const t of this.sizes[e.sheetId].COL)t.computedSize();this.history.update("sizes",e.sheetIdTo,Ie(this.sizes[e.sheetId]));break;case"DELETE_SHEET":const i={...this.sizes};delete i[e.sheetId],this.history.update("sizes",i);break;case"REMOVE_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);const o=Math.min(...e.elements);t=t.map(((t,n)=>"ROW"===e.dimension&&n>=o?{manualSize:t.manualSize,computedSize:Ke((()=>this.getRowTallestCellSize(e.sheetId,n)))}:t)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];const o=Je(e.position,e.base),n=t[e.base];t.splice(o,0,...Array(e.quantity).fill(n)),t=t.map(((t,o)=>"ROW"===e.dimension&&o>e.base+e.quantity?{manualSize:t.manualSize,computedSize:Ke((()=>this.getRowTallestCellSize(e.sheetId,o)))}:t)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"RESIZE_COLUMNS_ROWS":for(let t of e.elements)if("ROW"===e.dimension){const o=this.getRowTallestCellSize(e.sheetId,t);this.history.update("sizes",e.sheetId,e.dimension,t,{manualSize:e.size||void 0,computedSize:Ke(o)})}else this.history.update("sizes",e.sheetId,e.dimension,t,{manualSize:e.size||void 0,computedSize:Ke(e.size||N)});break;case"UPDATE_CELL":if(!(null===(n=null===(o=null===(t=this.sizes[e.sheetId])||void 0===t?void 0:t.ROW)||void 0===o?void 0:o[e.row])||void 0===n?void 0:n.manualSize)){const{sheetId:t,row:o}=e;this.history.update("sizes",t,"ROW",o,"computedSize",Ke((()=>this.getRowTallestCellSize(t,o))))}break;case"ADD_MERGE":case"REMOVE_MERGE":for(let t of e.target)for(let o of Fe(t.top,t.bottom+1)){const t=this.getRowTallestCellSize(e.sheetId,o);t!==this.getRowSize(e.sheetId,o)&&this.history.update("sizes",e.sheetId,"ROW",o,"computedSize",Ke(t))}}}getColSize(e,t){return this.getHeaderSize(e,"COL",t)}getRowSize(e,t){return this.getHeaderSize(e,"ROW",t)}getHeaderSize(e,t,o){var n,i,r,s;return Math.round((null===(i=null===(n=this.sizes[e])||void 0===n?void 0:n[t][o])||void 0===i?void 0:i.manualSize)||(null===(s=null===(r=this.sizes[e])||void 0===r?void 0:r[t][o])||void 0===s?void 0:s.computedSize())||this.getDefaultHeaderSize(t))}computeSheetSizes(e){var t,o;const n={COL:[],ROW:[]};for(let t of Fe(0,this.getters.getNumberCols(e)))n.COL.push(this.getHeaderSize(e,"COL",t));for(let i of Fe(0,this.getters.getNumberRows(e))){let r=null===(o=null===(t=this.sizes[e])||void 0===t?void 0:t.ROW)||void 0===o?void 0:o[i].manualSize;if(!r){r=this.getRowTallestCellSize(e,i)}n.ROW.push(r)}return n}getDefaultHeaderSize(e){return"COL"===e?N:_}getCellHeight(e,t,o){const n=this.getters.getMerge(e,t,o);if(n&&n.bottom!==n.top)return _;const i=this.getters.getCell(e,t,o);return(null==(r=null==i?void 0:i.style)?void 0:r.fontSize)?(s||1)*(_e(r)+L)-L+2*P:_;var r,s}getRowTallestCellSize(e,t){const o=this.getters.getRowCells(e,t);let n=0;for(let t=0;t<o.length;t++){const i=this.getters.getCellById(o[t]);if(!i)continue;const{col:r,row:s}=this.getters.getCellPosition(i.id),a=this.getCellHeight(e,r,s);a>n&&a>_&&(n=a)}return n<=_?_:n}import(e){for(let t of e.sheets){const e={COL:[],ROW:[]};for(let[o,n]of Object.entries(t.rows))n.size&&(e.ROW[o]=n.size);for(let[o,n]of Object.entries(t.cols))n.size&&(e.COL[o]=n.size);const o=this.computeSheetSizes(t.id);this.sizes[t.id]={COL:o.COL.map(((t,o)=>({manualSize:e.COL[o],computedSize:Ke(t)}))),ROW:o.ROW.map(((t,o)=>({manualSize:e.ROW[o],computedSize:Ke(t)})))}}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){var o,n;for(let i of e.sheets){void 0===i.rows&&(i.rows={});for(let e of Fe(0,this.getters.getNumberRows(i.id)))(t||(null===(o=this.sizes[i.id].ROW[e])||void 0===o?void 0:o.manualSize))&&(i.rows[e]={...i.rows[e],size:this.getRowSize(i.id,e)});void 0===i.cols&&(i.cols={});for(let e of Fe(0,this.getters.getNumberCols(i.id)))(t||(null===(n=this.sizes[i.id].COL[e])||void 0===n?void 0:n.manualSize))&&(i.cols[e]={...i.cols[e],size:this.getColSize(i.id,e)})}}}Vm.getters=["getRowSize","getColSize"];class zm extends Om{constructor(){super(...arguments),this.hiddenHeaders={}}allowDispatch(e){if("HIDE_COLUMNS_ROWS"===e.type){if(!this.hiddenHeaders[e.sheetId])return 27;const t="COL"===e.dimension?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),o="COL"===e.dimension?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return(t||[]).flat().concat(e.elements).length<o?0:65}return 0}handle(e){switch(e.type){case"CREATE_SHEET":const t={COL:Array(this.getters.getNumberCols(e.sheetId)).fill(!1),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(!1)};this.history.update("hiddenHeaders",e.sheetId,t);break;case"DUPLICATE_SHEET":this.history.update("hiddenHeaders",e.sheetIdTo,Ie(this.hiddenHeaders[e.sheetId]));break;case"DELETE_SHEET":this.history.update("hiddenHeaders",e.sheetId,void 0);break;case"REMOVE_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]],o=Je(e.position,e.base);t.splice(o,0,...Array(e.quantity).fill(!1)),this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"HIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!0);break;case"UNHIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!1)}}isRowHiddenByUser(e,t){return this.hiddenHeaders[e].ROW[t]}isColHiddenByUser(e,t){return this.hiddenHeaders[e].COL[t]}getHiddenColsGroups(e){const t=[[]],o=this.hiddenHeaders[e].COL;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getHiddenRowsGroups(e){const t=[[]],o=this.hiddenHeaders[e].ROW;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}import(e){var t,o;for(let n of e.sheets){this.hiddenHeaders[n.id]={COL:[],ROW:[]};for(let e=0;e<n.rowNumber;e++)this.hiddenHeaders[n.id].ROW[e]=Boolean(null===(t=n.rows[e])||void 0===t?void 0:t.isHidden);for(let e=0;e<n.colNumber;e++)this.hiddenHeaders[n.id].COL[e]=Boolean(null===(o=n.cols[e])||void 0===o?void 0:o.isHidden)}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(let e=0;e<this.getters.getNumberRows(o.id);e++)(t||this.hiddenHeaders[o.id].ROW[e])&&(void 0===o.rows[e]&&(o.rows[e]={}),o.rows[e].isHidden=this.hiddenHeaders[o.id].ROW[e]);void 0===o.cols&&(o.cols={});for(let e=0;e<this.getters.getNumberCols(o.id);e++)(t||this.hiddenHeaders[o.id].COL[e])&&(void 0===o.cols[e]&&(o.cols[e]={}),o.cols[e].isHidden=this.hiddenHeaders[o.id].COL[e])}}}zm.getters=["getHiddenColsGroups","getHiddenRowsGroups","isRowHiddenByUser","isColHiddenByUser"];class Bm extends Om{constructor(){super(...arguments),this.nextId=1,this.merges={},this.mergeCellMap={}}allowDispatch(e){const t="force"in e&&!!e.force;switch(e.type){case"ADD_MERGE":return t?this.checkValidations(e,this.checkFrozenPanes):this.checkValidations(e,this.checkDestructiveMerge,this.checkOverlap,this.checkFrozenPanes);case"UPDATE_CELL":return this.checkMergedContentUpdate(e);case"REMOVE_MERGE":return this.checkMergeExists(e);default:return 0}}handle(e){switch(e.type){case"CREATE_SHEET":case"DELETE_SHEET":this.history.update("merges",e.sheetId,{}),this.history.update("mergeCellMap",e.sheetId,{});break;case"DUPLICATE_SHEET":const t=this.merges[e.sheetId];if(!t)break;for(const o of Object.values(t).filter(Ze))this.addMerge(e.sheetIdTo,o.zone);break;case"ADD_MERGE":for(const t of e.target)this.addMerge(e.sheetId,t);break;case"REMOVE_MERGE":for(const t of e.target)this.removeMerge(e.sheetId,t)}}adaptRanges(e,t){const o=t?[t]:Object.keys(this.merges);for(const t of o)this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map((t=>this.getMergeById(e,parseInt(t,10)))).filter(Ze)}getMerge(e,t,o){var n;const i=this.mergeCellMap[e],r=i?t in i&&(null===(n=i[t])||void 0===n?void 0:n[o]):void 0;return r?this.getMergeById(e,r):void 0}getMergesInZone(e,t){var o;const n=this.mergeCellMap[e];if(!n)return[];const i=new Set;for(const{col:e,row:r}of Fo(t)){const t=null===(o=n[e])||void 0===o?void 0:o[r];t&&i.add(t)}return Array.from(i).map((t=>this.getMergeById(e,t))).filter(Ze)}doesIntersectMerge(e,t){const{left:o,right:n,top:i,bottom:r}=t;for(let t=i;t<=r;t++)for(let i=o;i<=n;i++)if(this.getMerge(e,i,t))return!0;return!1}doesColumnsHaveCommonMerges(e,t,o){const n=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(n.id,t,i,o,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,o){const n=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(n.id,i,t,i,o))return!0;return!1}expandZone(e,t){let{left:o,right:n,top:i,bottom:r}=t,s={left:o,right:n,top:i,bottom:r};for(let t in this.merges[e]){const o=this.getMergeById(e,parseInt(t));o&&Io(o,s)&&(s=yo(o,s))}return Ro(s,t)?s:this.expandZone(e,s)}isInSameMerge(e,t,o,n,i){const r=this.getMerge(e,t,o),s=this.getMerge(e,n,i);return!(!r||!s)&&Ro(r,s)}isInMerge(e,t,o){var n;const i=this.mergeCellMap[e];return!!i&&(t in i&&Boolean(null===(n=i[t])||void 0===n?void 0:n[o]))}getMainCellPosition(e,t,o){if(!this.isInMerge(e,t,o))return{col:t,row:o};const n=this.getMerge(e,t,o).topLeft;return{col:n.col,row:n.row}}getBottomLeftCell(e,t,o){if(!this.isInMerge(e,t,o))return{col:t,row:o};const{bottom:n,left:i}=this.getMerge(e,t,o);return{col:i,row:n}}isMergeHidden(e,t){const o=this.getters.getHiddenColsGroups(e),n=this.getters.getHiddenRowsGroups(e);for(let e of o)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of n)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){const o=this.getMerge(e,t.left,t.top);if(o)return Ro(t,o);const{width:n,height:i}=No(t);return 1===n&&1===i}isMergeDestructive(e,t){let{left:o,right:n,top:i,bottom:r}=t;n=Oe(n,0,this.getters.getNumberCols(e)-1),r=Oe(r,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=r;t++)for(let r=o;r<=n;r++)if(r!==o||t!==i){const o=this.getters.getCell(e,r,t);if(o&&!o.isEmpty())return!0}return!1}getMergeById(e,t){var o;const n=null===(o=this.merges[e])||void 0===o?void 0:o[t];return void 0!==n?Wm(t,n):void 0}checkDestructiveMerge({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return 0;return t.some((t=>this.isMergeDestructive(e,t)))?3:0}checkOverlap({target:e}){for(const t of e)for(const o of e)if(t!==o&&Io(t,o))return 64;return 0}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return 0;const{xSplit:o,ySplit:n}=this.getters.getPaneDivisions(e);for(const e of t)if(e.left<o&&e.right>=o||e.top<n&&e.bottom>=n)return 74;return 0}checkMergedContentUpdate(e){const{col:t,row:o,sheetId:n,content:i}=e;if(void 0===i)return 0;const{col:r,row:s}=this.getMainCellPosition(n,t,o);return r===t&&s===o?0:4}checkMergeExists(e){const{sheetId:t,target:o}=e;for(const e of o){const{left:o,top:n}=e,i=this.getMerge(t,o,n);if(void 0===i||!Ro(e,i))return 5}return 0}addMerge(e,t){let{left:o,right:n,top:i,bottom:r}=t;n=Oe(n,0,this.getters.getNumberCols(e)-1),r=Oe(r,0,this.getters.getNumberRows(e)-1);if(Ot(o,i)===Ot(n,r))return;const s=this.getters.getCell(e,o,i);let a=this.nextId++;this.history.update("merges",e,a,this.getters.getRangeFromSheetXC(e,bo({left:o,top:i,right:n,bottom:r})));let l=new Set;for(let t=i;t<=r;t++)for(let r=o;r<=n;r++){r===o&&t===i||this.dispatch("UPDATE_CELL",{sheetId:e,col:r,row:t,style:s?s.style:null,content:""});const n=this.getMerge(e,r,t);n&&l.add(n.id),this.history.update("mergeCellMap",e,r,t,a)}for(let t of l){const{top:o,bottom:n,left:i,right:r}=this.getMergeById(e,t);for(let t=o;t<=n;t++)for(let o=i;o<=r;o++){const n=this.getMerge(e,o,t);n&&n.id===a||(this.history.update("mergeCellMap",e,o,t,void 0),this.dispatch("CLEAR_CELL",{sheetId:e,col:o,row:t}))}this.history.update("merges",e,t,void 0)}}removeMerge(e,t){const{left:o,top:n,bottom:i,right:r}=t,s=this.getMerge(e,o,n);if(void 0!==s&&Ro(t,s)){this.history.update("merges",e,s.id,void 0);for(let t=n;t<=i;t++)for(let n=o;n<=r;n++)this.history.update("mergeCellMap",e,n,t,void 0)}}applyRangeChangeOnSheet(e,t){const o=Object.entries(this.merges[e]||{});for(const[n,i]of o)if(i){const o=i.zone,r=t(i);switch(r.changeType){case"NONE":break;case"REMOVE":this.removeMerge(e,o);break;default:const{width:t,height:i}=No(r.range.zone);1===t&&1===i?this.removeMerge(e,o):this.history.update("merges",e,parseInt(n,10),r.range)}}this.history.update("mergeCellMap",e,{});for(const t of this.getMerges(e))for(const{col:o,row:n}of Fo(t))this.history.update("mergeCellMap",e,o,n,t.id)}import(e){const t=e.sheets||[];for(let e of t)this.history.update("merges",e.id,{}),this.history.update("mergeCellMap",e.id,{}),e.merges&&this.importMerges(e.id,e.merges)}importMerges(e,t){for(let o of t)this.addMerge(e,mo(o))}export(e){for(let t of e.sheets){const e=this.merges[t.id];e&&t.merges.push(...Hm(e))}}exportForExcel(e){this.export(e)}}function Hm(e){return Object.entries(e).map((([e,t])=>t?Wm(parseInt(e,10),t):void 0)).filter(Ze).map((e=>Ot(e.left,e.top)+":"+Ot(e.right,e.bottom)))}function Wm(e,t){return{...t.zone,topLeft:{col:t.zone.left,row:t.zone.top},id:e}}Bm.getters=["isInMerge","isInSameMerge","isMergeHidden","getMainCellPosition","getBottomLeftCell","expandZone","doesIntersectMerge","doesColumnsHaveCommonMerges","doesRowsHaveCommonMerges","getMerges","getMerge","getMergesInZone","isSingleCellOrMerge"];class Gm extends Om{constructor(){super(...arguments),this.sheetIdsMapName={},this.orderedSheetIds=[],this.sheets={},this.cellPosition={}}allowDispatch(e){const t=this.chainValidations(this.checkSheetExists,this.checkZones)(e);if(0!==t)return t;switch(e.type){case"HIDE_SHEET":return 1===this.getVisibleSheetIds().length?9:0;case"CREATE_SHEET":return this.checkValidations(e,this.checkSheetName,this.checkSheetPosition);case"MOVE_SHEET":const t=this.orderedSheetIds.indexOf(e.sheetId);if("left"===e.direction){return this.orderedSheetIds.slice(0,t).map((e=>!this.isSheetVisible(e))).every((e=>e))?14:0}return this.orderedSheetIds.slice(t+1).map((e=>!this.isSheetVisible(e))).every((e=>e))?14:0;case"RENAME_SHEET":return this.isRenameAllowed(e);case"DELETE_SHEET":return this.orderedSheetIds.length>1?0:9;case"REMOVE_COLUMNS_ROWS":return("COL"===e.dimension?this.getNumberCols(e.sheetId):this.getNumberRows(e.sheetId))>e.elements.length?0:8;case"FREEZE_ROWS":return this.checkValidations(e,this.checkRowFreezeQuantity,this.checkRowFreezeOverlapMerge);case"FREEZE_COLUMNS":return this.checkValidations(e,this.checkColFreezeQuantity,this.checkColFreezeOverlapMerge);default:return 0}}handle(e){switch(e.type){case"SET_GRID_LINES_VISIBILITY":this.setGridLinesVisibility(e.sheetId,e.areGridLinesVisible);break;case"DELETE_CONTENT":this.clearZones(e.sheetId,e.target);break;case"CREATE_SHEET":const t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update("sheetIdsMapName",t.name,t.id);break;case"MOVE_SHEET":this.moveSheet(e.sheetId,e.direction);break;case"RENAME_SHEET":this.renameSheet(this.sheets[e.sheetId],e.name);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);break;case"DELETE_SHEET":this.deleteSheet(this.sheets[e.sheetId]);break;case"REMOVE_COLUMNS_ROWS":"COL"===e.dimension?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.addColumns(this.sheets[e.sheetId],e.base,e.position,e.quantity):this.addRows(this.sheets[e.sheetId],e.base,e.position,e.quantity);break;case"UPDATE_CELL_POSITION":this.updateCellPosition(e);break;case"FREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,e.quantity,"COL");break;case"FREEZE_ROWS":this.setPaneDivisions(e.sheetId,e.quantity,"ROW");break;case"UNFREEZE_ROWS":this.setPaneDivisions(e.sheetId,0,"ROW");break;case"UNFREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,0,"COL");break;case"UNFREEZE_COLUMNS_ROWS":this.setPaneDivisions(e.sheetId,0,"COL"),this.setPaneDivisions(e.sheetId,0,"ROW")}}import(e){var t,o;for(let t of e.sheets)this.sheetIdsMapName[t.name]=t.id;for(let n of e.sheets){const e=n.name||i("Sheet")+(Object.keys(this.sheets).length+1),{colNumber:r,rowNumber:s}=this.getImportedSheetSize(n),a={id:n.id,name:e,numberOfCols:r,rows:go(s),areGridLinesVisible:void 0===n.areGridLinesVisible||n.areGridLinesVisible,isVisible:n.isVisible,panes:{xSplit:(null===(t=n.panes)||void 0===t?void 0:t.xSplit)||0,ySplit:(null===(o=n.panes)||void 0===o?void 0:o.ySplit)||0}};this.orderedSheetIds.push(a.id),this.sheets[a.id]=a}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(Ze).map((e=>{const t=this.sheets[e],o={id:t.id,name:t.name,colNumber:t.numberOfCols,rowNumber:this.getters.getNumberRows(t.id),rows:{},cols:{},merges:[],cells:{},conditionalFormats:[],figures:[],filterTables:[],areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible};return(t.panes.xSplit||t.panes.ySplit)&&(o.panes=t.panes),o}))}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}tryGetSheet(e){return this.sheets[e]}getSheet(e){const t=this.sheets[e];if(!t)throw new Error(`Sheet ${e} not found.`);return t}isSheetVisible(e){return this.getSheet(e).isVisible}getSheetName(e){return this.getSheet(e).name}getCellsInZone(e,t){return Fo(t).map((({col:t,row:o})=>this.getCell(e,t,o)))}tryGetSheetName(e){var t;return null===(t=this.tryGetSheet(e))||void 0===t?void 0:t.name}getSheetIdByName(e){if(e){const t=Te(e);for(const e in this.sheetIdsMapName)if(e.toUpperCase()===t.toUpperCase())return this.sheetIdsMapName[e]}}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}getEvaluationSheets(){return this.sheets}doesHeaderExist(e,t,o){return"COL"===t?o>=0&&o<this.getNumberCols(e):o>=0&&o<this.getNumberRows(e)}getRow(e,t){const o=this.getSheet(e).rows[t];if(!o)throw new Error(`Row ${o} not found.`);return o}getCell(e,t,o){var n;const i=this.tryGetSheet(e),r=null===(n=null==i?void 0:i.rows[o])||void 0===n?void 0:n.cells[t];if(void 0!==r)return this.getters.getCellById(r)}getColCells(e,t){return this.getSheet(e).rows.map((e=>e.cells[t])).filter(Ze).map((e=>this.getters.getCellById(e))).filter(Ze)}getColsZone(e,t,o){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:o}}getRowCells(e,t){var o;return Object.values(null===(o=this.getSheet(e).rows[t])||void 0===o?void 0:o.cells).filter(Ze)}getRowsZone(e,t,o){return{top:t,bottom:o,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){const t=this.cellPosition[e];if(!t)throw new Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return"COL"===t?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e="Sheet"){let t=1;const o=this.orderedSheetIds.map(this.getSheetName.bind(this));let n=`${e}${t}`;for(;o.includes(n);)n=`${e}${t}`,t++;return n}getSheetSize(e){return{height:this.getNumberRows(e),width:this.getNumberCols(e)}}getSheetZone(e){return{top:0,left:0,bottom:this.getNumberRows(e)-1,right:this.getNumberCols(e)-1}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,o){const n={...this.getPaneDivisions(e)};"COL"===o?n.xSplit=t:"ROW"===o&&(n.ySplit=t),this.history.update("sheets",e,"panes",n)}isEmpty(e,t){return this.getCellsInZone(e,t).flat().every((e=>!e||e.isEmpty()))}updateCellPosition(e){const{sheetId:t,cellId:o,col:n,row:i}=e;o?this.setNewPosition(o,t,n,i):this.clearPosition(t,n,i)}setNewPosition(e,t,o,n){const i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update("cellPosition",e,{row:n,col:o,sheetId:t}),this.history.update("sheets",t,"rows",n,"cells",o,e)}clearPosition(e,t,o){var n;const i=null===(n=this.sheets[e])||void 0===n?void 0:n.rows[o].cells[t];i&&(this.history.update("cellPosition",i,void 0),this.history.update("sheets",e,"rows",o,"cells",t,void 0))}setGridLinesVisibility(e,t){this.history.update("sheets",e,"areGridLinesVisible",t)}clearZones(e,t){for(let o of t)for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++){this.sheets[e].rows[n].cells[t]&&this.dispatch("UPDATE_CELL",{sheetId:e,content:"",col:t,row:n})}}createSheet(e,t,o,n,i){const r={id:e,name:t,numberOfCols:o,rows:go(n),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0}},s=this.orderedSheetIds.slice();s.splice(i,0,r.id);const a=this.sheets;return this.history.update("orderedSheetIds",s),this.history.update("sheets",Object.assign({},a,{[r.id]:r})),r}moveSheet(e,t){const o=this.orderedSheetIds.slice(),n=o.findIndex((t=>t===e)),i=o.splice(n,1);let r="left"===t?this.findIndexOfPreviousVisibleSheet(n-1,o):this.findIndexOfNextVisibleSheet(n+1,o);void 0===r&&(r=o.length),o.splice(r,0,i[0]),this.history.update("orderedSheetIds",o)}findIndexOfPreviousVisibleSheet(e,t){for(;e>=0&&!this.isSheetVisible(t[e]);)e--;if(-1===e)throw new Error("There is no previous visible sheet");return e}findIndexOfNextVisibleSheet(e,t){for(;e<t.length&&!this.isSheetVisible(t[e]);)e++;if(e!==t.length-1||this.isSheetVisible(t[e-1]))return e}checkSheetName(e){const{orderedSheetIds:t,sheets:o}=this,n=e.name&&e.name.trim().toLowerCase();return t.find((e=>{var t;return(null===(t=o[e])||void 0===t?void 0:t.name.toLowerCase())===n}))?11:ee.test(n)?13:0}checkSheetPosition(e){const{orderedSheetIds:t}=this;return e.position>t.length||e.position<0?15:0}checkRowFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberRows(e.sheetId)?0:73}checkColFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberCols(e.sheetId)?0:73}checkRowFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.top<e.quantity&&e.quantity<=o.bottom)return 64;return 0}checkColFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.left<e.quantity&&e.quantity<=o.right)return 64;return 0}isRenameAllowed(e){return e.name&&e.name.trim().toLowerCase()?this.checkSheetName(e):10}renameSheet(e,t){const o=e.name;this.history.update("sheets",e.id,"name",t.trim());const n=Object.assign({},this.sheetIdsMapName);n[t]=e.id,delete n[o],this.history.update("sheetIdsMapName",n)}hideSheet(e){this.history.update("sheets",e,"isVisible",!1)}showSheet(e){this.history.update("sheets",e,"isVisible",!0)}duplicateSheet(e,t){const o=this.getSheet(e),n=this.getDuplicateSheetName(o.name),i=JSON.parse(JSON.stringify(o));i.id=t,i.name=n;for(let e=0;e<=i.numberOfCols;e++)for(let t=0;t<=i.rows.length;t++)i.rows[t]&&(i.rows[t].cells[e]=void 0);const r=this.orderedSheetIds.slice(),s=r.indexOf(e);r.splice(s+1,0,i.id),this.history.update("orderedSheetIds",r),this.history.update("sheets",Object.assign({},this.sheets,{[i.id]:i}));for(const t of Object.values(this.getters.getCells(e))){const{col:e,row:o}=this.getCellPosition(t.id);this.dispatch("UPDATE_CELL",{sheetId:i.id,col:e,row:o,content:t.content,format:t.format,style:t.style})}const a=Object.assign({},this.sheetIdsMapName);a[i.name]=i.id,this.history.update("sheetIdsMapName",a)}getDuplicateSheetName(e){let t=1;const o=this.orderedSheetIds.map(this.getSheetName.bind(this)),n=r("Copy of %s",e);let i=n.toString();for(;o.includes(i);)i=`${n} (${t})`,t++;return i}deleteSheet(e){const t=e.name,o=Object.assign({},this.sheets);delete o[e.id],this.history.update("sheets",o);const n=this.orderedSheetIds.slice(),i=n.indexOf(e.id);n.splice(i,1),this.history.update("orderedSheetIds",n);const r=Object.assign({},this.sheetIdsMapName);delete r[t],this.history.update("sheetIdsMapName",r)}removeColumns(e,t){t.sort(((e,t)=>t-e));for(let o of t)this.moveCellOnColumnsDeletion(e,o);const o=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",o-t.length);const n=t.filter((t=>t<e.panes.xSplit)).length;n&&this.setPaneDivisions(e.id,e.panes.xSplit-n,"COL")}removeRows(e,t){t.sort(((e,t)=>t-e));for(let o of De(t))this.moveCellOnRowsDeletion(e,o[o.length-1],o[0]),o.map((t=>this.updateRowsStructureOnDeletion(t,e)));const o=t.filter((t=>t<e.panes.ySplit)).length;o&&this.setPaneDivisions(e.id,e.panes.ySplit-o,"ROW")}addColumns(e,t,o,n){const i="before"===o?t:t+1;this.moveCellsOnAddition(e,i,n,"columns");const r=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",r+n),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+n,"COL")}addRows(e,t,o,n){const i="before"===o?t:t+1;this.addEmptyRows(e,n),this.moveCellsOnAddition(e,i,n,"rows"),this.updateRowsStructureOnAddition(e,t,n),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+n,"ROW")}moveCellOnColumnsDeletion(e,t){for(let[o,n]of Object.entries(e.rows)){const i=parseInt(o,10);for(let o in n.cells){const r=parseInt(o,10),s=n.cells[o];s&&(r===t&&this.dispatch("CLEAR_CELL",{sheetId:e.id,col:r,row:i}),r>t&&this.dispatch("UPDATE_CELL_POSITION",{sheetId:e.id,cellId:s,col:r-1,row:i}))}}}moveCellsOnAddition(e,t,o,n){const i=[];for(const[r,s]of Object.entries(e.rows)){const a=parseInt(r,10);if("rows"!==n||a>=t)for(let r in s.cells){const l=parseInt(r,10),c=s.cells[r];c&&("rows"===n||l>=t)&&i.push({type:"UPDATE_CELL_POSITION",sheetId:e.id,cellId:c,col:l+("columns"===n?o:0),row:a+("rows"===n?o:0)})}}for(let e of i.reverse())this.dispatch(e.type,e)}moveCellOnRowsDeletion(e,t,o){const n=o-t+1;for(let[i,r]of Object.entries(e.rows)){const s=parseInt(i,10);if(s>=t&&s<=o)for(let t in r.cells){const o=parseInt(t,10);r.cells[t]&&this.dispatch("CLEAR_CELL",{sheetId:e.id,col:o,row:s})}if(s>o)for(let t in r.cells){const o=parseInt(t,10),i=r.cells[t];i&&this.dispatch("UPDATE_CELL_POSITION",{sheetId:e.id,cellId:i,col:o,row:s-n})}}}updateRowsStructureOnDeletion(e,t){const o=[],n=t.rows.map((e=>e.cells));for(let i in t.rows)parseInt(i,10)!==e&&o.push({cells:n.shift()});this.history.update("sheets",t.id,"rows",o)}updateRowsStructureOnAddition(e,t,o){const n=[],i=e.rows.map((e=>e.cells));e.rows.forEach((()=>n.push({cells:i.shift()}))),this.history.update("sheets",e.id,"rows",n)}addEmptyRows(e,t){const o=e.rows.slice();for(let e=0;e<t;e++)o.push({cells:{}});this.history.update("sheets",e.id,"rows",o)}getImportedSheetSize(e){const t=Object.keys(e.cells).map(At);let o=e.rowNumber,n=e.colNumber;for(let{col:e,row:i}of t)o=Math.max(o,i+1),n=Math.max(n,e+1);return{rowNumber:o,colNumber:n}}checkSheetExists(e){return"CREATE_SHEET"!==e.type&&"sheetId"in e&&void 0===this.sheets[e.sheetId]?27:"CREATE_SHEET"===e.type&&void 0!==this.sheets[e.sheetId]?12:0}checkZones(e){const t=[];if("zone"in e&&t.push(e.zone),"target"in e&&Array.isArray(e.target)&&t.push(...e.target),"ranges"in e&&Array.isArray(e.ranges)&&t.push(...e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone))),!t.every(vo))return 25;if(t.length&&"sheetId"in e){const o=this.getSheetZone(e.sheetId);return t.every((e=>Ao(e,o)))?0:18}return 0}}Gm.getters=["getSheetName","tryGetSheetName","getSheet","tryGetSheet","getSheetIdByName","getSheetIds","getVisibleSheetIds","isSheetVisible","getEvaluationSheets","doesHeaderExist","getCell","getCellsInZone","getCellPosition","getColCells","getColsZone","getRowCells","getRowsZone","getNumberCols","getNumberRows","getNumberHeaders","getGridLinesVisibility","getNextSheetName","isEmpty","getSheetSize","getSheetZone","getPaneDivisions"];class qm{constructor(e,t,o){this.index=0,this.cells=e,this.getters=t,this.direction=o}next(){const e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:o,tooltip:n}=Go.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:o,tooltip:n,origin:{col:e.data.col,row:e.data.row}}}}class Zm extends pg{constructor(){super(...arguments),this.lastCellSelected={}}allowDispatch(e){switch(e.type){case"AUTOFILL_SELECT":const t=this.getters.getActiveSheetId();return this.lastCellSelected.col=-1===e.col?this.lastCellSelected.col:Oe(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=-1===e.row?this.lastCellSelected.row:Oe(e.row,0,this.getters.getNumberRows(t)),void 0!==this.lastCellSelected.col&&void 0!==this.lastCellSelected.row?0:44;case"AUTOFILL_AUTO":const o=this.getters.getSelectedZone();return o.top===o.bottom?0:1}return 0}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;case"AUTOFILL_CELL":this.autoFillMerge(e.originCol,e.originRow,e.col,e.row);const t=this.getters.getActiveSheetId();this.dispatch("UPDATE_CELL",{sheetId:t,col:e.col,row:e.row,style:e.style||null,content:e.content||"",format:e.format||""}),this.dispatch("SET_BORDER",{sheetId:t,col:e.col,row:e.row,border:e.border})}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||void 0===this.direction)return void(this.tooltip=void 0);const t=this.getters.getSelectedZone(),o=this.autofillZone;switch(this.direction){case"down":for(let n=t.left;n<=t.right;n++){const i=[];for(let e=t.top;e<=t.bottom;e++)i.push(Ot(n,e));const r=this.createGenerator(i);for(let t=o.top;t<=o.bottom;t++)this.computeNewCell(r,n,t,e)}break;case"up":for(let n=t.left;n<=t.right;n++){const i=[];for(let e=t.bottom;e>=t.top;e--)i.push(Ot(n,e));const r=this.createGenerator(i);for(let t=o.bottom;t>=o.top;t--)this.computeNewCell(r,n,t,e)}break;case"left":for(let n=t.top;n<=t.bottom;n++){const i=[];for(let e=t.right;e>=t.left;e--)i.push(Ot(e,n));const r=this.createGenerator(i);for(let t=o.right;t>=o.left;t--)this.computeNewCell(r,t,n,e)}break;case"right":for(let n=t.top;n<=t.bottom;n++){const i=[];for(let e=t.left;e<=t.right;e++)i.push(Ot(e,n));const r=this.createGenerator(i);for(let t=o.left;t<=o.right;t++)this.computeNewCell(r,t,n,e)}}e&&(this.autofillZone=void 0,this.selection.resizeAnchorZone(this.direction,this.steps),this.lastCellSelected={},this.direction=void 0,this.steps=0,this.tooltip=void 0)}select(e,t){const o=this.getters.getSelectedZone();if(To(e,t,o))this.autofillZone=void 0;else{switch(this.direction=this.getDirection(e,t),this.direction){case"up":this.saveZone(t,o.top-1,o.left,o.right),this.steps=o.top-t;break;case"down":this.saveZone(o.bottom+1,t,o.left,o.right),this.steps=t-o.bottom;break;case"left":this.saveZone(o.top,o.bottom,e,o.left-1),this.steps=o.left-e;break;case"right":this.saveZone(o.top,o.bottom,o.right+1,e),this.steps=e-o.right}this.autofill(!1)}}autofillAuto(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();let o=e.left,n=e.bottom;if(o>0){let e=this.getters.getCell(t,o-1,n);for(;e&&!e.isEmpty();)n+=1,e=this.getters.getCell(t,o-1,n)}if(n===e.bottom&&(o=e.right,o<=this.getters.getNumberCols(t))){let e=this.getters.getCell(t,o+1,n);for(;e&&!e.isEmpty();)n+=1,e=this.getters.getCell(t,o+1,n)}n!==e.bottom&&(this.select(e.left,n-1),this.autofill(!0))}computeNewCell(e,t,o,n){const{cellData:i,tooltip:r,origin:s}=e.next(),{content:a,style:l,border:c,format:h}=i;this.tooltip=r,n&&this.dispatch("AUTOFILL_CELL",{originCol:s.col,originRow:s.row,col:t,row:o,content:a,style:l,border:c,format:h})}getRule(e,t){const o=on.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((o=>o.condition(e,t)));return o&&o.generateRule(e,t)}createGenerator(e){const t=[],o=[],n=this.getters.getActiveSheetId();for(let t of e){const{col:e,row:i}=At(t),r=this.getters.getCell(n,e,i);o.push({col:e,row:i,cell:r,sheetId:n})}const i=o.map((e=>e.cell));for(let e of o){let o={type:"COPY_MODIFIER"};if(e&&e.cell){o=this.getRule(e.cell,i)||o}const{sheetId:n,col:r,row:s}=e,a=this.getters.getCellBorder(n,r,s)||void 0;t.push({data:{...e,border:a},rule:o})}return new qm(t,this.getters,this.direction)}saveZone(e,t,o,n){this.autofillZone={top:e,bottom:t,left:o,right:n}}getDirection(e,t){const o=this.getters.getSelectedZone(),n={up:{number:o.top-t,value:"up"},down:{number:t-o.bottom,value:"down"},left:{number:o.left-e,value:"left"},right:{number:e-o.right,value:"right"}};if(1===Object.values(n).map((e=>e.number>0?1:0)).reduce(((e,t)=>e+t)))return Object.values(n).find((e=>e.number>0?1:0)).value;const i=n.up.number>0?"up":"down",r=n.left.number>0?"left":"right";return Math.abs(n[i].number)>=Math.abs(n[r].number)?n[i].value:n[r].value}autoFillMerge(e,t,o,n){const i=this.getters.getActiveSheet();if(this.getters.isInMerge(i.id,o,n)&&!this.getters.isInMerge(i.id,e,t)){const e=this.getters.getMerge(i.id,o,n);e&&this.dispatch("REMOVE_MERGE",{sheetId:i.id,target:[e]})}const r=this.getters.getMerge(i.id,e,t);(null==r?void 0:r.topLeft.col)===e&&(null==r?void 0:r.topLeft.row)===t&&this.dispatch("ADD_MERGE",{sheetId:i.id,target:[{top:n,bottom:n+r.bottom-r.top,left:o,right:o+r.right-r.left}]})}drawGrid(e){if(!this.autofillZone)return;const{ctx:t,thinLineWidth:o}=e,{x:n,y:i,width:r,height:s}=this.getters.getVisibleRect(this.autofillZone);r>0&&s>0&&(t.strokeStyle="black",t.lineWidth=o,t.setLineDash([3]),t.strokeRect(n,i,r,s),t.setLineDash([]))}}Zm.layers=[6],Zm.getters=["getAutofillTooltip"];class jm extends pg{handle(e){if("SUM_SELECTION"===e.type){const e=this.getters.getActiveSheetId(),{zones:t,anchor:o}=this.getters.getSelection();for(const n of t){const t=this.getAutomaticSums(e,n,o.cell);this.dispatchCellUpdates(e,t)}}}getAutomaticSums(e,t,o){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,o):this.sumData(e,t)}sumData(e,t){const o=this.dimensionsToSum(e,t),n=this.sumDimensions(e,t,o).filter((({zone:t})=>!this.getters.isEmpty(e,t)));return o.has("ROW")&&o.has("COL")&&n.push(this.sumTotal(t)),n}sumAdjacentData(e,t,o){const{col:n,row:i}=To(o.col,o.row,t)?o:{col:t.left,row:t.top},r=this.findAdjacentData(e,n,i);return r?this.getters.isSingleCellOrMerge(e,t)||_o(yo(r,t))?[{position:{col:n,row:i},zone:r}]:this.sumDimensions(e,yo(r,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,o){const n=this.getters.getSheet(e),i=this.getters.getMainCellPosition(e,t,o),r=this.findSuitableZoneToSum(n,i.col,i.row);if(r)return this.getters.expandZone(e,r)}findSuitableZoneToSum(e,t,o){const n=this.getters.getCell(e.id,t,o-1),i=this.getters.getCell(e.id,t-1,o);if(this.isNumber(i)&&!this.isNumber(n))return this.findHorizontalZone(e,t,o);const r=this.findVerticalZone(e,t,o);if(this.isZoneValid(r))return r;const s=this.findHorizontalZone(e,t,o);return this.isZoneValid(s)?s:void 0}findVerticalZone(e,t,o){const n={top:0,bottom:o-1,left:t,right:t},i=this.reduceZoneStart(e,n,n.bottom);return{...n,top:i}}findHorizontalZone(e,t,o){const n={top:o,bottom:o,left:0,right:t-1},i=this.reduceZoneStart(e,n,n.right);return{...n,left:i}}reduceZoneStart(e,t,o){const n=this.getters.getCellsInZone(e.id,t),i=Fe(o,-1,-1),r=i.filter((e=>{var t;return n[e]&&!(null===(t=n[e])||void 0===t?void 0:t.isAutoSummable)})),s=Math.max(...r),a=De(i.filter((e=>this.isNumber(n[e]))))[0]||[];return Math.max(...a)<s?1/0:Math.min(...a)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){var t;return(null==e?void 0:e.evaluated.type)===qo.number&&!(null===(t=e.evaluated.format)||void 0===t?void 0:t.match(j))}isZoneValid(e){return e.bottom>=e.top&&e.right>=e.left}lastColIsEmpty(e,t){return this.getters.isEmpty(e,{...t,left:t.right})}lastRowIsEmpty(e,t){return this.getters.isEmpty(e,{...t,top:t.bottom})}dimensionsToSum(e,t){const o=new Set;return _o(t)?(o.add(1===No(t).width?"COL":"ROW"),o):(this.lastColIsEmpty(e,t)&&o.add("ROW"),this.lastRowIsEmpty(e,t)&&o.add("COL"),0===o.size&&o.add("COL"),o)}sumDimensions(e,t,o){return[...o.has("COL")?this.sumColumns(t,e):[],...o.has("ROW")?this.sumRows(t,e):[]]}sumTotal(e){const{bottom:t,right:o}=e;return{position:{col:o,row:t},zone:{...e,top:t,right:o-1}}}sumColumns(e,t){const o=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,o.bottom-1)},Fo(o).map((t=>({position:t,zone:{...e,right:t.col,left:t.col}})))}sumRows(e,t){const o=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,o.right-1)},Fo(o).map((t=>({position:t,zone:{...e,top:t.row,bottom:t.row}})))}dispatchCellUpdates(e,t){for(const o of t){const{col:t,row:n}=o.position;this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,content:`=SUM(${this.getters.zoneToXC(e,o.zone)})`})}}nextEmptyRow(e,t){let o=t.bottom+1;const{left:n,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:o,top:o,left:n,right:i});)o++;return{...t,top:o,bottom:o}}nextEmptyCol(e,t){let o=t.right+1;const{top:n,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:o,right:o,top:n,bottom:i});)o++;return{...t,left:o,right:o}}transpose(e){return new Set([...e.values()].map((e=>"COL"===e?"ROW":"COL")))}}jm.getters=["getAutomaticSums"];class Xm extends pg{allowDispatch(e){if("OPEN_CELL_POPOVER"===e.type){try{Nn.get(e.popoverType)}catch(e){return 71}return 0}return 0}handle(e){switch(e.type){case"ACTIVATE_SHEET":case"CLOSE_CELL_POPOVER":this.persistentPopover=void 0;break;case"OPEN_CELL_POPOVER":this.persistentPopover={col:e.col,row:e.row,type:e.popoverType}}}getCellPopover({col:e,row:t}){var o,n;const i=this.getters.getActiveSheetId();if(this.persistentPopover&&this.getters.isVisibleInViewport(i,this.persistentPopover.col,this.persistentPopover.row)){const e=this.getters.getMainCellPosition(i,this.persistentPopover.col,this.persistentPopover.row),t=null===(n=(o=Nn.get(this.persistentPopover.type)).onOpen)||void 0===n?void 0:n.call(o,e,this.getters);return(null==t?void 0:t.isOpen)?{...t,...this.computePopoverProps(this.persistentPopover,t.cellCorner)}:{isOpen:!1}}if(void 0===e||void 0===t||!this.getters.isVisibleInViewport(i,e,t))return{isOpen:!1};const r=this.getters.getMainCellPosition(i,e,t),s=Nn.getAll().map((e=>{var t;return null===(t=e.onHover)||void 0===t?void 0:t.call(e,r,this.getters)})).find((e=>null==e?void 0:e.isOpen));return(null==s?void 0:s.isOpen)?{...s,...this.computePopoverProps(r,s.cellCorner)}:{isOpen:!1}}getPersistentPopoverTypeAtPosition({col:e,row:t}){if(this.persistentPopover&&this.persistentPopover.col===e&&this.persistentPopover.row===t)return this.persistentPopover.type}computePopoverProps({col:e,row:t},o){const{width:n,height:i}=this.getters.getVisibleRect(Lo({col:e,row:t}));return{coordinates:this.computePopoverPosition({col:e,row:t},o),cellWidth:-n,cellHeight:-i}}computePopoverPosition({col:e,row:t},o){const n=this.getters.getActiveSheetId(),i=this.getters.getMerge(n,e,t);i&&(e="TopRight"===o?i.right:i.left,t="TopRight"===o?i.top:i.bottom);const{x:r,y:s,width:a,height:l}=this.getters.getVisibleRect(Lo({col:e,row:t}));switch(o){case"BottomLeft":return{x:r,y:s+l};case"TopRight":return{x:r+a,y:s}}}}Xm.getters=["getCellPopover","getPersistentPopoverTypeAtPosition"],Xm.modes=["normal"];class Ym{constructor(e,t,o,n){this.getters=t,this.dispatch=o,this.selection=n,this.operation=e,this.sheetId=t.getActiveSheetId()}isCutAllowed(e){return 0}isPasteAllowed(e,t){return 0}addMissingDimensions(e,t,o,n){const i=this.getters.getActiveSheetId(),r=t+n-this.getters.getNumberRows(i);r>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:this.getters.getNumberRows(i)-1,sheetId:i,quantity:r,position:"after"});const s=e+o-this.getters.getNumberCols(i);s>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:this.getters.getNumberCols(i)-1,sheetId:i,quantity:s,position:"after"})}isColRowDirtyingClipboard(e,t){return!1}drawClipboard(e){}}class Km extends Ym{constructor(e,t,o,n,i){if(super(t,o,n,i),!e.length)return this.cells=[[]],this.zones=[],void(this.copiedTables=[]);const r=new Set(e.map((e=>e.left))),s=new Set(e.map((e=>e.right))),a=new Set(e.map((e=>e.top))),l=new Set(e.map((e=>e.bottom))),c=1===a.size&&1===l.size||1===r.size&&1===s.size?function(e){return e.reduce(((e,t)=>{const o=e.length;for(let n=0;n<o;n++)if(Io(e[n],t))return e[n]=yo(e[n],t),e;return e[o]=t,e}),[])}(e):[e[e.length-1]],h=c.map((e=>Fo(e))).flat(),d=[...new Set(h.map((e=>e.col)))].sort(((e,t)=>e-t)),u=[...new Set(h.map((e=>e.row)))].sort(((e,t)=>e-t)),g=[],p=o.getActiveSheetId();for(let e of u){let t=[];for(let n of d)t.push({cell:o.getCell(p,n,e),border:o.getCellBorder(p,n,e)||void 0,position:{col:n,row:e,sheetId:p}});g.push(t)}const f=[];for(const t of e)for(const e of this.getters.getFilterTablesInZone(p,t)){const t=[];for(const o of Fe(e.zone.left,e.zone.right+1))t.push(this.getters.getFilterValues(p,o,e.zone.top));f.push({filtersValues:t,zone:e.zone})}this.cells=g,this.zones=c,this.copiedTables=f}isCutAllowed(e){return 1!==e.length?19:0}isPasteAllowed(e,t){const o=this.getters.getActiveSheetId();if("CUT"===this.operation&&void 0!==(null==t?void 0:t.pasteOption))return 21;if(e.length>1&&(this.cells.length>1||this.cells[0].length>1))return 20;const n=this.cells.length,i=this.cells[0].length;for(let t of this.getPasteZones(e))if(this.getters.doesIntersectMerge(o,t)&&(e.length>1||!this.getters.isSingleCellOrMerge(o,e[0])||n*i!=1))return 2;const{xSplit:r,ySplit:s}=this.getters.getPaneDivisions(o);for(const t of this.getPasteZones(e))if(t.left<r&&t.right>=r||t.top<s&&t.bottom>=s)return 74;return 0}paste(e,t){"COPY"===this.operation?this.pasteFromCopy(e,t):this.pasteFromCut(e,t);const o=this.cells.length,n=this.cells[0].length,i="CUT"===this.operation;(null==t?void 0:t.selectTarget)&&this.selectPastedZone(n,o,i,e)}pasteFromCopy(e,t){if(1===e.length){const o=this.cells.length,n=this.cells[0].length,i=this.pastedZones(e,n,o);for(const e of i)this.pasteZone(e.left,e.top,t)}else for(const o of e)for(let e=o.left;e<=o.right;e++)for(let n=o.top;n<=o.bottom;n++)this.pasteZone(e,n,t);void 0===(null==t?void 0:t.pasteOption)&&this.pasteCopiedTables(e)}pasteFromCut(e,t){this.clearClippedZones();const o=e[0];this.pasteZone(o.left,o.top,t),this.dispatch("MOVE_RANGES",{target:this.zones,sheetId:this.sheetId,targetSheetId:this.getters.getActiveSheetId(),col:o.left,row:o.top});for(const e of this.copiedTables)this.dispatch("REMOVE_FILTER_TABLE",{sheetId:this.getters.getActiveSheetId(),target:[e.zone]});this.pasteCopiedTables(e)}pastedZones(e,t,o){const n=e[0],i=Math.max(1,Math.floor((n.right+1-n.left)/t)),r=Math.max(1,Math.floor((n.bottom+1-n.top)/o)),s=[];for(let e=0;e<i;e++)for(let i=0;i<r;i++){const r=n.top+i*o,a=n.left+e*t;s.push({left:a,top:r,bottom:r+o-1,right:a+t-1})}return s}getPasteZones(e){const t=this.cells;if(!t.length||!t[0].length)return e;const o=[],n=t.length,i=t[0].length,r=e[e.length-1],s=r.left,a=r.top,l=Math.max(1,Math.floor((r.right+1-s)/i)),c=Math.max(1,Math.floor((r.bottom+1-a)/n));for(let e=1;e<=l;e++)for(let t=1;t<=c;t++)o.push({left:s,top:a,right:s-1+e*i,bottom:a-1+t*n});return o}selectPastedZone(e,t,o,n){const i=n[0],r=i.left,s=i.top;if(t>1||e>1||o){const i=this.pastedZones(n,e,t),a=o?i[0]:yo(...i);this.selection.selectZone({cell:{col:r,row:s},zone:a})}}clearClippedZones(){for(const e of this.cells)for(const t of e)t.cell&&this.dispatch("CLEAR_CELL",t.position);this.dispatch("CLEAR_FORMATTING",{sheetId:this.sheetId,target:this.zones})}pasteZone(e,t,o){const n=this.cells.length,i=this.cells[0].length,r="onlyValue"!==(null==o?void 0:o.pasteOption)&&(null==o?void 0:o.shouldPasteCF),s=this.getters.getActiveSheetId();this.addMissingDimensions(i,n,e,t);for(let a=0;a<n;a++){const n=this.cells[a];for(let l=0;l<i;l++){const i=n[l],c={col:e+l,row:t+a,sheetId:s};"CUT"!==this.operation&&this.pasteMergeIfExist(i.position,c),this.pasteCell(i,c,this.operation,o),r&&this.dispatch("PASTE_CONDITIONAL_FORMAT",{origin:i.position,target:c,operation:this.operation})}}}pasteCell(e,t,o,n){const{sheetId:i,col:r,row:s}=t,a=this.getters.getCell(i,r,s);if("onlyValue"!==(null==n?void 0:n.pasteOption)){const t=this.getters.getCellBorder(i,r,s),o=e.border,n={top:(null==t?void 0:t.top)||(null==o?void 0:o.top),bottom:(null==t?void 0:t.bottom)||(null==o?void 0:o.bottom),left:(null==t?void 0:t.left)||(null==o?void 0:o.left),right:(null==t?void 0:t.right)||(null==o?void 0:o.right)};this.dispatch("SET_BORDER",{sheetId:i,col:r,row:s,border:n})}if(e.cell){if("onlyFormat"===(null==n?void 0:n.pasteOption))return void this.dispatch("UPDATE_CELL",{...t,style:e.cell.style,format:e.cell.evaluated.format||e.cell.format});if("onlyValue"===(null==n?void 0:n.pasteOption)){const o=Ut(e.cell.evaluated.value);return void this.dispatch("UPDATE_CELL",{...t,content:o})}let a=e.cell.content;if(e.cell.isFormula()&&"COPY"===o){const t=r-e.position.col,n=s-e.position.row;a=this.getUpdatedContent(i,e.cell,t,n,o)}this.dispatch("UPDATE_CELL",{...t,content:a,style:e.cell.style||null,format:e.cell.format})}else a&&("onlyValue"===(null==n?void 0:n.pasteOption)?this.dispatch("UPDATE_CELL",{...t,content:""}):"onlyFormat"===(null==n?void 0:n.pasteOption)?this.dispatch("UPDATE_CELL",{...t,style:null,format:""}):this.dispatch("CLEAR_CELL",t))}getUpdatedContent(e,t,o,n,i){const r=this.getters.createAdaptedRanges(t.dependencies,o,n,e);return this.getters.buildFormulaContent(e,t,r)}pasteMergeIfExist(e,t){let{sheetId:o,col:n,row:i}=e;const{col:r,row:s}=this.getters.getMainCellPosition(o,n,i);if(r===n&&s===i){const e=this.getters.getMerge(o,n,i);if(!e)return;({sheetId:o,col:n,row:i}=t),this.dispatch("ADD_MERGE",{sheetId:o,force:!0,target:[{left:n,top:i,right:n+e.right-e.left,bottom:i+e.bottom-e.top}]})}}pasteCopiedTables(e){const t=this.getters.getActiveSheetId(),o=e[0],n=this.zones[0],i=[o.left-n.left,o.top-n.top];for(const e of this.copiedTables){const o=Do(e.zone,"both","MOVE",i);this.dispatch("CREATE_FILTER_TABLE",{sheetId:t,target:[o]});for(const n of Fe(0,e.filtersValues.length))this.dispatch("UPDATE_FILTER",{sheetId:t,col:o.left+n,row:o.top,values:e.filtersValues[n]})}}getClipboardContent(){return this.cells.map((e=>e.map((e=>e.cell?this.getters.getCellText(e.cell,this.getters.shouldShowFormulas()):"")).join("\t"))).join("\n")||"\t"}isColRowDirtyingClipboard(e,t){if(!this.zones)return!1;for(let o of this.zones){if("COL"===t&&e<=o.right)return!0;if("ROW"===t&&e<=o.bottom)return!0}return!1}drawClipboard(e){const{ctx:t,thinLineWidth:o}=e;if(this.sheetId===this.getters.getActiveSheetId()&&this.zones&&this.zones.length){t.setLineDash([8,5]),t.strokeStyle=E,t.lineWidth=3.3*o;for(const e of this.zones){const{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(e);i>0&&r>0&&t.strokeRect(o,n,i,r)}}}}class Qm{constructor(e,t,o){this.getters=t,this.dispatch=o,this.sheetId=t.getActiveSheetId();const n=t.getSelectedFigureId();if(!n)throw new Error("No figure selected");const i=t.getFigure(this.sheetId,n);if(!i)throw new Error(`No figure for the given id: ${n}`);this.copiedFigure={...i};const r=t.getChart(this.sheetId,n);if(!r)throw new Error(`No chart for the given id: ${n}`);this.copiedChart=r.copyInSheetId(this.sheetId),this.operation=e}isCutAllowed(e){return 0}isPasteAllowed(e,t){return 0===e.length?72:void 0!==(null==t?void 0:t.pasteOption)?22:0}paste(e){const t=this.getters.getActiveSheetId(),o={x:this.getters.getColDimensions(t,e[0].left).start,y:this.getters.getRowDimensions(t,e[0].top).start},n=this.copiedChart.copyInSheetId(t),i=(new po).uuidv4();this.dispatch("CREATE_CHART",{id:i,sheetId:t,position:o,size:{height:this.copiedFigure.height,width:this.copiedFigure.width},definition:n.getDefinition()}),"CUT"===this.operation&&this.dispatch("DELETE_FIGURE",{sheetId:this.copiedChart.sheetId,id:this.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}getClipboardContent(){return"\t"}isColRowDirtyingClipboard(e,t){return!1}drawClipboard(e){}}class Jm extends Ym{constructor(e,t,o,n){super("COPY",t,o,n),this.values=e.replace(/\r/g,"").split("\n").map((e=>e.split("\t")))}isPasteAllowed(e,t){const o=this.getters.getActiveSheetId(),n=this.getPasteZone(e);return this.getters.doesIntersectMerge(o,n)?2:0}paste(e){const t=this.values,o=this.getPasteZone(e),{left:n,top:i}=o,{width:r,height:s}=No(o),a=this.getters.getActiveSheetId();this.addMissingDimensions(r,s,n,i);for(let e=0;e<t.length;e++)for(let o=0;o<t[e].length;o++)this.dispatch("UPDATE_CELL",{row:i+e,col:n+o,content:t[e][o],sheetId:a});const l={left:n,top:i,right:n+r-1,bottom:i+s-1};this.selection.selectZone({cell:{col:n,row:i},zone:l})}getClipboardContent(){return this.values.map((e=>e.join("\t"))).join("\n")}getPasteZone(e){const t=this.values.length,o=Math.max(...this.values.map((e=>e.length))),{left:n,top:i}=e[0];return{top:i,left:n,bottom:i+t-1,right:n+o-1}}}class ev extends pg{constructor(){super(...arguments),this.status="invisible",this._isPaintingFormat=!1}allowDispatch(e){switch(e.type){case"CUT":const t=e.target||this.getters.getSelectedZones();return this.getClipboardState(t,e.type).isCutAllowed(t);case"PASTE":if(!this.state)return 23;const o=e.pasteOption||(this._isPaintingFormat?"onlyFormat":void 0);return this.state.isPasteAllowed(e.target,{pasteOption:o});case"PASTE_FROM_OS_CLIPBOARD":return new Jm(e.text,this.getters,this.dispatch,this.selection).isPasteAllowed(e.target);case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension);return this.getClipboardStateForCopyCells(t,"CUT").isPasteAllowed(o)}case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);return this.getClipboardStateForCopyCells(t,"CUT").isPasteAllowed(o)}}return 0}handle(e){var t,o;switch(e.type){case"COPY":case"CUT":const n="target"in e&&e.target||this.getters.getSelectedZones();this.state=this.getClipboardState(n,e.type),this.status="visible";break;case"PASTE":if(!this.state)break;const i=e.pasteOption||(this._isPaintingFormat?"onlyFormat":void 0);this._isPaintingFormat=!1,this.state.paste(e.target,{pasteOption:i,shouldPasteCF:!0,selectTarget:!0}),"CUT"===this.state.operation&&(this.state=void 0),this.status="invisible";break;case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);if(!vo(t[0])){for(const{col:t,row:o}of Fo(e.zone))this.dispatch("CLEAR_CELL",{col:t,row:o,sheetId:this.getters.getActiveSheetId()});break}this.getClipboardStateForCopyCells(t,"CUT").paste(o);break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension);this.getClipboardStateForCopyCells(t,"CUT").paste(o);break}case"ADD_COLUMNS_ROWS":if(this.status="invisible","CUT"!==(null===(t=this.state)||void 0===t?void 0:t.operation))return;this.state.isColRowDirtyingClipboard("before"===e.position?e.base:e.base+1,e.dimension)&&(this.state=void 0);break;case"REMOVE_COLUMNS_ROWS":if(this.status="invisible","CUT"!==(null===(o=this.state)||void 0===o?void 0:o.operation))return;for(let t of e.elements){if(this.state.isColRowDirtyingClipboard(t,e.dimension)){this.state=void 0;break}}this.status="invisible";break;case"PASTE_FROM_OS_CLIPBOARD":new Jm(e.text,this.getters,this.dispatch,this.selection).paste(e.target),this.status="invisible";break;case"ACTIVATE_PAINT_FORMAT":{const e=this.getters.getSelectedZones();this.state=this.getClipboardStateForCopyCells(e,"COPY"),this._isPaintingFormat=!0,this.status="visible";break}default:Ko(e)&&(this.status="invisible")}}getClipboardContent(){var e;return(null===(e=this.state)||void 0===e?void 0:e.getClipboardContent())||"\t"}isCutOperation(){return!!this.state&&"CUT"===this.state.operation}isPaintingFormat(){return this._isPaintingFormat}getDeleteCellsTargets(e,t){const o=this.getters.getActiveSheetId();let n;return n="COL"===t?{...e,left:e.right+1,right:this.getters.getNumberCols(o)-1}:{...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1},{cut:[n],paste:[e]}}getInsertCellsTargets(e,t){const o=this.getters.getActiveSheetId();let n,i;return"COL"===t?(n={...e,right:this.getters.getNumberCols(o)-1},i={...e,left:e.right+1,right:e.right+1}):(n={...e,bottom:this.getters.getNumberRows(o)-1},i={...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1}),{cut:[n],paste:[i]}}getClipboardStateForCopyCells(e,t){return new Km(e,t,this.getters,this.dispatch,this.selection)}getClipboardState(e,t){return this.getters.getSelectedFigureId()?new Qm(t,this.getters,this.dispatch):new Km(e,t,this.getters,this.dispatch,this.selection)}drawGrid(e){"visible"===this.status&&this.state&&this.state.drawClipboard(e)}}ev.layers=[2],ev.getters=["getClipboardContent","isCutOperation","isPaintingFormat"];class tv extends pg{constructor(){super(...arguments),this.customColors=new Set,this.shouldUpdateColors=!1}handle(e){switch(e.type){case"UPDATE_CELL":case"UPDATE_CHART":case"CREATE_CHART":case"ADD_CONDITIONAL_FORMAT":this.shouldUpdateColors=!0}}finalize(){if(this.shouldUpdateColors){this.shouldUpdateColors=!1;for(const e of this.getCustomColors())this.tryToAddColor(e)}}getCustomColors(){let e=[];for(const t of this.getters.getSheetIds()){const o=Object.values(this.getters.getCells(t));e=e.concat(this.getColorsFromCells(o),this.getFormattingColors(t),this.getChartColors(t))}return function(e){const t=[{leadColor:ct(255,0,0),colors:[]},{leadColor:ct(255,128,0),colors:[]},{leadColor:ct(128,128,0),colors:[]},{leadColor:ct(128,255,0),colors:[]},{leadColor:ct(0,255,0),colors:[]},{leadColor:ct(0,255,128),colors:[]},{leadColor:ct(0,255,255),colors:[]},{leadColor:ct(0,127,255),colors:[]},{leadColor:ct(0,0,255),colors:[]},{leadColor:ct(127,0,255),colors:[]},{leadColor:ct(128,0,128),colors:[]},{leadColor:ct(255,0,128),colors:[]}];for(const o of e.map(ut)){let e=500,n=0;t.forEach(((t,i)=>{const r=(s=o,a=t.leadColor,Math.sqrt(Math.pow(s.r-a.r,2)+Math.pow(s.g-a.g,2)+Math.pow(s.b-a.b,2)));var s,a;e>r&&(e=r,n=i)})),t[n].colors.push(o)}return t.map((e=>e.colors.sort(((e,t)=>pt(e).s-pt(t).s)))).flat().map(dt)}([...new Set([...new Set([...e,...this.customColors])].filter(at).map((e=>st(e).toLowerCase())))]).filter((e=>!A.includes(e)))}getColorsFromCells(e){var t,o;const n=new Set;for(const i of e)(null===(t=i.style)||void 0===t?void 0:t.textColor)&&n.add(i.style.textColor),(null===(o=i.style)||void 0===o?void 0:o.fillColor)&&n.add(i.style.fillColor);return[...n]}getFormattingColors(e){const t=this.getters.getConditionalFormats(e),o=[];for(const e of t){const t=e.rule;"CellIsRule"===t.type?(o.push(t.style.textColor),o.push(t.style.fillColor)):"ColorScaleRule"===t.type&&(o.push(it(t.minimum.color)),o.push(t.midpoint?it(t.midpoint.color):void 0),o.push(it(t.maximum.color)))}return o.filter(Ze)}getChartColors(e){const t=this.getters.getChartIds(e).map((t=>this.getters.getChart(e,t)));let o=new Set;for(let e of t){if(void 0===e)continue;const t=e.getDefinition().background;switch(void 0!==t&&o.add(t),e.type){case"gauge":const t=e.sectionRule.colors;o.add(t.lowerColor),o.add(t.middleColor),o.add(t.upperColor);break;case"scorecard":const n=e;o.add(n.baselineColorDown),o.add(n.baselineColorUp)}}return[...o]}tryToAddColor(e){const t=st(e).toLowerCase();e&&!A.includes(t)&&this.customColors.add(t)}}tv.getters=["getCustomColors"];const ov=Su.mapping;class nv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.isUpToDate=!1,this.evalContext=n.evalContext}handle(e){switch(Zo.has(e.type)&&(this.isUpToDate=!1),e.type){case"UPDATE_CELL":("content"in e||"format"in e)&&(this.isUpToDate=!1);break;case"EVALUATE_CELLS":this.evaluate()}}finalize(){this.isUpToDate||this.evaluate()}evaluateFormula(e,t=this.getters.getActiveSheetId()){const o=lg(e),n=this.getCompilationParameters((()=>{})),i=[];for(let e of o.dependencies)i.push(this.getters.getRangeFromSheetXC(t,e));return o.execute(i,...n).value}getRangeFormattedValues(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getCellsInZone(t.id,e.zone).map((e=>(null==e?void 0:e.formattedValue)||""))}getRangeValues(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getCellsInZone(t.id,e.zone).map((e=>null==e?void 0:e.evaluated.value))}*getAllCells(){for(const e of this.getters.getSheetIds()){const t=this.getters.getCells(e);for(const e in t)yield t[e]}}evaluate(){const e=this.getCompilationParameters(o),t={};for(const e of this.getAllCells())o(e);function o(o){if(!o.isFormula())return;const n=o.id,i=Ke((()=>{if(e[2].__originCellXC=()=>{const t=e[2].getters.getCellPosition(n);return Ot(t.col,t.row)},n in t)return null===t[n]?new d:o.evaluated;t[n]=null;try{const i=o.compiledFormula.execute(o.dependencies,...e);if(t[n]=!0,Array.isArray(i.value))throw new Error(r("This formula depends on invalid values"));return{value:i.value,format:o.format||i.format}}catch(o){return t[n]=!0,function(t){t instanceof Error||(t=new Error(t));const o=(null==t?void 0:t.errorType)||a.GenericError,n=e[2].__lastFnCalled||"";return new c(o,t.message.replace("[[FUNCTION_NAME]]",n),void 0!==t.logLevel?t.logLevel:l.error)}(o)}}));o.assignEvaluation(i)}this.isUpToDate=!0}getCompilationParameters(e){const t=Object.assign(Object.create(ov),this.evalContext,{getters:this.getters}),o=this.getters;function n(e){if(e.evaluated.type===qo.error)throw new c(e.evaluated.value,e.evaluated.error.message,e.evaluated.error.logLevel);return e.evaluated}return[function(e,t,i,s){if(t)return{value:bo(e.zone)};if(!vo(e.zone))throw new u;if(e.zone.bottom!==e.zone.top||e.zone.left!==e.zone.right)throw new Error(s?r("Function %s expects the parameter %s to be a single value or a single cell reference, not a range.",i.toString(),s.toString()):r("Function %s expects its parameters to be single values or single cell references, not ranges.",i.toString()));if(e.invalidSheetName)throw new Error(r("Invalid sheet name: %s",e.invalidSheetName));return function(e){let t;if(!o.tryGetSheet(e.sheetId))throw new Error(r("Invalid sheet name"));return t=o.getCell(e.sheetId,e.zone.left,e.zone.top),!t||t.isEmpty()?{value:null}:n(t)}(e)},function(e){const i=e.sheetId;if(!vo(e.zone))throw new u;const r=o.getSheetZone(i),s=[],a=xo(e.zone,r);if(!a)return s.push([]),s;for(let o=a.left;o<=a.right;o++){const i=[];for(let r=a.top;r<=a.bottom;r++){const s=t.getters.getCell(e.sheetId,o,r);i.push(s?n(s):void 0)}s.push(i)}return s},t]}}nv.getters=["evaluateFormula","getRangeFormattedValues","getRangeValues"];class iv extends pg{constructor(){super(...arguments),this.charts={},this.createRuntimeChart=function(e){const t=Bo.getAll();return function(o){const n=t.find((e=>e.match(o.type)));if(!n)throw new Error("No runtime builder for this chart.");return n.getChartRuntime(o,e)}}(this.getters)}handle(e){if(Zo.has(e.type)||jo.has(e.type)||"EVALUATE_CELLS"===e.type||"UPDATE_CELL"===e.type)for(const e in this.charts)for(const t in this.charts[e])this.charts[e][t]=void 0;switch(e.type){case"UPDATE_CHART":case"CREATE_CHART":case"DELETE_FIGURE":this.charts[e.sheetId]&&(this.charts[e.sheetId][e.id]=void 0);break;case"DELETE_SHEET":delete this.charts[e.sheetId]}}getChartRuntime(e,t){var o;if(!(null===(o=this.charts[e])||void 0===o?void 0:o[t])){const o=this.getters.getChart(e,t);if(!o)throw new Error(`No chart for the given id: ${t}`);this.charts[e]||(this.charts[e]={}),this.charts[e][t]=this.createRuntimeChart(o)}return this.charts[e][t]}getBackgroundOfSingleCellChart(e,t){if(e)return e;if(!t)return w;const o=t.zone.left,n=t.zone.top;return this.getters.getCellComputedStyle(t.sheetId,o,n).fillColor||w}}iv.getters=["getChartRuntime","getBackgroundOfSingleCellChart"];class rv extends pg{constructor(){super(...arguments),this.isStale=!0,this.computedStyles={},this.computedIcons={},this.rulePredicate={CellIsRule:(e,t)=>{if(e&&e.evaluated.type===qo.error)return!1;const o=t.values.map(up);switch(t.operator){case"IsEmpty":return!Ze(e)||""===e.evaluated.value.toString().trim();case"IsNotEmpty":return Ze(e)&&""!==e.evaluated.value.toString().trim();case"BeginsWith":return!(!e&&""===o[0])&&(Ze(e)&&(null==e?void 0:e.evaluated.value.toString().startsWith(o[0].toString())));case"EndsWith":return!(!e&&""===o[0])&&(Ze(e)&&e.evaluated.value.toString().endsWith(o[0].toString()));case"Between":return Ze(e)&&e.evaluated.value>=o[0]&&e.evaluated.value<=o[1];case"NotBetween":return!(Ze(e)&&e.evaluated.value>=o[0]&&e.evaluated.value<=o[1]);case"ContainsText":return Ze(e)&&e.evaluated.value.toString().indexOf(o[0].toString())>-1;case"NotContains":return!Ze(e)||!e.evaluated.value||-1==e.evaluated.value.toString().indexOf(o[0].toString());case"GreaterThan":return Ze(e)&&e.evaluated.value>o[0];case"GreaterThanOrEqual":return Ze(e)&&e.evaluated.value>=o[0];case"LessThan":return Ze(e)&&e.evaluated.value<o[0];case"LessThanOrEqual":return Ze(e)&&e.evaluated.value<=o[0];case"NotEqual":return!(!Ze(e)&&""===o[0])&&(Ze(e)&&e.evaluated.value!==o[0]);case"Equal":return!e&&""===o[0]||Ze(e)&&e.evaluated.value===o[0];default:console.warn(r("Not implemented operator %s for kind of conditional formatting: %s",t.operator,t.type))}return!1}}}handle(e){switch((jo.has(e.type)||"UPDATE_CELL"===e.type&&"content"in e)&&(this.isStale=!0),e.type){case"ACTIVATE_SHEET":const t=e.sheetIdTo;this.computedStyles[t]=this.computedStyles[t]||{},this.computedIcons[t]=this.computedIcons[t]||{},this.isStale=!0;break;case"AUTOFILL_CELL":const o=this.getters.getActiveSheetId(),n=this.getters.getRulesByCell(o,e.originCol,e.originRow);for(const t of n)this.adaptRules(o,t,[Ot(e.col,e.row)],[]);break;case"PASTE_CONDITIONAL_FORMAT":this.pasteCf(e.origin,e.target,e.operation)}}finalize(){this.isStale&&(this.computeStyles(),this.isStale=!1)}getCellComputedStyle(e,t,o){var n;const i=this.getters.getCell(e,t,o),r=this.computedStyles[e],s=r&&(null===(n=r[t])||void 0===n?void 0:n[o]),a={...null==i?void 0:i.style,...s};return this.getters.isFilterHeader(e,t,o)&&(a.bold=!0),a}getConditionalIcon(e,t){var o;const n=this.getters.getActiveSheetId(),i=this.computedIcons[n];return i&&(null===(o=i[e])||void 0===o?void 0:o[t])}computeStyles(){var e;const t=this.getters.getActiveSheetId();this.computedStyles[t]={},this.computedIcons[t]={};const o=this.computedStyles[t];for(let n of this.getters.getConditionalFormats(t).reverse())try{switch(n.rule.type){case"ColorScaleRule":for(let e of n.ranges)this.applyColorScale(e,n.rule);break;case"IconSetRule":for(let e of n.ranges)this.applyIcon(e,n.rule);break;default:for(let i of n.ranges){const r=this.getters.getRangeFromSheetXC(t,i).zone;for(let i=r.top;i<=r.bottom;i++)for(let s=r.left;s<=r.right;s++){const r=this.rulePredicate[n.rule.type];let a=this.getters.getCell(t,s,i);r&&r(a,n.rule)&&(o[s]||(o[s]=[]),o[s][i]=Object.assign((null===(e=o[s])||void 0===e?void 0:e[i])||{},n.rule.style))}}}}catch(e){}}parsePoint(e,t,o){const n=this.getters.getActiveSheetId(),i=this.getters.getRangeValues(this.getters.getRangeFromSheetXC(n,e)).filter(this.isCellValueNumber);switch(t.type){case"value":return"max"===o?Math.max(...i):Math.min(...i);case"number":return Number(t.value);case"percentage":const e=Math.min(...i);return e+(Math.max(...i)-e)*Number(t.value)/100;case"percentile":return lo(i,Number(t.value)/100,!0);case"formula":const n=t.value&&this.getters.evaluateFormula(t.value);return n instanceof Promise?null:n;default:return null}}applyIcon(e,t){const o=this.parsePoint(e,t.lowerInflectionPoint),n=this.parsePoint(e,t.upperInflectionPoint);if(null===o||null===n||o>n)return;const i=this.getters.getActiveSheetId(),r=this.getters.getRangeFromSheetXC(i,e).zone,s=this.computedIcons[i],a=[t.icons.upper,t.icons.middle,t.icons.lower];for(let e=r.top;e<=r.bottom;e++)for(let l=r.left;l<=r.right;l++){const r=this.getters.getCell(i,l,e);if((null==r?void 0:r.evaluated.type)!==qo.number)continue;const c=this.computeIcon(r.evaluated.value,n,t.upperInflectionPoint.operator,o,t.lowerInflectionPoint.operator,a);s[l]||(s[l]=[]),s[l][e]=c}}computeIcon(e,t,o,n,i,r){return"ge"===o&&e>=t||"gt"===o&&e>t?r[0]:"ge"===i&&e>=n||"gt"===i&&e>n?r[1]:r[2]}applyColorScale(e,t){var o;const n=this.parsePoint(e,t.minimum,"min"),i=t.midpoint?this.parsePoint(e,t.midpoint):null,r=this.parsePoint(e,t.maximum,"max");if(null===n||null===r||n>=r||i&&(n>=i||i>=r))return;const s=this.getters.getActiveSheetId(),a=this.getters.getRangeFromSheetXC(s,e).zone,l=this.computedStyles[s],c=[];t.midpoint&&i?(c.push({minValue:n,minColor:t.minimum.color,colorDiffUnit:this.computeColorDiffUnits(n,i,t.minimum.color,t.midpoint.color)}),c.push({minValue:i,minColor:t.midpoint.color,colorDiffUnit:this.computeColorDiffUnits(i,r,t.midpoint.color,t.maximum.color)})):c.push({minValue:n,minColor:t.minimum.color,colorDiffUnit:this.computeColorDiffUnits(n,r,t.minimum.color,t.maximum.color)});for(let e=a.top;e<=a.bottom;e++)for(let t=a.left;t<=a.right;t++){const a=this.getters.getCell(s,t,e);if((null==a?void 0:a.evaluated.type)===qo.number){const s=Oe(a.evaluated.value,n,r);let h;h=2===c.length&&i?s<=i?this.colorCell(s,c[0].minValue,c[0].minColor,c[0].colorDiffUnit):this.colorCell(s,c[1].minValue,c[1].minColor,c[1].colorDiffUnit):this.colorCell(s,c[0].minValue,c[0].minColor,c[0].colorDiffUnit),l[t]||(l[t]=[]),l[t][e]=(null===(o=l[t])||void 0===o?void 0:o[e])||{},l[t][e].fillColor=it(h)}}}computeColorDiffUnits(e,t,o,n){const i=t-e;return[((o>>16)%256-(n>>16)%256)/i,((o>>8)%256-(n>>8)%256)/i,(o%256-n%256)/i]}colorCell(e,t,o,n){const[i,r,s]=n;return Math.round((o>>16)%256-i*(e-t))<<16|Math.round((o>>8)%256-r*(e-t))<<8|Math.round(o%256-s*(e-t))}adaptRules(e,t,o,n){if(0===o.length&&0===n.length)return;const i=this.getters.getConditionalFormats(e),r=i.findIndex((e=>e.id===t.id));let s=[];r>-1&&(s=i[r].ranges),s=s.concat(o);const a=Oo(s,n);this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:t.id,rule:t.rule,stopIfTrue:t.stopIfTrue},ranges:a.map((t=>this.getters.getRangeDataFromXc(e,t))),sheetId:e})}pasteCf(e,t,o){const n=Ot(t.col,t.row);for(let i of this.getters.getConditionalFormats(e.sheetId))for(let r of i.ranges)if(To(e.col,e.row,this.getters.getRangeFromSheetXC(e.sheetId,r).zone)){const r=i,s=[];"CUT"===o&&s.push(Ot(e.col,e.row)),e.sheetId===t.sheetId?this.adaptRules(e.sheetId,r,[n],s):(this.adaptRules(t.sheetId,r,[n],[]),this.adaptRules(e.sheetId,r,[],s))}}isCellValueNumber(e){return"number"==typeof e}}rv.getters=["getConditionalIcon","getCellComputedStyle"];class sv extends pg{constructor(){super(...arguments),this.filterValues={},this.hiddenRows=new Set,this.isEvaluationDirty=!1}allowDispatch(e){if("UPDATE_FILTER"===e.type)if(!this.getters.getFilterId(e.sheetId,e.col,e.row))return 78;return 0}handle(e){switch(e.type){case"UNDO":case"REDO":case"UPDATE_CELL":case"EVALUATE_CELLS":case"ACTIVATE_SHEET":case"REMOVE_FILTER_TABLE":this.isEvaluationDirty=!0;break;case"START":for(const e of this.getters.getSheetIds()){this.filterValues[e]={};for(const t of this.getters.getFilters(e))this.filterValues[e][t.id]=[]}break;case"CREATE_SHEET":this.filterValues[e.sheetId]={};break;case"UPDATE_FILTER":this.updateFilter(e),this.updateHiddenRows();break;case"DUPLICATE_SHEET":const t={};for(const o of this.getters.getFilters(e.sheetIdTo)){const n=o.zoneWithHeaders;t[o.id]=this.getFilterValues(e.sheetId,n.left,n.top)}this.filterValues[e.sheetIdTo]=t}}finalize(){this.isEvaluationDirty&&(this.updateHiddenRows(),this.isEvaluationDirty=!1)}isRowFiltered(e,t){return e===this.getters.getActiveSheetId()&&this.hiddenRows.has(t)}getCellBorderWithFilterBorder(e,t,o){let n;for(let i of this.getters.getFilterTables(e)){const r=i.zone;if(To(t,o,r)){const i=this.intersectZoneWithViewport(e,r);n={top:o===i.top?Z:void 0,bottom:o===i.bottom?Z:void 0,left:t===i.left?Z:void 0,right:t===i.right?Z:void 0}}}const i=this.getters.getCellBorder(e,t,o),r={...n,...tt(i||{})};return je(r)?null:r}getFilterHeaders(e){const t=[];for(let o of this.getters.getFilterTables(e)){const n=o.zone;if(!n)continue;const i=n.top;for(let o=n.left;o<=n.right;o++)this.getters.isColHidden(e,o)||this.getters.isRowHidden(e,i)||t.push({col:o,row:i})}return t}getFilterValues(e,t,o){const n=this.getters.getFilterId(e,t,o);return n&&this.filterValues[e]&&this.filterValues[e][n]||[]}isFilterHeader(e,t,o){return this.getFilterHeaders(e).some((e=>e.col===t&&e.row===o))}isFilterActive(e,t,o){var n,i;const r=this.getters.getFilterId(e,t,o);return Boolean(r&&(null===(i=null===(n=this.filterValues[e])||void 0===n?void 0:n[r])||void 0===i?void 0:i.length))}intersectZoneWithViewport(e,t){const o=Fe(t.left,t.right+1),n=Fe(t.top,t.bottom+1);return{left:this.getters.findVisibleHeader(e,"COL",o),right:this.getters.findVisibleHeader(e,"COL",o.reverse()),top:this.getters.findVisibleHeader(e,"ROW",n),bottom:this.getters.findVisibleHeader(e,"ROW",n.reverse())}}updateFilter({col:e,row:t,values:o,sheetId:n}){const i=this.getters.getFilterId(n,e,t);i&&(this.filterValues[n]||(this.filterValues[n]={}),this.filterValues[n][i]=o)}updateHiddenRows(){var e,t;const o=this.getters.getActiveSheetId(),n=this.getters.getFilters(o),i=new Set;for(let r of n){const n=null===(t=null===(e=this.filterValues[o])||void 0===e?void 0:e[r.id])||void 0===t?void 0:t.map(ot);if(n&&r.filteredZone)for(let e=r.filteredZone.top;e<=r.filteredZone.bottom;e++){const t=this.getCellValueAsString(o,r.col,e);n.includes(t)&&i.add(e)}}this.hiddenRows=i}getCellValueAsString(e,t,o){var n;const i=null===(n=this.getters.getCell(e,t,o))||void 0===n?void 0:n.formattedValue;return(null==i?void 0:i.toLowerCase())||""}exportForExcel(e){var t;for(const o of e.sheets)for(const e of o.filterTables){const n=mo(e.range),i=[],r=[];for(const e of Fe(0,No(n).width)){const s=this.getFilterValues(o.id,n.left+e,n.top),a=this.getters.getFilter(o.id,n.left+e,n.top);if(!a)continue;const l=a.filteredZone?Fo(a.filteredZone).map((e=>{var t;return null===(t=this.getters.getCell(o.id,e.col,e.row))||void 0===t?void 0:t.formattedValue})).filter(Ze):[],c=l.filter((e=>!s.includes(e)));i.push({colId:e,filteredValues:[...new Set(c)]});const h={col:a.col,row:a.zoneWithHeaders.top},d=null===(t=this.getters.getCell(o.id,h.col,h.row))||void 0===t?void 0:t.formattedValue,u=this.getUniqueColNameForExcel(e,d,r);r.push(u),o.cells[Ot(h.col,h.row)]={...o.cells[Ot(h.col,h.row)],content:u,value:u,isFormula:!1}}e.filters=i}}getUniqueColNameForExcel(e,t,o){t||(t=`Column${e}`);let n=t,i=2;for(;o.includes(n);)n=t+String(i),i++;return n}}sv.getters=["getCellBorderWithFilterBorder","getFilterHeaders","getFilterValues","isFilterHeader","isRowFiltered","isFilterActive"];var av;!function(e){e[e.previous=-1]="previous",e[e.current=0]="current",e[e.next=1]="next"}(av||(av={}));class lv extends pg{constructor(){super(...arguments),this.searchMatches=[],this.selectedMatchIndex=null,this.currentSearchRegex=null,this.searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1},this.toSearch=""}handle(e){switch(e.type){case"UPDATE_SEARCH":this.updateSearch(e.toSearch,e.searchOptions);break;case"CLEAR_SEARCH":case"UNDO":case"REDO":case"REMOVE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":this.clearSearch();break;case"SELECT_SEARCH_PREVIOUS_MATCH":this.selectNextCell(av.previous);break;case"SELECT_SEARCH_NEXT_MATCH":this.selectNextCell(av.next);break;case"REPLACE_SEARCH":this.replace(e.replaceWith);break;case"REPLACE_ALL_SEARCH":this.replaceAll(e.replaceWith);break;case"ACTIVATE_SHEET":case"REFRESH_SEARCH":this.refreshSearch()}}getSearchMatches(){return this.searchMatches}getCurrentSelectedMatchIndex(){return this.selectedMatchIndex}updateSearch(e,t){this.searchOptions=t,e!==this.toSearch&&(this.selectedMatchIndex=null),this.toSearch=e,this.updateRegex(),this.refreshSearch()}refreshSearch(){const e=this.findMatches();this.searchMatches=e,this.selectNextCell(av.current)}updateRegex(){let e=Re(this.toSearch);const t=this.searchOptions.matchCase?"":"i";this.searchOptions.exactMatch&&(e=`^${e}$`),this.currentSearchRegex=RegExp(e,t)}findMatches(){const e=this.getters.getActiveSheetId(),t=this.getters.getCells(e),o=[];if(this.toSearch)for(const e of Object.values(t))if(e&&this.currentSearchRegex&&this.currentSearchRegex.test(this.searchOptions.searchFormulas&&e.isFormula()?e.content:String(e.evaluated.value))){const t=this.getters.getCellPosition(e.id),n={col:t.col,row:t.row,selected:!1};o.push(n)}return o.sort(this.sortByRowThenColumn)}sortByRowThenColumn(e,t){return e.row===t.row?e.col-t.col:e.row>t.row?1:-1}selectNextCell(e){const t=this.searchMatches;if(!t.length)return void(this.selectedMatchIndex=null);let o;o=null===this.selectedMatchIndex?0:this.selectedMatchIndex+e,o=(o%t.length+t.length)%t.length,null!==this.selectedMatchIndex&&this.selectedMatchIndex===o||(this.selectedMatchIndex=o,this.selection.selectCell(t[o].col,t[o].row));for(let e=0;e<this.searchMatches.length;e++)this.searchMatches[e].selected=e===this.selectedMatchIndex}clearSearch(){this.toSearch="",this.searchMatches=[],this.selectedMatchIndex=null,this.currentSearchRegex=null,this.searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1}}replace(e){if(null===this.selectedMatchIndex||!this.currentSearchRegex)return;const t=this.searchMatches[this.selectedMatchIndex],o=this.getters.getActiveSheetId(),n=this.getters.getCell(o,t.col,t.row),i=this.toReplace(n,o);if(n&&i){const o=new RegExp(this.currentSearchRegex.source,this.currentSearchRegex.flags+"g"),n=i.toString().replace(o,e);this.dispatch("UPDATE_CELL",{sheetId:this.getters.getActiveSheetId(),col:t.col,row:t.row,content:n}),this.searchMatches.splice(this.selectedMatchIndex,1),this.selectNextCell(av.current)}else this.selectNextCell(av.next)}replaceAll(e){const t=this.searchMatches.length;for(let o=0;o<t;o++)this.replace(e)}toReplace(e,t){if(e){if(this.searchOptions.searchFormulas&&e.isFormula())return e.content;if(this.searchOptions.searchFormulas||!e.isFormula())return e.evaluated.value.toString()}return null}drawGrid(e){const{ctx:t}=e,o=this.getters.getActiveSheetId();for(const e of this.searchMatches){const n=this.getters.getMerge(o,e.col,e.row),i=n?n.left:e.col,r=n?n.right:e.col,s=n?n.top:e.row,a=n?n.bottom:e.row,{x:l,y:c,width:h,height:d}=this.getters.getVisibleRect({top:s,left:i,right:r,bottom:a});h>0&&d>0&&(t.fillStyle="#8B008B33",t.fillRect(l,c,h,d),e.selected&&(t.strokeStyle="#8B008B",t.strokeRect(l,c,h,d)))}}}lv.layers=[3],lv.getters=["getSearchMatches","getCurrentSelectedMatchIndex"];class cv extends pg{handle(e){if("SET_DECIMAL"===e.type)this.setDecimal(e.sheetId,e.target,e.step)}setDecimal(e,t,o){const n=this.searchNumberFormat(e,t);if(void 0!==n){const i=function(e,t){const o=Pt(e).map((e=>"NUMBER"===e.type?{...e,format:jt(e.format,t)}:e)),n=Qt(o);return Lt[n]=o,n}(n,o);this.dispatch("SET_FORMATTING",{sheetId:e,target:t,format:i})}}searchNumberFormat(e,t){var o;for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let i=n.left;i<=n.right;i++){const n=this.getters.getCell(e,i,t);if((null==n?void 0:n.evaluated.type)===qo.number&&!(null===(o=n.evaluated.format)||void 0===o?void 0:o.match(j)))return n.evaluated.format||qt(n.evaluated.value)}}}cv.modes=["normal"];class hv extends pg{isRowHidden(e,t){return this.getters.isRowHiddenByUser(e,t)||this.getters.isRowFiltered(e,t)}isColHidden(e,t){return this.getters.isColHiddenByUser(e,t)}isHeaderHidden(e,t,o){return"COL"===t?this.isColHidden(e,o):this.isRowHidden(e,o)}getNextVisibleCellPosition(e,t,o){return{col:this.findVisibleHeader(e,"COL",Fe(t,this.getters.getNumberCols(e))),row:this.findVisibleHeader(e,"ROW",Fe(o,this.getters.getNumberRows(e)))}}findVisibleHeader(e,t,o){return o.find((o=>this.getters.doesHeaderExist(e,t,o)&&!this.isHeaderHidden(e,t,o)))}findLastVisibleColRowIndex(e,t,o){let n;for(n=o.last;n>=o.first;n--)if(!this.isHeaderHidden(e,t,n))return n;return n}findFirstVisibleColRowIndex(e,t){const o=this.getters.getNumberHeaders(e,t);for(let n=0;n<o-1;n++){if("COL"===t&&!this.isColHidden(e,n))return n;if("ROW"===t&&!this.isRowHidden(e,n))return n}}exportForExcel(e){for(const t of e.sheets)for(const[e,o]of Object.entries(t.rows)){const n=this.isRowHidden(t.id,Number(e));o.isHidden=n}}}hv.getters=["getNextVisibleCellPosition","findVisibleHeader","findLastVisibleColRowIndex","findFirstVisibleColRowIndex","isRowHidden","isColHidden","isHeaderHidden"];class dv extends pg{getHighlights(){return this.prepareHighlights(this.getters.getComposerHighlights().concat(this.getters.getSelectionInputHighlights()))}prepareHighlights(e){return e.filter((e=>e.zone.top>=0&&e.zone.left>=0&&e.zone.bottom<this.getters.getNumberRows(e.sheetId)&&e.zone.right<this.getters.getNumberCols(e.sheetId))).map((e=>{const{height:t,width:o}=No(e.zone),n=t*o==1?this.getters.expandZone(e.sheetId,e.zone):e.zone;return{...e,zone:n}}))}drawGrid(e){const{ctx:t,thinLineWidth:o}=e,n=this.getters.getActiveSheetId(),i=3*o;t.lineWidth=i;const r=this.getHighlights();for(let e of r.filter(((e,t)=>r.findIndex((t=>Ro(t.zone,e.zone)&&t.sheetId===n))===t))){const{x:o,y:n,width:r,height:s}=this.getters.getVisibleRect(e.zone);r>0&&s>0&&(t.strokeStyle=e.color,t.strokeRect(o+i/2,n+i/2,r-i,s-i),t.globalCompositeOperation="source-over",t.fillStyle=e.color+"20",t.fillRect(o+i,n+i,r-2*i,s-2*i))}}}dv.layers=[1],dv.getters=["getHighlights"];class uv extends pg{constructor(){super(...arguments),this.boxes=[]}getColDimensionsInViewport(e,t){const o=Math.min(...this.getters.getSheetViewVisibleCols()),n=this.getters.getColRowOffsetInViewport("COL",o,t),i=this.getters.getColSize(e,t);return{start:n,size:i,end:n+(this.getters.isColHidden(e,t)?0:i)}}getRowDimensionsInViewport(e,t){const o=Math.min(...this.getters.getSheetViewVisibleRows()),n=this.getters.getColRowOffsetInViewport("ROW",o,t),i=this.getters.getRowSize(e,t);return{start:n,size:i,end:n+(this.getters.isRowHidden(e,t)?0:i)}}getHeaderOffset(e,t,o){let n=this.getters.getColRowOffsetInViewport(e,t,o);return this.getters.isDashboard()||(n+="ROW"===e?O:M),n}drawGrid(e,t){switch(t){case 0:this.boxes=this.getGridBoxes(),this.drawBackground(e),this.drawCellBackground(e),this.drawBorders(e),this.drawTexts(e),this.drawIcon(e),this.drawFrozenPanes(e);break;case 7:this.getters.isDashboard()||(this.drawHeaders(e),this.drawFrozenPanesHeaders(e))}}drawBackground(e){const{ctx:t,thinLineWidth:o}=e,{width:n,height:i}=this.getters.getSheetViewDimensionWithHeaders(),r=this.getters.getActiveSheetId();t.fillStyle="#ffffff",t.fillRect(0,0,n+f,i+f);const s=this.getters.getSheetViewVisibleCols(),a=s[0],l=s[s.length-1],c=this.getters.getSheetViewVisibleRows(),h=c[0],d=c[c.length-1];if(this.getters.getGridLinesVisibility(r)&&!this.getters.isDashboard()){t.lineWidth=2*o,t.strokeStyle="#E2E3E3",t.beginPath();for(const e of s){const o={top:h,bottom:d,left:e,right:e},{x:n,width:r,height:s}=this.getters.getVisibleRect(o);t.moveTo(n+r,0),t.lineTo(n+r,Math.min(i,s+(this.getters.isDashboard()?0:O)))}for(const e of c){const o={left:a,right:l,top:e,bottom:e},{y:i,width:r,height:s}=this.getters.getVisibleRect(o);t.moveTo(0,i+s),t.lineTo(Math.min(n,r+(this.getters.isDashboard()?0:M)),i+s)}t.stroke()}}drawCellBackground(e){const{ctx:t,thinLineWidth:o}=e,n=!this.getters.isDashboard()&&this.getters.getGridLinesVisibility(this.getters.getActiveSheetId());t.lineWidth=n?.3*o:o;const i=n?.1*o:0;t.strokeStyle="#111";for(let e of this.boxes){let r=e.style;(r.fillColor&&"#ffffff"!==r.fillColor||e.isMerge)&&(t.fillStyle=r.fillColor||"#ffffff",n?(t.fillRect(e.x,e.y,e.width,e.height),t.strokeRect(e.x+i,e.y+i,e.width-2*i,e.height-2*i)):t.fillRect(e.x-o,e.y-o,e.width+2*o,e.height+2*o)),e.error&&(t.fillStyle="red",t.beginPath(),t.moveTo(e.x+e.width-5,e.y),t.lineTo(e.x+e.width,e.y),t.lineTo(e.x+e.width,e.y+5),t.fill())}}drawBorders(e){const{ctx:t,thinLineWidth:o}=e;for(let e of this.boxes){const t=e.border;if(t){const{x:o,y:i,width:r,height:s}=e;t.left&&n(t.left,o,i,o,i+s),t.top&&n(t.top,o,i,o+r,i),t.right&&n(t.right,o+r,i,o+r,i+s),t.bottom&&n(t.bottom,o,i+s,o+r,i+s)}}function n([e,n],i,r,s,a){t.strokeStyle=n,t.lineWidth=("thin"===e?2:3)*o,t.beginPath(),t.moveTo(i,r),t.lineTo(s,a),t.stroke()}}drawTexts(e){const{ctx:t,thinLineWidth:o}=e;let n;t.textBaseline="top";for(let e of this.boxes)if(e.content){const i=e.style||{},r=e.content.align||"left",s=Ne(i);let a;s!==n&&(n=s,t.font=s),t.fillStyle=i.textColor||"#000";let l=e.y+e.height/2+1;if(a="left"===r?e.x+(e.image?e.image.size+2*$:L):"right"===r?e.x+e.width-L-(e.isFilterHeader?20:0):e.x+e.width/2,t.textAlign=r,e.clipRect){t.save(),t.beginPath();const{x:o,y:n,width:i,height:r}=e.clipRect;t.rect(o,n,i,r),t.clip()}const c=e.content.multiLineText.length,h=_e(i);let d=l-(c*(h+L)-L)/2;for(let n of e.content.multiLineText){if(t.fillText(n,Math.round(a),Math.round(d)),i.strikethrough||i.underline){const e=Me(t,n,i);let s=a;"right"===r?s-=e:"center"===r&&(s-=e/2),i.strikethrough&&t.fillRect(s,d+h/2,e,2.6*o),i.underline&&t.fillRect(s,d+h+1,e,1.3*o)}d+=L+h}e.clipRect&&t.restore()}}drawIcon(e){const{ctx:t}=e;for(const e of this.boxes)if(e.image){const o=e.image.image,n=e.image.size,i=(e.height-n)/2;if(e.image.clipIcon){t.save(),t.beginPath();const{x:o,y:n,width:i,height:r}=e.image.clipIcon;t.rect(o,n,i,r),t.clip()}t.drawImage(o,e.x+$,e.y+i,n,n),e.image.clipIcon&&t.restore()}}drawHeaders(e){const{ctx:t,thinLineWidth:o}=e,n=this.getters.getSheetViewVisibleCols(),i=n[0],r=n[n.length-1],s=this.getters.getSheetViewVisibleRows(),a=s[0],l=s[s.length-1],{width:c,height:h}=this.getters.getSheetViewDimensionWithHeaders(),d=this.getters.getSelectedZones(),u=function(e){const t=new Set;for(let o of e)for(let e of Fe(o.left,o.right+1))t.add(e);return t}(d),g=function(e){const t=new Set;for(let o of e)for(let e of Fe(o.top,o.bottom+1))t.add(e);return t}(d),p=this.getters.getActiveSheetId(),f=this.getters.getNumberCols(p),m=this.getters.getNumberRows(p),E=this.getters.getActiveCols(),w=this.getters.getActiveRows();t.font=`400 11px ${G}`,t.textAlign="center",t.textBaseline="middle",t.lineWidth=o,t.strokeStyle="#333";for(let e=i;e<=r;e++){const o={left:e,right:e,top:0,bottom:m-1},{x:n,width:i}=this.getters.getVisibleRect(o),r=this.getters.doesZonesContainFilter(p,[o]),s=E.has(e),a=u.has(e);t.fillStyle=s?r?R:S:a?r?T:b:r?I:v,t.fillRect(n,0,i,O)}for(let e=a;e<=l;e++){const o={top:e,bottom:e,left:0,right:f-1},{y:n,height:i}=this.getters.getVisibleRect(o),r=this.getters.doesZonesContainFilter(p,[o]),s=w.has(e),a=g.has(e);t.fillStyle=s?r?R:S:a?r?T:b:r?I:v,t.fillRect(0,n,M,i)}t.beginPath(),t.moveTo(M,0),t.lineTo(M,h),t.moveTo(0,O),t.lineTo(c,O),t.strokeStyle="#C0C0C0",t.stroke(),t.beginPath();for(const e of n){const o=this.getters.getColSize(p,e),n=It(e);t.fillStyle=E.has(e)?"#fff":C;let r=this.getHeaderOffset("COL",i,e);t.fillText(n,r+o/2,13),t.moveTo(r+o,0),t.lineTo(r+o,O)}for(const e of s){const o=this.getters.getRowSize(p,e);t.fillStyle=w.has(e)?"#fff":C;let n=this.getHeaderOffset("ROW",a,e);t.fillText(String(e+1),24,n+o/2),t.moveTo(0,n+o),t.lineTo(M,n+o)}t.stroke()}drawFrozenPanesHeaders(e){const{ctx:t,thinLineWidth:o}=e,{x:n,y:i}=this.getters.getMainViewportCoordinates(),r=this.getters.isDashboard()?0:M,s=this.getters.isDashboard()?0:O;t.lineWidth=6*o,t.strokeStyle="#BCBCBC",t.beginPath(),n&&(t.moveTo(r+n,0),t.lineTo(r+n,s)),i&&(t.moveTo(0,s+i),t.lineTo(r,s+i)),t.stroke()}drawFrozenPanes(e){const{ctx:t,thinLineWidth:o}=e,{x:n,y:i}=this.getters.getMainViewportCoordinates(),r=this.getters.getSheetViewVisibleCols(),s=r[0],a=r[r.length-1],l=this.getters.getSheetViewVisibleRows(),c={left:s,right:a,top:l[0],bottom:l[l.length-1]},h=this.getters.getVisibleRect(c),d=this.getters.isDashboard()?0:M,u=this.getters.isDashboard()?0:O;t.lineWidth=6*o,t.strokeStyle="#DADFE8",t.beginPath(),n&&(t.moveTo(d+n,u),t.lineTo(d+n,h.height+u)),i&&(t.moveTo(d,u+i),t.lineTo(h.width+d,u+i)),t.stroke()}hasContent(e,t){const o=this.getters.getActiveSheetId(),n=this.getters.getCell(o,e,t);return n&&!n.isEmpty()||this.getters.isInMerge(o,e,t)}findNextEmptyCol(e,t,o){let n=e;for(;n<t&&!this.hasContent(n+1,o);)n++;return n}findPreviousEmptyCol(e,t,o){let n=e;for(;n>t&&!this.hasContent(n-1,o);)n--;return n}computeCellAlignment(e,t){if(e.isFormula()&&this.getters.shouldShowFormulas())return"left";const{align:o}=this.getters.getCellStyle(e);return t&&e.evaluated.type===qo.number?"center"!==o?"left":o:o||e.defaultAlign}createZoneBox(e,t,o){const{left:n,right:i}=o,r=t.left,s=t.top,a=this.getters.getCell(e,r,s),c=this.getters.shouldShowFormulas(),{x:h,y:d,width:u,height:g}=this.getters.getVisibleRect(t),p={x:h,y:d,width:u,height:g,border:this.getters.getCellBorderWithFilterBorder(e,r,s)||void 0,style:this.getters.getCellComputedStyle(e,r,s)};if(!a)return p;const f=this.getters.getConditionalIcon(r,s),m=_e(p.style),v=f?2*$+m:0;f&&(p.image={type:"icon",size:m,clipIcon:{x:p.x,y:p.y,width:Math.min(v,u),height:g},image:Zr[f].img}),p.isFilterHeader=this.getters.isFilterHeader(e,r,s);const b=p.isFilterHeader?19:0,S=this.getters.getCellText(a,c),C=this.getters.getTextWidth(a),E=this.getters.getCellStyle(a).wrapping||"overflow",w="wrap"===E?this.getters.getCellMultiLineText(a,u-2*L):[S],y=v+C+b,x=this.computeCellAlignment(a,y>u);p.content={multiLineText:w,width:"overflow"===E?C:u,align:x},a.evaluated.type===qo.error&&a.evaluated.error.logLevel>l.silent&&(p.error=a.evaluated.error.message);const R=y>u||m>g;if(f||p.isFilterHeader)p.clipRect={x:p.x+v,y:p.y,width:Math.max(0,u-v-b),height:g};else if(R&&"overflow"===E){let o,a;switch(this.getters.isInMerge(e,r,s)?(o=this.getters.getMerge(e,r,s).right,a=r):(o=this.findNextEmptyCol(r,i,s),a=this.findPreviousEmptyCol(r,n,s)),x){case"left":{const e=Lo({col:o,row:s}),{x:n,y:i,width:r,height:a}=this.getters.getVisibleRect(yo(t,e));(r<C||m>a)&&(p.clipRect={x:n,y:i,width:r,height:a});break}case"right":{const e=Lo({col:a,row:s}),{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(yo(t,e));(i<C||m>r)&&(p.clipRect={x:o,y:n,width:i,height:r});break}case"center":{const e={...t,right:o,left:a},{x:n,y:i,width:s,height:l}=this.getters.getVisibleRect(e);(s<C||a===r||o===r||m>l)&&(p.clipRect={x:n,y:i,width:s,height:l});break}}}else"clip"!==E&&"wrap"!==E||(p.clipRect={x:p.x,y:p.y,width:u,height:g});return p}getGridBoxes(){const e=[],t=this.getters.getSheetViewVisibleCols(),o=t[0],n=t[t.length-1],i=this.getters.getSheetViewVisibleRows(),r={left:o,right:n,top:i[0],bottom:i[i.length-1]},s=this.getters.getActiveSheetId();for(const o of i)for(const n of t)this.getters.isInMerge(s,n,o)||e.push(this.createZoneBox(s,Lo({col:n,row:o}),r));for(const t of this.getters.getMerges(s))if(!this.getters.isMergeHidden(s,t)&&Io(t,r)){const o=this.createZoneBox(s,t,r),n=this.getters.getCellBorder(s,t.right,t.bottom);o.border={...o.border,bottom:n?n.bottom:void 0,right:n?n.right:void 0},o.isMerge=!0,e.push(o)}return e}}uv.layers=[0,7],uv.getters=["getColDimensionsInViewport","getRowDimensionsInViewport"];const gv=[{name:r("Sum"),types:[qo.number],compute:e=>Va.compute([e])},{name:r("Avg"),types:[qo.number],compute:e=>Ka.compute([e])},{name:r("Min"),types:[qo.number],compute:e=>pl.compute([e])},{name:r("Max"),types:[qo.number],compute:e=>hl.compute([e])},{name:r("Count"),types:[qo.number,qo.text,qo.boolean,qo.error],compute:e=>rl.compute([e])},{name:r("Count Numbers"),types:[qo.number,qo.text,qo.boolean,qo.error],compute:e=>il.compute([e])}];class pv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.gridSelection={anchor:{cell:{col:0,row:0},zone:{top:0,left:0,bottom:0,right:0}},zones:[{top:0,left:0,bottom:0,right:0}]},this.selectedFigureId=null,this.sheetsData={},this.activeSheet=null,this.moveClient=n.moveClient}allowDispatch(e){switch(e.type){case"ACTIVATE_SHEET":try{this.getters.getSheet(e.sheetIdTo);break}catch(e){return 27}case"MOVE_COLUMNS_ROWS":return this.isMoveElementAllowed(e)}return 0}handleEvent(e){const t=e.anchor;let o=[];switch(e.mode){case"overrideSelection":o=[t.zone];break;case"updateAnchor":o=[...this.gridSelection.zones];const n=o.findIndex((t=>Ro(t,e.previousAnchor.zone)));n>=0&&(o[n]=t.zone);break;case"newAnchor":o=[...this.gridSelection.zones,t.zone]}this.setSelectionMixin(e.anchor,o),this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor));const{col:n,row:i}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:n,row:i}),this.selectedFigureId=null}handle(e){switch(e.type){case"START_EDITION":case"ACTIVATE_SHEET":this.selectedFigureId=null;break;case"DELETE_FIGURE":this.selectedFigureId===e.id&&(this.selectedFigureId=null);break;case"DELETE_SHEET":this.selectedFigureId&&this.getters.getFigure(e.sheetId,this.selectedFigureId)&&(this.selectedFigureId=null)}switch(e.type){case"START":const t=this.getters.getVisibleSheetIds()[0];this.dispatch("ACTIVATE_SHEET",{sheetIdTo:t,sheetIdFrom:t});const{col:o,row:n}=this.getters.getNextVisibleCellPosition(t,0,0);this.selectCell(o,n),this.selection.registerAsDefault(this,this.gridSelection.anchor,{handleEvent:this.handleEvent.bind(this)}),this.moveClient({sheetId:t,col:0,row:0});break;case"ACTIVATE_SHEET":if(this.getters.isSheetVisible(e.sheetIdTo)||this.dispatch("SHOW_SHEET",{sheetId:e.sheetIdTo}),this.setActiveSheet(e.sheetIdTo),this.sheetsData[e.sheetIdFrom]={gridSelection:Ie(this.gridSelection)},e.sheetIdTo in this.sheetsData)Object.assign(this,this.sheetsData[e.sheetIdTo]),this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor));else{const{col:t,row:o}=this.getters.getNextVisibleCellPosition(e.sheetIdTo,0,0);this.selectCell(t,o)}break;case"REMOVE_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){"COL"===e.dimension?this.onColumnsRemoved(e):this.onRowsRemoved(e);const{col:o,row:n}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:n})}break}case"ADD_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){this.onAddElements(e);const{col:o,row:n}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:n})}break}case"MOVE_COLUMNS_ROWS":e.sheetId===this.getActiveSheetId()&&this.onMoveElements(e);break;case"SELECT_FIGURE":this.selectedFigureId=e.id;break;case"ACTIVATE_NEXT_SHEET":this.activateNextSheet("right");break;case"ACTIVATE_PREVIOUS_SHEET":this.activateNextSheet("left");break;case"HIDE_SHEET":e.sheetId===this.getActiveSheetId()&&this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e.sheetId,sheetIdTo:this.getters.getVisibleSheetIds()[0]});break;case"UNDO":case"REDO":case"DELETE_SHEET":const i=Object.keys(this.sheetsData).filter((e=>!this.getters.tryGetSheet(e)));for(const e of i)delete this.sheetsData[e];for(const e in this.sheetsData){const t=this.clipSelection(e,this.sheetsData[e].gridSelection);this.sheetsData[e]={gridSelection:Ie(t)}}if(!this.getters.tryGetSheet(this.getters.getActiveSheetId())){const e=this.getters.getVisibleSheetIds();if(this.activeSheet=this.getters.getSheet(e[0]),this.activeSheet.id in this.sheetsData){const{anchor:e}=this.clipSelection(this.activeSheet.id,this.sheetsData[this.activeSheet.id].gridSelection);this.selectCell(e.cell.col,e.cell.row)}else this.selectCell(0,0);const{col:t,row:o}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:t,row:o})}const r=this.getters.getActiveSheetId();this.gridSelection.zones=this.gridSelection.zones.map((e=>this.getters.expandZone(r,e))),this.gridSelection.anchor.zone=this.getters.expandZone(r,this.gridSelection.anchor.zone),this.setSelectionMixin(this.gridSelection.anchor,this.gridSelection.zones)}this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor))}getActiveSheet(){return this.activeSheet}getActiveSheetId(){return this.activeSheet.id}getActiveCell(){const e=this.getters.getActiveSheetId(),{col:t,row:o}=this.gridSelection.anchor.cell,{col:n,row:i}=this.getters.getMainCellPosition(e,t,o);return this.getters.getCell(e,n,i)}getActiveCols(){const e=new Set;for(let t of this.gridSelection.zones)if(0===t.top&&t.bottom===this.getters.getNumberRows(this.getters.getActiveSheetId())-1)for(let o=t.left;o<=t.right;o++)e.add(o);return e}getActiveRows(){const e=new Set,t=this.getters.getActiveSheetId();for(let o of this.gridSelection.zones)if(0===o.left&&o.right===this.getters.getNumberCols(t)-1)for(let t=o.top;t<=o.bottom;t++)e.add(t);return e}getCurrentStyle(){const e=this.getters.getActiveCell();return e?this.getters.getCellStyle(e):{}}getSelectedZones(){return Ie(this.gridSelection.zones)}getSelectedZone(){return Ie(this.gridSelection.anchor.zone)}getSelection(){return Ie(this.gridSelection)}getSelectedFigureId(){return this.selectedFigureId}getPosition(){return{col:this.gridSelection.anchor.cell.col,row:this.gridSelection.anchor.cell.row}}getSheetPosition(e){if(e===this.getters.getActiveSheetId())return this.getPosition();{const t=this.sheetsData[e];return t?{col:t.gridSelection.anchor.cell.col,row:t.gridSelection.anchor.cell.row}:this.getters.getNextVisibleCellPosition(e,0,0)}}getStatisticFnResults(){const e=new Set(this.gridSelection.zones.map((e=>this.getters.getCellsInZone(this.getters.getActiveSheetId(),e))).flat().filter((e=>void 0!==e)));let t=new Set,o=[];for(let n of e)t.add(n.evaluated.type),o.push(n.evaluated.value);let n={};for(let e of gv){let i;e.types.some((e=>t.has(e)))&&(i=e.compute(o)),n[e.name]=i}return n}getAggregate(){let e=0,t=0;const o=this.getters.getActiveSheetId(),n=this.gridSelection.zones.map(Fo).flat();for(const{col:i,row:r}of n){const n=this.getters.getCell(o,i,r);(null==n?void 0:n.evaluated.type)===qo.number&&(t++,e+=n.evaluated.value)}return t<2?null:Ut(e)}isSelected(e){return!!this.getters.getSelectedZones().find((t=>Ro(t,e)))}getElementsFromSelection(e){if("COL"===e&&0===this.getters.getActiveCols().size)return[];if("ROW"===e&&0===this.getters.getActiveRows().size)return[];const t=this.getters.getSelectedZones();let o=[];const n="COL"===e?"left":"top",i="COL"===e?"right":"bottom";for(const e of t){const t=Array.from({length:e[i]-e[n]+1},((t,o)=>e[n]+o));o=o.concat(t)}return[...new Set(o)].sort()}setSelectionMixin(e,t){const{anchor:o,zones:n}=this.clipSelection(this.getters.getActiveSheetId(),{anchor:e,zones:t});this.gridSelection.anchor=o,this.gridSelection.zones=function(e){return e.reverse().filter(((e,t,o)=>t===o.findIndex((t=>t.top===e.top&&t.bottom===e.bottom&&t.left===e.left&&t.right===e.right)))).reverse()}(n)}selectCell(e,t){const o=this.getters.getActiveSheetId(),n=this.getters.expandZone(o,{left:e,right:e,top:t,bottom:t});this.setSelectionMixin({zone:n,cell:{col:e,row:t}},[n])}setActiveSheet(e){const t=this.getters.getSheet(e);this.activeSheet=t}activateNextSheet(e){const t=this.getters.getSheetIds(),o=(t.findIndex((e=>e===this.activeSheet.id))+("left"===e?t.length-1:1))%t.length;this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:this.getActiveSheetId(),sheetIdTo:t[o]})}onColumnsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,n=Eo(o,"left",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Eo(i,"left",[...e.elements]);const r={cell:{col:i.left,row:i.top},zone:n};this.setSelectionMixin(r,[n])}onRowsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,n=Eo(o,"top",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Eo(i,"top",[...e.elements]);const r={cell:{col:i.left,row:i.top},zone:n};this.setSelectionMixin(r,[n])}onAddElements(e){const t=Co(this.gridSelection.anchor.zone,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity),o={cell:{col:t.left,row:t.top},zone:t};this.setSelectionMixin(o,[t])}onMoveElements(e){const t=e.elements.length;this.dispatch("ADD_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,base:e.base,quantity:t,position:"before"});const o="COL"===e.dimension,n=e.elements[0],i=e.elements[t-1],r=e.base<n,s=r&&o?t:0,a=r&&!o?t:0;this.dispatch("CUT",{target:[{left:o?n+s:0,right:o?i+s:this.getters.getNumberCols(e.sheetId)-1,top:o?0:n+a,bottom:o?this.getters.getNumberRows(e.sheetId)-1:i+a}]}),this.dispatch("PASTE",{target:[{left:o?e.base:0,right:o?e.base+t-1:this.getters.getNumberCols(e.sheetId)-1,top:o?0:e.base,bottom:o?this.getters.getNumberRows(e.sheetId)-1:e.base+t-1}]});const l=r?e.elements.map((e=>e+t)):e.elements;let c=e.base;for(const t of l){const o="COL"===e.dimension?this.getters.getColSize(e.sheetId,t):this.getters.getRowSize(e.sheetId,t);this.dispatch("RESIZE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,size:o,elements:[c]}),c+=1}this.dispatch("REMOVE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,elements:l})}isMoveElementAllowed(e){const t="COL"===e.dimension,o=e.elements[0],n=e.elements[e.elements.length-1],i=e.sheetId,r=t?this.getters.doesColumnsHaveCommonMerges:this.getters.doesRowsHaveCommonMerges;return r(i,o-1,o)||r(i,n,n+1)||r(i,e.base-1,e.base)?2:0}clipSelection(e,t){const o=this.getters.getNumberCols(e)-1,n=this.getters.getNumberRows(e)-1;return{zones:t.zones.map((e=>({left:Oe(e.left,0,o),right:Oe(e.right,0,o),top:Oe(e.top,0,n),bottom:Oe(e.bottom,0,n)}))),anchor:{cell:{col:Oe(t.anchor.cell.col,0,o),row:Oe(t.anchor.cell.row,0,n)},zone:{left:Oe(t.anchor.zone.left,0,o),right:Oe(t.anchor.zone.right,0,o),top:Oe(t.anchor.zone.top,0,n),bottom:Oe(t.anchor.zone.bottom,0,n)}}}}drawGrid(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,n=this.getSelectedZones();t.fillStyle="#f3f7fe";const i=1===n.length&&n[0].left===n[0].right&&n[0].top===n[0].bottom;t.fillStyle=i?"#f3f7fe":"#e9f0ff",t.strokeStyle=E,t.lineWidth=1.5*o,t.globalCompositeOperation="multiply";for(const e of n){const{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(e);t.fillRect(o,n,i,r),t.strokeRect(o,n,i,r)}t.globalCompositeOperation="source-over";const r=this.getters.getActiveSheetId(),{col:s,row:a}=this.getPosition();let l;t.strokeStyle=E,t.lineWidth=3*o,l=this.getters.isInMerge(r,s,a)?this.getters.getMerge(r,s,a):{top:a,bottom:a,left:s,right:s};const{x:c,y:h,width:d,height:u}=this.getters.getVisibleRect(l);d>0&&u>0&&t.strokeRect(c,h,d,u)}}pv.layers=[5],pv.getters=["getActiveSheet","getActiveSheetId","getActiveCell","getActiveCols","getActiveRows","getCurrentStyle","getSelectedZones","getSelectedZone","getStatisticFnResults","getAggregate","getSelectedFigureId","getSelection","getPosition","getSheetPosition","isSelected","getElementsFromSelection"];const fv=new po;class mv extends pg{constructor(e,t,o,n,i,r,s){super(e,t,o,n,i),this.inputHasSingleRange=s,this.ranges=[],this.focusedRangeIndex=null,this.willAddNewRange=!1,this.insertNewRange(0,r),this.activeSheet=this.getters.getActiveSheetId(),0===this.ranges.length&&(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}allowDispatch(e){if("ADD_EMPTY_RANGE"===e.type)if(this.inputHasSingleRange&&1===this.ranges.length)return 29;return 0}handleEvent(e){const t=bo(e.anchor.zone),o=this.activeSheet,n=this.getters.getActiveSheetId(),i=this.getters.getSheetName(n);this.add([n===o?t:`${Ae(i)}!${t}`])}handle(e){switch(e.type){case"UNFOCUS_SELECTION_INPUT":this.unfocus();break;case"FOCUS_RANGE":this.focus(this.getIndex(e.rangeId));break;case"CHANGE_RANGE":{const t=this.getIndex(e.rangeId);if(null!==t&&this.focusedRangeIndex!==t&&this.focus(t),null!==t){const o=e.value.split(",").map((e=>e.trim()));this.setRange(t,o)}break}case"ADD_EMPTY_RANGE":this.insertNewRange(this.ranges.length,[""]),this.focusLast();break;case"REMOVE_RANGE":const t=this.getIndex(e.rangeId);null!==t&&this.removeRange(t);break;case"STOP_SELECTION_INPUT":this.willAddNewRange=!1;break;case"PREPARE_SELECTION_INPUT_EXPANSION":{const e=this.focusedRangeIndex;null===e||this.inputHasSingleRange||(this.willAddNewRange=""!==this.ranges[e].xc.trim());break}case"ACTIVATE_SHEET":if(e.sheetIdFrom!==e.sheetIdTo){const{col:t,row:o}=this.getters.getNextVisibleCellPosition(e.sheetIdTo,0,0),n=this.getters.expandZone(e.sheetIdTo,Lo({col:t,row:o}));this.selection.resetAnchor(this,{cell:{col:t,row:o},zone:n})}}}unsubscribe(){this.unfocus()}getSelectionInputValue(){return this.cleanInputs(this.ranges.map((e=>e.xc?e.xc:"")))}getSelectionInputHighlights(){return this.ranges.map((e=>this.inputToHighlights(e))).flat()}focus(e){this.focusedRangeIndex=e}focusLast(){this.focus(this.ranges.length-1)}unfocus(){this.focusedRangeIndex=null}add(e){null!==this.focusedRangeIndex&&0!==e.length&&(this.willAddNewRange?(this.insertNewRange(this.ranges.length,e),this.focusLast(),this.willAddNewRange=!1):this.setRange(this.focusedRangeIndex,e))}setContent(e,t){this.ranges[e]={...this.ranges[e],id:fv.uuidv4(),xc:t}}insertNewRange(e,t){this.ranges.splice(e,0,...t.map(((e,t)=>({xc:e,id:(this.ranges.length+t+1).toString(),color:(rt=++rt%nt.length,nt[rt])}))))}setRange(e,t){const[,...o]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,o),o.length&&this.focus(e+o.length)}removeRange(e){this.ranges.splice(e,1),null!==this.focusedRangeIndex&&this.focusLast()}inputToHighlights({xc:e,color:t}){const o=this.cleanInputs([e]).filter((e=>this.getters.isRangeValid(e))).filter((e=>this.shouldBeHighlighted(this.activeSheet,e)));return o.map((e=>{const{sheetName:o}=Rt(e);return{zone:this.getters.getRangeFromSheetXC(this.activeSheet,e).zone,sheetId:o&&this.getters.getSheetIdByName(o)||this.activeSheet,color:t}}))}cleanInputs(e){return e.map((e=>e.split(","))).flat().map((e=>e.trim())).filter((e=>""!==e))}shouldBeHighlighted(e,t){const{sheetName:o}=Rt(t),n=this.getters.getSheetIdByName(o),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(n===i||void 0===n&&i===e)}getIndex(e){const t=this.ranges.findIndex((t=>t.id===e));return t>=0?t:null}}mv.layers=[1],mv.getters=[];class vv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.state=t,this.config=n,this.inputs={},this.focusedInputId=null}get currentInput(){return this.focusedInputId?this.inputs[this.focusedInputId]:null}allowDispatch(e){var t,o;if("FOCUS_RANGE"===e.type){const n=null===(t=this.currentInput)||void 0===t?void 0:t.getIndex(e.rangeId);if(this.focusedInputId===e.id&&(null===(o=this.currentInput)||void 0===o?void 0:o.focusedRangeIndex)===n)return 28}return this.currentInput?this.currentInput.allowDispatch(e):0}handle(e){var t;switch(e.type){case"ENABLE_NEW_SELECTION_INPUT":this.initInput(e.id,e.initialRanges||[],e.hasSingleRange);break;case"DISABLE_SELECTION_INPUT":this.focusedInputId===e.id&&this.unfocus(),delete this.inputs[e.id];break;case"UNFOCUS_SELECTION_INPUT":this.unfocus();break;case"ADD_EMPTY_RANGE":case"REMOVE_RANGE":case"FOCUS_RANGE":case"CHANGE_RANGE":if(e.id!==this.focusedInputId){const t=this.inputs[e.id];this.selection.capture(t,{cell:{col:0,row:0},zone:Lo({col:0,row:0})},{handleEvent:t.handleEvent.bind(t)}),this.focusedInputId=e.id}}null===(t=this.currentInput)||void 0===t||t.handle(e)}unsubscribe(){this.unfocus()}getSelectionInput(e){return this.inputs[e]?this.inputs[e].ranges.map(((t,o)=>Object.assign({},t,{color:this.focusedInputId===e&&null!==this.inputs[e].focusedRangeIndex&&this.isRangeValid(t.xc)?t.color:null,isFocused:this.focusedInputId===e&&this.inputs[e].focusedRangeIndex===o}))):[]}isRangeValid(e){if(!e)return!1;const{xc:t,sheetName:o}=Rt(e);return null!==t.match(Ct)&&(!o||void 0!==this.getters.getSheetIdByName(o))}getSelectionInputValue(e){return this.inputs[e].getSelectionInputValue()}getSelectionInputHighlights(){return this.focusedInputId?this.inputs[this.focusedInputId].getSelectionInputHighlights():[]}initInput(e,t,o=!1){if(this.inputs[e]=new mv(this.getters,this.state,this.dispatch,this.config,this.selection,t,o),0===t.length){const t=this.inputs[e],o={zone:Lo({col:0,row:0}),cell:{col:0,row:0}};this.selection.capture(t,o,{handleEvent:t.handleEvent.bind(t)}),this.focusedInputId=e}}unfocus(){this.selection.release(this.currentInput),this.focusedInputId=null}}vv.layers=[1],vv.getters=["getSelectionInput","getSelectionInputValue","isRangeValid","getSelectionInputHighlights"];class bv{constructor(){this.subscriptions={}}on(e,t,o){if(!o)throw new Error("Missing callback");this.subscriptions[e]||(this.subscriptions[e]=[]),this.subscriptions[e].push({owner:t,callback:o})}trigger(e,t){const o=this.subscriptions[e]||[];for(let e=0,n=o.length;e<n;e++){const n=o[e];n.callback.call(n.owner,t)}}off(e,t){const o=this.subscriptions[e];o&&(this.subscriptions[e]=o.filter((e=>e.owner!==t)))}clear(){this.subscriptions={}}}function Sv(e,t){return{...e,definition:gr(e.definition,t)}}function Cv(e,t){if(e.sheetId!==t.sheetId)return e;if(("FREEZE_COLUMNS"===e.type?"COL":"ROW")!==t.dimension)return e;let o=e.quantity;if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));for(let t of e)o>t&&o--}if("ADD_COLUMNS_ROWS"===t.type){o=o>("before"===t.position?t.base-1:t.base)?o+t.quantity:o}return o>0?{...e,quantity:o}:void 0}ki.addTransformation("ADD_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],Sv),ki.addTransformation("REMOVE_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],Sv),ki.addTransformation("DELETE_SHEET",["MOVE_RANGES"],(function(e,t){const o=t.sheetId;if(e.targetSheetId===o||e.sheetId===o)return;return e})),ki.addTransformation("DELETE_FIGURE",["UPDATE_FIGURE","UPDATE_CHART"],(function(e,t){if(e.id===t.id)return;return e})),ki.addTransformation("CREATE_SHEET",["CREATE_SHEET"],(function(e,t){var o;if(e.name===t.name)return{...e,name:(null===(o=e.name)||void 0===o?void 0:o.match(/\d+/))?e.name.replace(/\d+/,(e=>(parseInt(e)+1).toString())):`${e.name}~`,position:e.position+1};return e})),ki.addTransformation("ADD_MERGE",["ADD_MERGE","REMOVE_MERGE","CREATE_FILTER_TABLE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;const o=[];for(const n of e.target)for(const e of t.target)Io(n,e)||o.push({...n});if(o.length)return{...e,target:o};return})),ki.addTransformation("ADD_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],Cv),ki.addTransformation("REMOVE_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],Cv),ki.addTransformation("CREATE_FILTER_TABLE",["CREATE_FILTER_TABLE","ADD_MERGE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;for(const o of e.target)for(const e of t.target)if(Io(e,o))return;return e}));const Ev=[{match:function(e){return"sheetId"in e},fn:xv},{match:function(e){return"target"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const n=[];for(const o of e.target){const e=Bi(o,t);e&&n.push(e)}if(!n.length)return"IGNORE_COMMAND";return{...e,target:n}}},{match:function(e){return"col"in e&&"row"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type)return function(e,t){const o="COL"===t.dimension?"col":"row";let n=e[o];if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));if(e.includes(n))return"IGNORE_COMMAND";for(let t of e)n>=t&&n--}"ADD_COLUMNS_ROWS"===t.type&&(n>t.base||n===t.base&&"before"===t.position)&&(n+=t.quantity);return{...e,[o]:n}}(e,t);if("ADD_MERGE"===t.type)return function(e,t){for(const o of t.target){if(!(e.col===o.left&&e.row===o.top)&&To(e.col,e.row,o))return"IGNORE_COMMAND"}return e}(e,t);return"SKIP_TRANSFORMATION"}},{match:function(e){return"dimension"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type){if(t.dimension!==e.dimension)return e;const o="ADD_COLUMNS_ROWS"===e.type,n=o?"base":"elements";let i=o?[e[n]]:e[n];if("REMOVE_COLUMNS_ROWS"===t.type&&(i=i.map((e=>{if(t.elements.includes(e))return;const o=t.elements.sort(((e,t)=>t-e));for(let t of o)e>t&&e--;return e})).filter(Ze)),"ADD_COLUMNS_ROWS"===t.type){const e="before"===t.position?t.base-1:t.base;i=i.map((o=>o>e?o+t.quantity:o))}if(i.length){let t=i;return o&&(t=i[0]),{...e,[n]:t}}return"IGNORE_COMMAND"}return"SKIP_TRANSFORMATION"}},{match:function(e){return"ranges"in e},fn:function(e,t){const o=[],n="DELETE_SHEET"===t.type&&t.sheetId;for(const i of e.ranges)if(i._sheetId!==t.sheetId)o.push({...i,_zone:i._zone});else{const e=Bi(i._zone,t);e&&n!==i._sheetId&&o.push({...i,_zone:e})}if(!o.length)return"IGNORE_COMMAND";return{...e,ranges:o}}}];function wv(e,t){const o=ki.getTransformation(e.type,t.type);return o?o(e,t):function(e,t){for(const{match:o,fn:n}of Ev)if(o(e)){const o=n(e,t);if("SKIP_TRANSFORMATION"===o)continue;if("IGNORE_COMMAND"===o)return;e=o}return e}(e,t)}function yv(e,t){let o=[...e];for(const e of t)o=o.map((t=>wv(t,e))).filter(Ze);return o}function xv(e,t){const o="DELETE_SHEET"===t.type&&t.sheetId;return e.sheetId===o?"IGNORE_COMMAND":"CREATE_SHEET"===e.type||"CREATE_SHEET"===t.type||e.sheetId!==t.sheetId?e:"SKIP_TRANSFORMATION"}class Rv{constructor(e,t,o,n){this._commands=[],this._changes=[],this.id=e,this.clientId=t,this._commands=[...o],this._changes=n?[...n]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}}class Iv extends Error{}class Tv extends bv{constructor(e,t,o=Y){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=o,this.clients={},this.clientId="local",this.pendingMessages=[],this.waitingAck=!1,this.waitingUndoRedoAck=!1,this.isReplayingInitialRevisions=!1,this.processedRevisions=new Set,this.uuidGenerator=new po,this.debouncedMove=function(e,t,o){let n;return function(){const i=this,r=arguments,s=o&&!n;clearTimeout(n),n=setTimeout((function(){n=null,o||e.apply(i,r)}),t),s&&e.apply(i,r)}}(this._move.bind(this),200)}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t){if(!e.length||!t.length||!this.canApplyOptimisticUpdate())return;const o=new Rv(this.uuidGenerator.uuidv4(),this.clientId,e,t);this.revisions.append(o.id,o),this.trigger("new-local-state-update",{id:o.id}),this.sendUpdateMessage({type:"REMOTE_REVISION",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:o.id,clientId:o.clientId,commands:o.commands})}undo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_UNDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),undoneRevisionId:e})}redo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_REDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),redoneRevisionId:e})}move(e){this.debouncedMove(e)}join(e){e?(this.clients[e.id]=e,this.clientId=e.id):(this.clients.local={id:"local",name:"local"},this.clientId="local"),this.transportService.onNewMessage(this.clientId,this.onMessageReceived.bind(this))}loadInitialMessages(e){this.isReplayingInitialRevisions=!0,this.on("unexpected-revision-id",this,(({revisionId:e})=>{throw new Error(`The spreadsheet could not be loaded. Revision ${e} is corrupted.`)}));for(const t of e)this.onMessageReceived(t);this.off("unexpected-revision-id",this),this.isReplayingInitialRevisions=!1}leave(){delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.transportService.sendMessage({type:"CLIENT_LEFT",clientId:this.clientId,version:1})}snapshot(e){const t=this.uuidGenerator.uuidv4();this.transportService.sendMessage({type:"SNAPSHOT",nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getClient(){const e=this.clients[this.clientId];if(!e)throw new Iv("The client left the session");return e}getConnectedClients(){return new Set(Object.values(this.clients).filter(Ze))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return 0===this.pendingMessages.length}_move(e){var t;if(!this.clients[this.clientId])return;const o=null===(t=this.clients[this.clientId])||void 0===t?void 0:t.position;if((null==o?void 0:o.col)===e.col&&o.row===e.row&&o.sheetId===e.sheetId)return;const n=o?"CLIENT_MOVED":"CLIENT_JOINED",i=this.getClient();this.clients[this.clientId]={...i,position:e},this.transportService.sendMessage({type:n,version:1,client:{...i,position:e}})}onMessageReceived(e){if(!this.isAlreadyProcessed(e)){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":if(e.serverRevisionId!==this.serverRevisionId)return void this.trigger("unexpected-revision-id",{revisionId:e.serverRevisionId});const{clientId:t,commands:o}=e,n=new Rv(e.nextRevisionId,t,o);if(n.clientId!==this.clientId){this.revisions.insert(n.id,n,e.serverRevisionId);const t=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.commands)).flat();this.trigger("remote-revision-received",{commands:yv(o,t)})}break;case"SNAPSHOT_CREATED":{const t=new Rv(e.nextRevisionId,"server",[]);this.revisions.insert(t.id,t,e.serverRevisionId),this.dropPendingHistoryMessages(),this.trigger("snapshot");break}}this.acknowledge(e),this.trigger("collaborative-event-received")}}onClientMoved(e){e.client.id!==this.clientId&&(this.clients[e.client.id]=e.client)}onClientJoined(e){if(e.client.id!==this.clientId){this.clients[e.client.id]=e.client;const t=this.clients[this.clientId];if(t){const{position:e}=t;e&&this.transportService.sendMessage({type:"CLIENT_MOVED",version:1,client:{...t,position:e}})}}}onClientLeft(e){e.clientId!==this.clientId&&delete this.clients[e.clientId]}sendUpdateMessage(e){this.pendingMessages.push(e),this.waitingAck||(this.waitingAck=!0,this.sendPendingMessage())}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if("REMOTE_REVISION"===e.type){const t=this.revisions.get(e.nextRevisionId);if(0===t.commands.length){this.revisions.drop(t.id);const e=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.nextRevisionId));return this.trigger("pending-revisions-dropped",{revisionIds:e}),this.waitingAck=!1,this.waitingUndoRedoAck=!1,void(this.pendingMessages=[])}e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.\n ${JSON.stringify(e)}`);this.transportService.sendMessage({...e,serverRevisionId:this.serverRevisionId})}}acknowledge(e){switch("REVISION_UNDONE"!==e.type&&"REVISION_REDONE"!==e.type||(this.waitingUndoRedoAck=!1),e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":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.sendPendingMessage()}}isAlreadyProcessed(e){if("CLIENT_MOVED"===e.type&&e.client.id===this.clientId)return!0;switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":return this.processedRevisions.has(e.nextRevisionId);default:return!1}}dropPendingHistoryMessages(){this.waitingUndoRedoAck=!1,this.pendingMessages=this.pendingMessages.filter((({type:e})=>"REVISION_REDONE"!==e&&"REVISION_UNDONE"!==e))}}const Av=["#ff851b","#0074d9","#7fdbff","#b10dc9","#39cccc","#f012be","#3d9970","#111111","#ff4136","#aaaaaa","#85144b","#001f3f"];class Ov extends pg{constructor(){super(...arguments),this.availableColors=new Set(Av),this.colors={}}isPositionValid(e){return e.row<this.getters.getNumberRows(e.sheetId)&&e.col<this.getters.getNumberCols(e.sheetId)}chooseNewColor(){0===this.availableColors.size&&(this.availableColors=new Set(Av));const e=(t=[...this.availableColors.values()])[Math.floor(Math.random()*t.length)];var t;return this.availableColors.delete(e),e}getClientsToDisplay(){try{this.getters.getClient()}catch(e){if(e instanceof Iv)return[];throw e}const e=this.getters.getActiveSheetId(),t=[];for(const o of this.getters.getConnectedClients())if(o.id!==this.getters.getClient().id&&o.position&&o.position.sheetId===e&&this.isPositionValid(o.position)){const e=o.position;this.colors[o.id]||(this.colors[o.id]=this.chooseNewColor());const n=this.colors[o.id];t.push({...o,position:e,color:n})}return t}drawGrid(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,n=this.getters.getActiveSheetId();for(const e of this.getClientsToDisplay()){const{row:i,col:r}=e.position,s=this.getters.expandZone(n,{top:i,bottom:i,left:r,right:r}),{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(s);if(c<=0||h<=0)continue;const d=e.color,u=`${d}10`;t.fillStyle=u,t.lineWidth=4*o,t.strokeStyle=d,t.globalCompositeOperation="multiply",t.fillRect(a,l,c,h),t.globalCompositeOperation="source-over",t.strokeRect(a,l,c,h),t.font=`bold ${W+1}px ${G}`}}}Ov.getters=["getClientsToDisplay"],Ov.layers=[5];class Mv{constructor(e,t,o,n,i,r){this.getters=e,this.sheetId=t,this.boundaries=o,this.width=n.width,this.height=n.height,this.offsetScrollbarX=r.x,this.offsetScrollbarY=r.y,this.canScrollVertically=i.canScrollVertically,this.canScrollHorizontally=i.canScrollHorizontally,this.offsetCorrectionX=this.getters.getColDimensions(this.sheetId,this.boundaries.left).start,this.offsetCorrectionY=this.getters.getRowDimensions(this.sheetId,this.boundaries.top).start,this.adjustViewportOffsetX(),this.adjustViewportOffsetY()}getMaxSize(){const e=this.getters.findLastVisibleColRowIndex(this.sheetId,"COL",{first:this.boundaries.left,last:this.boundaries.right}),t=this.getters.findLastVisibleColRowIndex(this.sheetId,"ROW",{first:this.boundaries.top,last:this.boundaries.bottom}),{end:o,size:n}=this.getters.getColDimensions(this.sheetId,e),{end:i,size:r}=this.getters.getRowDimensions(this.sheetId,t),s=this.searchHeaderIndex("COL",o-this.width,0),a=this.getters.getColSize(this.sheetId,s),l=this.searchHeaderIndex("ROW",i-this.height,0),c=this.getters.getRowSize(this.sheetId,l);return{width:o-this.offsetCorrectionX+(this.canScrollHorizontally?Math.max(N,Math.min(a,this.width-n)):0),height:i-this.offsetCorrectionY+(this.canScrollVertically?Math.max(_+5,Math.min(c,this.height-r)):0)}}getColIndex(e,t=!1){return e<this.offsetCorrectionX||e>this.offsetCorrectionX+this.width?-1:this.searchHeaderIndex("COL",e-this.offsetCorrectionX,this.left,t)}getRowIndex(e,t=!1){return e<this.offsetCorrectionY||e>this.offsetCorrectionY+this.height?-1:this.searchHeaderIndex("ROW",e-this.offsetCorrectionY,this.top,t)}adjustPosition(e){const t=this.sheetId;e||(e=this.getters.getSheetPosition(t));const o=this.getters.getMainCellPosition(t,e.col,e.row),{col:n,row:i}=this.getters.getNextVisibleCellPosition(t,o.col,o.row);To(n,this.boundaries.top,this.boundaries)&&this.adjustPositionX(n),To(this.boundaries.left,i,this.boundaries)&&this.adjustPositionY(i)}adjustPositionX(e){const t=this.sheetId,{start:o,end:n}=this.getters.getColDimensions(t,e);for(;n>this.offsetX+this.offsetCorrectionX+this.width&&this.offsetX+this.offsetCorrectionX<o;)this.offsetX=this.getters.getColDimensions(t,this.left).end-this.offsetCorrectionX,this.offsetScrollbarX=this.offsetX,this.adjustViewportZoneX();for(;e<this.left;){let e;for(e=this.left;e>=0&&this.getters.isColHidden(t,e);e--);this.offsetX=this.getters.getColDimensions(t,e-1).start-this.offsetCorrectionX,this.offsetScrollbarX=this.offsetX,this.adjustViewportZoneX()}}adjustPositionY(e){const t=this.sheetId;for(;this.getters.getRowDimensions(t,e).end>this.offsetY+this.height+this.offsetCorrectionY&&this.offsetY+this.offsetCorrectionY<this.getters.getRowDimensions(t,e).start;)this.offsetY=this.getters.getRowDimensions(t,this.top).end-this.offsetCorrectionY,this.offsetScrollbarY=this.offsetY,this.adjustViewportZoneY();for(;e<this.top;){let e;for(e=this.top;e>=0&&this.getters.isRowHidden(t,e);e--);this.offsetY=this.getters.getRowDimensions(t,e-1).start-this.offsetCorrectionY,this.offsetScrollbarY=this.offsetY,this.adjustViewportZoneY()}}setViewportOffset(e,t){this.setViewportOffsetX(e),this.setViewportOffsetY(t)}adjustViewportZone(){this.adjustViewportZoneX(),this.adjustViewportZoneY()}getRect(e){const t=xo(e,this.zone);if(t){return{x:this.getters.getColRowOffset("COL",this.zone.left,t.left)+this.offsetCorrectionX,y:this.getters.getColRowOffset("ROW",this.zone.top,t.top)+this.offsetCorrectionY,width:Math.min(this.getters.getColRowOffset("COL",t.left,t.right+1),this.width),height:Math.min(this.getters.getColRowOffset("ROW",t.top,t.bottom+1),this.height)}}}isVisible(e,t){return t<=this.bottom&&t>=this.top&&e>=this.left&&e<=this.right&&!this.getters.isColHidden(this.sheetId,e)&&!this.getters.isRowHidden(this.sheetId,t)}searchHeaderIndex(e,t,o=0,n=!1){let i=0;const r=this.sheetId,s=this.getters.getNumberHeaders(r,e);for(let a=o;a<=s-1;a++){const o=n||"COL"!==e?a<this.top&&a>this.bottom:a<this.left&&a>this.right;if(!this.getters.isHeaderHidden(r,e,a)&&!o&&(i+="COL"===e?this.getters.getColSize(r,a):this.getters.getRowSize(r,a),i>t))return a}return-1}get zone(){return{left:this.left,right:this.right,top:this.top,bottom:this.bottom}}setViewportOffsetX(e){this.canScrollHorizontally&&(this.offsetScrollbarX=e,this.adjustViewportZoneX())}setViewportOffsetY(e){this.canScrollVertically&&(this.offsetScrollbarY=e,this.adjustViewportZoneY())}adjustViewportOffsetX(){if(this.canScrollHorizontally){const{width:e}=this.getMaxSize();this.width+this.offsetScrollbarX>e&&(this.offsetScrollbarX=Math.max(0,e-this.width))}this.left=this.getColIndex(this.offsetScrollbarX,!0),this.right=this.getColIndex(this.offsetScrollbarX+this.width,!0),-1===this.right&&(this.right=this.boundaries.right),this.adjustViewportZoneX()}adjustViewportOffsetY(){if(this.canScrollVertically){const{height:e}=this.getMaxSize();this.height+this.offsetScrollbarY>e&&(this.offsetScrollbarY=Math.max(0,e-this.height))}this.top=this.getRowIndex(this.offsetScrollbarY,!0),this.bottom=this.getRowIndex(this.offsetScrollbarY+this.width,!0),-1===this.bottom&&(this.bottom=this.boundaries.bottom),this.adjustViewportZoneY()}adjustViewportZoneX(){const e=this.sheetId;this.left=this.searchHeaderIndex("COL",this.offsetScrollbarX,this.boundaries.left),this.right=Math.min(this.boundaries.right,this.searchHeaderIndex("COL",this.width,this.left)),-1===this.right&&(this.right=this.getters.getNumberCols(e)-1),this.offsetX=this.getters.getColDimensions(e,this.left).start-this.getters.getColDimensions(e,this.boundaries.left).start}adjustViewportZoneY(){const e=this.sheetId;this.top=this.searchHeaderIndex("ROW",this.offsetScrollbarY,this.boundaries.top),this.bottom=Math.min(this.boundaries.bottom,this.searchHeaderIndex("ROW",this.height,this.top)),-1===this.bottom&&(this.bottom=this.getters.getNumberRows(e)-1),this.offsetY=this.getters.getRowDimensions(e,this.top).start-this.getters.getRowDimensions(e,this.boundaries.top).start}}class Nv extends pg{constructor(){super(...arguments),this.viewports={},this.sheetViewWidth=1e3,this.sheetViewHeight=1e3,this.gridOffsetX=0,this.gridOffsetY=0,this.sheetsWithDirtyViewports=new Set}allowDispatch(e){switch(e.type){case"SET_VIEWPORT_OFFSET":return this.checkScrollingDirection(e);case"RESIZE_SHEETVIEW":return this.chainValidations(this.checkValuesAreDifferent,this.checkPositiveDimension)(e);default:return 0}}handleEvent(e){switch(e.type){case"HeadersSelected":case"AlterZoneCorner":break;case"ZonesSelected":let{col:t,row:o}=ko(e.previousAnchor.zone,e.anchor.zone);if("updateAnchor"===e.mode){const n=e.previousAnchor.zone,i=e.anchor.zone,{top:r,bottom:s,left:a,right:l}=this.getters.getActiveMainViewport();n.left===i.left&&n.right===i.right&&(t=a>t||t>l?a:t),n.top===i.top&&n.bottom===i.bottom&&(o=r>o||o>s?r:o)}const n=this.getters.getActiveSheetId();t=Math.min(t,this.getters.getNumberCols(n)-1),o=Math.min(o,this.getters.getNumberRows(n)-1),this.refreshViewport(this.getters.getActiveSheetId(),{col:t,row:o})}}handle(e){var t;switch(this.cleanViewports(),e.type){case"START":this.selection.observe(this,{handleEvent:this.handleEvent.bind(this)}),this.resetViewports(this.getters.getActiveSheetId());break;case"UNDO":case"REDO":this.resetSheetViews();break;case"RESIZE_SHEETVIEW":this.resizeSheetView(e.height,e.width,e.gridOffsetX,e.gridOffsetY);break;case"SET_VIEWPORT_OFFSET":this.setSheetViewOffset(e.offsetX,e.offsetY);break;case"SHIFT_VIEWPORT_DOWN":const{top:o}=this.getActiveMainViewport(),n=this.getters.getActiveSheetId(),i=this.clipOffsetY(this.getters.getRowDimensions(n,o).start+this.sheetViewHeight);this.shiftVertically(i);break;case"SHIFT_VIEWPORT_UP":{const{top:e}=this.getActiveMainViewport(),t=this.getters.getActiveSheetId(),o=this.clipOffsetY(this.getters.getRowDimensions(t,e).end-this.sheetViewHeight);this.shiftVertically(o);break}case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"UPDATE_FILTER":this.resetViewports(e.sheetId);break;case"UPDATE_CELL":("content"in e||"format"in e||void 0!==(null===(t=e.style)||void 0===t?void 0:t.fontSize))&&this.sheetsWithDirtyViewports.add(e.sheetId);break;case"ACTIVATE_SHEET":this.setViewports(),this.refreshViewport(e.sheetIdTo);break;case"UNFREEZE_ROWS":case"UNFREEZE_COLUMNS":case"FREEZE_COLUMNS":case"FREEZE_ROWS":case"UNFREEZE_COLUMNS_ROWS":this.resetViewports(this.getters.getActiveSheetId());break;case"START_EDITION":const{col:r,row:s}=this.getters.getPosition();this.refreshViewport(this.getters.getActiveSheetId(),{col:r,row:s})}}finalize(){for(const e of this.sheetsWithDirtyViewports)this.resetViewports(e);this.sheetsWithDirtyViewports=new Set,this.setViewports()}setViewports(){var e;const t=this.getters.getSheetIds();for(const o of t)(null===(e=this.viewports[o])||void 0===e?void 0:e.bottomRight)||this.resetViewports(o)}getColIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getColIndex(e))))}getRowIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getRowIndex(e))))}getSheetViewDimensionWithHeaders(){return{width:this.sheetViewWidth+this.gridOffsetX,height:this.sheetViewHeight+this.gridOffsetY}}getSheetViewDimension(){return{width:this.sheetViewWidth,height:this.sheetViewHeight}}getActiveMainViewport(){const e=this.getters.getActiveSheetId();return this.getMainViewport(e)}getActiveSheetScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetX,scrollY:t.offsetY}}getActiveSheetDOMScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetScrollbarX,scrollY:t.offsetScrollbarY}}getSheetViewVisibleCols(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>Fe(e.left,e.right+1))).flat())].filter((t=>!this.getters.isHeaderHidden(e,"COL",t)))}getSheetViewVisibleRows(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>Fe(e.top,e.bottom+1))).flat())].filter((t=>!this.getters.isHeaderHidden(e,"ROW",t)))}getMainViewportRect(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e),{xSplit:o,ySplit:n}=this.getters.getPaneDivisions(e);let{width:i,height:r}=t.getMaxSize();return{x:this.getters.getColDimensions(e,o).start,y:this.getters.getRowDimensions(e,n).start,width:i,height:r}}getMaximumSheetOffset(){const e=this.getters.getActiveSheetId(),{width:t,height:o}=this.getMainViewportRect(),n=this.getMainInternalViewport(e);return{maxOffsetX:Math.max(0,t-n.width+1),maxOffsetY:Math.max(0,o-n.height+1)}}getColRowOffsetInViewport(e,t,o){const n=this.getters.getActiveSheetId(),i=this.getters.getSheetViewVisibleCols(),r=this.getters.getSheetViewVisibleRows();if(o<t)return-this.getColRowOffsetInViewport(e,o,t);let s=0;const a="COL"===e?i:r;for(let i=t;i<o;i++)a.includes(i)&&(s+="COL"===e?this.getters.getColSize(n,i):this.getters.getRowSize(n,i));return s}isVisibleInViewport(e,t,o){return this.getSubViewports(e).some((e=>e.isVisible(t,o)))}getEdgeScrollCol(e,t,o){let n=!1,i=0,r=0;const{xSplit:s}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{width:a}=this.getSheetViewDimension(),{x:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollX;return e>a?(n=!0,r=Ft(e-a),i=1):e<l&&o>=l&&c>0?(n=!0,r=Ft(l-e),i=-1):s&&t<l&&e>l&&(n=!0,r=Ft(e),i="reset"),{canEdgeScroll:n,direction:i,delay:r}}getEdgeScrollRow(e,t,o){let n=!1,i=0,r=0;const{ySplit:s}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{height:a}=this.getSheetViewDimension(),{y:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollY;return e>a?(n=!0,r=Ft(e-a),i=1):e<l&&o>=l&&c>0?(n=!0,r=Ft(l-e),i=-1):s&&t<l&&e>l&&(n=!0,r=Ft(e),i="reset"),{canEdgeScroll:n,direction:i,delay:r}}getVisibleRect(e){const t=this.getters.getActiveSheetId(),o=this.getSubViewports(t).map((t=>t.getRect(e))).filter(Ze);if(0===o.length)return{x:0,y:0,width:0,height:0};const n=Math.min(...o.map((e=>e.x))),i=Math.min(...o.map((e=>e.y))),r=Math.max(...o.map((e=>e.x+e.width)))-n,s=Math.max(...o.map((e=>e.y+e.height)))-i;return{x:n+this.gridOffsetX,y:i+this.gridOffsetY,width:r,height:s}}getMainViewportCoordinates(){const e=this.getters.getActiveSheetId(),{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e);return{x:this.getters.getColDimensions(e,t).start,y:this.getters.getRowDimensions(e,o).start}}ensureMainViewportExist(e){this.viewports[e]||this.resetViewports(e)}getSubViewports(e){return this.ensureMainViewportExist(e),Object.values(this.viewports[e]).filter(Ze)}checkPositiveDimension(e){return e.width<0||e.height<0?67:0}checkValuesAreDifferent(e){const{height:t,width:o}=this.getSheetViewDimension();return e.gridOffsetX===this.gridOffsetX&&e.gridOffsetY===this.gridOffsetY&&e.width===o&&e.height===t?75:0}checkScrollingDirection({offsetX:e,offsetY:t}){const o=this.getMainInternalViewport(this.getters.getActiveSheetId());return!o.canScrollHorizontally&&e>0||!o.canScrollVertically&&t>0?68:0}getMainViewport(e){const t=this.getMainInternalViewport(e);return{top:t.top,left:t.left,bottom:t.bottom,right:t.right}}getMainInternalViewport(e){return this.ensureMainViewportExist(e),this.viewports[e].bottomRight}cleanViewports(){const e=this.getters.getSheetIds();for(let t of Object.keys(this.viewports))e.includes(t)||delete this.viewports[t]}resetSheetViews(){for(let e of Object.keys(this.viewports)){const t=this.getters.getSheetPosition(e);this.resetViewports(e);const o=this.getSubViewports(e);Object.values(o).forEach((e=>{e.adjustPosition(t)}))}}resizeSheetView(e,t,o=0,n=0){this.sheetViewHeight=e,this.sheetViewWidth=t,this.gridOffsetX=o,this.gridOffsetY=n,this.recomputeViewports()}recomputeViewports(){for(let e of Object.keys(this.viewports))this.resetViewports(e)}setSheetViewOffset(e,t){const o=this.getters.getActiveSheetId(),{maxOffsetX:n,maxOffsetY:i}=this.getMaximumSheetOffset();Object.values(this.getSubViewports(o)).forEach((o=>o.setViewportOffset(Oe(e,0,n),Oe(t,0,i))))}clipOffsetY(e){const{height:t}=this.getMainViewportRect(),o=t-this.sheetViewHeight;return e=Math.min(e,o),e=Math.max(e,0)}getViewportOffset(e){var t,o;return{x:(null===(t=this.viewports[e])||void 0===t?void 0:t.bottomRight.offsetScrollbarX)||0,y:(null===(o=this.viewports[e])||void 0===o?void 0:o.bottomRight.offsetScrollbarY)||0}}resetViewports(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),n=this.getters.getNumberCols(e),i=this.getters.getNumberRows(e),r=this.getters.getColRowOffset("COL",0,t,e),s=this.getters.getColRowOffset("ROW",0,o,e),{xRatio:a,yRatio:l}=this.getFrozenSheetViewRatio(e),c=a<1,h=l<1,d=this.getViewportOffset(e),u={topLeft:o&&t&&new Mv(this.getters,e,{left:0,right:t-1,top:0,bottom:o-1},{width:r,height:s},{canScrollHorizontally:!1,canScrollVertically:!1},{x:0,y:0})||void 0,topRight:o&&new Mv(this.getters,e,{left:t,right:n-1,top:0,bottom:o-1},{width:this.sheetViewWidth-r,height:s},{canScrollHorizontally:c,canScrollVertically:!1},{x:c?d.x:0,y:0})||void 0,bottomLeft:t&&new Mv(this.getters,e,{left:0,right:t-1,top:o,bottom:i-1},{width:r,height:this.sheetViewHeight-s},{canScrollHorizontally:!1,canScrollVertically:h},{x:0,y:h?d.y:0})||void 0,bottomRight:new Mv(this.getters,e,{left:t,right:n-1,top:o,bottom:i-1},{width:this.sheetViewWidth-r,height:this.sheetViewHeight-s},{canScrollHorizontally:c,canScrollVertically:h},{x:c?d.x:0,y:h?d.y:0})};this.viewports[e]=u}refreshViewport(e,t){Object.values(this.getSubViewports(e)).forEach((e=>{e.adjustViewportZone(),e.adjustPosition(t)}))}shiftVertically(e){const{top:t}=this.getActiveMainViewport(),{scrollX:o}=this.getActiveSheetScrollInfo();this.setSheetViewOffset(o,e);const{anchor:n}=this.getters.getSelection(),i=this.getActiveMainViewport().top-t;this.selection.selectCell(n.cell.col,n.cell.row+i)}getVisibleFigures(){const e=this.getters.getActiveSheetId(),t=[],o=this.getters.getFigures(e),{scrollX:n,scrollY:i}=this.getActiveSheetScrollInfo(),{x:r,y:s}=this.getters.getMainViewportCoordinates(),{width:a,height:l}=this.getters.getSheetViewDimensionWithHeaders();for(const e of o)e.x>=r&&(e.x+e.width<=r+n||e.x>=a+n+r)||e.y>=s&&(e.y+e.height<=s+i||e.y>=l+i+s)||t.push(e);return t}getFrozenSheetViewRatio(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),n=this.getters.getColDimensions(e,t).start,i=this.getters.getRowDimensions(e,o).start;return{xRatio:n/(this.sheetViewWidth+this.gridOffsetX),yRatio:i/(this.sheetViewHeight+this.gridOffsetY)}}}Nv.getters=["getColIndex","getRowIndex","getActiveMainViewport","getSheetViewDimension","getSheetViewDimensionWithHeaders","getMainViewportRect","isVisibleInViewport","getEdgeScrollCol","getEdgeScrollRow","getVisibleFigures","getVisibleRect","getColRowOffsetInViewport","getMainViewportCoordinates","getActiveSheetScrollInfo","getActiveSheetDOMScrollInfo","getSheetViewVisibleCols","getSheetViewVisibleRows","getFrozenSheetViewRatio"];class _v extends pg{allowDispatch(e){if("SORT_CELLS"===e.type){if(!To(e.col,e.row,e.zone))throw new Error(r("The anchor must be part of the provided zone"));return this.checkValidations(e,this.checkMerge,this.checkMergeSizes)}return 0}handle(e){if("SORT_CELLS"===e.type)this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{})}checkMerge({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return 0;for(let o=t.top;o<=t.bottom;o++)for(let n=t.left;n<=t.right;n++)if(!this.getters.isInMerge(e,n,o))return 62;return 0}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return 0;const o=this.getters.getMerges(e).filter((e=>Io(e,t))),n=No(o[0]);let[i,r]=[n.width,n.height];return o.every((e=>{let[t,o]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&o===r}))?0:62}expand(e,t){const{left:o,right:n,top:i,bottom:r}=this.getters.expandZone(e,t);return{left:Math.max(0,o),right:Math.min(this.getters.getNumberCols(e)-1,n),top:Math.max(0,i),bottom:Math.min(this.getters.getNumberRows(e)-1,r)}}checkExpandedValues(e,t){const o=this.expand(e,t);let n;if(this.getters.doesIntersectMerge(e,o)){const{left:t,right:i,top:r,bottom:s}=o;for(let o=t;o<=i;o++)for(let t=r;t<=s;t++){const{col:i,row:r}=this.getters.getMainCellPosition(e,o,t);if(n=this.getters.getCell(e,i,r),null==n?void 0:n.formattedValue)return!0}}else for(let t of this.getters.getCellsInZone(e,o))if(null==t?void 0:t.formattedValue)return!0;return!1}getContiguousZone(e,t){let o,{top:n,bottom:i,left:r,right:s}=t,a=!1;for(;!a;)a=!0,n>0&&(o=this.checkExpandedValues(e,{left:r-1,right:s+1,top:n-1,bottom:n-1}),o&&(a=!1,n--)),r>0&&(o=this.checkExpandedValues(e,{left:r-1,right:r-1,top:n-1,bottom:i+1}),o&&(a=!1,r--)),s<this.getters.getNumberCols(e)-1&&(o=this.checkExpandedValues(e,{left:s+1,right:s+1,top:n-1,bottom:i+1}),o&&(a=!1,s++)),i<this.getters.getNumberRows(e)-1&&(o=this.checkExpandedValues(e,{left:r-1,right:s+1,top:i+1,bottom:i+1}),o&&(a=!1,i++));return{left:r,right:s,top:n,bottom:i}}hasHeader(e){if(1===e[0].length)return!1;let t=e.map((e=>e.map((e=>(null==e?void 0:e.evaluated.type)||qo.empty))));return t[0][0]===qo.empty&&(t=t.slice(1)),!t.some((e=>e[0]===qo.empty))&&!!t.some((e=>e[1]!==qo.empty&&e[0]!==e[1]))}sortZone(e,t,o,n,i){const[r,s]=this.mainCellsSteps(e,o);let a=this.getters.getMainCellPosition(e,t.col,t.row).col,l=Object.assign({},o),c=this.mainCells(e,o);!i.sortHeaders&&this.hasHeader(c)&&(l.top+=s),c=this.mainCells(e,l);const h=function(e,t,o){const n=e.map(Pn);let i=n.filter((e=>e.type===qo.empty)),r=n.filter((e=>e.type!==qo.empty));o&&(r.push(...i.map((e=>({...e,type:qo.number,value:0})))),i=[]);const s="descending"===t?-1:1;return r.sort(((e,t)=>{let o=Ln.indexOf(e.type)-Ln.indexOf(t.type);return 0===o&&(o=e.type===qo.text||e.type===qo.error?e.value.localeCompare(t.value):e.value-t.value),s*o})).concat(i)}(c[a-l.left],n,Boolean(i.emptyCellAsZero)),d=h.map((e=>e.index)),[u,g]=[c.length,c[0].length];for(let t=0;t<u;t++)for(let o=0;o<g;o++){let n=c[t][d[o]],i=l.left+t*r,a=l.top+o*s,h={sheetId:e,col:i,row:a,content:"",value:""};if(n){let t=n.content;if(n.isFormula()){const o=a-this.getters.getCellPosition(n.id).row,i=this.getters.createAdaptedRanges(n.dependencies,0,o,e);t=this.getters.buildFormulaContent(e,n,i)}h.style=n.style,h.content=t,h.format=n.format,h.value=n.evaluated.value}this.dispatch("UPDATE_CELL",h)}}mainCellsSteps(e,t){const o=this.getters.getMerge(e,t.left,t.top);return[o?o.right-o.left+1:1,o?o.bottom-o.top+1:1]}mainCells(e,t){const[o,n]=this.mainCellsSteps(e,t),i=[],r=Fe(t.left,t.right+1,o),s=Fe(t.top,t.bottom+1,n);for(const t of r){const o=[];i.push(o);for(const n of s)o.push(this.getters.getCell(e,t,n))}return i}}_v.getters=["getContiguousZone"];class Fv extends pg{constructor(){super(...arguments),this.showFormulas=!1}handle(e){if("SET_FORMULA_VISIBILITY"===e.type)this.showFormulas=e.show}shouldShowFormulas(){return this.showFormulas}}Fv.getters=["shouldShowFormulas"];class Dv extends pg{constructor(){super(...arguments),this.ctx=document.createElement("canvas").getContext("2d")}allowDispatch(e){switch(e.type){case"AUTORESIZE_ROWS":case"AUTORESIZE_COLUMNS":try{this.getters.getSheet(e.sheetId);break}catch(e){return 27}}return 0}handle(e){switch(e.type){case"AUTORESIZE_COLUMNS":for(let t of e.cols){const o=this.getColMaxWidth(e.sheetId,t);0!==o&&this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"COL",size:o,sheetId:e.sheetId})}break;case"AUTORESIZE_ROWS":for(let t of e.rows)this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"ROW",size:null,sheetId:e.sheetId})}}getCellWidth(e,{col:t,row:o}){const n=this.getters.getCell(e,t,o);let i=0;n&&(i+=this.getTextWidth(n));this.getters.getConditionalIcon(t,o)&&(i+=_e(this.getters.getCellStyle(n))+2*$);if(this.getters.isFilterHeader(e,t,o)&&(i+=20),i>0&&(i+=2*U,"wrap"===this.getters.getCellStyle(n).wrapping)){const e=Lo({col:t,row:o}),n=this.getters.getColSize(this.getters.getActiveSheetId(),e.left);return Math.min(n,i)}return i}getTextWidth(e){const t=this.getters.getCellText(e,this.getters.shouldShowFormulas()),{sheetId:o,col:n,row:i}=this.getters.getCellPosition(e.id);return Me(this.ctx,t,this.getters.getCellComputedStyle(o,n,i))}getCellText(e,t=!1){return t&&(e.isFormula()||e.evaluated.type===qo.error)?e.content:e.formattedValue}getCellMultiLineText(e,t){const o=this.getters.getCellStyle(e),n=this.getters.getCellText(e).split(" "),i=[];let r="",s=t;for(let e of n){const n=this.splitWordToSpecificWidth(this.ctx,e,t,o),a=n.pop(),l=Me(this.ctx,a,o);if(n.length)""!==r&&(i.push(r),r="",s=t),n.forEach((e=>{i.push(e)})),r=a,s=t-l;else{const e=""===r?a:" "+a,n=Me(this.ctx,e,o);n<=s?(r+=e,s-=n):(i.push(r),r=a,s=t-l)}}return""!==r&&i.push(r),i}getColDimensions(e,t){const o=this.getColRowOffset("COL",0,t,e),n=this.getters.getColSize(e,t);return{start:o,size:n,end:o+(this.getters.isColHidden(e,t)?0:n)}}getRowDimensions(e,t){const o=this.getColRowOffset("ROW",0,t,e),n=this.getters.getRowSize(e,t);return{start:o,size:n,end:o+(this.getters.isRowHidden(e,t)?0:n)}}getColRowOffset(e,t,o,n=this.getters.getActiveSheetId()){if(o<t)return-this.getColRowOffset(e,o,t);let i=0;for(let r=t;r<o;r++)this.getters.isHeaderHidden(n,e,r)||(i+="COL"===e?this.getters.getColSize(n,r):this.getters.getRowSize(n,r));return i}getColMaxWidth(e,t){const o=Fo(this.getters.getColsZone(e,t,t)).map((t=>this.getCellWidth(e,t)));return Math.max(0,...o)}splitWordToSpecificWidth(e,t,o,n){if(Me(e,t,n)<=o)return[t];const i=[];let r="";for(let s of t){Me(e,r+s,n)>o?(i.push(r),r=s):r+=s}return i.push(r),i}}Dv.getters=["getCellWidth","getTextWidth","getCellText","getCellMultiLineText","getColDimensions","getRowDimensions","getColRowOffset"];const kv=(new zo).add("sheet",Gm).add("header visibility",zm).add("filters",Um).add("cell",_m).add("merge",Bm).add("headerSize",Vm).add("borders",Mm).add("conditional formatting",km).add("figures",$m).add("chart",Fm),$v=(new zo).add("selection",pv).add("ui_sheet",Dv).add("header_visibility_ui",hv).add("ui_options",Fv).add("evaluation",nv).add("evaluation_filter",sv).add("evaluation_cf",rv).add("evaluation_chart",iv).add("clipboard",ev).add("edition",mg).add("selectionInputManager",vv).add("highlight",dv).add("viewport",Nv).add("grid renderer",uv).add("autofill",Zm).add("find_and_replace",lv).add("sort",_v).add("automatic_sum",jm).add("format",cv).add("cell_popovers",Xm).add("selection_multiuser",Ov).add("custom_colors",tv),Lv=new zo;Lv.add("link",{condition:e=>e.isLink(),action:(e,t)=>{e.action(t)},sequence:5}),sn`
1366
+ `}function tm(e){return new gp(e.join("\n"))}function om(e,...t){let o=[e[0]];for(let n=0;n<t.length;n++){const i=t[n]instanceof gp?t[n]:Kf(t[n]);o.push(i+e[n+1])}return new gp(Ye(o))}function nm(e){return e.replace(/[a-z0-9]+:(?=[a-z0-9]+)/gi,"")}function im(e){return e.replace(/([a-z0-9]+):(?=[a-z0-9]+)/gi,"$1\\:")}class rm{constructor(e){this.value=e}asString(){return of(String(this.value))}asBool(){return Boolean(Number(this.value))}asNum(){return Number(this.value)}}class sm{constructor(e,t,o){this.currentFile=void 0,this.rootFile=e,this.currentFile=e.file.fileName,this.xlsxFileStructure=t,this.warningManager=o,this.areNamespaceIgnored=null!==(new DOMParser).parseFromString("<t:test xmlns:t='a'/>","text/xml").querySelector("test"),this.relationships={},e.rels&&this.extractRelationships(e.rels).map((e=>{this.relationships[e.id]=e}))}extractRelationships(e){return this.mapOnElements({parent:e.xml,query:"Relationship"},(e=>({id:this.extractAttr(e,"Id",{required:!0}).asString(),target:this.extractAttr(e,"Target",{required:!0}).asString(),type:this.extractAttr(e,"Type",{required:!0}).asString()})))}getListOfFiles(){return Object.values(this.xlsxFileStructure).flat().filter(Ze)}mapOnElements(e,t){var o;const n=[],i=this.currentFile;let r;if(e.children){const t=null===(o=this.querySelector(e.parent,e.query))||void 0===o?void 0:o.children;r=t||[]}else r=this.querySelectorAll(e.parent,e.query);if(r)for(let e of r)try{n.push(t(e))}catch(t){this.catchErrorOnElement(t,e)}return this.currentFile=i,n}catchErrorOnElement(e,t){const o=t?`Error when parsing an element <${t.tagName}> of file ${this.currentFile}, skip this element. \n${e.stack}`:`Error when parsing file ${this.currentFile}.`;this.warningManager.addParsingWarning([o,e.message].join("\n"))}extractAttr(e,t,o){const n=e.attributes[t];n||this.handleMissingValue(e,`attribute "${t}"`,o);const i=(null==n?void 0:n.value)?n.value:null==o?void 0:o.default;return void 0===i?void 0:new rm(i)}extractTextContent(e,t){var o;if(void 0!==(null==t?void 0:t.default)&&"string"!=typeof t.default)throw new Error("extractTextContent default value should be a string");const n="preserve"===(null===(o=null==e?void 0:e.attributes["xml:space"])||void 0===o?void 0:o.value);let i=null==e?void 0:e.textContent;return e&&null!==i||this.handleMissingValue(e,"text content",t),i&&(i=n?i:i.trim()),i?of(i):null==t?void 0:t.default}extractChildAttr(e,t,o,n){var i;let r;r="number"==typeof t?e.children[t]:this.querySelector(e,t),r||this.handleMissingValue(e,"number"==typeof t?`child at index ${t}`:`child <${t}>`,n);const s=r?null===(i=this.extractAttr(r,o,n))||void 0===i?void 0:i.asString():null==n?void 0:n.default;return void 0!==s?new rm(s):void 0}extractChildTextContent(e,t,o){if(void 0!==(null==o?void 0:o.default)&&"string"!=typeof o.default)throw new Error("extractTextContent default value should be a string");let n=this.querySelector(e,t);return n||this.handleMissingValue(e,`child <${t}>`,o),n?this.extractTextContent(n,o):null==o?void 0:o.default}handleMissingValue(e,t,o){if(null==o?void 0:o.required){if(!(null==o?void 0:o.default))throw new Error(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, and no default value was set`);this.warningManager.addParsingWarning(`Missing required ${t} in element <${e.tagName}> of ${this.currentFile}, replacing it by the default value ${o.default}`)}}extractColor(e,t,o){var n,i,r,s,a;if(!e)return o?{rgb:o}:void 0;const l=null===(n=this.extractAttr(e,"theme"))||void 0===n?void 0:n.asString();let c;if(void 0!==l){if(!t||!t.clrScheme)throw new Error("Color referencing a theme but no theme was provided");c=this.getThemeColor(l,t.clrScheme)}else c=null===(i=this.extractAttr(e,"rgb"))||void 0===i?void 0:i.asString();return{rgb:c,auto:null===(r=this.extractAttr(e,"auto"))||void 0===r?void 0:r.asBool(),indexed:null===(s=this.extractAttr(e,"indexed"))||void 0===s?void 0:s.asNum(),tint:null===(a=this.extractAttr(e,"tint"))||void 0===a?void 0:a.asNum()}}getTargetXmlFile(e){if(!e)throw new Error("Undefined target file");let t=e.target;t=t.replace("../",""),t=t.replace("./","");const o=this.getListOfFiles().find((e=>e.file.fileName.endsWith(t)));if(!o||!o.file)throw new Error("Cannot find target file");return o}querySelector(e,t){return t=this.areNamespaceIgnored?nm(t):im(t),e.querySelector(t)}querySelectorAll(e,t){return t=this.areNamespaceIgnored?nm(t):im(t),e.querySelectorAll(t)}getThemeColor(e,t){switch(e){case"0":return"FFFFFF";case"1":return"000000";case"2":return t[3].value;case"3":return t[2].value;default:return t[e].value}}}class am extends sm{getTheme(){return{clrScheme:this.mapOnElements({query:"a:clrScheme",parent:this.rootFile.file.xml,children:!0},(e=>({name:e.tagName,value:this.extractChildAttr(e,0,"val",{required:!0,default:fp}).asString(),lastClr:this.extractChildAttr(e,0,"lastClr",{default:fp}).asString()})))}}getSharedStrings(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"si"},(e=>"t"===e.children[0].tagName?this.extractTextContent(e)||"":this.mapOnElements({parent:e,query:"t"},(e=>this.extractTextContent(e)||"")).join("")))}}class lm extends sm{constructor(e,t,o,n){super(e,t,o),this.theme=n}extractConditionalFormattings(){const e=this.mapOnElements({parent:this.rootFile.file.xml,query:"worksheet > conditionalFormatting"},(e=>{var t;return{sqref:this.extractAttr(e,"sqref",{required:!0}).asString().split(" "),pivot:null===(t=this.extractAttr(e,"pivot"))||void 0===t?void 0:t.asBool(),cfRules:this.extractCFRules(e,this.theme)}}));return e.push(...this.mapOnElements({parent:this.rootFile.file.xml,query:"extLst x14:conditionalFormatting"},(e=>{var t;return{sqref:this.extractChildTextContent(e,"xm:sqref",{required:!0}).split(" "),pivot:null===(t=this.extractAttr(e,"xm:pivot"))||void 0===t?void 0:t.asBool(),cfRules:this.extractCFRules(e,this.theme)}}))),e}extractCFRules(e,t){return this.mapOnElements({parent:e,query:"cfRule, x14:cfRule"},(e=>{var o,n,i,r,s,a,l,c,h,d,u;const g=this.extractAttr(e,"type",{required:!0}).asString();if("dataBar"===g)throw new Error("Databars conditional formats are not supported.");return{type:g,priority:this.extractAttr(e,"priority",{required:!0}).asNum(),colorScale:this.extractCfColorScale(e,t),formula:this.extractCfFormula(e),iconSet:this.extractCfIconSet(e),dxfId:null===(o=this.extractAttr(e,"dxfId"))||void 0===o?void 0:o.asNum(),stopIfTrue:null===(n=this.extractAttr(e,"stopIfTrue"))||void 0===n?void 0:n.asBool(),aboveAverage:null===(i=this.extractAttr(e,"aboveAverage"))||void 0===i?void 0:i.asBool(),percent:null===(r=this.extractAttr(e,"percent"))||void 0===r?void 0:r.asBool(),bottom:null===(s=this.extractAttr(e,"bottom"))||void 0===s?void 0:s.asBool(),operator:null===(a=this.extractAttr(e,"operator"))||void 0===a?void 0:a.asString(),text:null===(l=this.extractAttr(e,"text"))||void 0===l?void 0:l.asString(),timePeriod:null===(c=this.extractAttr(e,"timePeriod"))||void 0===c?void 0:c.asString(),rank:null===(h=this.extractAttr(e,"rank"))||void 0===h?void 0:h.asNum(),stdDev:null===(d=this.extractAttr(e,"stdDev"))||void 0===d?void 0:d.asNum(),equalAverage:null===(u=this.extractAttr(e,"equalAverage"))||void 0===u?void 0:u.asBool()}}))}extractCfFormula(e){return this.mapOnElements({parent:e,query:"formula"},(e=>this.extractTextContent(e,{required:!0})))}extractCfColorScale(e,t){const o=this.querySelector(e,"colorScale");if(o)return{colors:this.mapOnElements({parent:o,query:"color"},(e=>this.extractColor(e,t,"ffffff"))),cfvos:this.extractCFVos(o)}}extractCfIconSet(e){var t,o;const n=this.querySelector(e,"iconSet, x14:iconSet");if(n)return{iconSet:this.extractAttr(n,"iconSet",{default:"3TrafficLights1"}).asString(),showValue:this.extractAttr(n,"showValue",{default:!0}).asBool(),percent:this.extractAttr(n,"percent",{default:!0}).asBool(),reverse:null===(t=this.extractAttr(n,"reverse"))||void 0===t?void 0:t.asBool(),custom:null===(o=this.extractAttr(n,"custom"))||void 0===o?void 0:o.asBool(),cfvos:this.extractCFVos(n),cfIcons:this.extractCfIcons(n)}}extractCfIcons(e){const t=this.mapOnElements({parent:e,query:"cfIcon, x14:cfIcon"},(e=>({iconSet:this.extractAttr(e,"iconSet",{required:!0}).asString(),iconId:this.extractAttr(e,"iconId",{required:!0}).asNum()})));return 0===t.length?void 0:t}extractCFVos(e){return this.mapOnElements({parent:e,query:"cfvo, x14:cfvo"},(e=>{var t,o;return{type:this.extractAttr(e,"type",{required:!0}).asString(),gte:null===(t=this.extractAttr(e,"gte",{default:!0}))||void 0===t?void 0:t.asBool(),value:e.attributes.val?null===(o=this.extractAttr(e,"val"))||void 0===o?void 0:o.asString():this.extractChildTextContent(e,"f, xm:f")}}))}}class cm extends sm{extractChart(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"c:chartSpace"},(e=>{const t=this.getChartType(e);if(!Zp[t])throw new Error(`Unsupported chart type ${t}`);const o=this.mapOnElements({parent:e,query:"c:title a:t"},(e=>e.textContent||"")).join(""),n=this.extractChildAttr(e,"c:grouping","val",{default:"clustered"}).asString();return{title:o,type:Zp[t],dataSets:this.extractChartDatasets(this.querySelector(e,`c:${t}`)),backgroundColor:this.extractChildAttr(e,"c:chartSpace > c:spPr a:srgbClr","val",{default:"ffffff"}).asString(),verticalAxisPosition:"r"===this.extractChildAttr(e,"c:valAx > c:axPos","val",{default:"l"}).asString()?"right":"left",legendPosition:qp[this.extractChildAttr(e,"c:legendPos","val",{default:"b"}).asString()],stacked:"stacked"===n,fontColor:"000000"}}))[0]}extractChartDatasets(e){return this.mapOnElements({parent:e,query:"c:ser"},(e=>({label:this.extractChildTextContent(e,"c:cat c:f"),range:this.extractChildTextContent(e,"c:val c:f",{required:!0})})))}getChartType(e){const t=this.querySelector(e,"c:plotArea");if(!t)throw new Error("Missing plot area in the chart definition.");for(let e of t.children){const t=nm(e.tagName);if(pp.some((e=>e===t)))return t}throw new Error("Unknown chart type")}}class hm extends sm{extractFigures(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"xdr:wsDr",children:!0},(e=>{if("twoCellAnchor"!==nm(e.tagName))throw new Error("Only twoCellAnchor are supported for xlsx drawings.");const t=this.querySelector(e,"c:chart");if(!t)throw new Error("Only chart figures are currently supported.");return{anchors:[this.extractFigureAnchor("xdr:from",e),this.extractFigureAnchor("xdr:to",e)],data:this.extractChart(t)}}))}extractFigureAnchor(e,t){const o=this.querySelector(t,e);if(!o)throw new Error(`Missing anchor element ${e}`);return{col:Number(this.extractChildTextContent(o,"xdr:col",{required:!0})),colOffset:Number(this.extractChildTextContent(o,"xdr:colOff",{required:!0})),row:Number(this.extractChildTextContent(o,"xdr:row",{required:!0})),rowOffset:Number(this.extractChildTextContent(o,"xdr:rowOff",{required:!0}))}}extractChart(e){const t=this.extractAttr(e,"r:id",{required:!0}).asString(),o=this.getTargetXmlFile(this.relationships[t]),n=new cm(o,this.xlsxFileStructure,this.warningManager).extractChart();if(!n)throw new Error("Unable to extract chart definition");return n}}class dm extends sm{getPivotTable(){return this.mapOnElements({query:":root",parent:this.rootFile.file.xml},(e=>({displayName:this.extractAttr(e,"name",{required:!0}).asString(),id:this.extractAttr(e,"name",{required:!0}).asString(),ref:this.extractChildAttr(e,"location","ref",{required:!0}).asString(),headerRowCount:this.extractChildAttr(e,"location","firstDataRow",{default:0}).asNum(),totalsRowCount:1,cols:[],style:{showFirstColumn:!0,showRowStripes:!0}})))[0]}}class um extends sm{getTable(){return this.mapOnElements({query:"table",parent:this.rootFile.file.xml},(e=>{var t;return{displayName:this.extractAttr(e,"displayName",{required:!0}).asString(),name:null===(t=this.extractAttr(e,"name"))||void 0===t?void 0:t.asString(),id:this.extractAttr(e,"id",{required:!0}).asString(),ref:this.extractAttr(e,"ref",{required:!0}).asString(),headerRowCount:this.extractAttr(e,"headerRowCount",{default:1}).asNum(),totalsRowCount:this.extractAttr(e,"totalsRowCount",{default:0}).asNum(),cols:this.extractTableCols(e),style:this.extractTableStyleInfo(e),autoFilter:this.extractTableAutoFilter(e)}}))[0]}extractTableCols(e){return this.mapOnElements({query:"tableColumn",parent:e},(e=>({id:this.extractAttr(e,"id",{required:!0}).asString(),name:this.extractAttr(e,"name",{required:!0}).asString(),colFormula:this.extractChildTextContent(e,"calculatedColumnFormula")})))}extractTableStyleInfo(e){return this.mapOnElements({query:"tableStyleInfo",parent:e},(e=>{var t,o,n,i,r;return{name:null===(t=this.extractAttr(e,"name"))||void 0===t?void 0:t.asString(),showFirstColumn:null===(o=this.extractAttr(e,"showFirstColumn"))||void 0===o?void 0:o.asBool(),showLastColumn:null===(n=this.extractAttr(e,"showLastColumn"))||void 0===n?void 0:n.asBool(),showRowStripes:null===(i=this.extractAttr(e,"showRowStripes"))||void 0===i?void 0:i.asBool(),showColumnStripes:null===(r=this.extractAttr(e,"showColumnStripes"))||void 0===r?void 0:r.asBool()}}))[0]}extractTableAutoFilter(e){return this.mapOnElements({query:"autoFilter",parent:e},(e=>({columns:this.extractFilterColumns(e),zone:this.extractAttr(e,"ref",{required:!0}).asString()})))[0]}extractFilterColumns(e){return this.mapOnElements({query:"tableColumn",parent:e},(t=>({colId:this.extractAttr(e,"colId",{required:!0}).asNum(),hiddenButton:this.extractAttr(e,"hiddenButton",{default:!1}).asBool(),filters:this.extractSimpleFilter(t)})))}extractSimpleFilter(e){return this.mapOnElements({query:"filter",parent:e},(e=>({val:this.extractAttr(e,"val",{required:!0}).asString()})))}}class gm extends sm{constructor(e,t,o,n){super(e,t,o),this.theme=n}getSheet(){return this.mapOnElements({query:"worksheet",parent:this.rootFile.file.xml},(e=>{const t=this.getSheetWorkbookInfo();return{sheetName:this.extractSheetName(),sheetViews:this.extractSheetViews(e),sheetFormat:this.extractSheetFormat(e),cols:this.extractCols(e),rows:this.extractRows(e),sharedFormulas:this.extractSharedFormulas(e),merges:this.extractMerges(e),cfs:this.extractConditionalFormats(),figures:this.extractFigures(e),hyperlinks:this.extractHyperLinks(e),tables:[...this.extractTables(e),...this.extractPivotTables()],isVisible:"visible"===t.state}}))[0]}extractSheetViews(e){return this.mapOnElements({parent:e,query:"sheetView"},(e=>{const t=this.querySelector(e,"pane");return{tabSelected:this.extractAttr(e,"tabSelected",{default:!1}).asBool(),showFormulas:this.extractAttr(e,"showFormulas",{default:!1}).asBool(),showGridLines:this.extractAttr(e,"showGridLines",{default:!0}).asBool(),showRowColHeaders:this.extractAttr(e,"showRowColHeaders",{default:!0}).asBool(),pane:{xSplit:t?this.extractAttr(t,"xSplit",{default:0}).asNum():0,ySplit:t?this.extractAttr(t,"ySplit",{default:0}).asNum():0}}}))}extractSheetName(){const e=Jp(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id;for(let e of this.querySelectorAll(this.xlsxFileStructure.workbook.file.xml,"sheet"))if(e.attributes["r:id"].value===t)return e.attributes.name.value;throw new Error("Missing sheet name")}getSheetWorkbookInfo(){const e=Jp(this.xlsxFileStructure.workbook.file.fileName,this.rootFile.file.fileName),t=this.extractRelationships(this.xlsxFileStructure.workbook.rels).find((t=>t.target===e)).id,o=this.mapOnElements({parent:this.xlsxFileStructure.workbook.file.xml,query:"sheet"},(e=>({relationshipId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetId:this.extractAttr(e,"sheetId",{required:!0}).asString(),sheetName:this.extractAttr(e,"name",{required:!0}).asString(),state:this.extractAttr(e,"state",{default:"visible"}).asString()}))).find((e=>e.relationshipId===t));if(!o)throw new Error("Cannot find corresponding workbook sheet");return o}extractConditionalFormats(){return new lm(this.rootFile,this.xlsxFileStructure,this.warningManager,this.theme).extractConditionalFormattings()}extractFigures(e){return this.mapOnElements({parent:e,query:"drawing"},(e=>{var t;const o=null===(t=this.extractAttr(e,"r:id",{required:!0}))||void 0===t?void 0:t.asString(),n=this.getTargetXmlFile(this.relationships[o]);return new hm(n,this.xlsxFileStructure,this.warningManager).extractFigures()}))[0]||[]}extractTables(e){return this.mapOnElements({query:"tablePart",parent:e},(e=>{var t;const o=null===(t=this.extractAttr(e,"r:id",{required:!0}))||void 0===t?void 0:t.asString(),n=this.getTargetXmlFile(this.relationships[o]);return new um(n,this.xlsxFileStructure,this.warningManager).getTable()}))}extractPivotTables(){try{return Object.values(this.relationships).filter((e=>e.type.endsWith("pivotTable"))).map((e=>{const t=this.getTargetXmlFile(e);return new dm(t,this.xlsxFileStructure,this.warningManager).getPivotTable()}))}catch(e){return this.catchErrorOnElement(e),[]}}extractMerges(e){return this.mapOnElements({parent:e,query:"mergeCell"},(e=>this.extractAttr(e,"ref",{required:!0}).asString()))}extractSheetFormat(e){const t=this.querySelector(e,"sheetFormatPr");if(t)return{defaultColWidth:this.extractAttr(t,"defaultColWidth",{default:Rp.toString()}).asNum(),defaultRowHeight:this.extractAttr(t,"defaultRowHeight",{default:Ip.toString()}).asNum()}}extractCols(e){return this.mapOnElements({parent:e,query:"cols col"},(e=>{var t,o,n,i,r,s,a;return{width:null===(t=this.extractAttr(e,"width"))||void 0===t?void 0:t.asNum(),customWidth:null===(o=this.extractAttr(e,"customWidth"))||void 0===o?void 0:o.asBool(),bestFit:null===(n=this.extractAttr(e,"bestFit"))||void 0===n?void 0:n.asBool(),hidden:null===(i=this.extractAttr(e,"hidden"))||void 0===i?void 0:i.asBool(),min:null===(r=this.extractAttr(e,"min",{required:!0}))||void 0===r?void 0:r.asNum(),max:null===(s=this.extractAttr(e,"max",{required:!0}))||void 0===s?void 0:s.asNum(),styleIndex:null===(a=this.extractAttr(e,"style"))||void 0===a?void 0:a.asNum()}}))}extractRows(e){return this.mapOnElements({parent:e,query:"sheetData row"},(e=>{var t,o,n,i,r;return{index:null===(t=this.extractAttr(e,"r",{required:!0}))||void 0===t?void 0:t.asNum(),cells:this.extractCells(e),height:null===(o=this.extractAttr(e,"ht"))||void 0===o?void 0:o.asNum(),customHeight:null===(n=this.extractAttr(e,"customHeight"))||void 0===n?void 0:n.asBool(),hidden:null===(i=this.extractAttr(e,"hidden"))||void 0===i?void 0:i.asBool(),styleIndex:null===(r=this.extractAttr(e,"s"))||void 0===r?void 0:r.asNum()}}))}extractCells(e){return this.mapOnElements({parent:e,query:"c"},(e=>{var t,o,n;return{xc:null===(t=this.extractAttr(e,"r",{required:!0}))||void 0===t?void 0:t.asString(),styleIndex:null===(o=this.extractAttr(e,"s"))||void 0===o?void 0:o.asNum(),type:Vp[null===(n=this.extractAttr(e,"t",{default:"n"}))||void 0===n?void 0:n.asString()],value:this.extractChildTextContent(e,"v"),formula:this.extractCellFormula(e)}}))}extractCellFormula(e){var t,o;const n=this.querySelector(e,"f");if(n)return{content:this.extractTextContent(n),sharedIndex:null===(t=this.extractAttr(n,"si"))||void 0===t?void 0:t.asNum(),ref:null===(o=this.extractAttr(n,"ref"))||void 0===o?void 0:o.asString()}}extractHyperLinks(e){return this.mapOnElements({parent:e,query:"hyperlink"},(e=>{var t,o,n,i;const r=null===(t=this.extractAttr(e,"r:id"))||void 0===t?void 0:t.asString();return{xc:null===(o=this.extractAttr(e,"ref",{required:!0}))||void 0===o?void 0:o.asString(),location:null===(n=this.extractAttr(e,"location"))||void 0===n?void 0:n.asString(),display:null===(i=this.extractAttr(e,"display"))||void 0===i?void 0:i.asString(),relTarget:r?this.relationships[r].target:void 0}}))}extractSharedFormulas(e){const t=this.querySelectorAll(e,"f[si][ref]"),o={};for(let e of t){const t=this.extractAttr(e,"si",{required:!0}).asNum(),n=this.extractTextContent(e,{required:!0});o[t]=n}const n=[];for(let e=0;e<Object.keys(o).length;e++)o[e]?n.push(o[e]):(this.warningManager.addParsingWarning(`Missing shared formula ${e}, replacing it by empty formula`),n.push(""));return n}}class pm extends sm{constructor(e,t,o){super(e.styles,e,t),this.theme=o}getNumFormats(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"numFmt"},(e=>this.extractNumFormats(e)))}extractNumFormats(e){return{id:this.extractAttr(e,"numFmtId",{required:!0}).asNum(),format:this.extractAttr(e,"formatCode",{required:!0,default:""}).asString()}}getFonts(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"font"},(e=>this.extractFont(e)))}extractFont(e){var t,o,n,i;const r=this.extractChildAttr(e,"name","val",{default:"Arial"}).asString(),s=this.extractChildAttr(e,"sz","val",{default:W.toString()}).asNum(),a=this.extractColor(this.querySelector(e,"color"),this.theme),l=this.querySelector(e,"i")||void 0,c=l&&"0"!==(null===(t=l.attributes.val)||void 0===t?void 0:t.value),h=this.querySelector(e,"b")||void 0,d=h&&"0"!==(null===(o=h.attributes.val)||void 0===o?void 0:o.value),u=this.querySelector(e,"strike")||void 0,g=u&&"0"!==(null===(n=u.attributes.val)||void 0===n?void 0:n.value),p=this.querySelector(e,"u")||void 0;return{name:r,size:s,color:a,italic:c,bold:d,underline:p&&"none"!==(null===(i=p.attributes.val)||void 0===i?void 0:i.value),strike:g}}getFills(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"fill"},(e=>this.extractFill(e)))}extractFill(e){var t;const o=e.children[0];return"patternFill"===o.tagName?{patternType:null===(t=o.attributes.patternType)||void 0===t?void 0:t.value,bgColor:this.extractColor(this.querySelector(o,"bgColor"),this.theme),fgColor:this.extractColor(this.querySelector(o,"fgColor"),this.theme)}:{patternType:"solid",fgColor:this.extractColor(this.querySelectorAll(o,"color")[1],this.theme)}}getBorders(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"border"},(e=>this.extractBorder(e)))}extractBorder(e){var t,o;const n={left:this.extractSingleBorder(e,"left",this.theme),right:this.extractSingleBorder(e,"right",this.theme),top:this.extractSingleBorder(e,"top",this.theme),bottom:this.extractSingleBorder(e,"bottom",this.theme),diagonal:this.extractSingleBorder(e,"diagonal",this.theme)};return n.diagonal&&(n.diagonalUp=null===(t=this.extractAttr(e,"diagonalUp"))||void 0===t?void 0:t.asBool(),n.diagonalDown=null===(o=this.extractAttr(e,"diagonalDown"))||void 0===o?void 0:o.asBool()),n}extractSingleBorder(e,t,o){const n=this.querySelector(e,t);if(n&&n.attributes.style)return{style:this.extractAttr(n,"style",{required:!0,default:"thin"}).asString(),color:this.extractColor(n.children[0],o,"000000")}}extractAlignment(e){var t,o,n,i,r,s,a;return{horizontal:this.extractAttr(e,"horizontal",{default:"general"}).asString(),vertical:this.extractAttr(e,"vertical",{default:"center"}).asString(),textRotation:null===(t=this.extractAttr(e,"textRotation"))||void 0===t?void 0:t.asNum(),wrapText:null===(o=this.extractAttr(e,"wrapText"))||void 0===o?void 0:o.asBool(),indent:null===(n=this.extractAttr(e,"indent"))||void 0===n?void 0:n.asNum(),relativeIndent:null===(i=this.extractAttr(e,"relativeIndent"))||void 0===i?void 0:i.asNum(),justifyLastLine:null===(r=this.extractAttr(e,"justifyLastLine"))||void 0===r?void 0:r.asBool(),shrinkToFit:null===(s=this.extractAttr(e,"shrinkToFit"))||void 0===s?void 0:s.asBool(),readingOrder:null===(a=this.extractAttr(e,"readingOrder"))||void 0===a?void 0:a.asNum()}}getDxfs(){return this.mapOnElements({query:"dxf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"font"),o=this.querySelector(e,"fill"),n=this.querySelector(e,"border"),i=this.querySelector(e,"numFmt"),r=this.querySelector(e,"alignment");return{font:t?this.extractFont(t):void 0,fill:o?this.extractFill(o):void 0,numFmt:i?this.extractNumFormats(i):void 0,alignment:r?this.extractAlignment(r):void 0,border:n?this.extractBorder(n):void 0}}))}getStyles(){return this.mapOnElements({query:"cellXfs xf",parent:this.rootFile.file.xml},(e=>{const t=this.querySelector(e,"alignment");return{fontId:this.extractAttr(e,"fontId",{required:!0,default:0}).asNum(),fillId:this.extractAttr(e,"fillId",{required:!0,default:0}).asNum(),borderId:this.extractAttr(e,"borderId",{required:!0,default:0}).asNum(),numFmtId:this.extractAttr(e,"numFmtId",{required:!0,default:0}).asNum(),alignment:t?this.extractAlignment(t):void 0}}))}}class fm extends sm{getExternalBook(){return this.mapOnElements({parent:this.rootFile.file.xml,query:"externalBook"},(e=>({rId:this.extractAttr(e,"r:id",{required:!0}).asString(),sheetNames:this.mapOnElements({parent:e,query:"sheetName"},(e=>this.extractAttr(e,"val",{required:!0}).asString())),datasets:this.extractExternalSheetData(e)})))[0]}extractExternalSheetData(e){return this.mapOnElements({parent:e,query:"sheetData"},(e=>{const t=this.mapOnElements({parent:e,query:"cell"},(e=>({xc:this.extractAttr(e,"r",{required:!0}).asString(),value:this.extractChildTextContent(e,"v",{required:!0})}))),o={};for(let e of t)o[e.xc]=e.value;return{sheetId:this.extractAttr(e,"sheetId",{required:!0}).asNum(),data:o}}))}}function mm(e,t){const o=function(e,t){const o=t[_p],n=o.querySelectorAll(`Override[ContentType="${e}"]`),i=[];for(let e of n){const t=null==e?void 0:e.attributes.PartName.value;i.push(t.substring(1))}return i}(e,t);return function(e,t){const o=[];for(let n of e){const e=vm(n,t);o.push({file:{fileName:n,xml:t[n]},rels:e?{fileName:e,xml:t[e]}:void 0})}return o}(o,t)}function vm(e,t){if(e===_p)return"_rels/.rels";let o="";const n=e.split("/");for(let e=0;e<n.length-1;e++)o+=n[e]+"/";return o+="_rels/",o+=n[n.length-1]+".rels",t[o]||(o=void 0),o}class bm{constructor(e){this.warningManager=new Dp,this.xmls={};for(let t of Object.keys(e))(t.endsWith(".xml")||t.endsWith(".rels"))&&(this.xmls[t]=Jf(new gp(e[t])))}convertXlsx(){const e=this.getXlsxData();return this.convertImportedData(e)}getXlsxData(){const e=this.buildXlsxFileStructure(),t=e.theme?new am(e.theme,e,this.warningManager).getTheme():void 0,o=e.sharedStrings?new am(e.sharedStrings,e,this.warningManager).getSharedStrings():[],n=e.sheets.sort(((e,t)=>e.file.fileName.localeCompare(t.file.fileName,void 0,{numeric:!0}))).map((o=>new gm(o,e,this.warningManager,t).getSheet())),i=e.externalLinks.map((t=>new fm(t,e,this.warningManager).getExternalBook())),r=new pm(e,this.warningManager,t);return{fonts:r.getFonts(),fills:r.getFills(),borders:r.getBorders(),dxfs:r.getDxfs(),numFmts:r.getNumFormats(),styles:r.getStyles(),sheets:n,sharedStrings:o,externalBooks:i}}buildXlsxFileStructure(){const e={sheets:mm(Cp.sheet,this.xmls),workbook:mm(Cp.workbook,this.xmls)[0],styles:mm(Cp.styles,this.xmls)[0],sharedStrings:mm(Cp.sharedStrings,this.xmls)[0],theme:mm(Cp.themes,this.xmls)[0],charts:mm(Cp.chart,this.xmls),figures:mm(Cp.drawing,this.xmls),tables:mm(Cp.table,this.xmls),pivots:mm(Cp.pivot,this.xmls),externalLinks:mm(Cp.externalLink,this.xmls)};if(!e.workbook.rels)throw Error(r("Cannot find workbook relations file"));return e}convertImportedData(e){const t={version:12,sheets:Uf(e,this.warningManager),styles:sf(e,this.warningManager),formats:lf(e,this.warningManager),borders:nf(e,this.warningManager),entities:{},revisionId:Y};return Zf(t,e),Object.keys(e.styles).map((t=>{e.styles[t]=tt(e.styles[t])})),t}}function Sm(e){const t=og(e);let o=[];return{text:"".concat(...t.map((e=>{if("REFERENCE"===e.type&&ft.test(e.value)){const t=e.value.trim();return o.includes(t)||o.push(t),`${te}${o.indexOf(t)}${te}`}return e.value}))),dependencies:o}}const Cm=12,Em="Sheet1";function wm(e,t){if(!e)return Tm();if(e["[Content_Types].xml"]){const o=new bm(e);if(e=o.convertXlsx(),t)for(let e of o.warningManager.warnings.sort())console.warn(e)}return"version"in(e=JSON.parse(JSON.stringify(e)))&&e.version<Cm&&(e=function(e){for(let t=ym.findIndex((t=>t.from===e.version));t<ym.length;t++)e=ym[t].applyMigration(e);return e}(e)),e=function(e){return e=function(e){if(e.uniqueFigureIds)return e;const t=new Set,o=new po;for(const n of e.sheets||[])for(const e of n.figures||[])t.has(e.id)&&(e.id+=o.uuidv4()),t.add(e.id);return e.uniqueFigureIds=!0,e}(e),e=function(e){e=Object.assign(Tm(),e,{version:Cm}),e.sheets=e.sheets?e.sheets.map(((e,t)=>Object.assign(Im(`Sheet${t+1}`,`Sheet${t+1}`),e))):[],0===e.sheets.length&&e.sheets.push(Im(Em,"Sheet1"));return e}(e),e}(e),e}const ym=[{description:"add the `activeSheet` field on data",from:1,to:2,applyMigration:e=>(e.sheets&&e.sheets[0]&&(e.activeSheet=e.sheets[0].name),e)},{description:"add an id field in each sheet",from:2,to:3,applyMigration(e){if(e.sheets&&e.sheets.length)for(let t of e.sheets)t.id=t.id||t.name;return e}},{description:"activeSheet is now an id, not the name of a sheet",from:3,to:4,applyMigration(e){if(e.sheets&&e.activeSheet){const t=e.sheets.find((t=>t.name===e.activeSheet));e.activeSheet=t.id}return e}},{description:"add figures object in each sheets",from:4,to:5,applyMigration(e){for(let t of e.sheets||[])t.figures=t.figures||[];return e}},{description:"normalize the content of the cell if it is a formula to avoid parsing all the formula that vary only by the cells they use",from:5,to:6,applyMigration(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];o.content&&o.content.startsWith("=")&&(o.formula=Sm(o.content))}return e}},{description:"transform chart data structure",from:6,to:7,applyMigration(e){for(let t of e.sheets||[])for(let e in t.figures||[]){const{dataSets:o,...n}=t.figures[e].data,i=[];for(let e of o)if(e.labelCell){const t=mo(e.dataRange),o=e.labelCell+":"+Ot(t.right,t.bottom);i.push(o)}else i.push(e.dataRange);n.dataSetsHaveTitle=Boolean(o[0].labelCell),n.dataSets=i,t.figures[e].data=n}return e}},{description:"remove single quotes in sheet names",from:7,to:8,applyMigration(e){var t;const o=[],n=new RegExp(ee,"g");for(let i of e.sheets||[]){if(!i.name)continue;const e=i.name,r=e.replace(n,"_");let s=1,a=r;for(;o.includes(a);)a=`${r}${s}`,s++;i.name=a,o.push(a);const l=t=>{if(void 0===t)return t;let o=t.replace(e,a),n=t;for(;n!==o;)n=o,o=n.replace(e,a);return n};for(let e in i.cells){const t=i.cells[e];t.formula&&(t.formula.dependencies=t.formula.dependencies.map(l))}for(let e of i.figures||[])if("chart"===e.type){const t=e.data.dataSets.map(l),o=l(e.data.labelRange);e.data={...e.data,dataSets:t,labelRange:o}}for(let e of i.conditionalFormats||[]){e.ranges=e.ranges.map(l);for(const o of["minimum","maximum","midpoint","upperInflectionPoint","lowerInflectionPoint"])"formula"===(null===(t=e.rule[o])||void 0===t?void 0:t.type)&&(e.rule[o].value=l(e.rule[o].value))}}return e}},{description:"transform chart data structure with design attributes",from:8,to:9,applyMigration(e){for(const t of e.sheets||[])for(const e of t.figures||[])e.data.background=w,e.data.verticalAxisPosition="left",e.data.legendPosition="top",e.data.stacked=!1;return e}},{description:"de-normalize formula to reduce exported json size (~30%)",from:9,to:10,applyMigration(e){for(let t of e.sheets||[])for(let e in t.cells||[]){const o=t.cells[e];if(o.formula){let{text:e,dependencies:t}=o.formula;for(let[o,n]of Object.entries(t)){const t=`\\${te}${o}\\${te}`;e=e.replace(new RegExp(t,"g"),n)}o.content=e,delete o.formula}}return e}},{description:"normalize the formats of the cells",from:10,to:11,applyMigration(e){const t={};for(let o of e.sheets||[])for(let e in o.cells||[]){const n=o.cells[e];n.format&&(n.format=Xe(n.format,t))}return e.formats=t,e}},{description:"Add isVisible to sheets",from:11,to:12,applyMigration(e){for(let t of e.sheets||[])t.isVisible=!0;return e}}];function xm(e,t){return t=function(e,t){if(0!==Object.keys(e).length)return t;const o=[],n=[],i=e=>{if("CREATE_SHEET"===e.type)o.push(e.sheetId);else if("sheetId"in e&&!o.includes(e.sheetId))return{...e,sheetId:Em};return e};for(const e of t)"REMOTE_REVISION"===e.type?n.push({...e,commands:e.commands.map(i)}):n.push(e);return n}(e,t),t=Rm(t,"SORT_CELLS"),t=function(e,t){var o;const n=[],i={};for(const t of e.sheets||[])null===(o=t.figures)||void 0===o||o.forEach((e=>{"chart"===e.tag&&(i[e.id]=e.data)}));for(const e of t)if("REMOTE_REVISION"===e.type){const t=[];for(const o of e.commands){let e=o;switch(o.type){case"CREATE_CHART":i[o.id]=o.definition;break;case"UPDATE_CHART":if(!i[o.id]){console.log(`Fix chart definition: chart with id ${o.id} not found.`);continue}const t={...i[o.id],...o.definition};e={...o,definition:t},i[o.id]=t}t.push(e)}n.push({...e,commands:t})}else n.push(e);return n}(e,t=Rm(t,"SET_DECIMAL")),t}function Rm(e,t){const o=[];for(const n of e)"REMOTE_REVISION"===n.type?o.push({...n,commands:n.commands.filter((e=>e.type!==t))}):o.push(n);return o}function Im(e,t){return{id:e,name:t,colNumber:26,rowNumber:100,cells:{},cols:{},rows:{},merges:[],conditionalFormats:[],figures:[],filterTables:[],isVisible:!0}}function Tm(e="Sheet1"){return{version:Cm,sheets:[Im(Em,e)],entities:{},styles:{},formats:{},borders:{},revisionId:Y,uniqueFigureIds:!0}}function Am(e,t){return{...Im(e,t),charts:[]}}class Om extends gg{constructor(e,t,o,n,i,r){super(t,n,i),this.dispatch=n,this.range=o,o.addRangeProvider(this.adaptRanges.bind(this)),this.getters=e,this.uuidGenerator=r}import(e){}export(e){}adaptRanges(e,t){}}class Mm extends Om{constructor(){super(...arguments),this.borders={}}handle(e){switch(e.type){case"ADD_MERGE":for(const t of e.target)this.addBordersToMerge(e.sheetId,t);break;case"DUPLICATE_SHEET":const t=this.borders[e.sheetId];if(t){const o=t.slice().map((e=>null==e?void 0:e.slice().map((e=>({...e})))));this.history.update("borders",e.sheetIdTo,o)}break;case"DELETE_SHEET":const o={...this.borders};delete o[e.sheetId],this.history.update("borders",o);break;case"SET_BORDER":this.setBorder(e.sheetId,e.col,e.row,e.border);break;case"SET_FORMATTING":if(e.border){const t=e.target.map((t=>this.getters.expandZone(e.sheetId,t)));this.setBorders(e.sheetId,t,e.border)}break;case"CLEAR_FORMATTING":this.clearBorders(e.sheetId,e.target);break;case"REMOVE_COLUMNS_ROWS":for(let t of e.elements)"COL"===e.dimension?this.shiftBordersHorizontally(e.sheetId,t+1,-1):this.shiftBordersVertically(e.sheetId,t+1,-1);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumns(e):this.handleAddRows(e)}}handleAddColumns(e){let t,o;"before"===e.position?(this.shiftBordersHorizontally(e.sheetId,e.base,e.quantity,{moveFirstLeftBorder:!0}),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersHorizontally(e.sheetId,e.base+1,e.quantity,{moveFirstLeftBorder:!1}),t=e.base,o=e.base+e.quantity+1),this.ensureColumnBorderContinuity(e.sheetId,t,o)}handleAddRows(e){let t,o;"before"===e.position?(this.shiftBordersVertically(e.sheetId,e.base,e.quantity,{moveFirstTopBorder:!0}),t=e.base-1,o=e.base+e.quantity):(this.shiftBordersVertically(e.sheetId,e.base+1,e.quantity,{moveFirstTopBorder:!1}),t=e.base,o=e.base+e.quantity+1),this.ensureRowBorderContinuity(e.sheetId,t,o)}getCellBorder(e,t,o){var n,i,r,s,a,l,c,h,d,u,g,p;const f={top:null===(r=null===(i=null===(n=this.borders[e])||void 0===n?void 0:n[t])||void 0===i?void 0:i[o])||void 0===r?void 0:r.horizontal,bottom:null===(l=null===(a=null===(s=this.borders[e])||void 0===s?void 0:s[t])||void 0===a?void 0:a[o+1])||void 0===l?void 0:l.horizontal,left:null===(d=null===(h=null===(c=this.borders[e])||void 0===c?void 0:c[t])||void 0===h?void 0:h[o])||void 0===d?void 0:d.vertical,right:null===(p=null===(g=null===(u=this.borders[e])||void 0===u?void 0:u[t+1])||void 0===g?void 0:g[o])||void 0===p?void 0:p.vertical};return f.bottom||f.left||f.right||f.top?f:null}ensureColumnBorderContinuity(e,t,o){const n=Fe(t+1,o);for(let i=0;i<this.getters.getNumberRows(e);i++){const r=this.getCellBorder(e,t,i),s=this.getCellBorder(e,o,i);if(r&&s){const t=this.getCommonSides(r,s);for(let o of n)this.addBorder(e,o,i,t)}}}ensureRowBorderContinuity(e,t,o){const n=Fe(t+1,o);for(let i=0;i<this.getters.getNumberCols(e);i++){const r=this.getCellBorder(e,i,t),s=this.getCellBorder(e,i,o);if(r&&s){const t=this.getCommonSides(r,s);for(let o of n)this.addBorder(e,i,o,t)}}}getCommonSides(e,t){const o={};for(let n of["top","bottom","left","right"])e[n]&&e[n]===t[n]&&(o[n]=e[n]);return o}getColumnsWithBorders(e){const t=this.borders[e];return t?Object.keys(t).map((e=>parseInt(e,10))):[]}getRowsRange(e){return this.borders[e]?Fe(0,this.getters.getNumberRows(e)+1):[]}shiftBordersHorizontally(e,t,o,{moveFirstLeftBorder:n}={}){this.borders[e]&&(o<0&&this.moveBordersOfColumn(e,t,o,"vertical",{destructive:!1}),this.getColumnsWithBorders(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((i=>{(i===t&&n||i!==t)&&this.moveBordersOfColumn(e,i,o,"vertical"),this.moveBordersOfColumn(e,i,o,"horizontal")})))}shiftBordersVertically(e,t,o,{moveFirstTopBorder:n}={}){this.borders[e]&&(o<0&&this.moveBordersOfRow(e,t,o,"horizontal",{destructive:!1}),this.getRowsRange(e).filter((e=>e>=t)).sort(((e,t)=>o<0?e-t:t-e)).forEach((i=>{(i===t&&n||i!==t)&&this.moveBordersOfRow(e,i,o,"horizontal"),this.moveBordersOfRow(e,i,o,"vertical")})))}moveBordersOfRow(e,t,o,n,{destructive:i}={destructive:!0}){const r=this.borders[e];r&&this.getColumnsWithBorders(e).forEach((s=>{var a,l,c,h;const d=null===(l=null===(a=r[s])||void 0===a?void 0:a[t+o])||void 0===l?void 0:l[n],u=null===(h=null===(c=r[s])||void 0===c?void 0:c[t])||void 0===h?void 0:h[n];this.history.update("borders",e,s,t+o,n,i?u:u||d),this.history.update("borders",e,s,t,n,void 0)}))}moveBordersOfColumn(e,t,o,n,{destructive:i}={destructive:!0}){const r=this.borders[e];r&&this.getRowsRange(e).forEach((s=>{var a,l,c,h;const d=null===(l=null===(a=r[t+o])||void 0===a?void 0:a[s])||void 0===l?void 0:l[n],u=null===(h=null===(c=r[t])||void 0===c?void 0:c[s])||void 0===h?void 0:h[n];this.history.update("borders",e,t+o,s,n,i?u:u||d),this.history.update("borders",e,t,s,n,void 0)}))}setBorder(e,t,o,n,i=!0){var r,s,a,l,c,h,d,u,g,p,f,m,v,b,S,C;!i&&(null===(l=null===(a=null===(s=null===(r=this.borders)||void 0===r?void 0:r[e])||void 0===s?void 0:s[t])||void 0===a?void 0:a[o])||void 0===l?void 0:l.vertical)||this.history.update("borders",e,t,o,"vertical",null==n?void 0:n.left),!i&&(null===(u=null===(d=null===(h=null===(c=this.borders)||void 0===c?void 0:c[e])||void 0===h?void 0:h[t])||void 0===d?void 0:d[o])||void 0===u?void 0:u.horizontal)||this.history.update("borders",e,t,o,"horizontal",null==n?void 0:n.top),!i&&(null===(m=null===(f=null===(p=null===(g=this.borders)||void 0===g?void 0:g[e])||void 0===p?void 0:p[t+1])||void 0===f?void 0:f[o])||void 0===m?void 0:m.vertical)||this.history.update("borders",e,t+1,o,"vertical",null==n?void 0:n.right),!i&&(null===(C=null===(S=null===(b=null===(v=this.borders)||void 0===v?void 0:v[e])||void 0===b?void 0:b[t])||void 0===S?void 0:S[o+1])||void 0===C?void 0:C.horizontal)||this.history.update("borders",e,t,o+1,"horizontal",null==n?void 0:n.bottom)}clearBorders(e,t){for(let o of t){for(let t=o.top;t<=o.bottom;t++){this.history.update("borders",e,o.right+1,t,"vertical",void 0);for(let n=o.left;n<=o.right;n++)this.history.update("borders",e,n,t,void 0)}for(let t=o.left;t<=o.right;t++)this.history.update("borders",e,t,o.bottom+1,"horizontal",void 0)}}addBorder(e,t,o,n){this.setBorder(e,t,o,{...this.getCellBorder(e,t,o),...n})}setBorders(e,t,o){if("clear"===o)return this.clearBorders(e,t);for(let n of t){if("h"===o||"hv"===o||"all"===o)for(let t=n.top+1;t<=n.bottom;t++)for(let o=n.left;o<=n.right;o++)this.addBorder(e,o,t,{top:q});if("v"===o||"hv"===o||"all"===o)for(let t=n.top;t<=n.bottom;t++)for(let o=n.left+1;o<=n.right;o++)this.addBorder(e,o,t,{left:q});if("left"===o||"all"===o||"external"===o)for(let t=n.top;t<=n.bottom;t++)this.addBorder(e,n.left,t,{left:q});if("right"===o||"all"===o||"external"===o)for(let t=n.top;t<=n.bottom;t++)this.addBorder(e,n.right+1,t,{left:q});if("top"===o||"all"===o||"external"===o)for(let t=n.left;t<=n.right;t++)this.addBorder(e,t,n.top,{top:q});if("bottom"===o||"all"===o||"external"===o)for(let t=n.left;t<=n.right;t++)this.addBorder(e,t,n.bottom+1,{top:q})}}addBordersToMerge(e,t){const{left:o,right:n,top:i,bottom:r}=t,s=this.getCellBorder(e,o,i),a=this.getCellBorder(e,n,r);this.clearBorders(e,[t]),(null==s?void 0:s.top)&&this.setBorders(e,[{...t,bottom:i}],"top"),(null==s?void 0:s.left)&&this.setBorders(e,[{...t,right:o}],"left"),((null==a?void 0:a.bottom)||(null==s?void 0:s.bottom))&&this.setBorders(e,[{...t,top:r}],"bottom"),((null==a?void 0:a.right)||(null==s?void 0:s.right))&&this.setBorders(e,[{...t,left:n}],"right")}import(e){if(e.borders)for(let t of e.sheets)for(let[o,n]of Object.entries(t.cells))if(null==n?void 0:n.border){const i=e.borders[n.border],{col:r,row:s}=At(o);this.setBorder(t.id,r,s,i,!1)}for(let t of e.sheets)if(t.merges)for(let e of t.merges)this.addBordersToMerge(t.id,mo(e))}export(e){let t=0;const o={};function n(e){for(let[t,n]of Object.entries(o))if(ye(n)===ye(e))return parseInt(t,10);return o[++t]=e,t}for(let t of e.sheets)for(let e=0;e<t.colNumber;e++)for(let o=0;o<t.rowNumber;o++){const i=this.getCellBorder(t.id,e,o);if(i){const r=Ot(e,o),s=t.cells[r],a=n(i);s?s.border=a:t.cells[r]={border:a}}}e.borders=o}exportForExcel(e){this.export(e)}}Mm.getters=["getCellBorder"];const Nm=new RegExp(String.fromCharCode(160),"g");class _m extends Om{constructor(){super(...arguments),this.cells={},this.createCell=function(e){const t=_n.getAll().sort(((e,t)=>e.sequence-t.sequence));return function(o,n,i,r){const s=t.find((e=>e.match(n,i.format)));if(!s)return new rp(o,n,i);try{return s.createCell(o,n,i,r,e)}catch(e){return new dp(o,n,e instanceof c?e:new h(e.message||oe),i)}}}(this.getters)}adaptRanges(e,t){for(const o of Object.keys(this.cells))for(const n of Object.values(this.cells[o]||{}))if(n.isFormula())for(const i of n.dependencies)if(!t||i.sheetId===t){const t=e(i);"NONE"!==t.changeType&&this.history.update("cells",o,n.id,"dependencies",n.dependencies.indexOf(i),t.range)}}allowDispatch(e){switch(e.type){case"UPDATE_CELL":case"CLEAR_CELL":return this.checkCellOutOfSheet(e.sheetId,e.col,e.row);default:return 0}}handle(e){switch(e.type){case"SET_FORMATTING":"style"in e&&this.setStyle(e.sheetId,e.target,e.style),"format"in e&&void 0!==e.format&&this.setFormatter(e.sheetId,e.target,e.format);break;case"CLEAR_FORMATTING":this.clearFormatting(e.sheetId,e.target);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.handleAddColumnsRows(e,this.copyColumnStyle.bind(this)):this.handleAddColumnsRows(e,this.copyRowStyle.bind(this));break;case"UPDATE_CELL":this.updateCell(e.sheetId,e.col,e.row,e);break;case"CLEAR_CELL":this.dispatch("UPDATE_CELL",{sheetId:e.sheetId,col:e.col,row:e.row,content:"",style:null,format:""})}}setFormatter(e,t,o){for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let i=n.left;i<=n.right;i++)this.dispatch("UPDATE_CELL",{sheetId:e,col:i,row:t,format:o})}clearFormatting(e,t){for(let o of t)for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,style:null,format:""})}handleAddColumnsRows(e,t){let o,n;"before"===e.position?(o=Fe(e.base,e.base+e.quantity),n=e.base+e.quantity):(o=Fe(e.base+1,e.base+e.quantity+1),n=e.base),t(e.sheetId,n,o)}import(e){for(let t of e.sheets)for(let o in t.cells){const n=t.cells[o],{col:i,row:r}=At(o);if((null==n?void 0:n.content)||(null==n?void 0:n.format)||(null==n?void 0:n.style)){const o=this.importCell(t.id,n,e.styles,e.formats);this.history.update("cells",t.id,o.id,o),this.dispatch("UPDATE_CELL_POSITION",{cellId:o.id,col:i,row:r,sheetId:t.id})}}}export(e){const t={},o={};for(let n of e.sheets){const e={},i=Object.keys(this.cells[n.id]||{}).map((e=>this.getters.getCellPosition(e))).sort(((e,t)=>e.col===t.col?e.row-t.row:e.col-t.col));for(const{col:r,row:s}of i){const i=this.getters.getCell(n.id,r,s);e[Ot(r,s)]={style:i.style?Xe(i.style,t):void 0,format:i.format?Xe(i.format,o):void 0,content:i.content||void 0}}n.cells=e}e.styles=t,e.formats=o}importCell(e,t,o,n){const i=t.style&&o[t.style]||void 0,r=t.format&&n[t.format]||void 0,s=this.uuidGenerator.uuidv4(),a={format:r,style:i};return this.createCell(s,(null==t?void 0:t.content)||"",a,e)}exportForExcel(e){this.export(e);for(let t of e.sheets)for(const e in t.cells){const{col:o,row:n}=At(e),i=this.getters.getCell(t.id,o,n),r=t.cells[e];r.value=i.evaluated.value,r.isFormula=i.isFormula()}}getCells(e){return this.cells[e]||{}}getCellById(e){for(const t in this.cells){const o=this.cells[t][e];if(o)return o}}buildFormulaContent(e,t,o){const n=o||[...t.dependencies];return Ye(t.compiledFormula.tokens.map((t=>{if("REFERENCE"===t.type){const t=n.shift();return this.getters.getRangeString(t,e)}return t.value})))}getFormulaCellContent(e,t){return this.buildFormulaContent(e,t)}getCellStyle(e){return e&&e.style||{}}zoneToXC(e,t,o=[{colFixed:!1,rowFixed:!1}]){const n=Ot((t=this.getters.expandZone(e,t)).left,t.top,o[0]),i=Ot(t.right,t.bottom,o.length>1?o[1]:o[0]),r=this.getters.getMainCellPosition(e,t.left,t.top),s=this.getters.getMainCellPosition(e,t.right,t.bottom),a=r.col===s.col&&r.row===s.row;return n==i||a?n:n+":"+i}setStyle(e,t,o){for(let n of t)for(let t=n.left;t<=n.right;t++)for(let i=n.top;i<=n.bottom;i++){const n=this.getters.getCell(e,t,i);this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:i,style:o?{...null==n?void 0:n.style,...o}:void 0})}}copyColumnStyle(e,t,o){for(let n=0;n<this.getters.getNumberRows(e);n++){const i=this.getFormat(e,t,n);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,...i})}}copyRowStyle(e,t,o){for(let n=0;n<this.getters.getNumberCols(e);n++){const i=this.getFormat(e,n,t);if(i.style||i.format)for(let t of o)this.dispatch("UPDATE_CELL",{sheetId:e,col:n,row:t,...i})}}getFormat(e,t,o){const n={},{col:i,row:r}=this.getters.getMainCellPosition(e,t,o),s=this.getters.getCell(e,i,r);return s&&(s.style&&(n.style=s.style),s.format&&(n.format=s.format)),n}updateCell(e,t,o,n){var i;const r=this.getters.getCell(e,t,o),s="content"in n||"formula"in n,a=s?(null===(i=n.content)||void 0===i?void 0:i.replace(Nm,""))||"":(null==r?void 0:r.content)||"";let l;l=void 0!==n.style?n.style||void 0:r?r.style:void 0;let c=("format"in n?n.format:r&&r.format)||undefined;if((s&&!a&&!n.formula||!s&&(!r||r.isEmpty()))&&!l&&!c)return void(r&&(this.history.update("cells",e,r.id,void 0),this.dispatch("UPDATE_CELL_POSITION",{cellId:void 0,col:t,row:o,sheetId:e})));const h=(null==r?void 0:r.id)||this.uuidGenerator.uuidv4(),d=s,u={format:c,style:l},g=this.createCell(h,a,u,e);r&&!d&&g.isFormula()&&g.assignEvaluation(Ke(r.evaluated)),this.history.update("cells",e,g.id,g),this.dispatch("UPDATE_CELL_POSITION",{cellId:g.id,col:t,row:o,sheetId:e})}checkCellOutOfSheet(e,t,o){if(!this.getters.tryGetSheet(e))return 27;return To(t,o,this.getters.getSheetZone(e))?0:18}}_m.getters=["zoneToXC","getCells","getFormulaCellContent","getCellStyle","buildFormulaContent","getCellById"];class Fm extends Om{constructor(){super(...arguments),this.charts={},this.createChart=function(e){const t=Bo.getAll();return function(o,n,i){const r=t.find((e=>e.match(n.type)));if(!r)throw new Error(`No builder for this chart: ${n.type}`);return r.createChart(n,i,e)}}(this.getters),this.validateChartDefinition=e=>function(e,t){const o=Bo.getAll().find((e=>e.match(t.type)));if(!o)throw new Error("Unknown chart type.");return o.validateChartDefinition(e,t)}(this,e.definition)}adaptRanges(e){for(const[t,o]of Object.entries(this.charts))this.history.update("charts",t,null==o?void 0:o.updateRanges(e))}allowDispatch(e){switch(e.type){case"CREATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartDuplicate));case"UPDATE_CHART":return this.checkValidations(e,this.chainValidations(this.validateChartDefinition,this.checkChartExists));default:return 0}}handle(e){var t;switch(e.type){case"CREATE_CHART":this.addFigure(e.id,e.sheetId,e.position,e.size),this.addChart(e.id,e.definition);break;case"UPDATE_CHART":this.addChart(e.id,e.definition);break;case"DUPLICATE_SHEET":{const o=this.getters.getFigures(e.sheetId);for(const n of o)if("chart"===n.tag){const o=n.id.split("??").pop(),i=`${e.sheetIdTo}??${o}`,r=null===(t=this.charts[n.id])||void 0===t?void 0:t.copyForSheetId(e.sheetIdTo);r&&this.dispatch("CREATE_CHART",{id:i,position:{x:n.x,y:n.y},size:{width:n.width,height:n.height},definition:r.getDefinition(),sheetId:e.sheetIdTo})}break}case"DELETE_FIGURE":this.history.update("charts",e.id,void 0);break;case"DELETE_SHEET":for(let t of this.getChartIds(e.sheetId))this.history.update("charts",t,void 0)}}getContextCreationChart(e){var t;return null===(t=this.charts[e])||void 0===t?void 0:t.getContextCreation()}getChart(e){return this.charts[e]}getChartType(e){var t;const o=null===(t=this.charts[e])||void 0===t?void 0:t.type;if(!o)throw new Error("Chart not defined.");return o}isChartDefined(e){return e in this.charts&&void 0!==this.charts}getChartIds(e){return Object.entries(this.charts).filter((([,t])=>(null==t?void 0:t.sheetId)===e)).map((([e])=>e))}getChartDefinition(e){var t;const o=null===(t=this.charts[e])||void 0===t?void 0:t.getDefinition();if(!o)throw new Error(`There is no chart with the given figureId: ${e}`);return o}import(e){for(let t of e.sheets)if(t.figures)for(let e of t.figures)"chart"===e.tag&&(this.charts[e.id]=this.createChart(e.id,e.data,t.id))}export(e){var t;if(e.sheets)for(let o of e.sheets){const e=this.getters.getFigures(o.id),n=[];for(let o of e){const e=o;if(e&&"chart"===e.tag){const o=null===(t=this.charts[e.id])||void 0===t?void 0:t.getDefinition();o&&(e.data=o,n.push(e))}else n.push(e)}o.figures=n}}exportForExcel(e){var t;for(let o of e.sheets){const e=this.getters.getFigures(o.id),n=[];for(let o of e)if(o&&"chart"===o.tag){const e=null===(t=this.charts[o.id])||void 0===t?void 0:t.getDefinitionForExcel();e&&n.push({...o,data:e})}o.charts=n}}addFigure(e,t,o={x:0,y:0},n={width:536,height:335}){if(this.getters.getFigure(t,e))return;const i={id:e,x:o.x,y:o.y,width:n.width,height:n.height,tag:"chart"};this.dispatch("CREATE_FIGURE",{sheetId:t,figure:i})}addChart(e,t){const o=this.getters.getFigureSheetId(e);o&&this.history.update("charts",e,this.createChart(e,t,o))}checkChartDuplicate(e){return this.getters.getFigureSheetId(e.id)?83:0}checkChartExists(e){return this.getters.getFigureSheetId(e.id)?0:84}}function Dm(e){return""===e?NaN:Number(e)}Fm.getters=["isChartDefined","getChartDefinition","getChartType","getChartIds","getChart","getContextCreationChart"];class km extends Om{constructor(){super(...arguments),this.cfRules={}}loopThroughRangesOfSheet(e,t){for(const o of this.cfRules[e])for(const n of o.ranges){const i=t(n);switch(i.changeType){case"REMOVE":let t=o.ranges.slice();t.splice(o.ranges.indexOf(n),1),t.length>=1?this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",t):this.removeConditionalFormatting(o.id,e);break;case"RESIZE":case"MOVE":case"CHANGE":this.history.update("cfRules",e,this.cfRules[e].indexOf(o),"ranges",o.ranges.indexOf(n),i.range)}}}adaptRanges(e,t){if(t)this.loopThroughRangesOfSheet(t,e);else for(const t of Object.keys(this.cfRules))this.loopThroughRangesOfSheet(t,e)}allowDispatch(e){switch(e.type){case"ADD_CONDITIONAL_FORMAT":return this.checkValidations(e,this.checkCFRule,this.checkEmptyRange);case"MOVE_CONDITIONAL_FORMAT":return this.checkValidReordering(e.cfId,e.direction,e.sheetId)}return 0}handle(e){switch(e.type){case"CREATE_SHEET":this.cfRules[e.sheetId]=[];break;case"DUPLICATE_SHEET":this.history.update("cfRules",e.sheetIdTo,[]);for(const t of this.getConditionalFormats(e.sheetId))this.addConditionalFormatting(t,e.sheetIdTo);break;case"DELETE_SHEET":const t=Object.assign({},this.cfRules);delete t[e.sheetId],this.history.update("cfRules",t);break;case"ADD_CONDITIONAL_FORMAT":const o={...e.cf,ranges:e.ranges.map((t=>this.getters.getRangeString(this.getters.getRangeFromRangeData(t),e.sheetId)))};this.addConditionalFormatting(o,e.sheetId);break;case"REMOVE_CONDITIONAL_FORMAT":this.removeConditionalFormatting(e.id,e.sheetId);break;case"MOVE_CONDITIONAL_FORMAT":this.reorderConditionalFormatting(e.cfId,e.direction,e.sheetId)}}import(e){for(let t of e.sheets)this.cfRules[t.id]=t.conditionalFormats.map((e=>this.mapToConditionalFormatInternal(t.id,e)))}export(e){if(e.sheets)for(let t of e.sheets)this.cfRules[t.id]&&(t.conditionalFormats=this.cfRules[t.id].map((e=>this.mapToConditionalFormat(t.id,e))))}exportForExcel(e){this.export(e)}getConditionalFormats(e){var t;return(null===(t=this.cfRules[e])||void 0===t?void 0:t.map((t=>this.mapToConditionalFormat(e,t))))||[]}getRulesSelection(e,t){const o=new Set;return t.forEach((t=>{this.getRulesByZone(e,t).forEach((e=>{o.add(e)}))})),Array.from(o)}getRulesByZone(e,t){const o=new Set;for(let n=t.top;n<=t.bottom;n++)for(let i=t.left;i<=t.right;i++){this.getRulesByCell(e,i,n).forEach((e=>{o.add(e.id)}))}return o}getRulesByCell(e,t,o){const n=[];for(let i of this.cfRules[e])for(let e of i.ranges)To(t,o,e.zone)&&n.push(i);return new Set(n.map((t=>this.mapToConditionalFormat(e,t))))}mapToConditionalFormat(e,t){return{...t,ranges:t.ranges.map((t=>this.getters.getRangeString(t,e)))}}mapToConditionalFormatInternal(e,t){const o={...t,ranges:t.ranges.map((t=>this.getters.getRangeFromSheetXC(e,t)))};return o}addConditionalFormatting(e,t){const o=this.cfRules[t].slice(),n=o.findIndex((t=>t.id===e.id)),i=this.mapToConditionalFormatInternal(t,e);n>-1?o.splice(n,1,i):o.push(i),this.history.update("cfRules",t,o)}checkValidReordering(e,t,o){if(!this.cfRules[o])return 27;const n=this.cfRules[o].findIndex((t=>t.id===e));if(-1===n)return 70;const i="up"===t?n-1:n+1;return i<0||i>=this.cfRules[o].length?70:0}checkEmptyRange(e){return e.ranges.length?0:24}checkCFRule(e){const t=e.cf.rule;switch(t.type){case"CellIsRule":return this.checkValidations(t,this.checkOperatorArgsNumber(2,["Between","NotBetween"]),this.checkOperatorArgsNumber(1,["BeginsWith","ContainsText","EndsWith","GreaterThan","GreaterThanOrEqual","LessThan","LessThanOrEqual","NotContains"]),this.checkOperatorArgsNumber(0,["IsEmpty","IsNotEmpty"]));case"ColorScaleRule":return this.checkValidations(t,this.chainValidations(this.checkThresholds(this.checkFormulaCompilation)),this.chainValidations(this.checkThresholds(this.checkNaN),this.batchValidations(this.checkMinBiggerThanMax,this.checkMinBiggerThanMid,this.checkMidBiggerThanMax)));case"IconSetRule":return this.checkValidations(t,this.chainValidations(this.checkInflectionPoints(this.checkNaN),this.checkLowerBiggerThanUpper),this.chainValidations(this.checkInflectionPoints(this.checkFormulaCompilation)))}return 0}checkOperatorArgsNumber(e,t){if(e>2)throw new Error("Checking more than 2 arguments is currently not supported. Add the appropriate CommandResult if you want to.");return o=>{if(t.includes(o.operator)){const t=[],n=e=>void 0===e||""===e;return e>=1&&n(o.values[0])&&t.push(50),e>=2&&n(o.values[1])&&t.push(51),t.length?t:0}return 0}}checkNaN(e,t){if(["number","percentage","percentile"].includes(e.type)&&(""===e.value||isNaN(e.value)))switch(t){case"min":return 52;case"max":return 54;case"mid":return 53;case"upperInflectionPoint":return 55;case"lowerInflectionPoint":return 56}return 0}checkFormulaCompilation(e,t){if("formula"!==e.type)return 0;try{lg(e.value||"")}catch(e){switch(t){case"min":return 57;case"max":return 59;case"mid":return 58;case"upperInflectionPoint":return 60;case"lowerInflectionPoint":return 61}}return 0}checkThresholds(e){return this.batchValidations((t=>e(t.minimum,"min")),(t=>e(t.maximum,"max")),(t=>t.midpoint?e(t.midpoint,"mid"):0))}checkInflectionPoints(e){return this.batchValidations((t=>e(t.lowerInflectionPoint,"lowerInflectionPoint")),(t=>e(t.upperInflectionPoint,"upperInflectionPoint")))}checkLowerBiggerThanUpper(e){const t=e.lowerInflectionPoint.value,o=e.upperInflectionPoint.value;return["number","percentage","percentile"].includes(e.lowerInflectionPoint.type)&&e.lowerInflectionPoint.type===e.upperInflectionPoint.type&&Number(t)>Number(o)?47:0}checkMinBiggerThanMax(e){const t=e.minimum.value,o=e.maximum.value;return["number","percentage","percentile"].includes(e.minimum.type)&&e.minimum.type===e.maximum.type&&Dm(t)>=Dm(o)?46:0}checkMidBiggerThanMax(e){var t;const o=null===(t=e.midpoint)||void 0===t?void 0:t.value,n=e.maximum.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.midpoint.type===e.maximum.type&&Dm(o)>=Dm(n)?48:0}checkMinBiggerThanMid(e){var t;const o=e.minimum.value,n=null===(t=e.midpoint)||void 0===t?void 0:t.value;return e.midpoint&&["number","percentage","percentile"].includes(e.midpoint.type)&&e.minimum.type===e.midpoint.type&&Dm(o)>=Dm(n)?49:0}removeConditionalFormatting(e,t){const o=this.cfRules[t].findIndex((t=>t.id===e));if(-1!==o){const e=this.cfRules[t].slice();e.splice(o,1),this.history.update("cfRules",t,e)}}reorderConditionalFormatting(e,t,o){const n=this.cfRules[o].findIndex((t=>t.id===e)),i="up"===t?n-1:n+1;if(!(i<0||i>=this.cfRules[o].length)&&-1!==n&&-1!==i){const e=[...this.cfRules[o]],t=e[n];e[n]=e[i],e[i]=t,this.history.update("cfRules",o,e)}}}km.getters=["getConditionalFormats","getRulesSelection","getRulesByCell"];class $m extends Om{constructor(){super(...arguments),this.figures={}}allowDispatch(e){switch(e.type){case"CREATE_FIGURE":return this.checkFigureDuplicate(e.figure.id);case"UPDATE_FIGURE":case"DELETE_FIGURE":return this.checkFigureExists(e.sheetId,e.id);default:return 0}}handle(e){switch(e.type){case"CREATE_SHEET":this.figures[e.sheetId]={};break;case"DELETE_SHEET":this.deleteSheet(e.sheetId);break;case"CREATE_FIGURE":this.addFigure(e.figure,e.sheetId);break;case"UPDATE_FIGURE":const{type:t,sheetId:o,...n}=e,i=n;this.updateFigure(o,i);break;case"DELETE_FIGURE":this.removeFigure(e.id,e.sheetId)}}updateFigure(e,t){if("id"in t)for(const[o,n]of Object.entries(t))switch(o){case"x":case"y":void 0!==n&&this.history.update("figures",e,t.id,o,Math.max(n,0));break;case"width":case"height":void 0!==n&&this.history.update("figures",e,t.id,o,n)}}addFigure(e,t){this.history.update("figures",t,e.id,e)}deleteSheet(e){this.history.update("figures",e,void 0)}removeFigure(e,t){this.history.update("figures",t,e,void 0)}checkFigureExists(e,t){var o;return void 0===(null===(o=this.figures[e])||void 0===o?void 0:o[t])?69:0}checkFigureDuplicate(e){return Object.values(this.figures).find((t=>null==t?void 0:t[e]))?81:0}getFigures(e){return Object.values(this.figures[e]||{}).filter(Ze)}getFigure(e,t){var o;return null===(o=this.figures[e])||void 0===o?void 0:o[t]}getFigureSheetId(e){return Object.keys(this.figures).find((t=>{var o;return void 0!==(null===(o=this.figures[t])||void 0===o?void 0:o[e])}))}import(e){for(let t of e.sheets){const e={};t.figures.forEach((t=>{e[t.id]=t})),this.figures[t.id]=e}}export(e){for(const t of e.sheets)for(const e of this.getFigures(t.id)){const o=void 0;t.figures.push({...e,data:o})}}exportForExcel(e){this.export(e)}}$m.getters=["getFigures","getFigure","getFigureSheetId"];class Lm{constructor(e){this.filters=[],this.zone=e;const t=new po;this.id=t.uuidv4();for(const o of Fe(e.left,e.right+1)){const e={...this.zone,left:o,right:o};this.filters.push(new Pm(t.uuidv4(),e))}}get contentZone(){if(this.zone.bottom!==this.zone.top)return{...this.zone,top:this.zone.top+1}}getFilterId(e){var t;return null===(t=this.filters.find((t=>t.col===e)))||void 0===t?void 0:t.id}clone(){return new Lm(this.zone)}}class Pm{constructor(e,t){if(t.left!==t.right)throw new Error("Can only define a filter on a single column");this.id=e,this.zoneWithHeaders=t}get col(){return this.zoneWithHeaders.left}get filteredZone(){const e=this.zoneWithHeaders;if(e.bottom!==e.top)return{...e,top:e.top+1}}}class Um extends Om{constructor(){super(...arguments),this.tables={}}allowDispatch(e){switch(e.type){case"CREATE_FILTER_TABLE":if(!Vo(...e.target))return 80;const t=yo(...e.target),o=()=>this.getFilterTables(e.sheetId).some((e=>Io(e.zone,t)))?77:0,n=()=>{const o=this.getters.getMergesInZone(e.sheetId,t);for(let e of o)if(Io(t,e))return 79;return 0};return this.checkValidations(e,o,n);case"ADD_MERGE":for(let t of e.target)for(let o of this.getFilterTables(e.sheetId))if(Io(o.zone,t))return 79}return 0}handle(e){switch(e.type){case"CREATE_SHEET":this.history.update("tables",e.sheetId,{});break;case"DELETE_SHEET":const t={...this.tables};delete t[e.sheetId],this.history.update("tables",t);break;case"DUPLICATE_SHEET":this.history.update("tables",e.sheetIdTo,Ie(this.tables[e.sheetId]));break;case"ADD_COLUMNS_ROWS":this.onAddColumnsRows(e);break;case"REMOVE_COLUMNS_ROWS":this.onDeleteColumnsRows(e);break;case"CREATE_FILTER_TABLE":{const t=yo(...e.target),o=this.createFilterTable(t);this.history.update("tables",e.sheetId,o.id,o);break}case"REMOVE_FILTER_TABLE":{const t={};for(const o of this.getFilterTables(e.sheetId))e.target.every((e=>!xo(e,o.zone)))&&(t[o.id]=o);this.history.update("tables",e.sheetId,t);break}case"UPDATE_CELL":{const t=e.sheetId;for(let o of this.getFilterTables(t))this.canUpdateCellCmdExtendTable(e,o)&&this.extendTableDown(t,o);break}}}getFilters(e){return this.getFilterTables(e).map((e=>e.filters)).flat()}getFilterTables(e){return this.tables[e]?Object.values(this.tables[e]).filter(Ze):[]}getFilter(e,t,o){var n;return null===(n=this.getFilterTable(e,t,o))||void 0===n?void 0:n.filters.find((e=>e.col===t))}getFilterId(e,t,o){var n;return null===(n=this.getFilter(e,t,o))||void 0===n?void 0:n.id}getFilterTable(e,t,o){return this.getFilterTables(e).find((e=>To(t,o,e.zone)))}getFilterTablesInZone(e,t){return this.getFilterTables(e).filter((e=>Ao(e.zone,t)))}doesZonesContainFilter(e,t){for(const o of t)for(const t of this.getFilterTables(e))if(xo(o,t.zone))return!0;return!1}onAddColumnsRows(e){for(const t of this.getFilterTables(e.sheetId)){const o=So(t.zone,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity),n=[];for(const o of t.filters){const t=So(o.zoneWithHeaders,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity);n.push(new Pm(o.id,t))}if(n.length<No(o).width){for(let e=o.left;e<=o.right;e++)n.find((t=>t.col===e))||n.push(new Pm(this.uuidGenerator.uuidv4(),{...o,left:e,right:e}));n.sort(((e,t)=>e.col-t.col))}this.history.update("tables",e.sheetId,t.id,"zone",o),this.history.update("tables",e.sheetId,t.id,"filters",n)}}onDeleteColumnsRows(e){for(const t of this.getFilterTables(e.sheetId)){const o=wo(t.zone,"COL"===e.dimension?"left":"top",e.elements);if(o){if(bo(o)!==bo(t.zone)){const n=[];for(const o of t.filters){const t=wo(o.zoneWithHeaders,"COL"===e.dimension?"left":"top",e.elements);t&&n.push(new Pm(o.id,t))}this.history.update("tables",e.sheetId,t.id,"zone",o),this.history.update("tables",e.sheetId,t.id,"filters",n)}}else{const o={...this.tables[e.sheetId]};delete o[t.id],this.history.update("tables",e.sheetId,o)}}}createFilterTable(e){return new Lm(e)}extendTableDown(e,t){const o={...t.zone,bottom:t.zone.bottom+1};this.history.update("tables",e,t.id,"zone",o);for(let o=0;o<t.filters.length;o++){const n=t.filters[o],i={...n.zoneWithHeaders,bottom:n.zoneWithHeaders.bottom+1};this.history.update("tables",e,t.id,"filters",o,"zoneWithHeaders",i)}}canUpdateCellCmdExtendTable({content:e,sheetId:t,col:o,row:n},i){var r;if(!e)return;const s=i.zone;if(!(s.bottom+1===n&&o>=s.left&&o<=s.right))return!1;for(const e of Fe(s.left,s.right+1)){if(null===(r=this.getters.getCell(t,e,n))||void 0===r?void 0:r.content)return!1;if(this.getters.getFilter(t,e,n))return!1;if(this.getters.isInMerge(t,e,n))return!1}return!0}import(e){for(const t of e.sheets)for(const e of t.filterTables||[]){const o=this.createFilterTable(mo(e.range));this.history.update("tables",t.id,o.id,o)}}export(e){for(const t of e.sheets)for(const e of this.getFilterTables(t.id))t.filterTables.push({range:bo(e.zone)})}exportForExcel(e){this.export(e)}}Um.getters=["doesZonesContainFilter","getFilter","getFilters","getFilterTable","getFilterTables","getFilterTablesInZone","getFilterId"];class Vm extends Om{constructor(){super(...arguments),this.sizes={}}handle(e){var t,o,n;switch(e.type){case"CREATE_SHEET":{const t=this.computeSheetSizes(e.sheetId),o={COL:t.COL.map((e=>({manualSize:void 0,computedSize:Ke(e)}))),ROW:t.ROW.map((e=>({manualSize:void 0,computedSize:Ke(e)})))};this.history.update("sizes",e.sheetId,o);break}case"DUPLICATE_SHEET":for(const t of this.sizes[e.sheetId].ROW)t.computedSize();for(const t of this.sizes[e.sheetId].COL)t.computedSize();this.history.update("sizes",e.sheetIdTo,Ie(this.sizes[e.sheetId]));break;case"DELETE_SHEET":const i={...this.sizes};delete i[e.sheetId],this.history.update("sizes",i);break;case"REMOVE_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);const o=Math.min(...e.elements);t=t.map(((t,n)=>"ROW"===e.dimension&&n>=o?{manualSize:t.manualSize,computedSize:Ke((()=>this.getRowTallestCellSize(e.sheetId,n)))}:t)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{let t=[...this.sizes[e.sheetId][e.dimension]];const o=Je(e.position,e.base),n=t[e.base];t.splice(o,0,...Array(e.quantity).fill(n)),t=t.map(((t,o)=>"ROW"===e.dimension&&o>e.base+e.quantity?{manualSize:t.manualSize,computedSize:Ke((()=>this.getRowTallestCellSize(e.sheetId,o)))}:t)),this.history.update("sizes",e.sheetId,e.dimension,t);break}case"RESIZE_COLUMNS_ROWS":for(let t of e.elements)if("ROW"===e.dimension){const o=this.getRowTallestCellSize(e.sheetId,t);this.history.update("sizes",e.sheetId,e.dimension,t,{manualSize:e.size||void 0,computedSize:Ke(o)})}else this.history.update("sizes",e.sheetId,e.dimension,t,{manualSize:e.size||void 0,computedSize:Ke(e.size||N)});break;case"UPDATE_CELL":if(!(null===(n=null===(o=null===(t=this.sizes[e.sheetId])||void 0===t?void 0:t.ROW)||void 0===o?void 0:o[e.row])||void 0===n?void 0:n.manualSize)){const{sheetId:t,row:o}=e;this.history.update("sizes",t,"ROW",o,"computedSize",Ke((()=>this.getRowTallestCellSize(t,o))))}break;case"ADD_MERGE":case"REMOVE_MERGE":for(let t of e.target)for(let o of Fe(t.top,t.bottom+1)){const t=this.getRowTallestCellSize(e.sheetId,o);t!==this.getRowSize(e.sheetId,o)&&this.history.update("sizes",e.sheetId,"ROW",o,"computedSize",Ke(t))}}}getColSize(e,t){return this.getHeaderSize(e,"COL",t)}getRowSize(e,t){return this.getHeaderSize(e,"ROW",t)}getHeaderSize(e,t,o){var n,i,r,s;return Math.round((null===(i=null===(n=this.sizes[e])||void 0===n?void 0:n[t][o])||void 0===i?void 0:i.manualSize)||(null===(s=null===(r=this.sizes[e])||void 0===r?void 0:r[t][o])||void 0===s?void 0:s.computedSize())||this.getDefaultHeaderSize(t))}computeSheetSizes(e){var t,o;const n={COL:[],ROW:[]};for(let t of Fe(0,this.getters.getNumberCols(e)))n.COL.push(this.getHeaderSize(e,"COL",t));for(let i of Fe(0,this.getters.getNumberRows(e))){let r=null===(o=null===(t=this.sizes[e])||void 0===t?void 0:t.ROW)||void 0===o?void 0:o[i].manualSize;if(!r){r=this.getRowTallestCellSize(e,i)}n.ROW.push(r)}return n}getDefaultHeaderSize(e){return"COL"===e?N:_}getCellHeight(e,t,o){const n=this.getters.getMerge(e,t,o);if(n&&n.bottom!==n.top)return _;const i=this.getters.getCell(e,t,o);return(null==(r=null==i?void 0:i.style)?void 0:r.fontSize)?(s||1)*(_e(r)+L)-L+2*P:_;var r,s}getRowTallestCellSize(e,t){const o=this.getters.getRowCells(e,t);let n=0;for(let t=0;t<o.length;t++){const i=this.getters.getCellById(o[t]);if(!i)continue;const{col:r,row:s}=this.getters.getCellPosition(i.id),a=this.getCellHeight(e,r,s);a>n&&a>_&&(n=a)}return n<=_?_:n}import(e){for(let t of e.sheets){const e={COL:[],ROW:[]};for(let[o,n]of Object.entries(t.rows))n.size&&(e.ROW[o]=n.size);for(let[o,n]of Object.entries(t.cols))n.size&&(e.COL[o]=n.size);const o=this.computeSheetSizes(t.id);this.sizes[t.id]={COL:o.COL.map(((t,o)=>({manualSize:e.COL[o],computedSize:Ke(t)}))),ROW:o.ROW.map(((t,o)=>({manualSize:e.ROW[o],computedSize:Ke(t)})))}}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){var o,n;for(let i of e.sheets){void 0===i.rows&&(i.rows={});for(let e of Fe(0,this.getters.getNumberRows(i.id)))(t||(null===(o=this.sizes[i.id].ROW[e])||void 0===o?void 0:o.manualSize))&&(i.rows[e]={...i.rows[e],size:this.getRowSize(i.id,e)});void 0===i.cols&&(i.cols={});for(let e of Fe(0,this.getters.getNumberCols(i.id)))(t||(null===(n=this.sizes[i.id].COL[e])||void 0===n?void 0:n.manualSize))&&(i.cols[e]={...i.cols[e],size:this.getColSize(i.id,e)})}}}Vm.getters=["getRowSize","getColSize"];class zm extends Om{constructor(){super(...arguments),this.hiddenHeaders={}}allowDispatch(e){if("HIDE_COLUMNS_ROWS"===e.type){if(!this.hiddenHeaders[e.sheetId])return 27;const t="COL"===e.dimension?this.getHiddenColsGroups(e.sheetId):this.getHiddenRowsGroups(e.sheetId),o="COL"===e.dimension?this.getters.getNumberCols(e.sheetId):this.getters.getNumberRows(e.sheetId);return(t||[]).flat().concat(e.elements).length<o?0:65}return 0}handle(e){switch(e.type){case"CREATE_SHEET":const t={COL:Array(this.getters.getNumberCols(e.sheetId)).fill(!1),ROW:Array(this.getters.getNumberRows(e.sheetId)).fill(!1)};this.history.update("hiddenHeaders",e.sheetId,t);break;case"DUPLICATE_SHEET":this.history.update("hiddenHeaders",e.sheetIdTo,Ie(this.hiddenHeaders[e.sheetId]));break;case"DELETE_SHEET":this.history.update("hiddenHeaders",e.sheetId,void 0);break;case"REMOVE_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]];for(let o of[...e.elements].sort(((e,t)=>t-e)))t.splice(o,1);this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"ADD_COLUMNS_ROWS":{const t=[...this.hiddenHeaders[e.sheetId][e.dimension]],o=Je(e.position,e.base);t.splice(o,0,...Array(e.quantity).fill(!1)),this.history.update("hiddenHeaders",e.sheetId,e.dimension,t);break}case"HIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!0);break;case"UNHIDE_COLUMNS_ROWS":for(let t of e.elements)this.history.update("hiddenHeaders",e.sheetId,e.dimension,t,!1)}}isRowHiddenByUser(e,t){return this.hiddenHeaders[e].ROW[t]}isColHiddenByUser(e,t){return this.hiddenHeaders[e].COL[t]}getHiddenColsGroups(e){const t=[[]],o=this.hiddenHeaders[e].COL;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}getHiddenRowsGroups(e){const t=[[]],o=this.hiddenHeaders[e].ROW;for(let e=0;e<o.length;e++){o[e]?t[t.length-1].push(e):0!==t[t.length-1].length&&t.push([])}return 0===t[t.length-1].length&&t.pop(),t}import(e){var t,o;for(let n of e.sheets){this.hiddenHeaders[n.id]={COL:[],ROW:[]};for(let e=0;e<n.rowNumber;e++)this.hiddenHeaders[n.id].ROW[e]=Boolean(null===(t=n.rows[e])||void 0===t?void 0:t.isHidden);for(let e=0;e<n.colNumber;e++)this.hiddenHeaders[n.id].COL[e]=Boolean(null===(o=n.cols[e])||void 0===o?void 0:o.isHidden)}}exportForExcel(e){this.exportData(e,!0)}export(e){this.exportData(e)}exportData(e,t=!1){for(let o of e.sheets){void 0===o.rows&&(o.rows={});for(let e=0;e<this.getters.getNumberRows(o.id);e++)(t||this.hiddenHeaders[o.id].ROW[e])&&(void 0===o.rows[e]&&(o.rows[e]={}),o.rows[e].isHidden=this.hiddenHeaders[o.id].ROW[e]);void 0===o.cols&&(o.cols={});for(let e=0;e<this.getters.getNumberCols(o.id);e++)(t||this.hiddenHeaders[o.id].COL[e])&&(void 0===o.cols[e]&&(o.cols[e]={}),o.cols[e].isHidden=this.hiddenHeaders[o.id].COL[e])}}}zm.getters=["getHiddenColsGroups","getHiddenRowsGroups","isRowHiddenByUser","isColHiddenByUser"];class Bm extends Om{constructor(){super(...arguments),this.nextId=1,this.merges={},this.mergeCellMap={}}allowDispatch(e){const t="force"in e&&!!e.force;switch(e.type){case"ADD_MERGE":return t?this.checkValidations(e,this.checkFrozenPanes):this.checkValidations(e,this.checkDestructiveMerge,this.checkOverlap,this.checkFrozenPanes);case"UPDATE_CELL":return this.checkMergedContentUpdate(e);case"REMOVE_MERGE":return this.checkMergeExists(e);default:return 0}}handle(e){switch(e.type){case"CREATE_SHEET":case"DELETE_SHEET":this.history.update("merges",e.sheetId,{}),this.history.update("mergeCellMap",e.sheetId,{});break;case"DUPLICATE_SHEET":const t=this.merges[e.sheetId];if(!t)break;for(const o of Object.values(t).filter(Ze))this.addMerge(e.sheetIdTo,o.zone);break;case"ADD_MERGE":for(const t of e.target)this.addMerge(e.sheetId,t);break;case"REMOVE_MERGE":for(const t of e.target)this.removeMerge(e.sheetId,t)}}adaptRanges(e,t){const o=t?[t]:Object.keys(this.merges);for(const t of o)this.applyRangeChangeOnSheet(t,e)}getMerges(e){return Object.keys(this.merges[e]||{}).map((t=>this.getMergeById(e,parseInt(t,10)))).filter(Ze)}getMerge(e,t,o){var n;const i=this.mergeCellMap[e],r=i?t in i&&(null===(n=i[t])||void 0===n?void 0:n[o]):void 0;return r?this.getMergeById(e,r):void 0}getMergesInZone(e,t){var o;const n=this.mergeCellMap[e];if(!n)return[];const i=new Set;for(const{col:e,row:r}of Fo(t)){const t=null===(o=n[e])||void 0===o?void 0:o[r];t&&i.add(t)}return Array.from(i).map((t=>this.getMergeById(e,t))).filter(Ze)}doesIntersectMerge(e,t){const{left:o,right:n,top:i,bottom:r}=t;for(let t=i;t<=r;t++)for(let i=o;i<=n;i++)if(this.getMerge(e,i,t))return!0;return!1}doesColumnsHaveCommonMerges(e,t,o){const n=this.getters.getSheet(e);for(let i=0;i<this.getters.getNumberRows(e);i++)if(this.isInSameMerge(n.id,t,i,o,i))return!0;return!1}doesRowsHaveCommonMerges(e,t,o){const n=this.getters.getSheet(e);for(let i=0;i<=this.getters.getNumberCols(e);i++)if(this.isInSameMerge(n.id,i,t,i,o))return!0;return!1}expandZone(e,t){let{left:o,right:n,top:i,bottom:r}=t,s={left:o,right:n,top:i,bottom:r};for(let t in this.merges[e]){const o=this.getMergeById(e,parseInt(t));o&&Io(o,s)&&(s=yo(o,s))}return Ro(s,t)?s:this.expandZone(e,s)}isInSameMerge(e,t,o,n,i){const r=this.getMerge(e,t,o),s=this.getMerge(e,n,i);return!(!r||!s)&&Ro(r,s)}isInMerge(e,t,o){var n;const i=this.mergeCellMap[e];return!!i&&(t in i&&Boolean(null===(n=i[t])||void 0===n?void 0:n[o]))}getMainCellPosition(e,t,o){if(!this.isInMerge(e,t,o))return{col:t,row:o};const n=this.getMerge(e,t,o).topLeft;return{col:n.col,row:n.row}}getBottomLeftCell(e,t,o){if(!this.isInMerge(e,t,o))return{col:t,row:o};const{bottom:n,left:i}=this.getMerge(e,t,o);return{col:i,row:n}}isMergeHidden(e,t){const o=this.getters.getHiddenColsGroups(e),n=this.getters.getHiddenRowsGroups(e);for(let e of o)if(t.left>=e[0]&&t.right<=e[e.length-1])return!0;for(let e of n)if(t.top>=e[0]&&t.bottom<=e[e.length-1])return!0;return!1}isSingleCellOrMerge(e,t){const o=this.getMerge(e,t.left,t.top);if(o)return Ro(t,o);const{width:n,height:i}=No(t);return 1===n&&1===i}isMergeDestructive(e,t){let{left:o,right:n,top:i,bottom:r}=t;n=Oe(n,0,this.getters.getNumberCols(e)-1),r=Oe(r,0,this.getters.getNumberRows(e)-1);for(let t=i;t<=r;t++)for(let r=o;r<=n;r++)if(r!==o||t!==i){const o=this.getters.getCell(e,r,t);if(o&&!o.isEmpty())return!0}return!1}getMergeById(e,t){var o;const n=null===(o=this.merges[e])||void 0===o?void 0:o[t];return void 0!==n?Wm(t,n):void 0}checkDestructiveMerge({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return 0;return t.some((t=>this.isMergeDestructive(e,t)))?3:0}checkOverlap({target:e}){for(const t of e)for(const o of e)if(t!==o&&Io(t,o))return 64;return 0}checkFrozenPanes({sheetId:e,target:t}){if(!this.getters.tryGetSheet(e))return 0;const{xSplit:o,ySplit:n}=this.getters.getPaneDivisions(e);for(const e of t)if(e.left<o&&e.right>=o||e.top<n&&e.bottom>=n)return 74;return 0}checkMergedContentUpdate(e){const{col:t,row:o,sheetId:n,content:i}=e;if(void 0===i)return 0;const{col:r,row:s}=this.getMainCellPosition(n,t,o);return r===t&&s===o?0:4}checkMergeExists(e){const{sheetId:t,target:o}=e;for(const e of o){const{left:o,top:n}=e,i=this.getMerge(t,o,n);if(void 0===i||!Ro(e,i))return 5}return 0}addMerge(e,t){let{left:o,right:n,top:i,bottom:r}=t;n=Oe(n,0,this.getters.getNumberCols(e)-1),r=Oe(r,0,this.getters.getNumberRows(e)-1);if(Ot(o,i)===Ot(n,r))return;const s=this.getters.getCell(e,o,i);let a=this.nextId++;this.history.update("merges",e,a,this.getters.getRangeFromSheetXC(e,bo({left:o,top:i,right:n,bottom:r})));let l=new Set;for(let t=i;t<=r;t++)for(let r=o;r<=n;r++){r===o&&t===i||this.dispatch("UPDATE_CELL",{sheetId:e,col:r,row:t,style:s?s.style:null,content:""});const n=this.getMerge(e,r,t);n&&l.add(n.id),this.history.update("mergeCellMap",e,r,t,a)}for(let t of l){const{top:o,bottom:n,left:i,right:r}=this.getMergeById(e,t);for(let t=o;t<=n;t++)for(let o=i;o<=r;o++){const n=this.getMerge(e,o,t);n&&n.id===a||(this.history.update("mergeCellMap",e,o,t,void 0),this.dispatch("CLEAR_CELL",{sheetId:e,col:o,row:t}))}this.history.update("merges",e,t,void 0)}}removeMerge(e,t){const{left:o,top:n,bottom:i,right:r}=t,s=this.getMerge(e,o,n);if(void 0!==s&&Ro(t,s)){this.history.update("merges",e,s.id,void 0);for(let t=n;t<=i;t++)for(let n=o;n<=r;n++)this.history.update("mergeCellMap",e,n,t,void 0)}}applyRangeChangeOnSheet(e,t){const o=Object.entries(this.merges[e]||{});for(const[n,i]of o)if(i){const o=i.zone,r=t(i);switch(r.changeType){case"NONE":break;case"REMOVE":this.removeMerge(e,o);break;default:const{width:t,height:i}=No(r.range.zone);1===t&&1===i?this.removeMerge(e,o):this.history.update("merges",e,parseInt(n,10),r.range)}}this.history.update("mergeCellMap",e,{});for(const t of this.getMerges(e))for(const{col:o,row:n}of Fo(t))this.history.update("mergeCellMap",e,o,n,t.id)}import(e){const t=e.sheets||[];for(let e of t)this.history.update("merges",e.id,{}),this.history.update("mergeCellMap",e.id,{}),e.merges&&this.importMerges(e.id,e.merges)}importMerges(e,t){for(let o of t)this.addMerge(e,mo(o))}export(e){for(let t of e.sheets){const e=this.merges[t.id];e&&t.merges.push(...Hm(e))}}exportForExcel(e){this.export(e)}}function Hm(e){return Object.entries(e).map((([e,t])=>t?Wm(parseInt(e,10),t):void 0)).filter(Ze).map((e=>Ot(e.left,e.top)+":"+Ot(e.right,e.bottom)))}function Wm(e,t){return{...t.zone,topLeft:{col:t.zone.left,row:t.zone.top},id:e}}Bm.getters=["isInMerge","isInSameMerge","isMergeHidden","getMainCellPosition","getBottomLeftCell","expandZone","doesIntersectMerge","doesColumnsHaveCommonMerges","doesRowsHaveCommonMerges","getMerges","getMerge","getMergesInZone","isSingleCellOrMerge"];class Gm extends Om{constructor(){super(...arguments),this.sheetIdsMapName={},this.orderedSheetIds=[],this.sheets={},this.cellPosition={}}allowDispatch(e){const t=this.chainValidations(this.checkSheetExists,this.checkZones)(e);if(0!==t)return t;switch(e.type){case"HIDE_SHEET":return 1===this.getVisibleSheetIds().length?9:0;case"CREATE_SHEET":return this.checkValidations(e,this.checkSheetName,this.checkSheetPosition);case"MOVE_SHEET":const t=this.orderedSheetIds.indexOf(e.sheetId);if("left"===e.direction){return this.orderedSheetIds.slice(0,t).map((e=>!this.isSheetVisible(e))).every((e=>e))?14:0}return this.orderedSheetIds.slice(t+1).map((e=>!this.isSheetVisible(e))).every((e=>e))?14:0;case"RENAME_SHEET":return this.isRenameAllowed(e);case"DELETE_SHEET":return this.orderedSheetIds.length>1?0:9;case"REMOVE_COLUMNS_ROWS":return("COL"===e.dimension?this.getNumberCols(e.sheetId):this.getNumberRows(e.sheetId))>e.elements.length?0:8;case"FREEZE_ROWS":return this.checkValidations(e,this.checkRowFreezeQuantity,this.checkRowFreezeOverlapMerge);case"FREEZE_COLUMNS":return this.checkValidations(e,this.checkColFreezeQuantity,this.checkColFreezeOverlapMerge);default:return 0}}handle(e){switch(e.type){case"SET_GRID_LINES_VISIBILITY":this.setGridLinesVisibility(e.sheetId,e.areGridLinesVisible);break;case"DELETE_CONTENT":this.clearZones(e.sheetId,e.target);break;case"CREATE_SHEET":const t=this.createSheet(e.sheetId,e.name||this.getNextSheetName(),e.cols||26,e.rows||100,e.position);this.history.update("sheetIdsMapName",t.name,t.id);break;case"MOVE_SHEET":this.moveSheet(e.sheetId,e.direction);break;case"RENAME_SHEET":this.renameSheet(this.sheets[e.sheetId],e.name);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);break;case"DELETE_SHEET":this.deleteSheet(this.sheets[e.sheetId]);break;case"REMOVE_COLUMNS_ROWS":"COL"===e.dimension?this.removeColumns(this.sheets[e.sheetId],[...e.elements]):this.removeRows(this.sheets[e.sheetId],[...e.elements]);break;case"ADD_COLUMNS_ROWS":"COL"===e.dimension?this.addColumns(this.sheets[e.sheetId],e.base,e.position,e.quantity):this.addRows(this.sheets[e.sheetId],e.base,e.position,e.quantity);break;case"UPDATE_CELL_POSITION":this.updateCellPosition(e);break;case"FREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,e.quantity,"COL");break;case"FREEZE_ROWS":this.setPaneDivisions(e.sheetId,e.quantity,"ROW");break;case"UNFREEZE_ROWS":this.setPaneDivisions(e.sheetId,0,"ROW");break;case"UNFREEZE_COLUMNS":this.setPaneDivisions(e.sheetId,0,"COL");break;case"UNFREEZE_COLUMNS_ROWS":this.setPaneDivisions(e.sheetId,0,"COL"),this.setPaneDivisions(e.sheetId,0,"ROW")}}import(e){var t,o;for(let t of e.sheets)this.sheetIdsMapName[t.name]=t.id;for(let n of e.sheets){const e=n.name||i("Sheet")+(Object.keys(this.sheets).length+1),{colNumber:r,rowNumber:s}=this.getImportedSheetSize(n),a={id:n.id,name:e,numberOfCols:r,rows:go(s),areGridLinesVisible:void 0===n.areGridLinesVisible||n.areGridLinesVisible,isVisible:n.isVisible,panes:{xSplit:(null===(t=n.panes)||void 0===t?void 0:t.xSplit)||0,ySplit:(null===(o=n.panes)||void 0===o?void 0:o.ySplit)||0}};this.orderedSheetIds.push(a.id),this.sheets[a.id]=a}}exportSheets(e){e.sheets=this.orderedSheetIds.filter(Ze).map((e=>{const t=this.sheets[e],o={id:t.id,name:t.name,colNumber:t.numberOfCols,rowNumber:this.getters.getNumberRows(t.id),rows:{},cols:{},merges:[],cells:{},conditionalFormats:[],figures:[],filterTables:[],areGridLinesVisible:void 0===t.areGridLinesVisible||t.areGridLinesVisible,isVisible:t.isVisible};return(t.panes.xSplit||t.panes.ySplit)&&(o.panes=t.panes),o}))}export(e){this.exportSheets(e)}exportForExcel(e){this.exportSheets(e)}getGridLinesVisibility(e){return this.getSheet(e).areGridLinesVisible}tryGetSheet(e){return this.sheets[e]}getSheet(e){const t=this.sheets[e];if(!t)throw new Error(`Sheet ${e} not found.`);return t}isSheetVisible(e){return this.getSheet(e).isVisible}getSheetName(e){return this.getSheet(e).name}getCellsInZone(e,t){return Fo(t).map((({col:t,row:o})=>this.getCell(e,t,o)))}tryGetSheetName(e){var t;return null===(t=this.tryGetSheet(e))||void 0===t?void 0:t.name}getSheetIdByName(e){if(e){const t=Te(e);for(const e in this.sheetIdsMapName)if(e.toUpperCase()===t.toUpperCase())return this.sheetIdsMapName[e]}}getSheetIds(){return this.orderedSheetIds}getVisibleSheetIds(){return this.orderedSheetIds.filter(this.isSheetVisible.bind(this))}getEvaluationSheets(){return this.sheets}doesHeaderExist(e,t,o){return"COL"===t?o>=0&&o<this.getNumberCols(e):o>=0&&o<this.getNumberRows(e)}getRow(e,t){const o=this.getSheet(e).rows[t];if(!o)throw new Error(`Row ${o} not found.`);return o}getCell(e,t,o){var n;const i=this.tryGetSheet(e),r=null===(n=null==i?void 0:i.rows[o])||void 0===n?void 0:n.cells[t];if(void 0!==r)return this.getters.getCellById(r)}getColCells(e,t){return this.getSheet(e).rows.map((e=>e.cells[t])).filter(Ze).map((e=>this.getters.getCellById(e))).filter(Ze)}getColsZone(e,t,o){return{top:0,bottom:this.getNumberRows(e)-1,left:t,right:o}}getRowCells(e,t){var o;return Object.values(null===(o=this.getSheet(e).rows[t])||void 0===o?void 0:o.cells).filter(Ze)}getRowsZone(e,t,o){return{top:t,bottom:o,left:0,right:this.getSheet(e).numberOfCols-1}}getCellPosition(e){const t=this.cellPosition[e];if(!t)throw new Error(`asking for a cell position that doesn't exist, cell id: ${e}`);return t}getNumberCols(e){return this.getSheet(e).numberOfCols}getNumberRows(e){return this.getSheet(e).rows.length}getNumberHeaders(e,t){return"COL"===t?this.getNumberCols(e):this.getNumberRows(e)}getNextSheetName(e="Sheet"){let t=1;const o=this.orderedSheetIds.map(this.getSheetName.bind(this));let n=`${e}${t}`;for(;o.includes(n);)n=`${e}${t}`,t++;return n}getSheetSize(e){return{height:this.getNumberRows(e),width:this.getNumberCols(e)}}getSheetZone(e){return{top:0,left:0,bottom:this.getNumberRows(e)-1,right:this.getNumberCols(e)-1}}getPaneDivisions(e){return this.getSheet(e).panes}setPaneDivisions(e,t,o){const n={...this.getPaneDivisions(e)};"COL"===o?n.xSplit=t:"ROW"===o&&(n.ySplit=t),this.history.update("sheets",e,"panes",n)}isEmpty(e,t){return this.getCellsInZone(e,t).flat().every((e=>!e||e.isEmpty()))}updateCellPosition(e){const{sheetId:t,cellId:o,col:n,row:i}=e;o?this.setNewPosition(o,t,n,i):this.clearPosition(t,n,i)}setNewPosition(e,t,o,n){const i=this.cellPosition[e];i&&this.clearPosition(t,i.col,i.row),this.history.update("cellPosition",e,{row:n,col:o,sheetId:t}),this.history.update("sheets",t,"rows",n,"cells",o,e)}clearPosition(e,t,o){var n;const i=null===(n=this.sheets[e])||void 0===n?void 0:n.rows[o].cells[t];i&&(this.history.update("cellPosition",i,void 0),this.history.update("sheets",e,"rows",o,"cells",t,void 0))}setGridLinesVisibility(e,t){this.history.update("sheets",e,"areGridLinesVisible",t)}clearZones(e,t){for(let o of t)for(let t=o.left;t<=o.right;t++)for(let n=o.top;n<=o.bottom;n++){this.sheets[e].rows[n].cells[t]&&this.dispatch("UPDATE_CELL",{sheetId:e,content:"",col:t,row:n})}}createSheet(e,t,o,n,i){const r={id:e,name:t,numberOfCols:o,rows:go(n),areGridLinesVisible:!0,isVisible:!0,panes:{xSplit:0,ySplit:0}},s=this.orderedSheetIds.slice();s.splice(i,0,r.id);const a=this.sheets;return this.history.update("orderedSheetIds",s),this.history.update("sheets",Object.assign({},a,{[r.id]:r})),r}moveSheet(e,t){const o=this.orderedSheetIds.slice(),n=o.findIndex((t=>t===e)),i=o.splice(n,1);let r="left"===t?this.findIndexOfPreviousVisibleSheet(n-1,o):this.findIndexOfNextVisibleSheet(n+1,o);void 0===r&&(r=o.length),o.splice(r,0,i[0]),this.history.update("orderedSheetIds",o)}findIndexOfPreviousVisibleSheet(e,t){for(;e>=0&&!this.isSheetVisible(t[e]);)e--;if(-1===e)throw new Error("There is no previous visible sheet");return e}findIndexOfNextVisibleSheet(e,t){for(;e<t.length&&!this.isSheetVisible(t[e]);)e++;if(e!==t.length-1||this.isSheetVisible(t[e-1]))return e}checkSheetName(e){const{orderedSheetIds:t,sheets:o}=this,n=e.name&&e.name.trim().toLowerCase();return t.find((e=>{var t;return(null===(t=o[e])||void 0===t?void 0:t.name.toLowerCase())===n}))?11:ee.test(n)?13:0}checkSheetPosition(e){const{orderedSheetIds:t}=this;return e.position>t.length||e.position<0?15:0}checkRowFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberRows(e.sheetId)?0:73}checkColFreezeQuantity(e){return e.quantity>=1&&e.quantity<this.getNumberCols(e.sheetId)?0:73}checkRowFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.top<e.quantity&&e.quantity<=o.bottom)return 64;return 0}checkColFreezeOverlapMerge(e){const t=this.getters.getMerges(e.sheetId);for(let o of t)if(o.left<e.quantity&&e.quantity<=o.right)return 64;return 0}isRenameAllowed(e){return e.name&&e.name.trim().toLowerCase()?this.checkSheetName(e):10}renameSheet(e,t){const o=e.name;this.history.update("sheets",e.id,"name",t.trim());const n=Object.assign({},this.sheetIdsMapName);n[t]=e.id,delete n[o],this.history.update("sheetIdsMapName",n)}hideSheet(e){this.history.update("sheets",e,"isVisible",!1)}showSheet(e){this.history.update("sheets",e,"isVisible",!0)}duplicateSheet(e,t){const o=this.getSheet(e),n=this.getDuplicateSheetName(o.name),i=JSON.parse(JSON.stringify(o));i.id=t,i.name=n;for(let e=0;e<=i.numberOfCols;e++)for(let t=0;t<=i.rows.length;t++)i.rows[t]&&(i.rows[t].cells[e]=void 0);const r=this.orderedSheetIds.slice(),s=r.indexOf(e);r.splice(s+1,0,i.id),this.history.update("orderedSheetIds",r),this.history.update("sheets",Object.assign({},this.sheets,{[i.id]:i}));for(const t of Object.values(this.getters.getCells(e))){const{col:e,row:o}=this.getCellPosition(t.id);this.dispatch("UPDATE_CELL",{sheetId:i.id,col:e,row:o,content:t.content,format:t.format,style:t.style})}const a=Object.assign({},this.sheetIdsMapName);a[i.name]=i.id,this.history.update("sheetIdsMapName",a)}getDuplicateSheetName(e){let t=1;const o=this.orderedSheetIds.map(this.getSheetName.bind(this)),n=r("Copy of %s",e);let i=n.toString();for(;o.includes(i);)i=`${n} (${t})`,t++;return i}deleteSheet(e){const t=e.name,o=Object.assign({},this.sheets);delete o[e.id],this.history.update("sheets",o);const n=this.orderedSheetIds.slice(),i=n.indexOf(e.id);n.splice(i,1),this.history.update("orderedSheetIds",n);const r=Object.assign({},this.sheetIdsMapName);delete r[t],this.history.update("sheetIdsMapName",r)}removeColumns(e,t){t.sort(((e,t)=>t-e));for(let o of t)this.moveCellOnColumnsDeletion(e,o);const o=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",o-t.length);const n=t.filter((t=>t<e.panes.xSplit)).length;n&&this.setPaneDivisions(e.id,e.panes.xSplit-n,"COL")}removeRows(e,t){t.sort(((e,t)=>t-e));for(let o of De(t))this.moveCellOnRowsDeletion(e,o[o.length-1],o[0]),o.map((t=>this.updateRowsStructureOnDeletion(t,e)));const o=t.filter((t=>t<e.panes.ySplit)).length;o&&this.setPaneDivisions(e.id,e.panes.ySplit-o,"ROW")}addColumns(e,t,o,n){const i="before"===o?t:t+1;this.moveCellsOnAddition(e,i,n,"columns");const r=this.sheets[e.id].numberOfCols;this.history.update("sheets",e.id,"numberOfCols",r+n),i<e.panes.xSplit&&this.setPaneDivisions(e.id,e.panes.xSplit+n,"COL")}addRows(e,t,o,n){const i="before"===o?t:t+1;this.addEmptyRows(e,n),this.moveCellsOnAddition(e,i,n,"rows"),this.updateRowsStructureOnAddition(e,t,n),i<e.panes.ySplit&&this.setPaneDivisions(e.id,e.panes.ySplit+n,"ROW")}moveCellOnColumnsDeletion(e,t){for(let[o,n]of Object.entries(e.rows)){const i=parseInt(o,10);for(let o in n.cells){const r=parseInt(o,10),s=n.cells[o];s&&(r===t&&this.dispatch("CLEAR_CELL",{sheetId:e.id,col:r,row:i}),r>t&&this.dispatch("UPDATE_CELL_POSITION",{sheetId:e.id,cellId:s,col:r-1,row:i}))}}}moveCellsOnAddition(e,t,o,n){const i=[];for(const[r,s]of Object.entries(e.rows)){const a=parseInt(r,10);if("rows"!==n||a>=t)for(let r in s.cells){const l=parseInt(r,10),c=s.cells[r];c&&("rows"===n||l>=t)&&i.push({type:"UPDATE_CELL_POSITION",sheetId:e.id,cellId:c,col:l+("columns"===n?o:0),row:a+("rows"===n?o:0)})}}for(let e of i.reverse())this.dispatch(e.type,e)}moveCellOnRowsDeletion(e,t,o){const n=o-t+1;for(let[i,r]of Object.entries(e.rows)){const s=parseInt(i,10);if(s>=t&&s<=o)for(let t in r.cells){const o=parseInt(t,10);r.cells[t]&&this.dispatch("CLEAR_CELL",{sheetId:e.id,col:o,row:s})}if(s>o)for(let t in r.cells){const o=parseInt(t,10),i=r.cells[t];i&&this.dispatch("UPDATE_CELL_POSITION",{sheetId:e.id,cellId:i,col:o,row:s-n})}}}updateRowsStructureOnDeletion(e,t){const o=[],n=t.rows.map((e=>e.cells));for(let i in t.rows)parseInt(i,10)!==e&&o.push({cells:n.shift()});this.history.update("sheets",t.id,"rows",o)}updateRowsStructureOnAddition(e,t,o){const n=[],i=e.rows.map((e=>e.cells));e.rows.forEach((()=>n.push({cells:i.shift()}))),this.history.update("sheets",e.id,"rows",n)}addEmptyRows(e,t){const o=e.rows.slice();for(let e=0;e<t;e++)o.push({cells:{}});this.history.update("sheets",e.id,"rows",o)}getImportedSheetSize(e){const t=Object.keys(e.cells).map(At);let o=e.rowNumber,n=e.colNumber;for(let{col:e,row:i}of t)o=Math.max(o,i+1),n=Math.max(n,e+1);return{rowNumber:o,colNumber:n}}checkSheetExists(e){return"CREATE_SHEET"!==e.type&&"sheetId"in e&&void 0===this.sheets[e.sheetId]?27:"CREATE_SHEET"===e.type&&void 0!==this.sheets[e.sheetId]?12:0}checkZones(e){const t=[];if("zone"in e&&t.push(e.zone),"target"in e&&Array.isArray(e.target)&&t.push(...e.target),"ranges"in e&&Array.isArray(e.ranges)&&t.push(...e.ranges.map((e=>this.getters.getRangeFromRangeData(e).zone))),!t.every(vo))return 25;if(t.length&&"sheetId"in e){const o=this.getSheetZone(e.sheetId);return t.every((e=>Ao(e,o)))?0:18}return 0}}Gm.getters=["getSheetName","tryGetSheetName","getSheet","tryGetSheet","getSheetIdByName","getSheetIds","getVisibleSheetIds","isSheetVisible","getEvaluationSheets","doesHeaderExist","getCell","getCellsInZone","getCellPosition","getColCells","getColsZone","getRowCells","getRowsZone","getNumberCols","getNumberRows","getNumberHeaders","getGridLinesVisibility","getNextSheetName","isEmpty","getSheetSize","getSheetZone","getPaneDivisions"];class qm{constructor(e,t,o){this.index=0,this.cells=e,this.getters=t,this.direction=o}next(){const e=this.cells[this.index++%this.cells.length],t=e.rule,{cellData:o,tooltip:n}=Go.get(t.type).apply(t,e.data,this.getters,this.direction);return{cellData:o,tooltip:n,origin:{col:e.data.col,row:e.data.row}}}}class Zm extends pg{constructor(){super(...arguments),this.lastCellSelected={}}allowDispatch(e){switch(e.type){case"AUTOFILL_SELECT":const t=this.getters.getActiveSheetId();return this.lastCellSelected.col=-1===e.col?this.lastCellSelected.col:Oe(e.col,0,this.getters.getNumberCols(t)),this.lastCellSelected.row=-1===e.row?this.lastCellSelected.row:Oe(e.row,0,this.getters.getNumberRows(t)),void 0!==this.lastCellSelected.col&&void 0!==this.lastCellSelected.row?0:44;case"AUTOFILL_AUTO":const o=this.getters.getSelectedZone();return o.top===o.bottom?0:1}return 0}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;case"AUTOFILL_CELL":this.autoFillMerge(e.originCol,e.originRow,e.col,e.row);const t=this.getters.getActiveSheetId();this.dispatch("UPDATE_CELL",{sheetId:t,col:e.col,row:e.row,style:e.style||null,content:e.content||"",format:e.format||""}),this.dispatch("SET_BORDER",{sheetId:t,col:e.col,row:e.row,border:e.border})}}getAutofillTooltip(){return this.tooltip}autofill(e){if(!this.autofillZone||!this.steps||void 0===this.direction)return void(this.tooltip=void 0);const t=this.getters.getSelectedZone(),o=this.autofillZone;switch(this.direction){case"down":for(let n=t.left;n<=t.right;n++){const i=[];for(let e=t.top;e<=t.bottom;e++)i.push(Ot(n,e));const r=this.createGenerator(i);for(let t=o.top;t<=o.bottom;t++)this.computeNewCell(r,n,t,e)}break;case"up":for(let n=t.left;n<=t.right;n++){const i=[];for(let e=t.bottom;e>=t.top;e--)i.push(Ot(n,e));const r=this.createGenerator(i);for(let t=o.bottom;t>=o.top;t--)this.computeNewCell(r,n,t,e)}break;case"left":for(let n=t.top;n<=t.bottom;n++){const i=[];for(let e=t.right;e>=t.left;e--)i.push(Ot(e,n));const r=this.createGenerator(i);for(let t=o.right;t>=o.left;t--)this.computeNewCell(r,t,n,e)}break;case"right":for(let n=t.top;n<=t.bottom;n++){const i=[];for(let e=t.left;e<=t.right;e++)i.push(Ot(e,n));const r=this.createGenerator(i);for(let t=o.left;t<=o.right;t++)this.computeNewCell(r,t,n,e)}}e&&(this.autofillZone=void 0,this.selection.resizeAnchorZone(this.direction,this.steps),this.lastCellSelected={},this.direction=void 0,this.steps=0,this.tooltip=void 0)}select(e,t){const o=this.getters.getSelectedZone();if(To(e,t,o))this.autofillZone=void 0;else{switch(this.direction=this.getDirection(e,t),this.direction){case"up":this.saveZone(t,o.top-1,o.left,o.right),this.steps=o.top-t;break;case"down":this.saveZone(o.bottom+1,t,o.left,o.right),this.steps=t-o.bottom;break;case"left":this.saveZone(o.top,o.bottom,e,o.left-1),this.steps=o.left-e;break;case"right":this.saveZone(o.top,o.bottom,o.right+1,e),this.steps=e-o.right}this.autofill(!1)}}autofillAuto(){const e=this.getters.getSelectedZone(),t=this.getters.getActiveSheetId();let o=e.left,n=e.bottom;if(o>0){let e=this.getters.getCell(t,o-1,n);for(;e&&!e.isEmpty();)n+=1,e=this.getters.getCell(t,o-1,n)}if(n===e.bottom&&(o=e.right,o<=this.getters.getNumberCols(t))){let e=this.getters.getCell(t,o+1,n);for(;e&&!e.isEmpty();)n+=1,e=this.getters.getCell(t,o+1,n)}n!==e.bottom&&(this.select(e.left,n-1),this.autofill(!0))}computeNewCell(e,t,o,n){const{cellData:i,tooltip:r,origin:s}=e.next(),{content:a,style:l,border:c,format:h}=i;this.tooltip=r,n&&this.dispatch("AUTOFILL_CELL",{originCol:s.col,originRow:s.row,col:t,row:o,content:a,style:l,border:c,format:h})}getRule(e,t){const o=on.getAll().sort(((e,t)=>e.sequence-t.sequence)).find((o=>o.condition(e,t)));return o&&o.generateRule(e,t)}createGenerator(e){const t=[],o=[],n=this.getters.getActiveSheetId();for(let t of e){const{col:e,row:i}=At(t),r=this.getters.getCell(n,e,i);o.push({col:e,row:i,cell:r,sheetId:n})}const i=o.map((e=>e.cell));for(let e of o){let o={type:"COPY_MODIFIER"};if(e&&e.cell){o=this.getRule(e.cell,i)||o}const{sheetId:n,col:r,row:s}=e,a=this.getters.getCellBorder(n,r,s)||void 0;t.push({data:{...e,border:a},rule:o})}return new qm(t,this.getters,this.direction)}saveZone(e,t,o,n){this.autofillZone={top:e,bottom:t,left:o,right:n}}getDirection(e,t){const o=this.getters.getSelectedZone(),n={up:{number:o.top-t,value:"up"},down:{number:t-o.bottom,value:"down"},left:{number:o.left-e,value:"left"},right:{number:e-o.right,value:"right"}};if(1===Object.values(n).map((e=>e.number>0?1:0)).reduce(((e,t)=>e+t)))return Object.values(n).find((e=>e.number>0?1:0)).value;const i=n.up.number>0?"up":"down",r=n.left.number>0?"left":"right";return Math.abs(n[i].number)>=Math.abs(n[r].number)?n[i].value:n[r].value}autoFillMerge(e,t,o,n){const i=this.getters.getActiveSheet();if(this.getters.isInMerge(i.id,o,n)&&!this.getters.isInMerge(i.id,e,t)){const e=this.getters.getMerge(i.id,o,n);e&&this.dispatch("REMOVE_MERGE",{sheetId:i.id,target:[e]})}const r=this.getters.getMerge(i.id,e,t);(null==r?void 0:r.topLeft.col)===e&&(null==r?void 0:r.topLeft.row)===t&&this.dispatch("ADD_MERGE",{sheetId:i.id,target:[{top:n,bottom:n+r.bottom-r.top,left:o,right:o+r.right-r.left}]})}drawGrid(e){if(!this.autofillZone)return;const{ctx:t,thinLineWidth:o}=e,{x:n,y:i,width:r,height:s}=this.getters.getVisibleRect(this.autofillZone);r>0&&s>0&&(t.strokeStyle="black",t.lineWidth=o,t.setLineDash([3]),t.strokeRect(n,i,r,s),t.setLineDash([]))}}Zm.layers=[6],Zm.getters=["getAutofillTooltip"];class jm extends pg{handle(e){if("SUM_SELECTION"===e.type){const e=this.getters.getActiveSheetId(),{zones:t,anchor:o}=this.getters.getSelection();for(const n of t){const t=this.getAutomaticSums(e,n,o.cell);this.dispatchCellUpdates(e,t)}}}getAutomaticSums(e,t,o){return this.shouldFindData(e,t)?this.sumAdjacentData(e,t,o):this.sumData(e,t)}sumData(e,t){const o=this.dimensionsToSum(e,t),n=this.sumDimensions(e,t,o).filter((({zone:t})=>!this.getters.isEmpty(e,t)));return o.has("ROW")&&o.has("COL")&&n.push(this.sumTotal(t)),n}sumAdjacentData(e,t,o){const{col:n,row:i}=To(o.col,o.row,t)?o:{col:t.left,row:t.top},r=this.findAdjacentData(e,n,i);return r?this.getters.isSingleCellOrMerge(e,t)||_o(yo(r,t))?[{position:{col:n,row:i},zone:r}]:this.sumDimensions(e,yo(r,t),this.transpose(this.dimensionsToSum(e,t))):[]}findAdjacentData(e,t,o){const n=this.getters.getSheet(e),i=this.getters.getMainCellPosition(e,t,o),r=this.findSuitableZoneToSum(n,i.col,i.row);if(r)return this.getters.expandZone(e,r)}findSuitableZoneToSum(e,t,o){const n=this.getters.getCell(e.id,t,o-1),i=this.getters.getCell(e.id,t-1,o);if(this.isNumber(i)&&!this.isNumber(n))return this.findHorizontalZone(e,t,o);const r=this.findVerticalZone(e,t,o);if(this.isZoneValid(r))return r;const s=this.findHorizontalZone(e,t,o);return this.isZoneValid(s)?s:void 0}findVerticalZone(e,t,o){const n={top:0,bottom:o-1,left:t,right:t},i=this.reduceZoneStart(e,n,n.bottom);return{...n,top:i}}findHorizontalZone(e,t,o){const n={top:o,bottom:o,left:0,right:t-1},i=this.reduceZoneStart(e,n,n.right);return{...n,left:i}}reduceZoneStart(e,t,o){const n=this.getters.getCellsInZone(e.id,t),i=Fe(o,-1,-1),r=i.filter((e=>{var t;return n[e]&&!(null===(t=n[e])||void 0===t?void 0:t.isAutoSummable)})),s=Math.max(...r),a=De(i.filter((e=>this.isNumber(n[e]))))[0]||[];return Math.max(...a)<s?1/0:Math.min(...a)}shouldFindData(e,t){return this.getters.isEmpty(e,t)||this.getters.isSingleCellOrMerge(e,t)}isNumber(e){var t;return(null==e?void 0:e.evaluated.type)===qo.number&&!(null===(t=e.evaluated.format)||void 0===t?void 0:t.match(j))}isZoneValid(e){return e.bottom>=e.top&&e.right>=e.left}lastColIsEmpty(e,t){return this.getters.isEmpty(e,{...t,left:t.right})}lastRowIsEmpty(e,t){return this.getters.isEmpty(e,{...t,top:t.bottom})}dimensionsToSum(e,t){const o=new Set;return _o(t)?(o.add(1===No(t).width?"COL":"ROW"),o):(this.lastColIsEmpty(e,t)&&o.add("ROW"),this.lastRowIsEmpty(e,t)&&o.add("COL"),0===o.size&&o.add("COL"),o)}sumDimensions(e,t,o){return[...o.has("COL")?this.sumColumns(t,e):[],...o.has("ROW")?this.sumRows(t,e):[]]}sumTotal(e){const{bottom:t,right:o}=e;return{position:{col:o,row:t},zone:{...e,top:t,right:o-1}}}sumColumns(e,t){const o=this.nextEmptyRow(t,{...e,bottom:e.bottom-1});return e={...e,bottom:Math.min(e.bottom,o.bottom-1)},Fo(o).map((t=>({position:t,zone:{...e,right:t.col,left:t.col}})))}sumRows(e,t){const o=this.nextEmptyCol(t,{...e,right:e.right-1});return e={...e,right:Math.min(e.right,o.right-1)},Fo(o).map((t=>({position:t,zone:{...e,top:t.row,bottom:t.row}})))}dispatchCellUpdates(e,t){for(const o of t){const{col:t,row:n}=o.position;this.dispatch("UPDATE_CELL",{sheetId:e,col:t,row:n,content:`=SUM(${this.getters.zoneToXC(e,o.zone)})`})}}nextEmptyRow(e,t){let o=t.bottom+1;const{left:n,right:i}=t;for(;!this.getters.isEmpty(e,{bottom:o,top:o,left:n,right:i});)o++;return{...t,top:o,bottom:o}}nextEmptyCol(e,t){let o=t.right+1;const{top:n,bottom:i}=t;for(;!this.getters.isEmpty(e,{left:o,right:o,top:n,bottom:i});)o++;return{...t,left:o,right:o}}transpose(e){return new Set([...e.values()].map((e=>"COL"===e?"ROW":"COL")))}}jm.getters=["getAutomaticSums"];class Xm extends pg{allowDispatch(e){if("OPEN_CELL_POPOVER"===e.type){try{Nn.get(e.popoverType)}catch(e){return 71}return 0}return 0}handle(e){switch(e.type){case"ACTIVATE_SHEET":case"CLOSE_CELL_POPOVER":this.persistentPopover=void 0;break;case"OPEN_CELL_POPOVER":this.persistentPopover={col:e.col,row:e.row,type:e.popoverType}}}getCellPopover({col:e,row:t}){var o,n;const i=this.getters.getActiveSheetId();if(this.persistentPopover&&this.getters.isVisibleInViewport(i,this.persistentPopover.col,this.persistentPopover.row)){const e=this.getters.getMainCellPosition(i,this.persistentPopover.col,this.persistentPopover.row),t=null===(n=(o=Nn.get(this.persistentPopover.type)).onOpen)||void 0===n?void 0:n.call(o,e,this.getters);return(null==t?void 0:t.isOpen)?{...t,...this.computePopoverProps(this.persistentPopover,t.cellCorner)}:{isOpen:!1}}if(void 0===e||void 0===t||!this.getters.isVisibleInViewport(i,e,t))return{isOpen:!1};const r=this.getters.getMainCellPosition(i,e,t),s=Nn.getAll().map((e=>{var t;return null===(t=e.onHover)||void 0===t?void 0:t.call(e,r,this.getters)})).find((e=>null==e?void 0:e.isOpen));return(null==s?void 0:s.isOpen)?{...s,...this.computePopoverProps(r,s.cellCorner)}:{isOpen:!1}}getPersistentPopoverTypeAtPosition({col:e,row:t}){if(this.persistentPopover&&this.persistentPopover.col===e&&this.persistentPopover.row===t)return this.persistentPopover.type}computePopoverProps({col:e,row:t},o){const{width:n,height:i}=this.getters.getVisibleRect(Lo({col:e,row:t}));return{coordinates:this.computePopoverPosition({col:e,row:t},o),cellWidth:-n,cellHeight:-i}}computePopoverPosition({col:e,row:t},o){const n=this.getters.getActiveSheetId(),i=this.getters.getMerge(n,e,t);i&&(e="TopRight"===o?i.right:i.left,t="TopRight"===o?i.top:i.bottom);const{x:r,y:s,width:a,height:l}=this.getters.getVisibleRect(Lo({col:e,row:t}));switch(o){case"BottomLeft":return{x:r,y:s+l};case"TopRight":return{x:r+a,y:s}}}}Xm.getters=["getCellPopover","getPersistentPopoverTypeAtPosition"],Xm.modes=["normal"];class Ym{constructor(e,t,o,n){this.getters=t,this.dispatch=o,this.selection=n,this.operation=e,this.sheetId=t.getActiveSheetId()}isCutAllowed(e){return 0}isPasteAllowed(e,t){return 0}addMissingDimensions(e,t,o,n){const i=this.getters.getActiveSheetId(),r=t+n-this.getters.getNumberRows(i);r>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"ROW",base:this.getters.getNumberRows(i)-1,sheetId:i,quantity:r,position:"after"});const s=e+o-this.getters.getNumberCols(i);s>0&&this.dispatch("ADD_COLUMNS_ROWS",{dimension:"COL",base:this.getters.getNumberCols(i)-1,sheetId:i,quantity:s,position:"after"})}isColRowDirtyingClipboard(e,t){return!1}drawClipboard(e){}}class Km extends Ym{constructor(e,t,o,n,i){if(super(t,o,n,i),!e.length)return this.cells=[[]],this.zones=[],void(this.copiedTables=[]);const r=new Set(e.map((e=>e.left))),s=new Set(e.map((e=>e.right))),a=new Set(e.map((e=>e.top))),l=new Set(e.map((e=>e.bottom))),c=1===a.size&&1===l.size||1===r.size&&1===s.size?function(e){return e.reduce(((e,t)=>{const o=e.length;for(let n=0;n<o;n++)if(Io(e[n],t))return e[n]=yo(e[n],t),e;return e[o]=t,e}),[])}(e):[e[e.length-1]],h=c.map((e=>Fo(e))).flat(),d=[...new Set(h.map((e=>e.col)))].sort(((e,t)=>e-t)),u=[...new Set(h.map((e=>e.row)))].sort(((e,t)=>e-t)),g=[],p=o.getActiveSheetId();for(let e of u){let t=[];for(let n of d)t.push({cell:o.getCell(p,n,e),border:o.getCellBorder(p,n,e)||void 0,position:{col:n,row:e,sheetId:p}});g.push(t)}const f=[];for(const t of e)for(const e of this.getters.getFilterTablesInZone(p,t)){const t=[];for(const o of Fe(e.zone.left,e.zone.right+1))t.push(this.getters.getFilterValues(p,o,e.zone.top));f.push({filtersValues:t,zone:e.zone})}this.cells=g,this.zones=c,this.copiedTables=f}isCutAllowed(e){return 1!==e.length?19:0}isPasteAllowed(e,t){const o=this.getters.getActiveSheetId();if("CUT"===this.operation&&void 0!==(null==t?void 0:t.pasteOption))return 21;if(e.length>1&&(this.cells.length>1||this.cells[0].length>1))return 20;const n=this.cells.length,i=this.cells[0].length;for(let t of this.getPasteZones(e))if(this.getters.doesIntersectMerge(o,t)&&(e.length>1||!this.getters.isSingleCellOrMerge(o,e[0])||n*i!=1))return 2;const{xSplit:r,ySplit:s}=this.getters.getPaneDivisions(o);for(const t of this.getPasteZones(e))if(t.left<r&&t.right>=r||t.top<s&&t.bottom>=s)return 74;return 0}paste(e,t){"COPY"===this.operation?this.pasteFromCopy(e,t):this.pasteFromCut(e,t);const o=this.cells.length,n=this.cells[0].length,i="CUT"===this.operation;(null==t?void 0:t.selectTarget)&&this.selectPastedZone(n,o,i,e)}pasteFromCopy(e,t){if(1===e.length){const o=this.cells.length,n=this.cells[0].length,i=this.pastedZones(e,n,o);for(const e of i)this.pasteZone(e.left,e.top,t)}else for(const o of e)for(let e=o.left;e<=o.right;e++)for(let n=o.top;n<=o.bottom;n++)this.pasteZone(e,n,t);void 0===(null==t?void 0:t.pasteOption)&&this.pasteCopiedTables(e)}pasteFromCut(e,t){this.clearClippedZones();const o=e[0];this.pasteZone(o.left,o.top,t),this.dispatch("MOVE_RANGES",{target:this.zones,sheetId:this.sheetId,targetSheetId:this.getters.getActiveSheetId(),col:o.left,row:o.top});for(const e of this.copiedTables)this.dispatch("REMOVE_FILTER_TABLE",{sheetId:this.getters.getActiveSheetId(),target:[e.zone]});this.pasteCopiedTables(e)}pastedZones(e,t,o){const n=e[0],i=Math.max(1,Math.floor((n.right+1-n.left)/t)),r=Math.max(1,Math.floor((n.bottom+1-n.top)/o)),s=[];for(let e=0;e<i;e++)for(let i=0;i<r;i++){const r=n.top+i*o,a=n.left+e*t;s.push({left:a,top:r,bottom:r+o-1,right:a+t-1})}return s}getPasteZones(e){const t=this.cells;if(!t.length||!t[0].length)return e;const o=[],n=t.length,i=t[0].length,r=e[e.length-1],s=r.left,a=r.top,l=Math.max(1,Math.floor((r.right+1-s)/i)),c=Math.max(1,Math.floor((r.bottom+1-a)/n));for(let e=1;e<=l;e++)for(let t=1;t<=c;t++)o.push({left:s,top:a,right:s-1+e*i,bottom:a-1+t*n});return o}selectPastedZone(e,t,o,n){const i=n[0],r=i.left,s=i.top;if(t>1||e>1||o){const i=this.pastedZones(n,e,t),a=o?i[0]:yo(...i);this.selection.selectZone({cell:{col:r,row:s},zone:a})}}clearClippedZones(){for(const e of this.cells)for(const t of e)t.cell&&this.dispatch("CLEAR_CELL",t.position);this.dispatch("CLEAR_FORMATTING",{sheetId:this.sheetId,target:this.zones})}pasteZone(e,t,o){const n=this.cells.length,i=this.cells[0].length,r="onlyValue"!==(null==o?void 0:o.pasteOption)&&(null==o?void 0:o.shouldPasteCF),s=this.getters.getActiveSheetId();this.addMissingDimensions(i,n,e,t);for(let a=0;a<n;a++){const n=this.cells[a];for(let l=0;l<i;l++){const i=n[l],c={col:e+l,row:t+a,sheetId:s};"CUT"!==this.operation&&this.pasteMergeIfExist(i.position,c),this.pasteCell(i,c,this.operation,o),r&&this.dispatch("PASTE_CONDITIONAL_FORMAT",{origin:i.position,target:c,operation:this.operation})}}}pasteCell(e,t,o,n){const{sheetId:i,col:r,row:s}=t,a=this.getters.getCell(i,r,s);if("onlyValue"!==(null==n?void 0:n.pasteOption)){const t=this.getters.getCellBorder(i,r,s),o=e.border,n={top:(null==t?void 0:t.top)||(null==o?void 0:o.top),bottom:(null==t?void 0:t.bottom)||(null==o?void 0:o.bottom),left:(null==t?void 0:t.left)||(null==o?void 0:o.left),right:(null==t?void 0:t.right)||(null==o?void 0:o.right)};this.dispatch("SET_BORDER",{sheetId:i,col:r,row:s,border:n})}if(e.cell){if("onlyFormat"===(null==n?void 0:n.pasteOption))return void this.dispatch("UPDATE_CELL",{...t,style:e.cell.style,format:e.cell.evaluated.format||e.cell.format});if("onlyValue"===(null==n?void 0:n.pasteOption)){const o=Ut(e.cell.evaluated.value);return void this.dispatch("UPDATE_CELL",{...t,content:o})}let a=e.cell.content;if(e.cell.isFormula()&&"COPY"===o){const t=r-e.position.col,n=s-e.position.row;a=this.getUpdatedContent(i,e.cell,t,n,o)}this.dispatch("UPDATE_CELL",{...t,content:a,style:e.cell.style||null,format:e.cell.format})}else a&&("onlyValue"===(null==n?void 0:n.pasteOption)?this.dispatch("UPDATE_CELL",{...t,content:""}):"onlyFormat"===(null==n?void 0:n.pasteOption)?this.dispatch("UPDATE_CELL",{...t,style:null,format:""}):this.dispatch("CLEAR_CELL",t))}getUpdatedContent(e,t,o,n,i){const r=this.getters.createAdaptedRanges(t.dependencies,o,n,e);return this.getters.buildFormulaContent(e,t,r)}pasteMergeIfExist(e,t){let{sheetId:o,col:n,row:i}=e;const{col:r,row:s}=this.getters.getMainCellPosition(o,n,i);if(r===n&&s===i){const e=this.getters.getMerge(o,n,i);if(!e)return;({sheetId:o,col:n,row:i}=t),this.dispatch("ADD_MERGE",{sheetId:o,force:!0,target:[{left:n,top:i,right:n+e.right-e.left,bottom:i+e.bottom-e.top}]})}}pasteCopiedTables(e){const t=this.getters.getActiveSheetId(),o=e[0],n=this.zones[0],i=[o.left-n.left,o.top-n.top];for(const e of this.copiedTables){const o=Do(e.zone,"both","MOVE",i);this.dispatch("CREATE_FILTER_TABLE",{sheetId:t,target:[o]});for(const n of Fe(0,e.filtersValues.length))this.dispatch("UPDATE_FILTER",{sheetId:t,col:o.left+n,row:o.top,values:e.filtersValues[n]})}}getClipboardContent(){return this.cells.map((e=>e.map((e=>e.cell?this.getters.getCellText(e.cell,this.getters.shouldShowFormulas()):"")).join("\t"))).join("\n")||"\t"}isColRowDirtyingClipboard(e,t){if(!this.zones)return!1;for(let o of this.zones){if("COL"===t&&e<=o.right)return!0;if("ROW"===t&&e<=o.bottom)return!0}return!1}drawClipboard(e){const{ctx:t,thinLineWidth:o}=e;if(this.sheetId===this.getters.getActiveSheetId()&&this.zones&&this.zones.length){t.setLineDash([8,5]),t.strokeStyle=E,t.lineWidth=3.3*o;for(const e of this.zones){const{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(e);i>0&&r>0&&t.strokeRect(o,n,i,r)}}}}class Qm{constructor(e,t,o){this.getters=t,this.dispatch=o,this.sheetId=t.getActiveSheetId();const n=t.getSelectedFigureId();if(!n)throw new Error("No figure selected");const i=t.getFigure(this.sheetId,n);if(!i)throw new Error(`No figure for the given id: ${n}`);this.copiedFigure={...i};const r=t.getChart(n);if(!r)throw new Error(`No chart for the given id: ${n}`);this.copiedChart=r.copyInSheetId(this.sheetId),this.operation=e}isCutAllowed(e){return 0}isPasteAllowed(e,t){return 0===e.length?72:void 0!==(null==t?void 0:t.pasteOption)?22:0}paste(e){const t=this.getters.getActiveSheetId(),o={x:this.getters.getColDimensions(t,e[0].left).start,y:this.getters.getRowDimensions(t,e[0].top).start},n=this.copiedChart.copyInSheetId(t),i=(new po).uuidv4();this.dispatch("CREATE_CHART",{id:i,sheetId:t,position:o,size:{height:this.copiedFigure.height,width:this.copiedFigure.width},definition:n.getDefinition()}),"CUT"===this.operation&&this.dispatch("DELETE_FIGURE",{sheetId:this.copiedChart.sheetId,id:this.copiedFigure.id}),this.dispatch("SELECT_FIGURE",{id:i})}getClipboardContent(){return"\t"}isColRowDirtyingClipboard(e,t){return!1}drawClipboard(e){}}class Jm extends Ym{constructor(e,t,o,n){super("COPY",t,o,n),this.values=e.replace(/\r/g,"").split("\n").map((e=>e.split("\t")))}isPasteAllowed(e,t){const o=this.getters.getActiveSheetId(),n=this.getPasteZone(e);return this.getters.doesIntersectMerge(o,n)?2:0}paste(e){const t=this.values,o=this.getPasteZone(e),{left:n,top:i}=o,{width:r,height:s}=No(o),a=this.getters.getActiveSheetId();this.addMissingDimensions(r,s,n,i);for(let e=0;e<t.length;e++)for(let o=0;o<t[e].length;o++)this.dispatch("UPDATE_CELL",{row:i+e,col:n+o,content:t[e][o],sheetId:a});const l={left:n,top:i,right:n+r-1,bottom:i+s-1};this.selection.selectZone({cell:{col:n,row:i},zone:l})}getClipboardContent(){return this.values.map((e=>e.join("\t"))).join("\n")}getPasteZone(e){const t=this.values.length,o=Math.max(...this.values.map((e=>e.length))),{left:n,top:i}=e[0];return{top:i,left:n,bottom:i+t-1,right:n+o-1}}}class ev extends pg{constructor(){super(...arguments),this.status="invisible",this._isPaintingFormat=!1}allowDispatch(e){switch(e.type){case"CUT":const t=e.target||this.getters.getSelectedZones();return this.getClipboardState(t,e.type).isCutAllowed(t);case"PASTE":if(!this.state)return 23;const o=e.pasteOption||(this._isPaintingFormat?"onlyFormat":void 0);return this.state.isPasteAllowed(e.target,{pasteOption:o});case"PASTE_FROM_OS_CLIPBOARD":return new Jm(e.text,this.getters,this.dispatch,this.selection).isPasteAllowed(e.target);case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension);return this.getClipboardStateForCopyCells(t,"CUT").isPasteAllowed(o)}case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);return this.getClipboardStateForCopyCells(t,"CUT").isPasteAllowed(o)}}return 0}handle(e){var t,o;switch(e.type){case"COPY":case"CUT":const n="target"in e&&e.target||this.getters.getSelectedZones();this.state=this.getClipboardState(n,e.type),this.status="visible";break;case"PASTE":if(!this.state)break;const i=e.pasteOption||(this._isPaintingFormat?"onlyFormat":void 0);this._isPaintingFormat=!1,this.state.paste(e.target,{pasteOption:i,shouldPasteCF:!0,selectTarget:!0}),"CUT"===this.state.operation&&(this.state=void 0),this.status="invisible";break;case"DELETE_CELL":{const{cut:t,paste:o}=this.getDeleteCellsTargets(e.zone,e.shiftDimension);if(!vo(t[0])){for(const{col:t,row:o}of Fo(e.zone))this.dispatch("CLEAR_CELL",{col:t,row:o,sheetId:this.getters.getActiveSheetId()});break}this.getClipboardStateForCopyCells(t,"CUT").paste(o);break}case"INSERT_CELL":{const{cut:t,paste:o}=this.getInsertCellsTargets(e.zone,e.shiftDimension);this.getClipboardStateForCopyCells(t,"CUT").paste(o);break}case"ADD_COLUMNS_ROWS":if(this.status="invisible","CUT"!==(null===(t=this.state)||void 0===t?void 0:t.operation))return;this.state.isColRowDirtyingClipboard("before"===e.position?e.base:e.base+1,e.dimension)&&(this.state=void 0);break;case"REMOVE_COLUMNS_ROWS":if(this.status="invisible","CUT"!==(null===(o=this.state)||void 0===o?void 0:o.operation))return;for(let t of e.elements){if(this.state.isColRowDirtyingClipboard(t,e.dimension)){this.state=void 0;break}}this.status="invisible";break;case"PASTE_FROM_OS_CLIPBOARD":new Jm(e.text,this.getters,this.dispatch,this.selection).paste(e.target),this.status="invisible";break;case"ACTIVATE_PAINT_FORMAT":{const e=this.getters.getSelectedZones();this.state=this.getClipboardStateForCopyCells(e,"COPY"),this._isPaintingFormat=!0,this.status="visible";break}default:Ko(e)&&(this.status="invisible")}}getClipboardContent(){var e;return(null===(e=this.state)||void 0===e?void 0:e.getClipboardContent())||"\t"}isCutOperation(){return!!this.state&&"CUT"===this.state.operation}isPaintingFormat(){return this._isPaintingFormat}getDeleteCellsTargets(e,t){const o=this.getters.getActiveSheetId();let n;return n="COL"===t?{...e,left:e.right+1,right:this.getters.getNumberCols(o)-1}:{...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1},{cut:[n],paste:[e]}}getInsertCellsTargets(e,t){const o=this.getters.getActiveSheetId();let n,i;return"COL"===t?(n={...e,right:this.getters.getNumberCols(o)-1},i={...e,left:e.right+1,right:e.right+1}):(n={...e,bottom:this.getters.getNumberRows(o)-1},i={...e,top:e.bottom+1,bottom:this.getters.getNumberRows(o)-1}),{cut:[n],paste:[i]}}getClipboardStateForCopyCells(e,t){return new Km(e,t,this.getters,this.dispatch,this.selection)}getClipboardState(e,t){return this.getters.getSelectedFigureId()?new Qm(t,this.getters,this.dispatch):new Km(e,t,this.getters,this.dispatch,this.selection)}drawGrid(e){"visible"===this.status&&this.state&&this.state.drawClipboard(e)}}ev.layers=[2],ev.getters=["getClipboardContent","isCutOperation","isPaintingFormat"];class tv extends pg{constructor(){super(...arguments),this.customColors=new Set,this.shouldUpdateColors=!1}handle(e){switch(e.type){case"UPDATE_CELL":case"UPDATE_CHART":case"CREATE_CHART":case"ADD_CONDITIONAL_FORMAT":this.shouldUpdateColors=!0}}finalize(){if(this.shouldUpdateColors){this.shouldUpdateColors=!1;for(const e of this.getCustomColors())this.tryToAddColor(e)}}getCustomColors(){let e=[];for(const t of this.getters.getSheetIds()){const o=Object.values(this.getters.getCells(t));e=e.concat(this.getColorsFromCells(o),this.getFormattingColors(t),this.getChartColors(t))}return function(e){const t=[{leadColor:ct(255,0,0),colors:[]},{leadColor:ct(255,128,0),colors:[]},{leadColor:ct(128,128,0),colors:[]},{leadColor:ct(128,255,0),colors:[]},{leadColor:ct(0,255,0),colors:[]},{leadColor:ct(0,255,128),colors:[]},{leadColor:ct(0,255,255),colors:[]},{leadColor:ct(0,127,255),colors:[]},{leadColor:ct(0,0,255),colors:[]},{leadColor:ct(127,0,255),colors:[]},{leadColor:ct(128,0,128),colors:[]},{leadColor:ct(255,0,128),colors:[]}];for(const o of e.map(ut)){let e=500,n=0;t.forEach(((t,i)=>{const r=(s=o,a=t.leadColor,Math.sqrt(Math.pow(s.r-a.r,2)+Math.pow(s.g-a.g,2)+Math.pow(s.b-a.b,2)));var s,a;e>r&&(e=r,n=i)})),t[n].colors.push(o)}return t.map((e=>e.colors.sort(((e,t)=>pt(e).s-pt(t).s)))).flat().map(dt)}([...new Set([...new Set([...e,...this.customColors])].filter(at).map((e=>st(e).toLowerCase())))]).filter((e=>!A.includes(e)))}getColorsFromCells(e){var t,o;const n=new Set;for(const i of e)(null===(t=i.style)||void 0===t?void 0:t.textColor)&&n.add(i.style.textColor),(null===(o=i.style)||void 0===o?void 0:o.fillColor)&&n.add(i.style.fillColor);return[...n]}getFormattingColors(e){const t=this.getters.getConditionalFormats(e),o=[];for(const e of t){const t=e.rule;"CellIsRule"===t.type?(o.push(t.style.textColor),o.push(t.style.fillColor)):"ColorScaleRule"===t.type&&(o.push(it(t.minimum.color)),o.push(t.midpoint?it(t.midpoint.color):void 0),o.push(it(t.maximum.color)))}return o.filter(Ze)}getChartColors(e){const t=this.getters.getChartIds(e).map((e=>this.getters.getChart(e)));let o=new Set;for(let e of t){if(void 0===e)continue;const t=e.getDefinition().background;switch(void 0!==t&&o.add(t),e.type){case"gauge":const t=e.sectionRule.colors;o.add(t.lowerColor),o.add(t.middleColor),o.add(t.upperColor);break;case"scorecard":const n=e;o.add(n.baselineColorDown),o.add(n.baselineColorUp)}}return[...o]}tryToAddColor(e){const t=st(e).toLowerCase();e&&!A.includes(t)&&this.customColors.add(t)}}tv.getters=["getCustomColors"];const ov=Su.mapping;class nv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.isUpToDate=!1,this.evalContext=n.evalContext}handle(e){switch(Zo.has(e.type)&&(this.isUpToDate=!1),e.type){case"UPDATE_CELL":("content"in e||"format"in e)&&(this.isUpToDate=!1);break;case"EVALUATE_CELLS":this.evaluate()}}finalize(){this.isUpToDate||this.evaluate()}evaluateFormula(e,t=this.getters.getActiveSheetId()){const o=lg(e),n=this.getCompilationParameters((()=>{})),i=[];for(let e of o.dependencies)i.push(this.getters.getRangeFromSheetXC(t,e));return o.execute(i,...n).value}getRangeFormattedValues(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getCellsInZone(t.id,e.zone).map((e=>(null==e?void 0:e.formattedValue)||""))}getRangeValues(e){const t=this.getters.tryGetSheet(e.sheetId);return void 0===t?[]:this.getters.getCellsInZone(t.id,e.zone).map((e=>null==e?void 0:e.evaluated.value))}*getAllCells(){for(const e of this.getters.getSheetIds()){const t=this.getters.getCells(e);for(const e in t)yield t[e]}}evaluate(){const e=this.getCompilationParameters(o),t={};for(const e of this.getAllCells())o(e);function o(o){if(!o.isFormula())return;const n=o.id,i=Ke((()=>{if(e[2].__originCellXC=()=>{const t=e[2].getters.getCellPosition(n);return Ot(t.col,t.row)},n in t)return null===t[n]?new d:o.evaluated;t[n]=null;try{const i=o.compiledFormula.execute(o.dependencies,...e);if(t[n]=!0,Array.isArray(i.value))throw new Error(r("This formula depends on invalid values"));return{value:i.value,format:o.format||i.format}}catch(o){return t[n]=!0,function(t){t instanceof Error||(t=new Error(t));const o=(null==t?void 0:t.errorType)||a.GenericError,n=e[2].__lastFnCalled||"";return new c(o,t.message.replace("[[FUNCTION_NAME]]",n),void 0!==t.logLevel?t.logLevel:l.error)}(o)}}));o.assignEvaluation(i)}this.isUpToDate=!0}getCompilationParameters(e){const t=Object.assign(Object.create(ov),this.evalContext,{getters:this.getters}),o=this.getters;function n(e){if(e.evaluated.type===qo.error)throw new c(e.evaluated.value,e.evaluated.error.message,e.evaluated.error.logLevel);return e.evaluated}return[function(e,t,i,s){if(t)return{value:bo(e.zone)};if(!vo(e.zone))throw new u;if(e.zone.bottom!==e.zone.top||e.zone.left!==e.zone.right)throw new Error(s?r("Function %s expects the parameter %s to be a single value or a single cell reference, not a range.",i.toString(),s.toString()):r("Function %s expects its parameters to be single values or single cell references, not ranges.",i.toString()));if(e.invalidSheetName)throw new Error(r("Invalid sheet name: %s",e.invalidSheetName));return function(e){let t;if(!o.tryGetSheet(e.sheetId))throw new Error(r("Invalid sheet name"));return t=o.getCell(e.sheetId,e.zone.left,e.zone.top),!t||t.isEmpty()?{value:null}:n(t)}(e)},function(e){const i=e.sheetId;if(!vo(e.zone))throw new u;const r=o.getSheetZone(i),s=[],a=xo(e.zone,r);if(!a)return s.push([]),s;for(let o=a.left;o<=a.right;o++){const i=[];for(let r=a.top;r<=a.bottom;r++){const s=t.getters.getCell(e.sheetId,o,r);i.push(s?n(s):void 0)}s.push(i)}return s},t]}}nv.getters=["evaluateFormula","getRangeFormattedValues","getRangeValues"];class iv extends pg{constructor(){super(...arguments),this.charts={},this.createRuntimeChart=function(e){const t=Bo.getAll();return function(o){const n=t.find((e=>e.match(o.type)));if(!n)throw new Error("No runtime builder for this chart.");return n.getChartRuntime(o,e)}}(this.getters)}handle(e){if(Zo.has(e.type)||jo.has(e.type)||"EVALUATE_CELLS"===e.type||"UPDATE_CELL"===e.type)for(const e in this.charts)this.charts[e]=void 0;switch(e.type){case"UPDATE_CHART":case"CREATE_CHART":case"DELETE_FIGURE":this.charts[e.id]=void 0;break;case"DELETE_SHEET":for(let e in this.charts)this.getters.isChartDefined(e)||(this.charts[e]=void 0)}}getChartRuntime(e){if(!this.charts[e]){const t=this.getters.getChart(e);if(!t)throw new Error(`No chart for the given id: ${e}`);this.charts[e]=this.createRuntimeChart(t)}return this.charts[e]}getBackgroundOfSingleCellChart(e,t){if(e)return e;if(!t)return w;const o=t.zone.left,n=t.zone.top;return this.getters.getCellComputedStyle(t.sheetId,o,n).fillColor||w}}iv.getters=["getChartRuntime","getBackgroundOfSingleCellChart"];class rv extends pg{constructor(){super(...arguments),this.isStale=!0,this.computedStyles={},this.computedIcons={},this.rulePredicate={CellIsRule:(e,t)=>{if(e&&e.evaluated.type===qo.error)return!1;const o=t.values.map(up);switch(t.operator){case"IsEmpty":return!Ze(e)||""===e.evaluated.value.toString().trim();case"IsNotEmpty":return Ze(e)&&""!==e.evaluated.value.toString().trim();case"BeginsWith":return!(!e&&""===o[0])&&(Ze(e)&&(null==e?void 0:e.evaluated.value.toString().startsWith(o[0].toString())));case"EndsWith":return!(!e&&""===o[0])&&(Ze(e)&&e.evaluated.value.toString().endsWith(o[0].toString()));case"Between":return Ze(e)&&e.evaluated.value>=o[0]&&e.evaluated.value<=o[1];case"NotBetween":return!(Ze(e)&&e.evaluated.value>=o[0]&&e.evaluated.value<=o[1]);case"ContainsText":return Ze(e)&&e.evaluated.value.toString().indexOf(o[0].toString())>-1;case"NotContains":return!Ze(e)||!e.evaluated.value||-1==e.evaluated.value.toString().indexOf(o[0].toString());case"GreaterThan":return Ze(e)&&e.evaluated.value>o[0];case"GreaterThanOrEqual":return Ze(e)&&e.evaluated.value>=o[0];case"LessThan":return Ze(e)&&e.evaluated.value<o[0];case"LessThanOrEqual":return Ze(e)&&e.evaluated.value<=o[0];case"NotEqual":return!(!Ze(e)&&""===o[0])&&(Ze(e)&&e.evaluated.value!==o[0]);case"Equal":return!e&&""===o[0]||Ze(e)&&e.evaluated.value===o[0];default:console.warn(r("Not implemented operator %s for kind of conditional formatting: %s",t.operator,t.type))}return!1}}}handle(e){switch((jo.has(e.type)||"UPDATE_CELL"===e.type&&"content"in e)&&(this.isStale=!0),e.type){case"ACTIVATE_SHEET":const t=e.sheetIdTo;this.computedStyles[t]=this.computedStyles[t]||{},this.computedIcons[t]=this.computedIcons[t]||{},this.isStale=!0;break;case"AUTOFILL_CELL":const o=this.getters.getActiveSheetId(),n=this.getters.getRulesByCell(o,e.originCol,e.originRow);for(const t of n)this.adaptRules(o,t,[Ot(e.col,e.row)],[]);break;case"PASTE_CONDITIONAL_FORMAT":this.pasteCf(e.origin,e.target,e.operation)}}finalize(){this.isStale&&(this.computeStyles(),this.isStale=!1)}getCellComputedStyle(e,t,o){var n;const i=this.getters.getCell(e,t,o),r=this.computedStyles[e],s=r&&(null===(n=r[t])||void 0===n?void 0:n[o]),a={...null==i?void 0:i.style,...s};return this.getters.isFilterHeader(e,t,o)&&(a.bold=!0),a}getConditionalIcon(e,t){var o;const n=this.getters.getActiveSheetId(),i=this.computedIcons[n];return i&&(null===(o=i[e])||void 0===o?void 0:o[t])}computeStyles(){var e;const t=this.getters.getActiveSheetId();this.computedStyles[t]={},this.computedIcons[t]={};const o=this.computedStyles[t];for(let n of this.getters.getConditionalFormats(t).reverse())try{switch(n.rule.type){case"ColorScaleRule":for(let e of n.ranges)this.applyColorScale(e,n.rule);break;case"IconSetRule":for(let e of n.ranges)this.applyIcon(e,n.rule);break;default:for(let i of n.ranges){const r=this.getters.getRangeFromSheetXC(t,i).zone;for(let i=r.top;i<=r.bottom;i++)for(let s=r.left;s<=r.right;s++){const r=this.rulePredicate[n.rule.type];let a=this.getters.getCell(t,s,i);r&&r(a,n.rule)&&(o[s]||(o[s]=[]),o[s][i]=Object.assign((null===(e=o[s])||void 0===e?void 0:e[i])||{},n.rule.style))}}}}catch(e){}}parsePoint(e,t,o){const n=this.getters.getActiveSheetId(),i=this.getters.getRangeValues(this.getters.getRangeFromSheetXC(n,e)).filter(this.isCellValueNumber);switch(t.type){case"value":return"max"===o?Math.max(...i):Math.min(...i);case"number":return Number(t.value);case"percentage":const e=Math.min(...i);return e+(Math.max(...i)-e)*Number(t.value)/100;case"percentile":return lo(i,Number(t.value)/100,!0);case"formula":const n=t.value&&this.getters.evaluateFormula(t.value);return n instanceof Promise?null:n;default:return null}}applyIcon(e,t){const o=this.parsePoint(e,t.lowerInflectionPoint),n=this.parsePoint(e,t.upperInflectionPoint);if(null===o||null===n||o>n)return;const i=this.getters.getActiveSheetId(),r=this.getters.getRangeFromSheetXC(i,e).zone,s=this.computedIcons[i],a=[t.icons.upper,t.icons.middle,t.icons.lower];for(let e=r.top;e<=r.bottom;e++)for(let l=r.left;l<=r.right;l++){const r=this.getters.getCell(i,l,e);if((null==r?void 0:r.evaluated.type)!==qo.number)continue;const c=this.computeIcon(r.evaluated.value,n,t.upperInflectionPoint.operator,o,t.lowerInflectionPoint.operator,a);s[l]||(s[l]=[]),s[l][e]=c}}computeIcon(e,t,o,n,i,r){return"ge"===o&&e>=t||"gt"===o&&e>t?r[0]:"ge"===i&&e>=n||"gt"===i&&e>n?r[1]:r[2]}applyColorScale(e,t){var o;const n=this.parsePoint(e,t.minimum,"min"),i=t.midpoint?this.parsePoint(e,t.midpoint):null,r=this.parsePoint(e,t.maximum,"max");if(null===n||null===r||n>=r||i&&(n>=i||i>=r))return;const s=this.getters.getActiveSheetId(),a=this.getters.getRangeFromSheetXC(s,e).zone,l=this.computedStyles[s],c=[];t.midpoint&&i?(c.push({minValue:n,minColor:t.minimum.color,colorDiffUnit:this.computeColorDiffUnits(n,i,t.minimum.color,t.midpoint.color)}),c.push({minValue:i,minColor:t.midpoint.color,colorDiffUnit:this.computeColorDiffUnits(i,r,t.midpoint.color,t.maximum.color)})):c.push({minValue:n,minColor:t.minimum.color,colorDiffUnit:this.computeColorDiffUnits(n,r,t.minimum.color,t.maximum.color)});for(let e=a.top;e<=a.bottom;e++)for(let t=a.left;t<=a.right;t++){const a=this.getters.getCell(s,t,e);if((null==a?void 0:a.evaluated.type)===qo.number){const s=Oe(a.evaluated.value,n,r);let h;h=2===c.length&&i?s<=i?this.colorCell(s,c[0].minValue,c[0].minColor,c[0].colorDiffUnit):this.colorCell(s,c[1].minValue,c[1].minColor,c[1].colorDiffUnit):this.colorCell(s,c[0].minValue,c[0].minColor,c[0].colorDiffUnit),l[t]||(l[t]=[]),l[t][e]=(null===(o=l[t])||void 0===o?void 0:o[e])||{},l[t][e].fillColor=it(h)}}}computeColorDiffUnits(e,t,o,n){const i=t-e;return[((o>>16)%256-(n>>16)%256)/i,((o>>8)%256-(n>>8)%256)/i,(o%256-n%256)/i]}colorCell(e,t,o,n){const[i,r,s]=n;return Math.round((o>>16)%256-i*(e-t))<<16|Math.round((o>>8)%256-r*(e-t))<<8|Math.round(o%256-s*(e-t))}adaptRules(e,t,o,n){if(0===o.length&&0===n.length)return;const i=this.getters.getConditionalFormats(e),r=i.findIndex((e=>e.id===t.id));let s=[];r>-1&&(s=i[r].ranges),s=s.concat(o);const a=Oo(s,n);this.dispatch("ADD_CONDITIONAL_FORMAT",{cf:{id:t.id,rule:t.rule,stopIfTrue:t.stopIfTrue},ranges:a.map((t=>this.getters.getRangeDataFromXc(e,t))),sheetId:e})}pasteCf(e,t,o){const n=Ot(t.col,t.row);for(let i of this.getters.getConditionalFormats(e.sheetId))for(let r of i.ranges)if(To(e.col,e.row,this.getters.getRangeFromSheetXC(e.sheetId,r).zone)){const r=i,s=[];"CUT"===o&&s.push(Ot(e.col,e.row)),e.sheetId===t.sheetId?this.adaptRules(e.sheetId,r,[n],s):(this.adaptRules(t.sheetId,r,[n],[]),this.adaptRules(e.sheetId,r,[],s))}}isCellValueNumber(e){return"number"==typeof e}}rv.getters=["getConditionalIcon","getCellComputedStyle"];class sv extends pg{constructor(){super(...arguments),this.filterValues={},this.hiddenRows=new Set,this.isEvaluationDirty=!1}allowDispatch(e){if("UPDATE_FILTER"===e.type)if(!this.getters.getFilterId(e.sheetId,e.col,e.row))return 78;return 0}handle(e){switch(e.type){case"UNDO":case"REDO":case"UPDATE_CELL":case"EVALUATE_CELLS":case"ACTIVATE_SHEET":case"REMOVE_FILTER_TABLE":this.isEvaluationDirty=!0;break;case"START":for(const e of this.getters.getSheetIds()){this.filterValues[e]={};for(const t of this.getters.getFilters(e))this.filterValues[e][t.id]=[]}break;case"CREATE_SHEET":this.filterValues[e.sheetId]={};break;case"UPDATE_FILTER":this.updateFilter(e),this.updateHiddenRows();break;case"DUPLICATE_SHEET":const t={};for(const o of this.getters.getFilters(e.sheetIdTo)){const n=o.zoneWithHeaders;t[o.id]=this.getFilterValues(e.sheetId,n.left,n.top)}this.filterValues[e.sheetIdTo]=t}}finalize(){this.isEvaluationDirty&&(this.updateHiddenRows(),this.isEvaluationDirty=!1)}isRowFiltered(e,t){return e===this.getters.getActiveSheetId()&&this.hiddenRows.has(t)}getCellBorderWithFilterBorder(e,t,o){let n;for(let i of this.getters.getFilterTables(e)){const r=i.zone;if(To(t,o,r)){const i=this.intersectZoneWithViewport(e,r);n={top:o===i.top?Z:void 0,bottom:o===i.bottom?Z:void 0,left:t===i.left?Z:void 0,right:t===i.right?Z:void 0}}}const i=this.getters.getCellBorder(e,t,o),r={...n,...tt(i||{})};return je(r)?null:r}getFilterHeaders(e){const t=[];for(let o of this.getters.getFilterTables(e)){const n=o.zone;if(!n)continue;const i=n.top;for(let o=n.left;o<=n.right;o++)this.getters.isColHidden(e,o)||this.getters.isRowHidden(e,i)||t.push({col:o,row:i})}return t}getFilterValues(e,t,o){const n=this.getters.getFilterId(e,t,o);return n&&this.filterValues[e]&&this.filterValues[e][n]||[]}isFilterHeader(e,t,o){return this.getFilterHeaders(e).some((e=>e.col===t&&e.row===o))}isFilterActive(e,t,o){var n,i;const r=this.getters.getFilterId(e,t,o);return Boolean(r&&(null===(i=null===(n=this.filterValues[e])||void 0===n?void 0:n[r])||void 0===i?void 0:i.length))}intersectZoneWithViewport(e,t){const o=Fe(t.left,t.right+1),n=Fe(t.top,t.bottom+1);return{left:this.getters.findVisibleHeader(e,"COL",o),right:this.getters.findVisibleHeader(e,"COL",o.reverse()),top:this.getters.findVisibleHeader(e,"ROW",n),bottom:this.getters.findVisibleHeader(e,"ROW",n.reverse())}}updateFilter({col:e,row:t,values:o,sheetId:n}){const i=this.getters.getFilterId(n,e,t);i&&(this.filterValues[n]||(this.filterValues[n]={}),this.filterValues[n][i]=o)}updateHiddenRows(){var e,t;const o=this.getters.getActiveSheetId(),n=this.getters.getFilters(o),i=new Set;for(let r of n){const n=null===(t=null===(e=this.filterValues[o])||void 0===e?void 0:e[r.id])||void 0===t?void 0:t.map(ot);if(n&&r.filteredZone)for(let e=r.filteredZone.top;e<=r.filteredZone.bottom;e++){const t=this.getCellValueAsString(o,r.col,e);n.includes(t)&&i.add(e)}}this.hiddenRows=i}getCellValueAsString(e,t,o){var n;const i=null===(n=this.getters.getCell(e,t,o))||void 0===n?void 0:n.formattedValue;return(null==i?void 0:i.toLowerCase())||""}exportForExcel(e){var t;for(const o of e.sheets)for(const e of o.filterTables){const n=mo(e.range),i=[],r=[];for(const e of Fe(0,No(n).width)){const s=this.getFilterValues(o.id,n.left+e,n.top),a=this.getters.getFilter(o.id,n.left+e,n.top);if(!a)continue;const l=a.filteredZone?Fo(a.filteredZone).map((e=>{var t;return null===(t=this.getters.getCell(o.id,e.col,e.row))||void 0===t?void 0:t.formattedValue})).filter(Ze):[],c=l.filter((e=>!s.includes(e)));i.push({colId:e,filteredValues:[...new Set(c)]});const h={col:a.col,row:a.zoneWithHeaders.top},d=null===(t=this.getters.getCell(o.id,h.col,h.row))||void 0===t?void 0:t.formattedValue,u=this.getUniqueColNameForExcel(e,d,r);r.push(u),o.cells[Ot(h.col,h.row)]={...o.cells[Ot(h.col,h.row)],content:u,value:u,isFormula:!1}}e.filters=i}}getUniqueColNameForExcel(e,t,o){t||(t=`Column${e}`);let n=t,i=2;for(;o.includes(n);)n=t+String(i),i++;return n}}sv.getters=["getCellBorderWithFilterBorder","getFilterHeaders","getFilterValues","isFilterHeader","isRowFiltered","isFilterActive"];var av;!function(e){e[e.previous=-1]="previous",e[e.current=0]="current",e[e.next=1]="next"}(av||(av={}));class lv extends pg{constructor(){super(...arguments),this.searchMatches=[],this.selectedMatchIndex=null,this.currentSearchRegex=null,this.searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1},this.toSearch=""}handle(e){switch(e.type){case"UPDATE_SEARCH":this.updateSearch(e.toSearch,e.searchOptions);break;case"CLEAR_SEARCH":case"UNDO":case"REDO":case"REMOVE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":this.clearSearch();break;case"SELECT_SEARCH_PREVIOUS_MATCH":this.selectNextCell(av.previous);break;case"SELECT_SEARCH_NEXT_MATCH":this.selectNextCell(av.next);break;case"REPLACE_SEARCH":this.replace(e.replaceWith);break;case"REPLACE_ALL_SEARCH":this.replaceAll(e.replaceWith);break;case"ACTIVATE_SHEET":case"REFRESH_SEARCH":this.refreshSearch()}}getSearchMatches(){return this.searchMatches}getCurrentSelectedMatchIndex(){return this.selectedMatchIndex}updateSearch(e,t){this.searchOptions=t,e!==this.toSearch&&(this.selectedMatchIndex=null),this.toSearch=e,this.updateRegex(),this.refreshSearch()}refreshSearch(){const e=this.findMatches();this.searchMatches=e,this.selectNextCell(av.current)}updateRegex(){let e=Re(this.toSearch);const t=this.searchOptions.matchCase?"":"i";this.searchOptions.exactMatch&&(e=`^${e}$`),this.currentSearchRegex=RegExp(e,t)}findMatches(){const e=this.getters.getActiveSheetId(),t=this.getters.getCells(e),o=[];if(this.toSearch)for(const e of Object.values(t))if(e&&this.currentSearchRegex&&this.currentSearchRegex.test(this.searchOptions.searchFormulas&&e.isFormula()?e.content:String(e.evaluated.value))){const t=this.getters.getCellPosition(e.id),n={col:t.col,row:t.row,selected:!1};o.push(n)}return o.sort(this.sortByRowThenColumn)}sortByRowThenColumn(e,t){return e.row===t.row?e.col-t.col:e.row>t.row?1:-1}selectNextCell(e){const t=this.searchMatches;if(!t.length)return void(this.selectedMatchIndex=null);let o;o=null===this.selectedMatchIndex?0:this.selectedMatchIndex+e,o=(o%t.length+t.length)%t.length,null!==this.selectedMatchIndex&&this.selectedMatchIndex===o||(this.selectedMatchIndex=o,this.selection.selectCell(t[o].col,t[o].row));for(let e=0;e<this.searchMatches.length;e++)this.searchMatches[e].selected=e===this.selectedMatchIndex}clearSearch(){this.toSearch="",this.searchMatches=[],this.selectedMatchIndex=null,this.currentSearchRegex=null,this.searchOptions={matchCase:!1,exactMatch:!1,searchFormulas:!1}}replace(e){if(null===this.selectedMatchIndex||!this.currentSearchRegex)return;const t=this.searchMatches[this.selectedMatchIndex],o=this.getters.getActiveSheetId(),n=this.getters.getCell(o,t.col,t.row),i=this.toReplace(n,o);if(n&&i){const o=new RegExp(this.currentSearchRegex.source,this.currentSearchRegex.flags+"g"),n=i.toString().replace(o,e);this.dispatch("UPDATE_CELL",{sheetId:this.getters.getActiveSheetId(),col:t.col,row:t.row,content:n}),this.searchMatches.splice(this.selectedMatchIndex,1),this.selectNextCell(av.current)}else this.selectNextCell(av.next)}replaceAll(e){const t=this.searchMatches.length;for(let o=0;o<t;o++)this.replace(e)}toReplace(e,t){if(e){if(this.searchOptions.searchFormulas&&e.isFormula())return e.content;if(this.searchOptions.searchFormulas||!e.isFormula())return e.evaluated.value.toString()}return null}drawGrid(e){const{ctx:t}=e,o=this.getters.getActiveSheetId();for(const e of this.searchMatches){const n=this.getters.getMerge(o,e.col,e.row),i=n?n.left:e.col,r=n?n.right:e.col,s=n?n.top:e.row,a=n?n.bottom:e.row,{x:l,y:c,width:h,height:d}=this.getters.getVisibleRect({top:s,left:i,right:r,bottom:a});h>0&&d>0&&(t.fillStyle="#8B008B33",t.fillRect(l,c,h,d),e.selected&&(t.strokeStyle="#8B008B",t.strokeRect(l,c,h,d)))}}}lv.layers=[3],lv.getters=["getSearchMatches","getCurrentSelectedMatchIndex"];class cv extends pg{handle(e){if("SET_DECIMAL"===e.type)this.setDecimal(e.sheetId,e.target,e.step)}setDecimal(e,t,o){const n=this.searchNumberFormat(e,t);if(void 0!==n){const i=function(e,t){const o=Pt(e).map((e=>"NUMBER"===e.type?{...e,format:jt(e.format,t)}:e)),n=Qt(o);return Lt[n]=o,n}(n,o);this.dispatch("SET_FORMATTING",{sheetId:e,target:t,format:i})}}searchNumberFormat(e,t){var o;for(let n of t)for(let t=n.top;t<=n.bottom;t++)for(let i=n.left;i<=n.right;i++){const n=this.getters.getCell(e,i,t);if((null==n?void 0:n.evaluated.type)===qo.number&&!(null===(o=n.evaluated.format)||void 0===o?void 0:o.match(j)))return n.evaluated.format||qt(n.evaluated.value)}}}cv.modes=["normal"];class hv extends pg{isRowHidden(e,t){return this.getters.isRowHiddenByUser(e,t)||this.getters.isRowFiltered(e,t)}isColHidden(e,t){return this.getters.isColHiddenByUser(e,t)}isHeaderHidden(e,t,o){return"COL"===t?this.isColHidden(e,o):this.isRowHidden(e,o)}getNextVisibleCellPosition(e,t,o){return{col:this.findVisibleHeader(e,"COL",Fe(t,this.getters.getNumberCols(e))),row:this.findVisibleHeader(e,"ROW",Fe(o,this.getters.getNumberRows(e)))}}findVisibleHeader(e,t,o){return o.find((o=>this.getters.doesHeaderExist(e,t,o)&&!this.isHeaderHidden(e,t,o)))}findLastVisibleColRowIndex(e,t,o){let n;for(n=o.last;n>=o.first;n--)if(!this.isHeaderHidden(e,t,n))return n;return n}findFirstVisibleColRowIndex(e,t){const o=this.getters.getNumberHeaders(e,t);for(let n=0;n<o-1;n++){if("COL"===t&&!this.isColHidden(e,n))return n;if("ROW"===t&&!this.isRowHidden(e,n))return n}}exportForExcel(e){for(const t of e.sheets)for(const[e,o]of Object.entries(t.rows)){const n=this.isRowHidden(t.id,Number(e));o.isHidden=n}}}hv.getters=["getNextVisibleCellPosition","findVisibleHeader","findLastVisibleColRowIndex","findFirstVisibleColRowIndex","isRowHidden","isColHidden","isHeaderHidden"];class dv extends pg{getHighlights(){return this.prepareHighlights(this.getters.getComposerHighlights().concat(this.getters.getSelectionInputHighlights()))}prepareHighlights(e){return e.filter((e=>e.zone.top>=0&&e.zone.left>=0&&e.zone.bottom<this.getters.getNumberRows(e.sheetId)&&e.zone.right<this.getters.getNumberCols(e.sheetId))).map((e=>{const{height:t,width:o}=No(e.zone),n=t*o==1?this.getters.expandZone(e.sheetId,e.zone):e.zone;return{...e,zone:n}}))}drawGrid(e){const{ctx:t,thinLineWidth:o}=e,n=this.getters.getActiveSheetId(),i=3*o;t.lineWidth=i;const r=this.getHighlights();for(let e of r.filter(((e,t)=>r.findIndex((t=>Ro(t.zone,e.zone)&&t.sheetId===n))===t))){const{x:o,y:n,width:r,height:s}=this.getters.getVisibleRect(e.zone);r>0&&s>0&&(t.strokeStyle=e.color,t.strokeRect(o+i/2,n+i/2,r-i,s-i),t.globalCompositeOperation="source-over",t.fillStyle=e.color+"20",t.fillRect(o+i,n+i,r-2*i,s-2*i))}}}dv.layers=[1],dv.getters=["getHighlights"];class uv extends pg{constructor(){super(...arguments),this.boxes=[]}getColDimensionsInViewport(e,t){const o=Math.min(...this.getters.getSheetViewVisibleCols()),n=this.getters.getColRowOffsetInViewport("COL",o,t),i=this.getters.getColSize(e,t);return{start:n,size:i,end:n+(this.getters.isColHidden(e,t)?0:i)}}getRowDimensionsInViewport(e,t){const o=Math.min(...this.getters.getSheetViewVisibleRows()),n=this.getters.getColRowOffsetInViewport("ROW",o,t),i=this.getters.getRowSize(e,t);return{start:n,size:i,end:n+(this.getters.isRowHidden(e,t)?0:i)}}getHeaderOffset(e,t,o){let n=this.getters.getColRowOffsetInViewport(e,t,o);return this.getters.isDashboard()||(n+="ROW"===e?O:M),n}drawGrid(e,t){switch(t){case 0:this.boxes=this.getGridBoxes(),this.drawBackground(e),this.drawCellBackground(e),this.drawBorders(e),this.drawTexts(e),this.drawIcon(e),this.drawFrozenPanes(e);break;case 7:this.getters.isDashboard()||(this.drawHeaders(e),this.drawFrozenPanesHeaders(e))}}drawBackground(e){const{ctx:t,thinLineWidth:o}=e,{width:n,height:i}=this.getters.getSheetViewDimensionWithHeaders(),r=this.getters.getActiveSheetId();t.fillStyle="#ffffff",t.fillRect(0,0,n+f,i+f);const s=this.getters.getSheetViewVisibleCols(),a=s[0],l=s[s.length-1],c=this.getters.getSheetViewVisibleRows(),h=c[0],d=c[c.length-1];if(this.getters.getGridLinesVisibility(r)&&!this.getters.isDashboard()){t.lineWidth=2*o,t.strokeStyle="#E2E3E3",t.beginPath();for(const e of s){const o={top:h,bottom:d,left:e,right:e},{x:n,width:r,height:s}=this.getters.getVisibleRect(o);t.moveTo(n+r,0),t.lineTo(n+r,Math.min(i,s+(this.getters.isDashboard()?0:O)))}for(const e of c){const o={left:a,right:l,top:e,bottom:e},{y:i,width:r,height:s}=this.getters.getVisibleRect(o);t.moveTo(0,i+s),t.lineTo(Math.min(n,r+(this.getters.isDashboard()?0:M)),i+s)}t.stroke()}}drawCellBackground(e){const{ctx:t,thinLineWidth:o}=e,n=!this.getters.isDashboard()&&this.getters.getGridLinesVisibility(this.getters.getActiveSheetId());t.lineWidth=n?.3*o:o;const i=n?.1*o:0;t.strokeStyle="#111";for(let e of this.boxes){let r=e.style;(r.fillColor&&"#ffffff"!==r.fillColor||e.isMerge)&&(t.fillStyle=r.fillColor||"#ffffff",n?(t.fillRect(e.x,e.y,e.width,e.height),t.strokeRect(e.x+i,e.y+i,e.width-2*i,e.height-2*i)):t.fillRect(e.x-o,e.y-o,e.width+2*o,e.height+2*o)),e.error&&(t.fillStyle="red",t.beginPath(),t.moveTo(e.x+e.width-5,e.y),t.lineTo(e.x+e.width,e.y),t.lineTo(e.x+e.width,e.y+5),t.fill())}}drawBorders(e){const{ctx:t,thinLineWidth:o}=e;for(let e of this.boxes){const t=e.border;if(t){const{x:o,y:i,width:r,height:s}=e;t.left&&n(t.left,o,i,o,i+s),t.top&&n(t.top,o,i,o+r,i),t.right&&n(t.right,o+r,i,o+r,i+s),t.bottom&&n(t.bottom,o,i+s,o+r,i+s)}}function n([e,n],i,r,s,a){t.strokeStyle=n,t.lineWidth=("thin"===e?2:3)*o,t.beginPath(),t.moveTo(i,r),t.lineTo(s,a),t.stroke()}}drawTexts(e){const{ctx:t,thinLineWidth:o}=e;let n;t.textBaseline="top";for(let e of this.boxes)if(e.content){const i=e.style||{},r=e.content.align||"left",s=Ne(i);let a;s!==n&&(n=s,t.font=s),t.fillStyle=i.textColor||"#000";let l=e.y+e.height/2+1;if(a="left"===r?e.x+(e.image?e.image.size+2*$:L):"right"===r?e.x+e.width-L-(e.isFilterHeader?20:0):e.x+e.width/2,t.textAlign=r,e.clipRect){t.save(),t.beginPath();const{x:o,y:n,width:i,height:r}=e.clipRect;t.rect(o,n,i,r),t.clip()}const c=e.content.multiLineText.length,h=_e(i);let d=l-(c*(h+L)-L)/2;for(let n of e.content.multiLineText){if(t.fillText(n,Math.round(a),Math.round(d)),i.strikethrough||i.underline){const e=Me(t,n,i);let s=a;"right"===r?s-=e:"center"===r&&(s-=e/2),i.strikethrough&&t.fillRect(s,d+h/2,e,2.6*o),i.underline&&t.fillRect(s,d+h+1,e,1.3*o)}d+=L+h}e.clipRect&&t.restore()}}drawIcon(e){const{ctx:t}=e;for(const e of this.boxes)if(e.image){const o=e.image.image,n=e.image.size,i=(e.height-n)/2;if(e.image.clipIcon){t.save(),t.beginPath();const{x:o,y:n,width:i,height:r}=e.image.clipIcon;t.rect(o,n,i,r),t.clip()}t.drawImage(o,e.x+$,e.y+i,n,n),e.image.clipIcon&&t.restore()}}drawHeaders(e){const{ctx:t,thinLineWidth:o}=e,n=this.getters.getSheetViewVisibleCols(),i=n[0],r=n[n.length-1],s=this.getters.getSheetViewVisibleRows(),a=s[0],l=s[s.length-1],{width:c,height:h}=this.getters.getSheetViewDimensionWithHeaders(),d=this.getters.getSelectedZones(),u=function(e){const t=new Set;for(let o of e)for(let e of Fe(o.left,o.right+1))t.add(e);return t}(d),g=function(e){const t=new Set;for(let o of e)for(let e of Fe(o.top,o.bottom+1))t.add(e);return t}(d),p=this.getters.getActiveSheetId(),f=this.getters.getNumberCols(p),m=this.getters.getNumberRows(p),E=this.getters.getActiveCols(),w=this.getters.getActiveRows();t.font=`400 11px ${G}`,t.textAlign="center",t.textBaseline="middle",t.lineWidth=o,t.strokeStyle="#333";for(let e=i;e<=r;e++){const o={left:e,right:e,top:0,bottom:m-1},{x:n,width:i}=this.getters.getVisibleRect(o),r=this.getters.doesZonesContainFilter(p,[o]),s=E.has(e),a=u.has(e);t.fillStyle=s?r?R:S:a?r?T:b:r?I:v,t.fillRect(n,0,i,O)}for(let e=a;e<=l;e++){const o={top:e,bottom:e,left:0,right:f-1},{y:n,height:i}=this.getters.getVisibleRect(o),r=this.getters.doesZonesContainFilter(p,[o]),s=w.has(e),a=g.has(e);t.fillStyle=s?r?R:S:a?r?T:b:r?I:v,t.fillRect(0,n,M,i)}t.beginPath(),t.moveTo(M,0),t.lineTo(M,h),t.moveTo(0,O),t.lineTo(c,O),t.strokeStyle="#C0C0C0",t.stroke(),t.beginPath();for(const e of n){const o=this.getters.getColSize(p,e),n=It(e);t.fillStyle=E.has(e)?"#fff":C;let r=this.getHeaderOffset("COL",i,e);t.fillText(n,r+o/2,13),t.moveTo(r+o,0),t.lineTo(r+o,O)}for(const e of s){const o=this.getters.getRowSize(p,e);t.fillStyle=w.has(e)?"#fff":C;let n=this.getHeaderOffset("ROW",a,e);t.fillText(String(e+1),24,n+o/2),t.moveTo(0,n+o),t.lineTo(M,n+o)}t.stroke()}drawFrozenPanesHeaders(e){const{ctx:t,thinLineWidth:o}=e,{x:n,y:i}=this.getters.getMainViewportCoordinates(),r=this.getters.isDashboard()?0:M,s=this.getters.isDashboard()?0:O;t.lineWidth=6*o,t.strokeStyle="#BCBCBC",t.beginPath(),n&&(t.moveTo(r+n,0),t.lineTo(r+n,s)),i&&(t.moveTo(0,s+i),t.lineTo(r,s+i)),t.stroke()}drawFrozenPanes(e){const{ctx:t,thinLineWidth:o}=e,{x:n,y:i}=this.getters.getMainViewportCoordinates(),r=this.getters.getSheetViewVisibleCols(),s=r[0],a=r[r.length-1],l=this.getters.getSheetViewVisibleRows(),c={left:s,right:a,top:l[0],bottom:l[l.length-1]},h=this.getters.getVisibleRect(c),d=this.getters.isDashboard()?0:M,u=this.getters.isDashboard()?0:O;t.lineWidth=6*o,t.strokeStyle="#DADFE8",t.beginPath(),n&&(t.moveTo(d+n,u),t.lineTo(d+n,h.height+u)),i&&(t.moveTo(d,u+i),t.lineTo(h.width+d,u+i)),t.stroke()}hasContent(e,t){const o=this.getters.getActiveSheetId(),n=this.getters.getCell(o,e,t);return n&&!n.isEmpty()||this.getters.isInMerge(o,e,t)}findNextEmptyCol(e,t,o){let n=e;for(;n<t&&!this.hasContent(n+1,o);)n++;return n}findPreviousEmptyCol(e,t,o){let n=e;for(;n>t&&!this.hasContent(n-1,o);)n--;return n}computeCellAlignment(e,t){if(e.isFormula()&&this.getters.shouldShowFormulas())return"left";const{align:o}=this.getters.getCellStyle(e);return t&&e.evaluated.type===qo.number?"center"!==o?"left":o:o||e.defaultAlign}createZoneBox(e,t,o){const{left:n,right:i}=o,r=t.left,s=t.top,a=this.getters.getCell(e,r,s),c=this.getters.shouldShowFormulas(),{x:h,y:d,width:u,height:g}=this.getters.getVisibleRect(t),p={x:h,y:d,width:u,height:g,border:this.getters.getCellBorderWithFilterBorder(e,r,s)||void 0,style:this.getters.getCellComputedStyle(e,r,s)};if(!a)return p;const f=this.getters.getConditionalIcon(r,s),m=_e(p.style),v=f?2*$+m:0;f&&(p.image={type:"icon",size:m,clipIcon:{x:p.x,y:p.y,width:Math.min(v,u),height:g},image:Zr[f].img}),p.isFilterHeader=this.getters.isFilterHeader(e,r,s);const b=p.isFilterHeader?19:0,S=this.getters.getCellText(a,c),C=this.getters.getTextWidth(a),E=this.getters.getCellStyle(a).wrapping||"overflow",w="wrap"===E?this.getters.getCellMultiLineText(a,u-2*L):[S],y=v+C+b,x=this.computeCellAlignment(a,y>u);p.content={multiLineText:w,width:"overflow"===E?C:u,align:x},a.evaluated.type===qo.error&&a.evaluated.error.logLevel>l.silent&&(p.error=a.evaluated.error.message);const R=y>u||m>g;if(f||p.isFilterHeader)p.clipRect={x:p.x+v,y:p.y,width:Math.max(0,u-v-b),height:g};else if(R&&"overflow"===E){let o,a;switch(this.getters.isInMerge(e,r,s)?(o=this.getters.getMerge(e,r,s).right,a=r):(o=this.findNextEmptyCol(r,i,s),a=this.findPreviousEmptyCol(r,n,s)),x){case"left":{const e=Lo({col:o,row:s}),{x:n,y:i,width:r,height:a}=this.getters.getVisibleRect(yo(t,e));(r<C||m>a)&&(p.clipRect={x:n,y:i,width:r,height:a});break}case"right":{const e=Lo({col:a,row:s}),{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(yo(t,e));(i<C||m>r)&&(p.clipRect={x:o,y:n,width:i,height:r});break}case"center":{const e={...t,right:o,left:a},{x:n,y:i,width:s,height:l}=this.getters.getVisibleRect(e);(s<C||a===r||o===r||m>l)&&(p.clipRect={x:n,y:i,width:s,height:l});break}}}else"clip"!==E&&"wrap"!==E||(p.clipRect={x:p.x,y:p.y,width:u,height:g});return p}getGridBoxes(){const e=[],t=this.getters.getSheetViewVisibleCols(),o=t[0],n=t[t.length-1],i=this.getters.getSheetViewVisibleRows(),r={left:o,right:n,top:i[0],bottom:i[i.length-1]},s=this.getters.getActiveSheetId();for(const o of i)for(const n of t)this.getters.isInMerge(s,n,o)||e.push(this.createZoneBox(s,Lo({col:n,row:o}),r));for(const t of this.getters.getMerges(s))if(!this.getters.isMergeHidden(s,t)&&Io(t,r)){const o=this.createZoneBox(s,t,r),n=this.getters.getCellBorder(s,t.right,t.bottom);o.border={...o.border,bottom:n?n.bottom:void 0,right:n?n.right:void 0},o.isMerge=!0,e.push(o)}return e}}uv.layers=[0,7],uv.getters=["getColDimensionsInViewport","getRowDimensionsInViewport"];const gv=[{name:r("Sum"),types:[qo.number],compute:e=>Va.compute([e])},{name:r("Avg"),types:[qo.number],compute:e=>Ka.compute([e])},{name:r("Min"),types:[qo.number],compute:e=>pl.compute([e])},{name:r("Max"),types:[qo.number],compute:e=>hl.compute([e])},{name:r("Count"),types:[qo.number,qo.text,qo.boolean,qo.error],compute:e=>rl.compute([e])},{name:r("Count Numbers"),types:[qo.number,qo.text,qo.boolean,qo.error],compute:e=>il.compute([e])}];class pv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.gridSelection={anchor:{cell:{col:0,row:0},zone:{top:0,left:0,bottom:0,right:0}},zones:[{top:0,left:0,bottom:0,right:0}]},this.selectedFigureId=null,this.sheetsData={},this.activeSheet=null,this.moveClient=n.moveClient}allowDispatch(e){switch(e.type){case"ACTIVATE_SHEET":try{this.getters.getSheet(e.sheetIdTo);break}catch(e){return 27}case"MOVE_COLUMNS_ROWS":return this.isMoveElementAllowed(e)}return 0}handleEvent(e){const t=e.anchor;let o=[];switch(e.mode){case"overrideSelection":o=[t.zone];break;case"updateAnchor":o=[...this.gridSelection.zones];const n=o.findIndex((t=>Ro(t,e.previousAnchor.zone)));n>=0&&(o[n]=t.zone);break;case"newAnchor":o=[...this.gridSelection.zones,t.zone]}this.setSelectionMixin(e.anchor,o),this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor));const{col:n,row:i}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:n,row:i}),this.selectedFigureId=null}handle(e){switch(e.type){case"START_EDITION":case"ACTIVATE_SHEET":this.selectedFigureId=null;break;case"DELETE_FIGURE":this.selectedFigureId===e.id&&(this.selectedFigureId=null);break;case"DELETE_SHEET":this.selectedFigureId&&this.getters.getFigure(e.sheetId,this.selectedFigureId)&&(this.selectedFigureId=null)}switch(e.type){case"START":const t=this.getters.getVisibleSheetIds()[0];this.dispatch("ACTIVATE_SHEET",{sheetIdTo:t,sheetIdFrom:t});const{col:o,row:n}=this.getters.getNextVisibleCellPosition(t,0,0);this.selectCell(o,n),this.selection.registerAsDefault(this,this.gridSelection.anchor,{handleEvent:this.handleEvent.bind(this)}),this.moveClient({sheetId:t,col:0,row:0});break;case"ACTIVATE_SHEET":if(this.getters.isSheetVisible(e.sheetIdTo)||this.dispatch("SHOW_SHEET",{sheetId:e.sheetIdTo}),this.setActiveSheet(e.sheetIdTo),this.sheetsData[e.sheetIdFrom]={gridSelection:Ie(this.gridSelection)},e.sheetIdTo in this.sheetsData)Object.assign(this,this.sheetsData[e.sheetIdTo]),this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor));else{const{col:t,row:o}=this.getters.getNextVisibleCellPosition(e.sheetIdTo,0,0);this.selectCell(t,o)}break;case"REMOVE_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){"COL"===e.dimension?this.onColumnsRemoved(e):this.onRowsRemoved(e);const{col:o,row:n}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:n})}break}case"ADD_COLUMNS_ROWS":{const t=this.getters.getActiveSheetId();if(e.sheetId===t){this.onAddElements(e);const{col:o,row:n}=this.gridSelection.anchor.cell;this.moveClient({sheetId:t,col:o,row:n})}break}case"MOVE_COLUMNS_ROWS":e.sheetId===this.getActiveSheetId()&&this.onMoveElements(e);break;case"SELECT_FIGURE":this.selectedFigureId=e.id;break;case"ACTIVATE_NEXT_SHEET":this.activateNextSheet("right");break;case"ACTIVATE_PREVIOUS_SHEET":this.activateNextSheet("left");break;case"HIDE_SHEET":e.sheetId===this.getActiveSheetId()&&this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e.sheetId,sheetIdTo:this.getters.getVisibleSheetIds()[0]});break;case"UNDO":case"REDO":case"DELETE_SHEET":const i=Object.keys(this.sheetsData).filter((e=>!this.getters.tryGetSheet(e)));for(const e of i)delete this.sheetsData[e];for(const e in this.sheetsData){const t=this.clipSelection(e,this.sheetsData[e].gridSelection);this.sheetsData[e]={gridSelection:Ie(t)}}if(!this.getters.tryGetSheet(this.getters.getActiveSheetId())){const e=this.getters.getVisibleSheetIds();if(this.activeSheet=this.getters.getSheet(e[0]),this.activeSheet.id in this.sheetsData){const{anchor:e}=this.clipSelection(this.activeSheet.id,this.sheetsData[this.activeSheet.id].gridSelection);this.selectCell(e.cell.col,e.cell.row)}else this.selectCell(0,0);const{col:t,row:o}=this.gridSelection.anchor.cell;this.moveClient({sheetId:this.getters.getActiveSheetId(),col:t,row:o})}const r=this.getters.getActiveSheetId();this.gridSelection.zones=this.gridSelection.zones.map((e=>this.getters.expandZone(r,e))),this.gridSelection.anchor.zone=this.getters.expandZone(r,this.gridSelection.anchor.zone),this.setSelectionMixin(this.gridSelection.anchor,this.gridSelection.zones)}this.selection.resetDefaultAnchor(this,Ie(this.gridSelection.anchor))}getActiveSheet(){return this.activeSheet}getActiveSheetId(){return this.activeSheet.id}getActiveCell(){const e=this.getters.getActiveSheetId(),{col:t,row:o}=this.gridSelection.anchor.cell,{col:n,row:i}=this.getters.getMainCellPosition(e,t,o);return this.getters.getCell(e,n,i)}getActiveCols(){const e=new Set;for(let t of this.gridSelection.zones)if(0===t.top&&t.bottom===this.getters.getNumberRows(this.getters.getActiveSheetId())-1)for(let o=t.left;o<=t.right;o++)e.add(o);return e}getActiveRows(){const e=new Set,t=this.getters.getActiveSheetId();for(let o of this.gridSelection.zones)if(0===o.left&&o.right===this.getters.getNumberCols(t)-1)for(let t=o.top;t<=o.bottom;t++)e.add(t);return e}getCurrentStyle(){const e=this.getters.getActiveCell();return e?this.getters.getCellStyle(e):{}}getSelectedZones(){return Ie(this.gridSelection.zones)}getSelectedZone(){return Ie(this.gridSelection.anchor.zone)}getSelection(){return Ie(this.gridSelection)}getSelectedFigureId(){return this.selectedFigureId}getPosition(){return{col:this.gridSelection.anchor.cell.col,row:this.gridSelection.anchor.cell.row}}getSheetPosition(e){if(e===this.getters.getActiveSheetId())return this.getPosition();{const t=this.sheetsData[e];return t?{col:t.gridSelection.anchor.cell.col,row:t.gridSelection.anchor.cell.row}:this.getters.getNextVisibleCellPosition(e,0,0)}}getStatisticFnResults(){const e=new Set(this.gridSelection.zones.map((e=>this.getters.getCellsInZone(this.getters.getActiveSheetId(),e))).flat().filter((e=>void 0!==e)));let t=new Set,o=[];for(let n of e)t.add(n.evaluated.type),o.push(n.evaluated.value);let n={};for(let e of gv){let i;e.types.some((e=>t.has(e)))&&(i=e.compute(o)),n[e.name]=i}return n}getAggregate(){let e=0,t=0;const o=this.getters.getActiveSheetId(),n=this.gridSelection.zones.map(Fo).flat();for(const{col:i,row:r}of n){const n=this.getters.getCell(o,i,r);(null==n?void 0:n.evaluated.type)===qo.number&&(t++,e+=n.evaluated.value)}return t<2?null:Ut(e)}isSelected(e){return!!this.getters.getSelectedZones().find((t=>Ro(t,e)))}getElementsFromSelection(e){if("COL"===e&&0===this.getters.getActiveCols().size)return[];if("ROW"===e&&0===this.getters.getActiveRows().size)return[];const t=this.getters.getSelectedZones();let o=[];const n="COL"===e?"left":"top",i="COL"===e?"right":"bottom";for(const e of t){const t=Array.from({length:e[i]-e[n]+1},((t,o)=>e[n]+o));o=o.concat(t)}return[...new Set(o)].sort()}setSelectionMixin(e,t){const{anchor:o,zones:n}=this.clipSelection(this.getters.getActiveSheetId(),{anchor:e,zones:t});this.gridSelection.anchor=o,this.gridSelection.zones=function(e){return e.reverse().filter(((e,t,o)=>t===o.findIndex((t=>t.top===e.top&&t.bottom===e.bottom&&t.left===e.left&&t.right===e.right)))).reverse()}(n)}selectCell(e,t){const o=this.getters.getActiveSheetId(),n=this.getters.expandZone(o,{left:e,right:e,top:t,bottom:t});this.setSelectionMixin({zone:n,cell:{col:e,row:t}},[n])}setActiveSheet(e){const t=this.getters.getSheet(e);this.activeSheet=t}activateNextSheet(e){const t=this.getters.getSheetIds(),o=(t.findIndex((e=>e===this.activeSheet.id))+("left"===e?t.length-1:1))%t.length;this.dispatch("ACTIVATE_SHEET",{sheetIdFrom:this.getActiveSheetId(),sheetIdTo:t[o]})}onColumnsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,n=Eo(o,"left",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Eo(i,"left",[...e.elements]);const r={cell:{col:i.left,row:i.top},zone:n};this.setSelectionMixin(r,[n])}onRowsRemoved(e){const{cell:t,zone:o}=this.gridSelection.anchor,n=Eo(o,"top",[...e.elements]);let i={left:t.col,right:t.col,top:t.row,bottom:t.row};i=Eo(i,"top",[...e.elements]);const r={cell:{col:i.left,row:i.top},zone:n};this.setSelectionMixin(r,[n])}onAddElements(e){const t=Co(this.gridSelection.anchor.zone,"COL"===e.dimension?"left":"top",e.base,e.position,e.quantity),o={cell:{col:t.left,row:t.top},zone:t};this.setSelectionMixin(o,[t])}onMoveElements(e){const t=e.elements.length;this.dispatch("ADD_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,base:e.base,quantity:t,position:"before"});const o="COL"===e.dimension,n=e.elements[0],i=e.elements[t-1],r=e.base<n,s=r&&o?t:0,a=r&&!o?t:0;this.dispatch("CUT",{target:[{left:o?n+s:0,right:o?i+s:this.getters.getNumberCols(e.sheetId)-1,top:o?0:n+a,bottom:o?this.getters.getNumberRows(e.sheetId)-1:i+a}]}),this.dispatch("PASTE",{target:[{left:o?e.base:0,right:o?e.base+t-1:this.getters.getNumberCols(e.sheetId)-1,top:o?0:e.base,bottom:o?this.getters.getNumberRows(e.sheetId)-1:e.base+t-1}]});const l=r?e.elements.map((e=>e+t)):e.elements;let c=e.base;for(const t of l){const o="COL"===e.dimension?this.getters.getColSize(e.sheetId,t):this.getters.getRowSize(e.sheetId,t);this.dispatch("RESIZE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,size:o,elements:[c]}),c+=1}this.dispatch("REMOVE_COLUMNS_ROWS",{dimension:e.dimension,sheetId:e.sheetId,elements:l})}isMoveElementAllowed(e){const t="COL"===e.dimension,o=e.elements[0],n=e.elements[e.elements.length-1],i=e.sheetId,r=t?this.getters.doesColumnsHaveCommonMerges:this.getters.doesRowsHaveCommonMerges;return r(i,o-1,o)||r(i,n,n+1)||r(i,e.base-1,e.base)?2:0}clipSelection(e,t){const o=this.getters.getNumberCols(e)-1,n=this.getters.getNumberRows(e)-1;return{zones:t.zones.map((e=>({left:Oe(e.left,0,o),right:Oe(e.right,0,o),top:Oe(e.top,0,n),bottom:Oe(e.bottom,0,n)}))),anchor:{cell:{col:Oe(t.anchor.cell.col,0,o),row:Oe(t.anchor.cell.row,0,n)},zone:{left:Oe(t.anchor.zone.left,0,o),right:Oe(t.anchor.zone.right,0,o),top:Oe(t.anchor.zone.top,0,n),bottom:Oe(t.anchor.zone.bottom,0,n)}}}}drawGrid(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,n=this.getSelectedZones();t.fillStyle="#f3f7fe";const i=1===n.length&&n[0].left===n[0].right&&n[0].top===n[0].bottom;t.fillStyle=i?"#f3f7fe":"#e9f0ff",t.strokeStyle=E,t.lineWidth=1.5*o,t.globalCompositeOperation="multiply";for(const e of n){const{x:o,y:n,width:i,height:r}=this.getters.getVisibleRect(e);t.fillRect(o,n,i,r),t.strokeRect(o,n,i,r)}t.globalCompositeOperation="source-over";const r=this.getters.getActiveSheetId(),{col:s,row:a}=this.getPosition();let l;t.strokeStyle=E,t.lineWidth=3*o,l=this.getters.isInMerge(r,s,a)?this.getters.getMerge(r,s,a):{top:a,bottom:a,left:s,right:s};const{x:c,y:h,width:d,height:u}=this.getters.getVisibleRect(l);d>0&&u>0&&t.strokeRect(c,h,d,u)}}pv.layers=[5],pv.getters=["getActiveSheet","getActiveSheetId","getActiveCell","getActiveCols","getActiveRows","getCurrentStyle","getSelectedZones","getSelectedZone","getStatisticFnResults","getAggregate","getSelectedFigureId","getSelection","getPosition","getSheetPosition","isSelected","getElementsFromSelection"];const fv=new po;class mv extends pg{constructor(e,t,o,n,i,r,s){super(e,t,o,n,i),this.inputHasSingleRange=s,this.ranges=[],this.focusedRangeIndex=null,this.willAddNewRange=!1,this.insertNewRange(0,r),this.activeSheet=this.getters.getActiveSheetId(),0===this.ranges.length&&(this.insertNewRange(this.ranges.length,[""]),this.focusLast())}allowDispatch(e){if("ADD_EMPTY_RANGE"===e.type)if(this.inputHasSingleRange&&1===this.ranges.length)return 29;return 0}handleEvent(e){const t=bo(e.anchor.zone),o=this.activeSheet,n=this.getters.getActiveSheetId(),i=this.getters.getSheetName(n);this.add([n===o?t:`${Ae(i)}!${t}`])}handle(e){switch(e.type){case"UNFOCUS_SELECTION_INPUT":this.unfocus();break;case"FOCUS_RANGE":this.focus(this.getIndex(e.rangeId));break;case"CHANGE_RANGE":{const t=this.getIndex(e.rangeId);if(null!==t&&this.focusedRangeIndex!==t&&this.focus(t),null!==t){const o=e.value.split(",").map((e=>e.trim()));this.setRange(t,o)}break}case"ADD_EMPTY_RANGE":this.insertNewRange(this.ranges.length,[""]),this.focusLast();break;case"REMOVE_RANGE":const t=this.getIndex(e.rangeId);null!==t&&this.removeRange(t);break;case"STOP_SELECTION_INPUT":this.willAddNewRange=!1;break;case"PREPARE_SELECTION_INPUT_EXPANSION":{const e=this.focusedRangeIndex;null===e||this.inputHasSingleRange||(this.willAddNewRange=""!==this.ranges[e].xc.trim());break}case"ACTIVATE_SHEET":if(e.sheetIdFrom!==e.sheetIdTo){const{col:t,row:o}=this.getters.getNextVisibleCellPosition(e.sheetIdTo,0,0),n=this.getters.expandZone(e.sheetIdTo,Lo({col:t,row:o}));this.selection.resetAnchor(this,{cell:{col:t,row:o},zone:n})}}}unsubscribe(){this.unfocus()}getSelectionInputValue(){return this.cleanInputs(this.ranges.map((e=>e.xc?e.xc:"")))}getSelectionInputHighlights(){return this.ranges.map((e=>this.inputToHighlights(e))).flat()}focus(e){this.focusedRangeIndex=e}focusLast(){this.focus(this.ranges.length-1)}unfocus(){this.focusedRangeIndex=null}add(e){null!==this.focusedRangeIndex&&0!==e.length&&(this.willAddNewRange?(this.insertNewRange(this.ranges.length,e),this.focusLast(),this.willAddNewRange=!1):this.setRange(this.focusedRangeIndex,e))}setContent(e,t){this.ranges[e]={...this.ranges[e],id:fv.uuidv4(),xc:t}}insertNewRange(e,t){this.ranges.splice(e,0,...t.map(((e,t)=>({xc:e,id:(this.ranges.length+t+1).toString(),color:(rt=++rt%nt.length,nt[rt])}))))}setRange(e,t){const[,...o]=t;this.setContent(e,t[0]),this.insertNewRange(e+1,o),o.length&&this.focus(e+o.length)}removeRange(e){this.ranges.splice(e,1),null!==this.focusedRangeIndex&&this.focusLast()}inputToHighlights({xc:e,color:t}){const o=this.cleanInputs([e]).filter((e=>this.getters.isRangeValid(e))).filter((e=>this.shouldBeHighlighted(this.activeSheet,e)));return o.map((e=>{const{sheetName:o}=Rt(e);return{zone:this.getters.getRangeFromSheetXC(this.activeSheet,e).zone,sheetId:o&&this.getters.getSheetIdByName(o)||this.activeSheet,color:t}}))}cleanInputs(e){return e.map((e=>e.split(","))).flat().map((e=>e.trim())).filter((e=>""!==e))}shouldBeHighlighted(e,t){const{sheetName:o}=Rt(t),n=this.getters.getSheetIdByName(o),i=this.getters.getActiveSheet().id;return this.getters.isRangeValid(t)&&(n===i||void 0===n&&i===e)}getIndex(e){const t=this.ranges.findIndex((t=>t.id===e));return t>=0?t:null}}mv.layers=[1],mv.getters=[];class vv extends pg{constructor(e,t,o,n,i){super(e,t,o,n,i),this.state=t,this.config=n,this.inputs={},this.focusedInputId=null}get currentInput(){return this.focusedInputId?this.inputs[this.focusedInputId]:null}allowDispatch(e){var t,o;if("FOCUS_RANGE"===e.type){const n=null===(t=this.currentInput)||void 0===t?void 0:t.getIndex(e.rangeId);if(this.focusedInputId===e.id&&(null===(o=this.currentInput)||void 0===o?void 0:o.focusedRangeIndex)===n)return 28}return this.currentInput?this.currentInput.allowDispatch(e):0}handle(e){var t;switch(e.type){case"ENABLE_NEW_SELECTION_INPUT":this.initInput(e.id,e.initialRanges||[],e.hasSingleRange);break;case"DISABLE_SELECTION_INPUT":this.focusedInputId===e.id&&this.unfocus(),delete this.inputs[e.id];break;case"UNFOCUS_SELECTION_INPUT":this.unfocus();break;case"ADD_EMPTY_RANGE":case"REMOVE_RANGE":case"FOCUS_RANGE":case"CHANGE_RANGE":if(e.id!==this.focusedInputId){const t=this.inputs[e.id];this.selection.capture(t,{cell:{col:0,row:0},zone:Lo({col:0,row:0})},{handleEvent:t.handleEvent.bind(t)}),this.focusedInputId=e.id}}null===(t=this.currentInput)||void 0===t||t.handle(e)}unsubscribe(){this.unfocus()}getSelectionInput(e){return this.inputs[e]?this.inputs[e].ranges.map(((t,o)=>Object.assign({},t,{color:this.focusedInputId===e&&null!==this.inputs[e].focusedRangeIndex&&this.isRangeValid(t.xc)?t.color:null,isFocused:this.focusedInputId===e&&this.inputs[e].focusedRangeIndex===o}))):[]}isRangeValid(e){if(!e)return!1;const{xc:t,sheetName:o}=Rt(e);return null!==t.match(Ct)&&(!o||void 0!==this.getters.getSheetIdByName(o))}getSelectionInputValue(e){return this.inputs[e].getSelectionInputValue()}getSelectionInputHighlights(){return this.focusedInputId?this.inputs[this.focusedInputId].getSelectionInputHighlights():[]}initInput(e,t,o=!1){if(this.inputs[e]=new mv(this.getters,this.state,this.dispatch,this.config,this.selection,t,o),0===t.length){const t=this.inputs[e],o={zone:Lo({col:0,row:0}),cell:{col:0,row:0}};this.selection.capture(t,o,{handleEvent:t.handleEvent.bind(t)}),this.focusedInputId=e}}unfocus(){this.selection.release(this.currentInput),this.focusedInputId=null}}vv.layers=[1],vv.getters=["getSelectionInput","getSelectionInputValue","isRangeValid","getSelectionInputHighlights"];class bv{constructor(){this.subscriptions={}}on(e,t,o){if(!o)throw new Error("Missing callback");this.subscriptions[e]||(this.subscriptions[e]=[]),this.subscriptions[e].push({owner:t,callback:o})}trigger(e,t){const o=this.subscriptions[e]||[];for(let e=0,n=o.length;e<n;e++){const n=o[e];n.callback.call(n.owner,t)}}off(e,t){const o=this.subscriptions[e];o&&(this.subscriptions[e]=o.filter((e=>e.owner!==t)))}clear(){this.subscriptions={}}}function Sv(e,t){return{...e,definition:gr(e.definition,t)}}function Cv(e,t){if(e.sheetId!==t.sheetId)return e;if(("FREEZE_COLUMNS"===e.type?"COL":"ROW")!==t.dimension)return e;let o=e.quantity;if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));for(let t of e)o>t&&o--}if("ADD_COLUMNS_ROWS"===t.type){o=o>("before"===t.position?t.base-1:t.base)?o+t.quantity:o}return o>0?{...e,quantity:o}:void 0}ki.addTransformation("ADD_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],Sv),ki.addTransformation("REMOVE_COLUMNS_ROWS",["CREATE_CHART","UPDATE_CHART"],Sv),ki.addTransformation("DELETE_SHEET",["MOVE_RANGES"],(function(e,t){const o=t.sheetId;if(e.targetSheetId===o||e.sheetId===o)return;return e})),ki.addTransformation("DELETE_FIGURE",["UPDATE_FIGURE","UPDATE_CHART"],(function(e,t){if(e.id===t.id)return;return e})),ki.addTransformation("CREATE_SHEET",["CREATE_SHEET"],(function(e,t){var o;if(e.name===t.name)return{...e,name:(null===(o=e.name)||void 0===o?void 0:o.match(/\d+/))?e.name.replace(/\d+/,(e=>(parseInt(e)+1).toString())):`${e.name}~`,position:e.position+1};return e})),ki.addTransformation("ADD_MERGE",["ADD_MERGE","REMOVE_MERGE","CREATE_FILTER_TABLE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;const o=[];for(const n of e.target)for(const e of t.target)Io(n,e)||o.push({...n});if(o.length)return{...e,target:o};return})),ki.addTransformation("ADD_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],Cv),ki.addTransformation("REMOVE_COLUMNS_ROWS",["FREEZE_COLUMNS","FREEZE_ROWS"],Cv),ki.addTransformation("CREATE_FILTER_TABLE",["CREATE_FILTER_TABLE","ADD_MERGE"],(function(e,t){if(e.sheetId!==t.sheetId)return e;for(const o of e.target)for(const e of t.target)if(Io(e,o))return;return e}));const Ev=[{match:function(e){return"sheetId"in e},fn:xv},{match:function(e){return"target"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;const n=[];for(const o of e.target){const e=Bi(o,t);e&&n.push(e)}if(!n.length)return"IGNORE_COMMAND";return{...e,target:n}}},{match:function(e){return"col"in e&&"row"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type)return function(e,t){const o="COL"===t.dimension?"col":"row";let n=e[o];if("REMOVE_COLUMNS_ROWS"===t.type){const e=[...t.elements].sort(((e,t)=>t-e));if(e.includes(n))return"IGNORE_COMMAND";for(let t of e)n>=t&&n--}"ADD_COLUMNS_ROWS"===t.type&&(n>t.base||n===t.base&&"before"===t.position)&&(n+=t.quantity);return{...e,[o]:n}}(e,t);if("ADD_MERGE"===t.type)return function(e,t){for(const o of t.target){if(!(e.col===o.left&&e.row===o.top)&&To(e.col,e.row,o))return"IGNORE_COMMAND"}return e}(e,t);return"SKIP_TRANSFORMATION"}},{match:function(e){return"dimension"in e&&"sheetId"in e},fn:function(e,t){const o=xv(e,t);if("SKIP_TRANSFORMATION"!==o)return"IGNORE_COMMAND"===o?"IGNORE_COMMAND":e;if("ADD_COLUMNS_ROWS"===t.type||"REMOVE_COLUMNS_ROWS"===t.type){if(t.dimension!==e.dimension)return e;const o="ADD_COLUMNS_ROWS"===e.type,n=o?"base":"elements";let i=o?[e[n]]:e[n];if("REMOVE_COLUMNS_ROWS"===t.type&&(i=i.map((e=>{if(t.elements.includes(e))return;const o=t.elements.sort(((e,t)=>t-e));for(let t of o)e>t&&e--;return e})).filter(Ze)),"ADD_COLUMNS_ROWS"===t.type){const e="before"===t.position?t.base-1:t.base;i=i.map((o=>o>e?o+t.quantity:o))}if(i.length){let t=i;return o&&(t=i[0]),{...e,[n]:t}}return"IGNORE_COMMAND"}return"SKIP_TRANSFORMATION"}},{match:function(e){return"ranges"in e},fn:function(e,t){const o=[],n="DELETE_SHEET"===t.type&&t.sheetId;for(const i of e.ranges)if(i._sheetId!==t.sheetId)o.push({...i,_zone:i._zone});else{const e=Bi(i._zone,t);e&&n!==i._sheetId&&o.push({...i,_zone:e})}if(!o.length)return"IGNORE_COMMAND";return{...e,ranges:o}}}];function wv(e,t){const o=ki.getTransformation(e.type,t.type);return o?o(e,t):function(e,t){for(const{match:o,fn:n}of Ev)if(o(e)){const o=n(e,t);if("SKIP_TRANSFORMATION"===o)continue;if("IGNORE_COMMAND"===o)return;e=o}return e}(e,t)}function yv(e,t){let o=[...e];for(const e of t)o=o.map((t=>wv(t,e))).filter(Ze);return o}function xv(e,t){const o="DELETE_SHEET"===t.type&&t.sheetId;return e.sheetId===o?"IGNORE_COMMAND":"CREATE_SHEET"===e.type||"CREATE_SHEET"===t.type||e.sheetId!==t.sheetId?e:"SKIP_TRANSFORMATION"}class Rv{constructor(e,t,o,n){this._commands=[],this._changes=[],this.id=e,this.clientId=t,this._commands=[...o],this._changes=n?[...n]:[]}setChanges(e){this._changes=e}get commands(){return this._commands}get changes(){return this._changes}}class Iv extends Error{}class Tv extends bv{constructor(e,t,o=Y){super(),this.revisions=e,this.transportService=t,this.serverRevisionId=o,this.clients={},this.clientId="local",this.pendingMessages=[],this.waitingAck=!1,this.waitingUndoRedoAck=!1,this.isReplayingInitialRevisions=!1,this.processedRevisions=new Set,this.uuidGenerator=new po,this.debouncedMove=function(e,t,o){let n;return function(){const i=this,r=arguments,s=o&&!n;clearTimeout(n),n=setTimeout((function(){n=null,o||e.apply(i,r)}),t),s&&e.apply(i,r)}}(this._move.bind(this),200)}canApplyOptimisticUpdate(){return!this.waitingUndoRedoAck}save(e,t){if(!e.length||!t.length||!this.canApplyOptimisticUpdate())return;const o=new Rv(this.uuidGenerator.uuidv4(),this.clientId,e,t);this.revisions.append(o.id,o),this.trigger("new-local-state-update",{id:o.id}),this.sendUpdateMessage({type:"REMOTE_REVISION",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:o.id,clientId:o.clientId,commands:o.commands})}undo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_UNDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),undoneRevisionId:e})}redo(e){this.waitingUndoRedoAck=!0,this.sendUpdateMessage({type:"REVISION_REDONE",version:1,serverRevisionId:this.serverRevisionId,nextRevisionId:this.uuidGenerator.uuidv4(),redoneRevisionId:e})}move(e){this.debouncedMove(e)}join(e){e?(this.clients[e.id]=e,this.clientId=e.id):(this.clients.local={id:"local",name:"local"},this.clientId="local"),this.transportService.onNewMessage(this.clientId,this.onMessageReceived.bind(this))}loadInitialMessages(e){this.isReplayingInitialRevisions=!0,this.on("unexpected-revision-id",this,(({revisionId:e})=>{throw new Error(`The spreadsheet could not be loaded. Revision ${e} is corrupted.`)}));for(const t of e)this.onMessageReceived(t);this.off("unexpected-revision-id",this),this.isReplayingInitialRevisions=!1}leave(){delete this.clients[this.clientId],this.transportService.leave(this.clientId),this.transportService.sendMessage({type:"CLIENT_LEFT",clientId:this.clientId,version:1})}snapshot(e){const t=this.uuidGenerator.uuidv4();this.transportService.sendMessage({type:"SNAPSHOT",nextRevisionId:t,serverRevisionId:this.serverRevisionId,data:{...e,revisionId:t},version:1})}getClient(){const e=this.clients[this.clientId];if(!e)throw new Iv("The client left the session");return e}getConnectedClients(){return new Set(Object.values(this.clients).filter(Ze))}getRevisionId(){return this.serverRevisionId}isFullySynchronized(){return 0===this.pendingMessages.length}_move(e){var t;if(!this.clients[this.clientId])return;const o=null===(t=this.clients[this.clientId])||void 0===t?void 0:t.position;if((null==o?void 0:o.col)===e.col&&o.row===e.row&&o.sheetId===e.sheetId)return;const n=o?"CLIENT_MOVED":"CLIENT_JOINED",i=this.getClient();this.clients[this.clientId]={...i,position:e},this.transportService.sendMessage({type:n,version:1,client:{...i,position:e}})}onMessageReceived(e){if(!this.isAlreadyProcessed(e)){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":if(e.serverRevisionId!==this.serverRevisionId)return void this.trigger("unexpected-revision-id",{revisionId:e.serverRevisionId});const{clientId:t,commands:o}=e,n=new Rv(e.nextRevisionId,t,o);if(n.clientId!==this.clientId){this.revisions.insert(n.id,n,e.serverRevisionId);const t=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.commands)).flat();this.trigger("remote-revision-received",{commands:yv(o,t)})}break;case"SNAPSHOT_CREATED":{const t=new Rv(e.nextRevisionId,"server",[]);this.revisions.insert(t.id,t,e.serverRevisionId),this.dropPendingHistoryMessages(),this.trigger("snapshot");break}}this.acknowledge(e),this.trigger("collaborative-event-received")}}onClientMoved(e){e.client.id!==this.clientId&&(this.clients[e.client.id]=e.client)}onClientJoined(e){if(e.client.id!==this.clientId){this.clients[e.client.id]=e.client;const t=this.clients[this.clientId];if(t){const{position:e}=t;e&&this.transportService.sendMessage({type:"CLIENT_MOVED",version:1,client:{...t,position:e}})}}}onClientLeft(e){e.clientId!==this.clientId&&delete this.clients[e.clientId]}sendUpdateMessage(e){this.pendingMessages.push(e),this.waitingAck||(this.waitingAck=!0,this.sendPendingMessage())}sendPendingMessage(){let e=this.pendingMessages[0];if(e){if("REMOTE_REVISION"===e.type){const t=this.revisions.get(e.nextRevisionId);if(0===t.commands.length){this.revisions.drop(t.id);const e=this.pendingMessages.filter((e=>"REMOTE_REVISION"===e.type)).map((e=>e.nextRevisionId));return this.trigger("pending-revisions-dropped",{revisionIds:e}),this.waitingAck=!1,this.waitingUndoRedoAck=!1,void(this.pendingMessages=[])}e={...e,clientId:t.clientId,commands:t.commands}}if(this.isReplayingInitialRevisions)throw new Error(`Trying to send a new revision while replaying initial revision. This can lead to endless dispatches every time the spreadsheet is open.\n ${JSON.stringify(e)}`);this.transportService.sendMessage({...e,serverRevisionId:this.serverRevisionId})}}acknowledge(e){switch("REVISION_UNDONE"!==e.type&&"REVISION_REDONE"!==e.type||(this.waitingUndoRedoAck=!1),e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":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.sendPendingMessage()}}isAlreadyProcessed(e){if("CLIENT_MOVED"===e.type&&e.client.id===this.clientId)return!0;switch(e.type){case"REMOTE_REVISION":case"REVISION_REDONE":case"REVISION_UNDONE":return this.processedRevisions.has(e.nextRevisionId);default:return!1}}dropPendingHistoryMessages(){this.waitingUndoRedoAck=!1,this.pendingMessages=this.pendingMessages.filter((({type:e})=>"REVISION_REDONE"!==e&&"REVISION_UNDONE"!==e))}}const Av=["#ff851b","#0074d9","#7fdbff","#b10dc9","#39cccc","#f012be","#3d9970","#111111","#ff4136","#aaaaaa","#85144b","#001f3f"];class Ov extends pg{constructor(){super(...arguments),this.availableColors=new Set(Av),this.colors={}}isPositionValid(e){return e.row<this.getters.getNumberRows(e.sheetId)&&e.col<this.getters.getNumberCols(e.sheetId)}chooseNewColor(){0===this.availableColors.size&&(this.availableColors=new Set(Av));const e=(t=[...this.availableColors.values()])[Math.floor(Math.random()*t.length)];var t;return this.availableColors.delete(e),e}getClientsToDisplay(){try{this.getters.getClient()}catch(e){if(e instanceof Iv)return[];throw e}const e=this.getters.getActiveSheetId(),t=[];for(const o of this.getters.getConnectedClients())if(o.id!==this.getters.getClient().id&&o.position&&o.position.sheetId===e&&this.isPositionValid(o.position)){const e=o.position;this.colors[o.id]||(this.colors[o.id]=this.chooseNewColor());const n=this.colors[o.id];t.push({...o,position:e,color:n})}return t}drawGrid(e){if(this.getters.isDashboard())return;const{ctx:t,thinLineWidth:o}=e,n=this.getters.getActiveSheetId();for(const e of this.getClientsToDisplay()){const{row:i,col:r}=e.position,s=this.getters.expandZone(n,{top:i,bottom:i,left:r,right:r}),{x:a,y:l,width:c,height:h}=this.getters.getVisibleRect(s);if(c<=0||h<=0)continue;const d=e.color,u=`${d}10`;t.fillStyle=u,t.lineWidth=4*o,t.strokeStyle=d,t.globalCompositeOperation="multiply",t.fillRect(a,l,c,h),t.globalCompositeOperation="source-over",t.strokeRect(a,l,c,h),t.font=`bold ${W+1}px ${G}`}}}Ov.getters=["getClientsToDisplay"],Ov.layers=[5];class Mv{constructor(e,t,o,n,i,r){this.getters=e,this.sheetId=t,this.boundaries=o,this.width=n.width,this.height=n.height,this.offsetScrollbarX=r.x,this.offsetScrollbarY=r.y,this.canScrollVertically=i.canScrollVertically,this.canScrollHorizontally=i.canScrollHorizontally,this.offsetCorrectionX=this.getters.getColDimensions(this.sheetId,this.boundaries.left).start,this.offsetCorrectionY=this.getters.getRowDimensions(this.sheetId,this.boundaries.top).start,this.adjustViewportOffsetX(),this.adjustViewportOffsetY()}getMaxSize(){const e=this.getters.findLastVisibleColRowIndex(this.sheetId,"COL",{first:this.boundaries.left,last:this.boundaries.right}),t=this.getters.findLastVisibleColRowIndex(this.sheetId,"ROW",{first:this.boundaries.top,last:this.boundaries.bottom}),{end:o,size:n}=this.getters.getColDimensions(this.sheetId,e),{end:i,size:r}=this.getters.getRowDimensions(this.sheetId,t),s=this.searchHeaderIndex("COL",o-this.width,0),a=this.getters.getColSize(this.sheetId,s),l=this.searchHeaderIndex("ROW",i-this.height,0),c=this.getters.getRowSize(this.sheetId,l);return{width:o-this.offsetCorrectionX+(this.canScrollHorizontally?Math.max(N,Math.min(a,this.width-n)):0),height:i-this.offsetCorrectionY+(this.canScrollVertically?Math.max(_+5,Math.min(c,this.height-r)):0)}}getColIndex(e,t=!1){return e<this.offsetCorrectionX||e>this.offsetCorrectionX+this.width?-1:this.searchHeaderIndex("COL",e-this.offsetCorrectionX,this.left,t)}getRowIndex(e,t=!1){return e<this.offsetCorrectionY||e>this.offsetCorrectionY+this.height?-1:this.searchHeaderIndex("ROW",e-this.offsetCorrectionY,this.top,t)}adjustPosition(e){const t=this.sheetId;e||(e=this.getters.getSheetPosition(t));const o=this.getters.getMainCellPosition(t,e.col,e.row),{col:n,row:i}=this.getters.getNextVisibleCellPosition(t,o.col,o.row);To(n,this.boundaries.top,this.boundaries)&&this.adjustPositionX(n),To(this.boundaries.left,i,this.boundaries)&&this.adjustPositionY(i)}adjustPositionX(e){const t=this.sheetId,{start:o,end:n}=this.getters.getColDimensions(t,e);for(;n>this.offsetX+this.offsetCorrectionX+this.width&&this.offsetX+this.offsetCorrectionX<o;)this.offsetX=this.getters.getColDimensions(t,this.left).end-this.offsetCorrectionX,this.offsetScrollbarX=this.offsetX,this.adjustViewportZoneX();for(;e<this.left;){let e;for(e=this.left;e>=0&&this.getters.isColHidden(t,e);e--);this.offsetX=this.getters.getColDimensions(t,e-1).start-this.offsetCorrectionX,this.offsetScrollbarX=this.offsetX,this.adjustViewportZoneX()}}adjustPositionY(e){const t=this.sheetId;for(;this.getters.getRowDimensions(t,e).end>this.offsetY+this.height+this.offsetCorrectionY&&this.offsetY+this.offsetCorrectionY<this.getters.getRowDimensions(t,e).start;)this.offsetY=this.getters.getRowDimensions(t,this.top).end-this.offsetCorrectionY,this.offsetScrollbarY=this.offsetY,this.adjustViewportZoneY();for(;e<this.top;){let e;for(e=this.top;e>=0&&this.getters.isRowHidden(t,e);e--);this.offsetY=this.getters.getRowDimensions(t,e-1).start-this.offsetCorrectionY,this.offsetScrollbarY=this.offsetY,this.adjustViewportZoneY()}}setViewportOffset(e,t){this.setViewportOffsetX(e),this.setViewportOffsetY(t)}adjustViewportZone(){this.adjustViewportZoneX(),this.adjustViewportZoneY()}getRect(e){const t=xo(e,this.zone);if(t){return{x:this.getters.getColRowOffset("COL",this.zone.left,t.left)+this.offsetCorrectionX,y:this.getters.getColRowOffset("ROW",this.zone.top,t.top)+this.offsetCorrectionY,width:Math.min(this.getters.getColRowOffset("COL",t.left,t.right+1),this.width),height:Math.min(this.getters.getColRowOffset("ROW",t.top,t.bottom+1),this.height)}}}isVisible(e,t){return t<=this.bottom&&t>=this.top&&e>=this.left&&e<=this.right&&!this.getters.isColHidden(this.sheetId,e)&&!this.getters.isRowHidden(this.sheetId,t)}searchHeaderIndex(e,t,o=0,n=!1){let i=0;const r=this.sheetId,s=this.getters.getNumberHeaders(r,e);for(let a=o;a<=s-1;a++){const o=n||"COL"!==e?a<this.top&&a>this.bottom:a<this.left&&a>this.right;if(!this.getters.isHeaderHidden(r,e,a)&&!o&&(i+="COL"===e?this.getters.getColSize(r,a):this.getters.getRowSize(r,a),i>t))return a}return-1}get zone(){return{left:this.left,right:this.right,top:this.top,bottom:this.bottom}}setViewportOffsetX(e){this.canScrollHorizontally&&(this.offsetScrollbarX=e,this.adjustViewportZoneX())}setViewportOffsetY(e){this.canScrollVertically&&(this.offsetScrollbarY=e,this.adjustViewportZoneY())}adjustViewportOffsetX(){if(this.canScrollHorizontally){const{width:e}=this.getMaxSize();this.width+this.offsetScrollbarX>e&&(this.offsetScrollbarX=Math.max(0,e-this.width))}this.left=this.getColIndex(this.offsetScrollbarX,!0),this.right=this.getColIndex(this.offsetScrollbarX+this.width,!0),-1===this.right&&(this.right=this.boundaries.right),this.adjustViewportZoneX()}adjustViewportOffsetY(){if(this.canScrollVertically){const{height:e}=this.getMaxSize();this.height+this.offsetScrollbarY>e&&(this.offsetScrollbarY=Math.max(0,e-this.height))}this.top=this.getRowIndex(this.offsetScrollbarY,!0),this.bottom=this.getRowIndex(this.offsetScrollbarY+this.width,!0),-1===this.bottom&&(this.bottom=this.boundaries.bottom),this.adjustViewportZoneY()}adjustViewportZoneX(){const e=this.sheetId;this.left=this.searchHeaderIndex("COL",this.offsetScrollbarX,this.boundaries.left),this.right=Math.min(this.boundaries.right,this.searchHeaderIndex("COL",this.width,this.left)),-1===this.right&&(this.right=this.getters.getNumberCols(e)-1),this.offsetX=this.getters.getColDimensions(e,this.left).start-this.getters.getColDimensions(e,this.boundaries.left).start}adjustViewportZoneY(){const e=this.sheetId;this.top=this.searchHeaderIndex("ROW",this.offsetScrollbarY,this.boundaries.top),this.bottom=Math.min(this.boundaries.bottom,this.searchHeaderIndex("ROW",this.height,this.top)),-1===this.bottom&&(this.bottom=this.getters.getNumberRows(e)-1),this.offsetY=this.getters.getRowDimensions(e,this.top).start-this.getters.getRowDimensions(e,this.boundaries.top).start}}class Nv extends pg{constructor(){super(...arguments),this.viewports={},this.sheetViewWidth=1e3,this.sheetViewHeight=1e3,this.gridOffsetX=0,this.gridOffsetY=0,this.sheetsWithDirtyViewports=new Set}allowDispatch(e){switch(e.type){case"SET_VIEWPORT_OFFSET":return this.checkScrollingDirection(e);case"RESIZE_SHEETVIEW":return this.chainValidations(this.checkValuesAreDifferent,this.checkPositiveDimension)(e);default:return 0}}handleEvent(e){switch(e.type){case"HeadersSelected":case"AlterZoneCorner":break;case"ZonesSelected":let{col:t,row:o}=ko(e.previousAnchor.zone,e.anchor.zone);if("updateAnchor"===e.mode){const n=e.previousAnchor.zone,i=e.anchor.zone,{top:r,bottom:s,left:a,right:l}=this.getters.getActiveMainViewport();n.left===i.left&&n.right===i.right&&(t=a>t||t>l?a:t),n.top===i.top&&n.bottom===i.bottom&&(o=r>o||o>s?r:o)}const n=this.getters.getActiveSheetId();t=Math.min(t,this.getters.getNumberCols(n)-1),o=Math.min(o,this.getters.getNumberRows(n)-1),this.refreshViewport(this.getters.getActiveSheetId(),{col:t,row:o})}}handle(e){var t;switch(this.cleanViewports(),e.type){case"START":this.selection.observe(this,{handleEvent:this.handleEvent.bind(this)}),this.resetViewports(this.getters.getActiveSheetId());break;case"UNDO":case"REDO":this.resetSheetViews();break;case"RESIZE_SHEETVIEW":this.resizeSheetView(e.height,e.width,e.gridOffsetX,e.gridOffsetY);break;case"SET_VIEWPORT_OFFSET":this.setSheetViewOffset(e.offsetX,e.offsetY);break;case"SHIFT_VIEWPORT_DOWN":const{top:o}=this.getActiveMainViewport(),n=this.getters.getActiveSheetId(),i=this.clipOffsetY(this.getters.getRowDimensions(n,o).start+this.sheetViewHeight);this.shiftVertically(i);break;case"SHIFT_VIEWPORT_UP":{const{top:e}=this.getActiveMainViewport(),t=this.getters.getActiveSheetId(),o=this.clipOffsetY(this.getters.getRowDimensions(t,e).end-this.sheetViewHeight);this.shiftVertically(o);break}case"REMOVE_COLUMNS_ROWS":case"RESIZE_COLUMNS_ROWS":case"HIDE_COLUMNS_ROWS":case"ADD_COLUMNS_ROWS":case"UNHIDE_COLUMNS_ROWS":case"UPDATE_FILTER":this.resetViewports(e.sheetId);break;case"UPDATE_CELL":("content"in e||"format"in e||void 0!==(null===(t=e.style)||void 0===t?void 0:t.fontSize))&&this.sheetsWithDirtyViewports.add(e.sheetId);break;case"ACTIVATE_SHEET":this.setViewports(),this.refreshViewport(e.sheetIdTo);break;case"UNFREEZE_ROWS":case"UNFREEZE_COLUMNS":case"FREEZE_COLUMNS":case"FREEZE_ROWS":case"UNFREEZE_COLUMNS_ROWS":this.resetViewports(this.getters.getActiveSheetId());break;case"START_EDITION":const{col:r,row:s}=this.getters.getPosition();this.refreshViewport(this.getters.getActiveSheetId(),{col:r,row:s})}}finalize(){for(const e of this.sheetsWithDirtyViewports)this.resetViewports(e);this.sheetsWithDirtyViewports=new Set,this.setViewports()}setViewports(){var e;const t=this.getters.getSheetIds();for(const o of t)(null===(e=this.viewports[o])||void 0===e?void 0:e.bottomRight)||this.resetViewports(o)}getColIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getColIndex(e))))}getRowIndex(e){const t=this.getters.getActiveSheetId();return Math.max(...this.getSubViewports(t).map((t=>t.getRowIndex(e))))}getSheetViewDimensionWithHeaders(){return{width:this.sheetViewWidth+this.gridOffsetX,height:this.sheetViewHeight+this.gridOffsetY}}getSheetViewDimension(){return{width:this.sheetViewWidth,height:this.sheetViewHeight}}getActiveMainViewport(){const e=this.getters.getActiveSheetId();return this.getMainViewport(e)}getActiveSheetScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetX,scrollY:t.offsetY}}getActiveSheetDOMScrollInfo(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e);return{scrollX:t.offsetScrollbarX,scrollY:t.offsetScrollbarY}}getSheetViewVisibleCols(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>Fe(e.left,e.right+1))).flat())].filter((t=>!this.getters.isHeaderHidden(e,"COL",t)))}getSheetViewVisibleRows(){const e=this.getters.getActiveSheetId(),t=this.getSubViewports(e);return[...new Set(t.map((e=>Fe(e.top,e.bottom+1))).flat())].filter((t=>!this.getters.isHeaderHidden(e,"ROW",t)))}getMainViewportRect(){const e=this.getters.getActiveSheetId(),t=this.getMainInternalViewport(e),{xSplit:o,ySplit:n}=this.getters.getPaneDivisions(e);let{width:i,height:r}=t.getMaxSize();return{x:this.getters.getColDimensions(e,o).start,y:this.getters.getRowDimensions(e,n).start,width:i,height:r}}getMaximumSheetOffset(){const e=this.getters.getActiveSheetId(),{width:t,height:o}=this.getMainViewportRect(),n=this.getMainInternalViewport(e);return{maxOffsetX:Math.max(0,t-n.width+1),maxOffsetY:Math.max(0,o-n.height+1)}}getColRowOffsetInViewport(e,t,o){const n=this.getters.getActiveSheetId(),i=this.getters.getSheetViewVisibleCols(),r=this.getters.getSheetViewVisibleRows();if(o<t)return-this.getColRowOffsetInViewport(e,o,t);let s=0;const a="COL"===e?i:r;for(let i=t;i<o;i++)a.includes(i)&&(s+="COL"===e?this.getters.getColSize(n,i):this.getters.getRowSize(n,i));return s}isVisibleInViewport(e,t,o){return this.getSubViewports(e).some((e=>e.isVisible(t,o)))}getEdgeScrollCol(e,t,o){let n=!1,i=0,r=0;const{xSplit:s}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{width:a}=this.getSheetViewDimension(),{x:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollX;return e>a?(n=!0,r=Ft(e-a),i=1):e<l&&o>=l&&c>0?(n=!0,r=Ft(l-e),i=-1):s&&t<l&&e>l&&(n=!0,r=Ft(e),i="reset"),{canEdgeScroll:n,direction:i,delay:r}}getEdgeScrollRow(e,t,o){let n=!1,i=0,r=0;const{ySplit:s}=this.getters.getPaneDivisions(this.getters.getActiveSheetId()),{height:a}=this.getSheetViewDimension(),{y:l}=this.getMainViewportCoordinates(),c=this.getActiveSheetScrollInfo().scrollY;return e>a?(n=!0,r=Ft(e-a),i=1):e<l&&o>=l&&c>0?(n=!0,r=Ft(l-e),i=-1):s&&t<l&&e>l&&(n=!0,r=Ft(e),i="reset"),{canEdgeScroll:n,direction:i,delay:r}}getVisibleRect(e){const t=this.getters.getActiveSheetId(),o=this.getSubViewports(t).map((t=>t.getRect(e))).filter(Ze);if(0===o.length)return{x:0,y:0,width:0,height:0};const n=Math.min(...o.map((e=>e.x))),i=Math.min(...o.map((e=>e.y))),r=Math.max(...o.map((e=>e.x+e.width)))-n,s=Math.max(...o.map((e=>e.y+e.height)))-i;return{x:n+this.gridOffsetX,y:i+this.gridOffsetY,width:r,height:s}}getMainViewportCoordinates(){const e=this.getters.getActiveSheetId(),{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e);return{x:this.getters.getColDimensions(e,t).start,y:this.getters.getRowDimensions(e,o).start}}ensureMainViewportExist(e){this.viewports[e]||this.resetViewports(e)}getSubViewports(e){return this.ensureMainViewportExist(e),Object.values(this.viewports[e]).filter(Ze)}checkPositiveDimension(e){return e.width<0||e.height<0?67:0}checkValuesAreDifferent(e){const{height:t,width:o}=this.getSheetViewDimension();return e.gridOffsetX===this.gridOffsetX&&e.gridOffsetY===this.gridOffsetY&&e.width===o&&e.height===t?75:0}checkScrollingDirection({offsetX:e,offsetY:t}){const o=this.getMainInternalViewport(this.getters.getActiveSheetId());return!o.canScrollHorizontally&&e>0||!o.canScrollVertically&&t>0?68:0}getMainViewport(e){const t=this.getMainInternalViewport(e);return{top:t.top,left:t.left,bottom:t.bottom,right:t.right}}getMainInternalViewport(e){return this.ensureMainViewportExist(e),this.viewports[e].bottomRight}cleanViewports(){const e=this.getters.getSheetIds();for(let t of Object.keys(this.viewports))e.includes(t)||delete this.viewports[t]}resetSheetViews(){for(let e of Object.keys(this.viewports)){const t=this.getters.getSheetPosition(e);this.resetViewports(e);const o=this.getSubViewports(e);Object.values(o).forEach((e=>{e.adjustPosition(t)}))}}resizeSheetView(e,t,o=0,n=0){this.sheetViewHeight=e,this.sheetViewWidth=t,this.gridOffsetX=o,this.gridOffsetY=n,this.recomputeViewports()}recomputeViewports(){for(let e of Object.keys(this.viewports))this.resetViewports(e)}setSheetViewOffset(e,t){const o=this.getters.getActiveSheetId(),{maxOffsetX:n,maxOffsetY:i}=this.getMaximumSheetOffset();Object.values(this.getSubViewports(o)).forEach((o=>o.setViewportOffset(Oe(e,0,n),Oe(t,0,i))))}clipOffsetY(e){const{height:t}=this.getMainViewportRect(),o=t-this.sheetViewHeight;return e=Math.min(e,o),e=Math.max(e,0)}getViewportOffset(e){var t,o;return{x:(null===(t=this.viewports[e])||void 0===t?void 0:t.bottomRight.offsetScrollbarX)||0,y:(null===(o=this.viewports[e])||void 0===o?void 0:o.bottomRight.offsetScrollbarY)||0}}resetViewports(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),n=this.getters.getNumberCols(e),i=this.getters.getNumberRows(e),r=this.getters.getColRowOffset("COL",0,t,e),s=this.getters.getColRowOffset("ROW",0,o,e),{xRatio:a,yRatio:l}=this.getFrozenSheetViewRatio(e),c=a<1,h=l<1,d=this.getViewportOffset(e),u={topLeft:o&&t&&new Mv(this.getters,e,{left:0,right:t-1,top:0,bottom:o-1},{width:r,height:s},{canScrollHorizontally:!1,canScrollVertically:!1},{x:0,y:0})||void 0,topRight:o&&new Mv(this.getters,e,{left:t,right:n-1,top:0,bottom:o-1},{width:this.sheetViewWidth-r,height:s},{canScrollHorizontally:c,canScrollVertically:!1},{x:c?d.x:0,y:0})||void 0,bottomLeft:t&&new Mv(this.getters,e,{left:0,right:t-1,top:o,bottom:i-1},{width:r,height:this.sheetViewHeight-s},{canScrollHorizontally:!1,canScrollVertically:h},{x:0,y:h?d.y:0})||void 0,bottomRight:new Mv(this.getters,e,{left:t,right:n-1,top:o,bottom:i-1},{width:this.sheetViewWidth-r,height:this.sheetViewHeight-s},{canScrollHorizontally:c,canScrollVertically:h},{x:c?d.x:0,y:h?d.y:0})};this.viewports[e]=u}refreshViewport(e,t){Object.values(this.getSubViewports(e)).forEach((e=>{e.adjustViewportZone(),e.adjustPosition(t)}))}shiftVertically(e){const{top:t}=this.getActiveMainViewport(),{scrollX:o}=this.getActiveSheetScrollInfo();this.setSheetViewOffset(o,e);const{anchor:n}=this.getters.getSelection(),i=this.getActiveMainViewport().top-t;this.selection.selectCell(n.cell.col,n.cell.row+i)}getVisibleFigures(){const e=this.getters.getActiveSheetId(),t=[],o=this.getters.getFigures(e),{scrollX:n,scrollY:i}=this.getActiveSheetScrollInfo(),{x:r,y:s}=this.getters.getMainViewportCoordinates(),{width:a,height:l}=this.getters.getSheetViewDimensionWithHeaders();for(const e of o)e.x>=r&&(e.x+e.width<=r+n||e.x>=a+n+r)||e.y>=s&&(e.y+e.height<=s+i||e.y>=l+i+s)||t.push(e);return t}getFrozenSheetViewRatio(e){const{xSplit:t,ySplit:o}=this.getters.getPaneDivisions(e),n=this.getters.getColDimensions(e,t).start,i=this.getters.getRowDimensions(e,o).start;return{xRatio:n/(this.sheetViewWidth+this.gridOffsetX),yRatio:i/(this.sheetViewHeight+this.gridOffsetY)}}}Nv.getters=["getColIndex","getRowIndex","getActiveMainViewport","getSheetViewDimension","getSheetViewDimensionWithHeaders","getMainViewportRect","isVisibleInViewport","getEdgeScrollCol","getEdgeScrollRow","getVisibleFigures","getVisibleRect","getColRowOffsetInViewport","getMainViewportCoordinates","getActiveSheetScrollInfo","getActiveSheetDOMScrollInfo","getSheetViewVisibleCols","getSheetViewVisibleRows","getFrozenSheetViewRatio"];class _v extends pg{allowDispatch(e){if("SORT_CELLS"===e.type){if(!To(e.col,e.row,e.zone))throw new Error(r("The anchor must be part of the provided zone"));return this.checkValidations(e,this.checkMerge,this.checkMergeSizes)}return 0}handle(e){if("SORT_CELLS"===e.type)this.sortZone(e.sheetId,e,e.zone,e.sortDirection,e.sortOptions||{})}checkMerge({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return 0;for(let o=t.top;o<=t.bottom;o++)for(let n=t.left;n<=t.right;n++)if(!this.getters.isInMerge(e,n,o))return 62;return 0}checkMergeSizes({sheetId:e,zone:t}){if(!this.getters.doesIntersectMerge(e,t))return 0;const o=this.getters.getMerges(e).filter((e=>Io(e,t))),n=No(o[0]);let[i,r]=[n.width,n.height];return o.every((e=>{let[t,o]=[e.right-e.left+1,e.bottom-e.top+1];return t===i&&o===r}))?0:62}expand(e,t){const{left:o,right:n,top:i,bottom:r}=this.getters.expandZone(e,t);return{left:Math.max(0,o),right:Math.min(this.getters.getNumberCols(e)-1,n),top:Math.max(0,i),bottom:Math.min(this.getters.getNumberRows(e)-1,r)}}checkExpandedValues(e,t){const o=this.expand(e,t);let n;if(this.getters.doesIntersectMerge(e,o)){const{left:t,right:i,top:r,bottom:s}=o;for(let o=t;o<=i;o++)for(let t=r;t<=s;t++){const{col:i,row:r}=this.getters.getMainCellPosition(e,o,t);if(n=this.getters.getCell(e,i,r),null==n?void 0:n.formattedValue)return!0}}else for(let t of this.getters.getCellsInZone(e,o))if(null==t?void 0:t.formattedValue)return!0;return!1}getContiguousZone(e,t){let o,{top:n,bottom:i,left:r,right:s}=t,a=!1;for(;!a;)a=!0,n>0&&(o=this.checkExpandedValues(e,{left:r-1,right:s+1,top:n-1,bottom:n-1}),o&&(a=!1,n--)),r>0&&(o=this.checkExpandedValues(e,{left:r-1,right:r-1,top:n-1,bottom:i+1}),o&&(a=!1,r--)),s<this.getters.getNumberCols(e)-1&&(o=this.checkExpandedValues(e,{left:s+1,right:s+1,top:n-1,bottom:i+1}),o&&(a=!1,s++)),i<this.getters.getNumberRows(e)-1&&(o=this.checkExpandedValues(e,{left:r-1,right:s+1,top:i+1,bottom:i+1}),o&&(a=!1,i++));return{left:r,right:s,top:n,bottom:i}}hasHeader(e){if(1===e[0].length)return!1;let t=e.map((e=>e.map((e=>(null==e?void 0:e.evaluated.type)||qo.empty))));return t[0][0]===qo.empty&&(t=t.slice(1)),!t.some((e=>e[0]===qo.empty))&&!!t.some((e=>e[1]!==qo.empty&&e[0]!==e[1]))}sortZone(e,t,o,n,i){const[r,s]=this.mainCellsSteps(e,o);let a=this.getters.getMainCellPosition(e,t.col,t.row).col,l=Object.assign({},o),c=this.mainCells(e,o);!i.sortHeaders&&this.hasHeader(c)&&(l.top+=s),c=this.mainCells(e,l);const h=function(e,t,o){const n=e.map(Pn);let i=n.filter((e=>e.type===qo.empty)),r=n.filter((e=>e.type!==qo.empty));o&&(r.push(...i.map((e=>({...e,type:qo.number,value:0})))),i=[]);const s="descending"===t?-1:1;return r.sort(((e,t)=>{let o=Ln.indexOf(e.type)-Ln.indexOf(t.type);return 0===o&&(o=e.type===qo.text||e.type===qo.error?e.value.localeCompare(t.value):e.value-t.value),s*o})).concat(i)}(c[a-l.left],n,Boolean(i.emptyCellAsZero)),d=h.map((e=>e.index)),[u,g]=[c.length,c[0].length];for(let t=0;t<u;t++)for(let o=0;o<g;o++){let n=c[t][d[o]],i=l.left+t*r,a=l.top+o*s,h={sheetId:e,col:i,row:a,content:"",value:""};if(n){let t=n.content;if(n.isFormula()){const o=a-this.getters.getCellPosition(n.id).row,i=this.getters.createAdaptedRanges(n.dependencies,0,o,e);t=this.getters.buildFormulaContent(e,n,i)}h.style=n.style,h.content=t,h.format=n.format,h.value=n.evaluated.value}this.dispatch("UPDATE_CELL",h)}}mainCellsSteps(e,t){const o=this.getters.getMerge(e,t.left,t.top);return[o?o.right-o.left+1:1,o?o.bottom-o.top+1:1]}mainCells(e,t){const[o,n]=this.mainCellsSteps(e,t),i=[],r=Fe(t.left,t.right+1,o),s=Fe(t.top,t.bottom+1,n);for(const t of r){const o=[];i.push(o);for(const n of s)o.push(this.getters.getCell(e,t,n))}return i}}_v.getters=["getContiguousZone"];class Fv extends pg{constructor(){super(...arguments),this.showFormulas=!1}handle(e){if("SET_FORMULA_VISIBILITY"===e.type)this.showFormulas=e.show}shouldShowFormulas(){return this.showFormulas}}Fv.getters=["shouldShowFormulas"];class Dv extends pg{constructor(){super(...arguments),this.ctx=document.createElement("canvas").getContext("2d")}allowDispatch(e){switch(e.type){case"AUTORESIZE_ROWS":case"AUTORESIZE_COLUMNS":try{this.getters.getSheet(e.sheetId);break}catch(e){return 27}}return 0}handle(e){switch(e.type){case"AUTORESIZE_COLUMNS":for(let t of e.cols){const o=this.getColMaxWidth(e.sheetId,t);0!==o&&this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"COL",size:o,sheetId:e.sheetId})}break;case"AUTORESIZE_ROWS":for(let t of e.rows)this.dispatch("RESIZE_COLUMNS_ROWS",{elements:[t],dimension:"ROW",size:null,sheetId:e.sheetId})}}getCellWidth(e,{col:t,row:o}){const n=this.getters.getCell(e,t,o);let i=0;n&&(i+=this.getTextWidth(n));this.getters.getConditionalIcon(t,o)&&(i+=_e(this.getters.getCellStyle(n))+2*$);if(this.getters.isFilterHeader(e,t,o)&&(i+=20),i>0&&(i+=2*U,"wrap"===this.getters.getCellStyle(n).wrapping)){const e=Lo({col:t,row:o}),n=this.getters.getColSize(this.getters.getActiveSheetId(),e.left);return Math.min(n,i)}return i}getTextWidth(e){const t=this.getters.getCellText(e,this.getters.shouldShowFormulas()),{sheetId:o,col:n,row:i}=this.getters.getCellPosition(e.id);return Me(this.ctx,t,this.getters.getCellComputedStyle(o,n,i))}getCellText(e,t=!1){return t&&(e.isFormula()||e.evaluated.type===qo.error)?e.content:e.formattedValue}getCellMultiLineText(e,t){const o=this.getters.getCellStyle(e),n=this.getters.getCellText(e).split(" "),i=[];let r="",s=t;for(let e of n){const n=this.splitWordToSpecificWidth(this.ctx,e,t,o),a=n.pop(),l=Me(this.ctx,a,o);if(n.length)""!==r&&(i.push(r),r="",s=t),n.forEach((e=>{i.push(e)})),r=a,s=t-l;else{const e=""===r?a:" "+a,n=Me(this.ctx,e,o);n<=s?(r+=e,s-=n):(i.push(r),r=a,s=t-l)}}return""!==r&&i.push(r),i}getColDimensions(e,t){const o=this.getColRowOffset("COL",0,t,e),n=this.getters.getColSize(e,t);return{start:o,size:n,end:o+(this.getters.isColHidden(e,t)?0:n)}}getRowDimensions(e,t){const o=this.getColRowOffset("ROW",0,t,e),n=this.getters.getRowSize(e,t);return{start:o,size:n,end:o+(this.getters.isRowHidden(e,t)?0:n)}}getColRowOffset(e,t,o,n=this.getters.getActiveSheetId()){if(o<t)return-this.getColRowOffset(e,o,t);let i=0;for(let r=t;r<o;r++)this.getters.isHeaderHidden(n,e,r)||(i+="COL"===e?this.getters.getColSize(n,r):this.getters.getRowSize(n,r));return i}getColMaxWidth(e,t){const o=Fo(this.getters.getColsZone(e,t,t)).map((t=>this.getCellWidth(e,t)));return Math.max(0,...o)}splitWordToSpecificWidth(e,t,o,n){if(Me(e,t,n)<=o)return[t];const i=[];let r="";for(let s of t){Me(e,r+s,n)>o?(i.push(r),r=s):r+=s}return i.push(r),i}}Dv.getters=["getCellWidth","getTextWidth","getCellText","getCellMultiLineText","getColDimensions","getRowDimensions","getColRowOffset"];const kv=(new zo).add("sheet",Gm).add("header visibility",zm).add("filters",Um).add("cell",_m).add("merge",Bm).add("headerSize",Vm).add("borders",Mm).add("conditional formatting",km).add("figures",$m).add("chart",Fm),$v=(new zo).add("selection",pv).add("ui_sheet",Dv).add("header_visibility_ui",hv).add("ui_options",Fv).add("evaluation",nv).add("evaluation_filter",sv).add("evaluation_cf",rv).add("evaluation_chart",iv).add("clipboard",ev).add("edition",mg).add("selectionInputManager",vv).add("highlight",dv).add("viewport",Nv).add("grid renderer",uv).add("autofill",Zm).add("find_and_replace",lv).add("sort",_v).add("automatic_sum",jm).add("format",cv).add("cell_popovers",Xm).add("selection_multiuser",Ov).add("custom_colors",tv),Lv=new zo;Lv.add("link",{condition:e=>e.isLink(),action:(e,t)=>{e.action(t)},sequence:5}),sn`
1367
1367
  .o-spreadsheet-bottom-bar {
1368
1368
  background-color: ${m};
1369
1369
  padding-left: ${M}px;
@@ -2413,4 +2413,4 @@
2413
2413
  <tableParts count="${e.filterTables.length}">
2414
2414
  ${tm(a)}
2415
2415
  </tableParts>
2416
- `}var qb;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(qb||(qb={}));const Zb={},jb={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:O,HEADER_WIDTH:M,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:N,DEFAULT_CELL_HEIGHT:_,SCROLLBAR_WIDTH:F},Xb={autofillModifiersRegistry:Go,autofillRulesRegistry:on,cellMenuRegistry:wi,colMenuRegistry:yi,linkMenuRegistry:An,functionRegistry:Su,uiPluginRegistry:$v,corePluginRegistry:kv,rowMenuRegistry:xi,sidePanelRegistry:Jr,figureRegistry:Dn,sheetMenuRegistry:Ii,chartSidePanelComponentRegistry:Wr,chartComponentRegistry:Ho,chartRegistry:Bo,topbarMenuRegistry:Di,topbarComponentRegistry:es,clickableCellRegistry:Lv,otRegistry:ki,inverseCommandRegistry:kn,cellRegistry:_n,cellPopoverRegistry:Nn},Yb={LinkCell:ap},Kb={args:gs,toBoolean:xs,toJsDate:Rs,toNumber:Ss,toString:Es,toXC:Ot,toZone:mo,toCartesian:At,numberToLetters:It,createFullMenuItem:Rn,UuidGenerator:po,formatValue:Ut,computeTextWidth:Me,isMarkdownLink:Ve,parseMarkdownLink:Be,markdownLink:ze,createEmptyWorkbookData:Tm,createEmptySheet:Im,createEmptyExcelSheet:Am,getDefaultChartJsRuntime:lr,chartFontColor:Ji,getMenuChildren:fn,ChartColors:Qi,EvaluationError:c,CellErrorLevel:l,getFillingMode:dr,rgbaToHex:dt,colorToRGBA:ut,positionToZone:Lo},Qb={ChartPanel:Gr,ChartFigure:rs,ChartJsComponent:Wo,Grid:ep,GridOverlay:Pg,ScorecardChart:os,LineConfigPanel:Vr,LineBarPieDesignPanel:$r,BarConfigPanel:Ui,LineBarPieConfigPanel:Pi,GaugeChartConfigPanel:Pr,GaugeChartDesignPanel:Ur,ScorecardChartConfigPanel:Br,ScorecardChartDesignPanel:Hr};e.AbstractChart=Vi,e.CorePlugin=Om,e.DATETIME_FORMAT=j,e.DispatchResult=Qo,e.EvaluationError=c,e.Model=class extends bv{constructor(e={},o={},n=[],i=new po,r=!0){super(),this.corePlugins=[],this.uiPlugins=[],this.isReplayingCommand=!1,this.renderers=[],this.status=0,this.dispatch=(e,t)=>{const o={type:e,...t};let n=this.status;if(this.getters.isReadonly()&&(i=o,!Xo.has(i.type)))return new Qo(66);var i;if(!this.session.canApplyOptimisticUpdate())return new Qo(63);switch(n){case 0:const t=this.checkDispatchAllowed(o);if(!t.isSuccessful)return t;this.status=1;const{changes:n,commands:i}=this.state.recordChanges((()=>{Ko(o)&&this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o),this.finalize()}));this.session.save(i,n),this.status=0,this.trigger("update");break;case 1:if(Ko(o)){const e=this.checkDispatchAllowed(o);if(!e.isSuccessful)return e;this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o)}else this.dispatchToHandlers(this.handlers,o);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(Ko(o))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,o)}return Qo.Success},this.dispatchFromCorePlugin=(e,t)=>{const o={type:e,...t},n=this.status;this.status=2;const i=this.isReplayingCommand?[this.range,...this.corePlugins]:this.handlers;return this.dispatchToHandlers(i,o),this.status=n,Qo.Success},n=xm(e,n);const s=wm(e,r);this.state=new ab,this.uuidGenerator=i,this.config=this.setupConfig(o),this.session=this.setupSession(s.revisionId),this.config.moveClient=this.session.move.bind(this.session),this.history=new nb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new ib(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getSelectionRangeString=this.range.getSelectionRangeString.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode,canUndo:this.history.canUndo.bind(this.history),canRedo:this.history.canRedo.bind(this.history),getClient:this.session.getClient.bind(this.session),getConnectedClients:this.session.getConnectedClients.bind(this.session),isFullySynchronized:this.session.isFullySynchronized.bind(this.session)},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new sb(this.getters);for(let e of kv.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of $v.getAll())this.setupUiPlugin(e);this.uuidGenerator.setIsFastStrategy(!1),this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.session.loadInitialMessages(n),this.joinSession(),o.snapshotRequested&&this.session.snapshot(this.exportData()),t.markRaw(this)}get handlers(){return[this.range,...this.corePlugins,...this.uiPlugins,this.history]}joinSession(){this.session.join(this.config.client)}leaveSession(){this.session.leave()}setupUiPlugin(e){const t=new e(this.getters,this.state,this.dispatch,this.config,this.selection);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}this.uiPlugins.push(t);const o=e.layers.map((e=>[t,e]));this.renderers.push(...o),this.renderers.sort(((e,t)=>e[1]-t[1]))}setupCorePlugin(e,t){const o=new e(this.coreGetters,this.state,this.range,this.dispatchFromCorePlugin,this.config,this.uuidGenerator);for(let t of e.getters){if(!(t in o))throw new Error(`Invalid getter name: ${t} for plugin ${o.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=o[t].bind(o)}o.import(t),this.corePlugins.push(o)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.uiPlugins,t),this.status=e}this.finalize()}setupSession(e){return new Tv(tb(e,this.state.recordChanges.bind(this.state),(e=>{this.checkDispatchAllowed(e).isSuccessful&&(this.isReplayingCommand=!0,this.dispatchToHandlers([this.range,...this.corePlugins],e),this.isReplayingCommand=!1)})),this.config.transportService,e)}setupSessionEvents(){this.session.on("remote-revision-received",this,this.onRemoteRevisionReceived),this.session.on("revision-redone",this,this.finalize),this.session.on("revision-undone",this,this.finalize),this.session.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.session.on("collaborative-event-received",this,(()=>{this.trigger("update")}))}setupConfig(e){const t=e.client||{id:this.uuidGenerator.uuidv4(),name:r("Anonymous").toString()},o=e.transportService||new qv;return{...e,mode:e.mode||"normal",evalContext:e.evalContext||{},transportService:o,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e)}}checkDispatchAllowed(e){const t=this.handlers.map((t=>t.allowDispatch(e)));return new Qo(t.flat())}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0}dispatchToHandlers(e,t){t=Ie(t);for(const o of e)o.beforeHandle(t);for(const o of e)o.handle(t)}drawGrid(e){for(let[t,o]of this.renderers)e.ctx.save(),t.drawGrid(e,o),e.ctx.restore()}exportData(){let e=Tm();for(let t of this.handlers)t instanceof Om&&t.export(e);return e.revisionId=this.session.getRevisionId()||Y,e=JSON.parse(JSON.stringify(e)),e}updateMode(e){"normal"!==e&&this.dispatch("STOP_EDITION",{cancel:!0}),this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Tm(),sheets:[Am(Em,"Sheet1")]};for(let t of this.handlers)t instanceof gg&&t.exportForExcel(e);return e=JSON.parse(JSON.stringify(e)),Wb(e)}},e.Registry=zo,e.Revision=Rv,e.SPREADSHEET_DIMENSIONS=jb,e.Spreadsheet=Gv,e.UIPlugin=pg,e.__info__=Zb,e.addFunction=function(e,t){Su.add(e,t)},e.astToFormula=ju,e.cellTypes=Yb,e.compile=lg,e.components=Qb,e.convertAstNodes=Zu,e.coreTypes=Yo,e.findCellInNewZone=ko,e.functionCache=ag,e.helpers=Kb,e.invalidateEvaluationCommands=Zo,e.load=wm,e.parse=Gu,e.readonlyAllowedCommands=Xo,e.registries=Xb,e.setTranslationMethod=function(e){o=e},e.tokenize=yu,Object.defineProperty(e,"__esModule",{value:!0}),Zb.version="16.0.0",Zb.date="2023-02-27T14:34:11.940Z",Zb.hash="7081532"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
2416
+ `}var qb;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(qb||(qb={}));const Zb={},jb={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:O,HEADER_WIDTH:M,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:N,DEFAULT_CELL_HEIGHT:_,SCROLLBAR_WIDTH:F},Xb={autofillModifiersRegistry:Go,autofillRulesRegistry:on,cellMenuRegistry:wi,colMenuRegistry:yi,linkMenuRegistry:An,functionRegistry:Su,uiPluginRegistry:$v,corePluginRegistry:kv,rowMenuRegistry:xi,sidePanelRegistry:Jr,figureRegistry:Dn,sheetMenuRegistry:Ii,chartSidePanelComponentRegistry:Wr,chartComponentRegistry:Ho,chartRegistry:Bo,topbarMenuRegistry:Di,topbarComponentRegistry:es,clickableCellRegistry:Lv,otRegistry:ki,inverseCommandRegistry:kn,cellRegistry:_n,cellPopoverRegistry:Nn},Yb={LinkCell:ap},Kb={args:gs,toBoolean:xs,toJsDate:Rs,toNumber:Ss,toString:Es,toXC:Ot,toZone:mo,toCartesian:At,numberToLetters:It,createFullMenuItem:Rn,UuidGenerator:po,formatValue:Ut,computeTextWidth:Me,isMarkdownLink:Ve,parseMarkdownLink:Be,markdownLink:ze,createEmptyWorkbookData:Tm,createEmptySheet:Im,createEmptyExcelSheet:Am,getDefaultChartJsRuntime:lr,chartFontColor:Ji,getMenuChildren:fn,ChartColors:Qi,EvaluationError:c,CellErrorLevel:l,getFillingMode:dr,rgbaToHex:dt,colorToRGBA:ut,positionToZone:Lo},Qb={ChartPanel:Gr,ChartFigure:rs,ChartJsComponent:Wo,Grid:ep,GridOverlay:Pg,ScorecardChart:os,LineConfigPanel:Vr,LineBarPieDesignPanel:$r,BarConfigPanel:Ui,LineBarPieConfigPanel:Pi,GaugeChartConfigPanel:Pr,GaugeChartDesignPanel:Ur,ScorecardChartConfigPanel:Br,ScorecardChartDesignPanel:Hr};e.AbstractChart=Vi,e.CorePlugin=Om,e.DATETIME_FORMAT=j,e.DispatchResult=Qo,e.EvaluationError=c,e.Model=class extends bv{constructor(e={},o={},n=[],i=new po,r=!0){super(),this.corePlugins=[],this.uiPlugins=[],this.isReplayingCommand=!1,this.renderers=[],this.status=0,this.dispatch=(e,t)=>{const o={type:e,...t};let n=this.status;if(this.getters.isReadonly()&&(i=o,!Xo.has(i.type)))return new Qo(66);var i;if(!this.session.canApplyOptimisticUpdate())return new Qo(63);switch(n){case 0:const t=this.checkDispatchAllowed(o);if(!t.isSuccessful)return t;this.status=1;const{changes:n,commands:i}=this.state.recordChanges((()=>{Ko(o)&&this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o),this.finalize()}));this.session.save(i,n),this.status=0,this.trigger("update");break;case 1:if(Ko(o)){const e=this.checkDispatchAllowed(o);if(!e.isSuccessful)return e;this.state.addCommand(o),this.dispatchToHandlers(this.handlers,o)}else this.dispatchToHandlers(this.handlers,o);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(Ko(o))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,o)}return Qo.Success},this.dispatchFromCorePlugin=(e,t)=>{const o={type:e,...t},n=this.status;this.status=2;const i=this.isReplayingCommand?[this.range,...this.corePlugins]:this.handlers;return this.dispatchToHandlers(i,o),this.status=n,Qo.Success},n=xm(e,n);const s=wm(e,r);this.state=new ab,this.uuidGenerator=i,this.config=this.setupConfig(o),this.session=this.setupSession(s.revisionId),this.config.moveClient=this.session.move.bind(this.session),this.history=new nb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new ib(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getSelectionRangeString=this.range.getSelectionRangeString.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode,canUndo:this.history.canUndo.bind(this.history),canRedo:this.history.canRedo.bind(this.history),getClient:this.session.getClient.bind(this.session),getConnectedClients:this.session.getConnectedClients.bind(this.session),isFullySynchronized:this.session.isFullySynchronized.bind(this.session)},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new sb(this.getters);for(let e of kv.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of $v.getAll())this.setupUiPlugin(e);this.uuidGenerator.setIsFastStrategy(!1),this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.session.loadInitialMessages(n),this.joinSession(),o.snapshotRequested&&this.session.snapshot(this.exportData()),t.markRaw(this)}get handlers(){return[this.range,...this.corePlugins,...this.uiPlugins,this.history]}joinSession(){this.session.join(this.config.client)}leaveSession(){this.session.leave()}setupUiPlugin(e){const t=new e(this.getters,this.state,this.dispatch,this.config,this.selection);for(let o of e.getters){if(!(o in t))throw new Error(`Invalid getter name: ${o} for plugin ${t.constructor}`);if(o in this.getters)throw new Error(`Getter "${o}" is already defined.`);this.getters[o]=t[o].bind(t)}this.uiPlugins.push(t);const o=e.layers.map((e=>[t,e]));this.renderers.push(...o),this.renderers.sort(((e,t)=>e[1]-t[1]))}setupCorePlugin(e,t){const o=new e(this.coreGetters,this.state,this.range,this.dispatchFromCorePlugin,this.config,this.uuidGenerator);for(let t of e.getters){if(!(t in o))throw new Error(`Invalid getter name: ${t} for plugin ${o.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=o[t].bind(o)}o.import(t),this.corePlugins.push(o)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.uiPlugins,t),this.status=e}this.finalize()}setupSession(e){return new Tv(tb(e,this.state.recordChanges.bind(this.state),(e=>{this.checkDispatchAllowed(e).isSuccessful&&(this.isReplayingCommand=!0,this.dispatchToHandlers([this.range,...this.corePlugins],e),this.isReplayingCommand=!1)})),this.config.transportService,e)}setupSessionEvents(){this.session.on("remote-revision-received",this,this.onRemoteRevisionReceived),this.session.on("revision-redone",this,this.finalize),this.session.on("revision-undone",this,this.finalize),this.session.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.session.on("collaborative-event-received",this,(()=>{this.trigger("update")}))}setupConfig(e){const t=e.client||{id:this.uuidGenerator.uuidv4(),name:r("Anonymous").toString()},o=e.transportService||new qv;return{...e,mode:e.mode||"normal",evalContext:e.evalContext||{},transportService:o,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e)}}checkDispatchAllowed(e){const t=this.handlers.map((t=>t.allowDispatch(e)));return new Qo(t.flat())}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0}dispatchToHandlers(e,t){t=Ie(t);for(const o of e)o.beforeHandle(t);for(const o of e)o.handle(t)}drawGrid(e){for(let[t,o]of this.renderers)e.ctx.save(),t.drawGrid(e,o),e.ctx.restore()}exportData(){let e=Tm();for(let t of this.handlers)t instanceof Om&&t.export(e);return e.revisionId=this.session.getRevisionId()||Y,e=JSON.parse(JSON.stringify(e)),e}updateMode(e){"normal"!==e&&this.dispatch("STOP_EDITION",{cancel:!0}),this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Tm(),sheets:[Am(Em,"Sheet1")]};for(let t of this.handlers)t instanceof gg&&t.exportForExcel(e);return e=JSON.parse(JSON.stringify(e)),Wb(e)}},e.Registry=zo,e.Revision=Rv,e.SPREADSHEET_DIMENSIONS=jb,e.Spreadsheet=Gv,e.UIPlugin=pg,e.__info__=Zb,e.addFunction=function(e,t){Su.add(e,t)},e.astToFormula=ju,e.cellTypes=Yb,e.compile=lg,e.components=Qb,e.convertAstNodes=Zu,e.coreTypes=Yo,e.findCellInNewZone=ko,e.functionCache=ag,e.helpers=Kb,e.invalidateEvaluationCommands=Zo,e.load=wm,e.parse=Gu,e.readonlyAllowedCommands=Xo,e.registries=Xb,e.setTranslationMethod=function(e){o=e},e.tokenize=yu,Object.defineProperty(e,"__esModule",{value:!0}),Zb.version="16.0.2",Zb.date="2023-03-06T07:17:51.313Z",Zb.hash="6b4d816"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);