@odoo/o-spreadsheet 19.0.47 → 19.0.48

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.
@@ -2,9 +2,9 @@
2
2
  /*
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.0.47
6
- * @date 2026-08-21T15:29:01.277Z
7
- * @hash 59a9b1b
5
+ * @version 19.0.48
6
+ * @date 2026-08-29T09:14:14.219Z
7
+ * @hash 0a6c168
8
8
  */
9
9
  /* Originates from src/components/top_bar/top_bar.scss */
10
10
  @media (max-width: 1200px) {
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.0.47
6
- * @date 2026-08-21T15:28:59.913Z
7
- * @hash 59a9b1b
5
+ * @version 19.0.48
6
+ * @date 2026-08-29T09:14:12.472Z
7
+ * @hash 0a6c168
8
8
  */
9
9
 
10
10
  import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, xml } from "@odoo/owl";
@@ -19717,6 +19717,7 @@ function getRadarChartDatasets(definition, args) {
19717
19717
  hidden,
19718
19718
  borderColor,
19719
19719
  backgroundColor: borderColor,
19720
+ pointBackgroundColor: borderColor,
19720
19721
  pointRadius: definition.hideDataMarkers ? 0 : 3
19721
19722
  };
19722
19723
  if (fill) {
@@ -48663,6 +48664,12 @@ css`
48663
48664
  background-color: ${ACTION_COLOR};
48664
48665
  border-color: ${ACTION_COLOR};
48665
48666
  }
48667
+
48668
+ &:focus {
48669
+ outline: none;
48670
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
48671
+ border-color: ${ACTION_COLOR};
48672
+ }
48666
48673
  }
48667
48674
  }
48668
48675
  `;
@@ -72914,6 +72921,9 @@ css`
72914
72921
  position: absolute;
72915
72922
  cursor: pointer;
72916
72923
  }
72924
+ .o-grid.o-dashboard-grid {
72925
+ background: #ffffff;
72926
+ }
72917
72927
  `;
72918
72928
  var SpreadsheetDashboard = class extends Component {
72919
72929
  static template = "o-spreadsheet-SpreadsheetDashboard";
@@ -79454,6 +79464,6 @@ const chartHelpers = {
79454
79464
  //#endregion
79455
79465
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
79456
79466
 
79457
- __info__.version = "19.0.47";
79458
- __info__.date = "2026-08-21T15:28:59.913Z";
79459
- __info__.hash = "59a9b1b";
79467
+ __info__.version = "19.0.48";
79468
+ __info__.date = "2026-08-29T09:14:12.472Z";
79469
+ __info__.hash = "0a6c168";
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.0.47
6
- * @date 2026-08-21T15:28:59.913Z
7
- * @hash 59a9b1b
5
+ * @version 19.0.48
6
+ * @date 2026-08-29T09:14:12.472Z
7
+ * @hash 0a6c168
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -19719,6 +19719,7 @@ stores.inject(MyMetaStore, storeInstance);
19719
19719
  hidden,
19720
19720
  borderColor,
19721
19721
  backgroundColor: borderColor,
19722
+ pointBackgroundColor: borderColor,
19722
19723
  pointRadius: definition.hideDataMarkers ? 0 : 3
19723
19724
  };
19724
19725
  if (fill) {
@@ -48665,6 +48666,12 @@ stores.inject(MyMetaStore, storeInstance);
48665
48666
  background-color: ${ACTION_COLOR};
48666
48667
  border-color: ${ACTION_COLOR};
48667
48668
  }
48669
+
48670
+ &:focus {
48671
+ outline: none;
48672
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
48673
+ border-color: ${ACTION_COLOR};
48674
+ }
48668
48675
  }
48669
48676
  }
48670
48677
  `;
@@ -72916,6 +72923,9 @@ stores.inject(MyMetaStore, storeInstance);
72916
72923
  position: absolute;
72917
72924
  cursor: pointer;
72918
72925
  }
72926
+ .o-grid.o-dashboard-grid {
72927
+ background: #ffffff;
72928
+ }
72919
72929
  `;
72920
72930
  var SpreadsheetDashboard = class extends _odoo_owl.Component {
72921
72931
  static template = "o-spreadsheet-SpreadsheetDashboard";
@@ -79507,8 +79517,8 @@ exports.stores = stores;
79507
79517
  exports.tokenColors = tokenColors;
79508
79518
  exports.tokenize = tokenize;
79509
79519
 
79510
- __info__.version = "19.0.47";
79511
- __info__.date = "2026-08-21T15:28:59.913Z";
79512
- __info__.hash = "59a9b1b";
79520
+ __info__.version = "19.0.48";
79521
+ __info__.date = "2026-08-29T09:14:12.472Z";
79522
+ __info__.hash = "0a6c168";
79513
79523
 
79514
79524
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -21,7 +21,7 @@ stores.inject(MyMetaStore, storeInstance);
21
21
  `)+`
22
22
  `}return(e){return new XS(this.scope,this.code,e)}toString(){return $S(this.code)}},XS=class{scope;returnExpression;code;constructor(e,t,n){this.scope=e,this.returnExpression=n,this.code=$S(t)}toString(){return this.code}assignResultToVariable(){if(this.scope.isAlreadyDeclared(this.returnExpression))return this;let e=this.scope.nextVariableName(),t=new YS(this.scope);return t.append(this.code),t.append(`const ${e} = ${this.returnExpression};`),t.return(e)}},ZS=class{nextId=1;declaredVariables=new Set;nextVariableName(){let e=`_${this.nextId++}`;return this.declaredVariables.add(e),e}isAlreadyDeclared(e){return this.declaredVariables.has(e)}};function QS(e){return e.split(`
23
23
  `).map(e=>e.trim()).filter(e=>e!==``)}function $S(e){let t=``,n=0,r=QS(e);for(let e of r)e.startsWith(`}`)&&n--,t+=` `.repeat(n)+e+`
24
- `,e.endsWith(`{`)&&n++;return t.trim()}let eC=BS.content,tC={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},nC={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`},rC={};function iC(e){return aC(Vy(e))}function aC(e){try{return oC(e)}catch(t){return{tokens:e,dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function oC(e){let{dependencies:t,literalValues:n,symbols:r}=cC(e),i=sC(e);if(!rC[i]){let t=$y([...e]),n=new ZS,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new qi(E(`Invalid formula`));let u=o(t),d=new YS;d.append(u),d.append(`return ${u.returnExpression};`),rC[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=eC[e.value.toUpperCase()];if(!n)throw new Zi(E(`Unknown function: "%s"`,e.value));lC(e);let r=[],i=sp(n,t.length);for(let e=0;e<t.length;e++){let a=n.args[i(e)??-1],s=t[e],c=a.type||[],l=c.includes(`META`)||c.includes(`RANGE<META>`),u=c.some(e=>uC(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new YS(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new qi(E(`Argument must be a reference to a cell or range.`));switch(e.debug&&(u.append(`debugger;`),u.append(`ctx["debug"] = true;`)),e.type){case`BOOLEAN`:return u.return(`{ value: ${e.value} }`);case`NUMBER`:return u.return(`this.literalValues.numbers[${c++}]`);case`STRING`:return u.return(`this.literalValues.strings[${s++}]`);case`REFERENCE`:return u.return(`${e.value.includes(`:`)||i?`range`:`ref`}(deps[${l++}], ${t?`true`:`false`})`);case`FUNCALL`:let n=a(e).map(e=>e.assignResultToVariable());u.append(...n);let d=e.value.toUpperCase();return u.return(`ctx['${d}'](${n.map(e=>e.returnExpression)})`);case`UNARY_OPERATION`:{let t=nC[e.value],n=o(e.operand,!1,!1).assignResultToVariable();return u.append(n),u.return(`ctx['${t}'](${n.returnExpression})`)}case`BIN_OPERATION`:{let t=tC[e.value],n=o(e.left,!1,!1).assignResultToVariable(),r=o(e.right,!1,!1).assignResultToVariable();return u.append(n),u.append(r),u.return(`ctx['${t}'](${n.returnExpression}, ${r.returnExpression})`)}case`SYMBOL`:let f=r.indexOf(e.value);return u.return(`getSymbolValue(this.symbols[${f}])`);case`EMPTY`:return u.return(`undefined`)}}}return{execute:rC[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function sC(e){let t=``;for(let n of e)switch(n.type){case`STRING`:t+=`|S|`;break;case`NUMBER`:t+=`|N|`;break;case`REFERENCE`:case`INVALID_REFERENCE`:n.value.includes(`:`)?t+=`|R|`:t+=`|C|`;break;case`SPACE`:break;default:t+=n.value;break}return t}function cC(e){let t={numbers:[],strings:[]},n=[],r=[];for(let i of e)switch(i.type){case`INVALID_REFERENCE`:case`REFERENCE`:n.push(i.value);break;case`STRING`:let e=ct(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=Wi(i.value,D);t.numbers.push({value:e});break}case`SYMBOL`:r.push(pt(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function lC(e){let t=e.args.length,n=e.value.toUpperCase(),r=eC[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Expected %(minArgRequired)s minimum, but got %(nbrArgSupplied)s instead.`,{functionName:n,minArgRequired:a,nbrArgSupplied:t}));if(t>r.maxArgPossible)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Expected %(maxArgPossible)s maximum, but got %(nbrArgSupplied)s instead.`,{functionName:n,maxArgPossible:r.maxArgPossible,nbrArgSupplied:t}));if(i>1){let e=i*Math.floor((t-a)/i),o=t-a-e-r.nbrArgOptional;if(o>0)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Repeatable arguments should be supplied in groups of %(nbrArgRepeating)s, with up to %(nbrArgOptional)s optional. Got %(nbrValueRemaining)s too many.`,{functionName:n,nbrArgRepeating:i,nbrArgOptional:r.nbrArgOptional,nbrValueRemaining:o}))}}function uC(e){return e.startsWith(`RANGE`)}let dC=BS.content;function fC(e){try{return tb($y(e)).filter(e=>e.type===`FUNCALL`&&!dC[e.value.toUpperCase()]?.isExported).length===0}catch{return!1}}function pC(e,t){if(!e.some(e=>e.type===`SYMBOL`&&t.includes(e.value.toUpperCase())))return[];let n;try{n=$y(e)}catch{return[]}return mC(n,t)}function mC(e,t){return tb(e).filter(e=>e.type===`FUNCALL`&&t.includes(e.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}function hC(e,t,n){if(!t.startsWith(`=`))return t;let r=Vy(t);for(let t=1;t<r.length;t++){if(r[t].type!==`REFERENCE`)continue;let i=r[t].value,a=gC(e,i,n).range;i!==a&&(r[t]={value:a,type:`REFERENCE`})}return Mt(r.map(e=>e.value))}function gC(e,t,n){let r=Mc(t).sheetName;if(r?!ll(r,n.sheetName.old):e!==n.sheetId)return{changeType:`NONE`,range:t};let i=yC(t,r?n.sheetId:e);if(i.invalidXc)return{changeType:`NONE`,range:t};let a=n.applyChange(i);if(a.changeType===`NONE`||a.changeType===`REMOVE`)return{changeType:a.changeType,range:t};let o=zc(a.range,e,_C(n));return o===k.InvalidReference?{changeType:`REMOVE`,range:o}:{changeType:a.changeType,range:o}}function _C(e){return t=>t===e.sheetId?e.sheetName.current:``}function vC(e){return{numberOfRows:2**53-1,numberOfCols:2**53-1}}function yC(e,t){return Ec.test(e)?Fc({xc:e,sheetId:t},vC):Ic(e)}let bC=`xMovingAverage`,xC={exponential:`exp`,logarithmic:`log`,polynomial:`poly`,trailingMovingAverage:`movingAvg`};function SC(e,t,n,r){let i=!1,a=[];for(let r in n){let o=n[r];if(o.labelCell){let e=TC(o.labelCell,t);o.labelCell!==e&&(i=!0,o={...o,labelCell:e})}let s=TC(o.dataRange,t);s===void 0||e.getRangeString(s,s.sheetId)===k.InvalidReference?(i=!0,o=void 0):s!==o.dataRange&&(i=!0,o={...o,dataRange:s}),a[r]=o}let o=r,s=TC(o,t);s!==o&&(i=!0,o=s);let c=a.filter(C);return{isStale:i,dataSets:c,labelRange:o}}function CC(e,t,n){return n.map(n=>({dataRange:Bc(e,t,n.dataRange),labelCell:n.labelCell?Bc(e,t,n.labelCell):void 0}))}function wC(e,t,n){return n?Bc(e,t,n):void 0}function TC(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}function EC(e,t,n,r){let i=[];for(let a of t){let{unboundedZone:t,sheetId:o,invalidSheetName:s,invalidXc:c}=e.getRangeFromSheetXC(n,a.dataRange);if(!(s||c))if(t.left!==t.right&&t.top!==t.bottom){if(t.right===void 0)continue;for(let n=t.left;n<=t.right;n++){let s={...t,left:n,right:n};i.push({...DC(e,o,s,r?{top:s.top,bottom:s.top,left:s.left,right:s.left}:void 0),backgroundColor:a.backgroundColor,rightYAxis:a.yAxisId===`y1`,customLabel:a.label,trend:a.trend})}}else i.push({...DC(e,o,t,r?{top:t.top,bottom:t.top,left:t.left,right:t.left}:void 0),backgroundColor:a.backgroundColor,rightYAxis:a.yAxisId===`y1`,customLabel:a.label,trend:a.trend})}return i}function DC(e,t,n,r){if(n.left!==n.right&&n.top!==n.bottom)throw Error(`Zone should be a single column or row: ${js(n)}`);if(r){let i=js(n),a=js(r);return{labelCell:e.getRangeFromSheetXC(t,a),dataRange:e.getRangeFromSheetXC(t,i)}}else return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,js(n))}}function OC(e,t){let n=t.labelCell?.zone,r=t.dataRange.zone;if(n){let{numberOfRows:e,numberOfCols:t}=Ws(r);e===1?r={...r,left:r.left+1}:t===1&&(r={...r,top:r.top+1})}let i=Pc({...t.dataRange,zone:r},e.getSheetSize),a={};t.customLabel?a={text:t.customLabel}:t.labelCell&&(a={reference:e.getRangeString(t.labelCell,`forceSheetReference`,{useBoundedReference:!0})});let o;return t.trend?.type&&(o={type:t.trend.type===`polynomial`&&t.trend.order===1?`linear`:xC[t.trend.type],color:t.trend.color,order:t.trend.order?Math.min(t.trend.order,6):void 0,window:t.trend.window||2}),{label:a,range:e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0}),backgroundColor:t.backgroundColor,rightYAxis:t.rightYAxis,trend:o}}function kC(e,t,n){if(!t)return;let r={...t.zone};n&&t.zone.bottom>t.zone.top&&(r.top+=1);let i=Pc({...t,zone:r},e.getSheetSize);return e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0})}function AC(e,t,n){let r;if(t.labelRange){let{changeType:i,range:a}=gC(e,t.labelRange,n);i!==`REMOVE`&&(r=a)}let i=[];for(let r of t.dataSets){let t={...r},{changeType:a,range:o}=gC(e,r.dataRange,n);a!==`REMOVE`&&(t.dataRange=o,i.push(t))}return{...t,dataSets:i,labelRange:r}}function jC(e){return e&&vn(e)<.3?`#FFFFFF`:`#000000`}function MC(e){return e&&vn(e)<.3?`#C8C8C8`:`#666666`}function NC(e){return e.dataSets&&(e.dataSets.find(e=>!Ec.test(e.dataRange))!==void 0||e.dataSets.map(e=>Ts(e.dataRange)).some(e=>e.top!==e.bottom&&tc(e)))?`InvalidDataSet`:`Success`}function PC(e){return e.labelRange&&!Ec.test(e.labelRange||``)?`InvalidLabelRange`:`Success`}function FC(e,t,n){if(!n||!e)return!1;if(!t)return!0;let r=rc(t.dataRange.zone);return!(rc(e.zone)<r)}function IC(e,t){let{x:n,y:r}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:a}=e.getActiveSheetScrollInfo(),{width:o,height:s}=e.getVisibleRect(e.getActiveMainViewport());return{x:n+i+Math.max(0,(o-t.width)/2),y:r+a+Math.max(0,(s-t.height)/2)}}function LC(e){let t=!1,n=!1;if(`horizontal`in e&&e.horizontal)return{useLeftAxis:!0,useRightAxis:!1};for(let r of e.dataSets||[])r.yAxisId===`y1`?n=!0:t=!0;return t||=!n,{useLeftAxis:t,useRightAxis:n}}function RC(e,t,n=!1){return(r,i)=>{let a=e?.[i];return zC({format:a,locale:t},n)(r)}}function zC(e,t=!1){return n=>{if(n=Number(n),isNaN(n))return n;let{locale:r,format:i}=e;return HC(t?Go({value:n,format:i},r):L(n,{locale:r,format:!i&&Math.abs(n)>=1e3?`#,##`:i}))}}let BC=[{value:`left`,label:E(`Left`)},{value:`right`,label:E(`Right`)}];function VC(e,t){let n=[],r=$t(t.map(e=>e.data.length));for(let t=0;t<=r;t++)n.push(e.next());return n}function HC(e,t=20){return e?e.length>t?e.substring(0,t)+`…`:e:``}function UC(e){return e===`x1`||e===`xMovingAverage`}let WC={id:`chartShowValuesPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues||!e._metasets?.[0]?.data)return;let r=e.ctx;switch(r.save(),r.textAlign=`center`,r.textBaseline=`middle`,r.miterLimit=1,e.config.type){case`pie`:case`doughnut`:JC(e,n,r);break;case`bar`:case`line`:case`radar`:n.horizontal?qC(e,n,r):KC(e,n,r);break;case`funnel`:qC(e,n,r);break}r.restore()}};function GC(e,t,n,r){r.lineWidth=3,r.strokeText(e,t,n),r.lineWidth=1,r.fillText(e,t,n)}function KC(e,t,n){let r={};for(let i of e._metasets){if(UC(i.xAxisID)||i.hidden)continue;let a=e.scales[i.yAxisID];for(let o=0;o<i._parsed.length;o++){let s=i._parsed[o],c=Number(e.config.type===`radar`?s.r:s.y);if(isNaN(c))continue;let l=i.data[o],u=l.x,d=0;if(e.config.type===`line`||e.config.type===`radar`)d=c<0?l.y+10:l.y-10;else{let e=a.getPixelForValue(0);d=Math.abs(e-l.y)<12?c<0?e+12/2:e-12/2:c<0?l.y-l.height/2:l.y+l.height/2}r[u]||(r[u]=[]);for(let e of r[u]||[])Math.abs(e-d)<13&&(d=c<0?e+13:e-13);r[u].push(d),n.fillStyle=l.options.backgroundColor,n.strokeStyle=t.background||`#ffffff`,GC(t.callback(Number(c),i,o),u,d,n)}}}function qC(e,t,n){let r={};for(let i of e._metasets){if(UC(i.xAxisID))return;let a=e.scales[i.xAxisID].getPixelForValue(0);for(let e=0;e<i._parsed.length;e++){let o=Number(i._parsed[e].x);if(isNaN(o))continue;let s=t.callback(o,i,e),c=i.data[e],l=c.y,u=hl(n,s,{fontSize:12},`px`),d=Math.abs(c.x-a),f;f=d<u?o<0?a-u/2-3:a+u/2+3:o<0?c.x+c.width/2:c.x-c.width/2,r[l]||(r[l]=[]);for(let e of r[l])Math.abs(e-f)<u&&(f=o<0?e-u-3:e+u+3);r[l].push(f),n.fillStyle=c.options.backgroundColor,n.strokeStyle=t.background||`#ffffff`,GC(s,f,l,n)}}}function JC(e,t,n){for(let r of e._metasets)for(let e=0;e<r._parsed.length;e++){let i=Number(r._parsed[e]);if(isNaN(i)||i===0)continue;let a=r.data[e],{startAngle:o,endAngle:s,innerRadius:c,outerRadius:l}=a,u=(o+s)/2,d=(c+l)/2,f=a.x+d*Math.cos(u),p=a.y+d*Math.sin(u),m=t.callback(i,r,e),h=hl(n,m,{fontSize:12},`px`),g=l-c;if(h>=g||g<12)continue;let _=s-o,v=2*d*Math.tan(_/2);_<Math.PI/2&&(h>=v||v<12)||(n.fillStyle=jC(t.background),n.strokeStyle=t.background||`#ffffff`,GC(m,f,p,n))}}let YC={showHeaders:!0,headerDesign:{align:`center`,fillColor:`#808080`,bold:!0,fontSize:15},showValues:!0,showLabels:!0,valuesDesign:{align:`left`,verticalAlign:`bottom`,fontSize:12},coloringOptions:{type:`categoryColor`,colors:[],useValueBasedGradient:!0}},XC=`nullValue`;function ZC(e,t){let{dataSetsValues:n}=t,r=[],i=gw(e,n.length),a=[];for(let o in n){let{label:s,data:c,hidden:l}=n[o];s=e.dataSets?.[o].label||s;let u=i.next(),d={label:s,data:c,hidden:l,borderColor:e.background||`#FFFFFF`,borderWidth:+!!e.stacked,backgroundColor:u,yAxisID:e.horizontal?`y`:e.dataSets?.[o].yAxisId||`y`,xAxisID:`x`};r.push(d);let f=e.dataSets?.[o].trend,p=t.trendDataSetsValues?.[o];!f?.display||e.horizontal||!p||a.push(mw(d,f,p))}return r.push(...a),r}function QC(e,t){let{dataSetsValues:n,labels:r}=t,i=e.negativeValuesColor||`#EA6175`,a=e.positiveValuesColor||`#4EA7F2`,o=e.subTotalValuesColor||`#AAAAAA`,s=[],c=[],l={label:``,data:c,backgroundColor:s},u=[],d=0;for(let t of n)if(!t.hidden){for(let l=0;l<t.data.length;l++){let f=t.data[l];if(u.push(r[l]),isNaN(Number(f))){c.push([d,d]),s.push(``);continue}c.push([d,f+d]);let p=f>=0?a:i;l===0&&t===n[0]&&e.firstValueAsSubtotal&&(p=o),s.push(p),d+=f}e.showSubTotals&&(u.push(E(`Subtotal`)),c.push([0,d]),s.push(o))}return{datasets:[l],labels:u}}function $C(e,t){let{dataSetsValues:n,axisType:r,labels:i}=t,a=[],o=!!e.fillArea,s=!!e.stacked,c=[],l=gw(e,n.length);for(let u=0;u<n.length;u++){let{label:d,data:f,hidden:p}=n[u];d=e.dataSets?.[u].label||d;let m=l.next();r&&[`linear`,`time`].includes(r)&&(f=f.map((e,t)=>({x:i[t]||void 0,y:e})));let h={label:d,data:f,hidden:p,tension:0,borderColor:m,backgroundColor:o?kn(m,Je):m,pointBackgroundColor:m,fill:o?hw(u,s):!1,pointRadius:e.hideDataMarkers?0:3,yAxisID:e.dataSets?.[u].yAxisId||`y`};a.push(h);let g=e.dataSets?.[u].trend,_=t.trendDataSetsValues?.[u];!g?.display||!_||c.push(mw(h,g,_))}return a.push(...c),a}function ew(e,t){let n=$C(e,t);for(let e of n)UC(e.xAxisID)||(e.showLine=!1);return n}function tw(e,t){let{dataSetsValues:n}=t,r=[],i=VC(new Un(Math.max(0,...n.map(e=>e?.data?.length??0))),n);for(let{label:t,data:a,hidden:o}of n){if(o)continue;let n={label:t,data:a,borderColor:e.background||`#FFFFFF`,backgroundColor:i,hoverOffset:10};r.push(n)}return r}function nw(e,t){let{dataSetsValues:n}=t,r=[],i=gw(e,n.length),a=[];for(let o=0;o<n.length;o++){let{label:s,data:c,hidden:l}=n[o];s=e.dataSets?.[o].label||s;let u=e.dataSets?.[o],d=i.next(),f=u?.type??`line`,p={label:s,data:c,hidden:l,borderColor:d,backgroundColor:d,yAxisID:e.dataSets?.[o].yAxisId||`y`,xAxisID:`x`,type:f,order:f===`bar`?n.length+o:o,pointRadius:e.hideDataMarkers?0:3};r.push(p);let m=e.dataSets?.[o].trend,h=t.trendDataSetsValues?.[o];!m?.display||!h||a.push(mw(p,m,h))}return r.push(...a),r}function rw(e,t){let{dataSetsValues:n}=t,r=[],i=e.fillArea??!1,a=gw(e,n.length);for(let t=0;t<n.length;t++){let{label:o,data:s,hidden:c}=n[t];e.dataSets?.[t]?.label&&(o=e.dataSets[t].label);let l=a.next(),u={label:o,data:s,hidden:c,borderColor:l,backgroundColor:l,pointRadius:e.hideDataMarkers?0:3};i&&(u.backgroundColor=kn(l,Je),u.fill=`start`),r.push(u)}return r}function iw(e,t){let{availableRegions:n,dataSetsValues:r,labels:i}=t,a=e.region||n[0]?.id,o=a?t.getGeoJsonFeatures(a):void 0,s={outline:o,showOutline:!!o,data:[]};if(o&&a){let e={};if(r[0])for(let n=0;n<r[0].data.length;n++){if(!i[n]||r[0].data[n]===void 0)continue;let o=t.geoFeatureNameToId(a,i[n]);o&&(e[o]={value:r[0].data[n],label:i[n]})}for(let t of o)t.id&&s.data.push({feature:{...t,properties:{name:e[t.id]?.label}},value:e[t.id]?.value})}return[s]}function aw(e,t){let n=t.dataSetsValues[0],r=t.labels;if(!n)return[];let{label:i,data:a}=n;return i=e.dataSets?.[0].label||i,[{label:i,data:a.map(e=>e<=0?[0,0]:[-e,e]),backgroundColor:ow(r,e.funnelColors),yAxisID:`y`,xAxisID:`x`,barPercentage:1,categoryPercentage:1,borderColor:e.background||`#FFFFFF`,borderWidth:3}]}function ow(e,t){let n=new Un(e.length,t);return e.map(()=>n.next())}function sw(e,t){let{dataSetsValues:n,labels:r}=t,i=dw(lw(n,r)),a=i[0]||[],o=new Un(a.length,e.groupColors||[]),s=a.map(e=>({label:e.label,color:o.next()})),c=[];for(let t=i.length-1;t>=0;t--){let n={groupColors:s,parsing:{key:`value`},data:i[t],borderColor:t=>{let n=t.type===`data`?t.raw:void 0;return!n||n.label===`nullValue`?_e:e.background||`#FFFFFF`},backgroundColor:e=>{let t=e.type===`data`?e.raw:void 0;if(!t||t.label===`nullValue`)return _e;let n=t.groups[0];return s.find(e=>e.label===n)?.color},hoverOffset:10};c.push(n)}return c}function cw(e,t){let n=[],r=Math.max(...e.map(e=>e.data.length));for(let i=0;i<r;i++){n[i]={};for(let t=0;t<e.length;t++){let r=e[t].data[i]===null?XC:String(e[t].data[i]);n[i][t]=r}n[i].value=Number(t[i])}return n}function lw(e,t){return uw(cw(e,t),0,e.length,[])}function uw(e,t,n,r){if(t>=n)return[];let i=Object.groupBy(e,e=>e[t]);return Object.keys(i).map(e=>{let a=i[e]?.reduce((e,t)=>e+Number(t.value),0)||0,o=[...r,e];return{label:e,value:a,children:uw(i[e]||[],t+1,n,[...r,e]),groups:o,depth:t}}).sort((e,t)=>t.value-e.value)}function dw(e){let t=[],n=[...e];for(;n.length>0;){let e=n.shift();e&&(t[e.depth]||(t[e.depth]=[]),t[e.depth].push(e),e.children&&n.push(...e.children))}return t}function fw(e,t){let{dataSetsValues:n,labels:r,locale:i,axisFormats:a}=t,o={locale:i,format:a?.y};if(n.length===0)return[];let s=lw(n,r).sort((e,t)=>t.value-e.value),c=_w(e,s),l=[],u=Math.max(...n.map(e=>e.data.length));for(let e=0;e<u;e++){l[e]={};for(let t=0;t<n.length;t++)l[e][t]=n[t].data[e]?String(n[t].data[e]):void 0;l[e].value=Number(r[e])}let d=e.showLabels??YC.showLabels,f=e.showValues??YC.showValues,p=e.coloringOptions||YC.coloringOptions,m;return p?.type===`colorScale`&&(m=vw(s,p)),[{data:[],tree:l,labels:{display:d||f,overflow:`hidden`,...pw(e.valuesDesign,YC.valuesDesign),formatter:e=>[d?e.raw.g:void 0,f?L(e.raw.v,o):void 0].filter(C)},captions:{display:e.showHeaders??YC.showHeaders,padding:6,...pw(e.headerDesign,YC.headerDesign)},key:`value`,groups:S(0,n.length).map(e=>String(e)),borderWidth:0,spacing:1,displayMode:`headerBoxes`,groupColors:c,backgroundColor:t=>{if(t.type!==`data`)return`transparent`;if(!t.raw.isLeaf)return e.headerDesign?.fillColor||YC.headerDesign?.fillColor;if(p.type===`colorScale`)return m?.(t.raw.v)||`#FF0000`;if(p.type===`categoryColor`)return yw(t,s,p,c);throw Error(`Unsupported coloring option type}`)}}]}function pw(e,t){let n=e=>{let t=e.element.options.backgroundColor;return vn(t)>.7?`#666666`:`#FFFFFF`};return{align:e?.align??t?.align,position:e?.verticalAlign??t?.verticalAlign,color:e?.color||n,hoverColor:e?.color||n,font:{weight:e?.bold??t?.bold?`bold`:`normal`,style:e?.italic??t?.italic?`italic`:`normal`,size:e?.fontSize??t?.fontSize}}}function mw(e,t,n){let r=xn(e.backgroundColor);r.a=1;let i=t.color||An(bn(r),.5);return{type:`line`,xAxisID:t.type===`trailingMovingAverage`?bC:`x1`,yAxisID:e.yAxisID,label:e.label?E(`Trend line for %s`,e.label):``,data:n,order:-1,showLine:!0,pointRadius:0,backgroundColor:i,borderColor:i,borderDash:[5,5],borderWidth:void 0,fill:!1,pointBackgroundColor:i}}function hw(e,t){return t?e===0?`origin`:`-1`:`origin`}function gw(e,t){return new Un(t,e.dataSets?.map(e=>e.backgroundColor)||[])}function _w(e,t){let n=e.coloringOptions?.type===`categoryColor`?e.coloringOptions.colors:[],r=new Un(t.length,n);return t.map(e=>({label:e.label,color:r.next()}))}function vw(e,t){if(e.length===0)return;let n=dw(e),r=n[n.length-1],i=Math.min(...r.map(e=>e.value)),a=Math.max(...r.map(e=>e.value));if(Number.isFinite(i)&&Number.isFinite(a)){let e=[{value:i,color:t.minColor}];if(t.midColor){let n=(i+a)/2;e.push({value:n,color:t.midColor})}return e.push({value:a,color:t.maxColor}),Kn(e)}}function yw(e,t,n,r){let i=e.raw._data.children[0][0],a=r.find(e=>e.label===i)?.color;if(!a||!n.useValueBasedGradient)return a||`#FF0000`;let o=t.find(e=>e.label===i);if(!o||!o.children.length)return a;let s=dw(o.children),c=s[s.length-1],l=Math.max(...c.map(e=>e.value)),u=Math.min(...c.map(e=>e.value));return u===l||!isFinite(u)||!isFinite(l)?a:An(a,((Number(e.raw.v)||0)-l)/(u-l)*.5)}let bw={id:`sunburstHoverPlugin`,afterEvent(e,t,n){if(!n.enabled)return;let r=e.getActiveElements(),i=r.map(e=>({datasetIndex:e.datasetIndex,index:e.index}));for(let t of r){let n=e.data.datasets[t.datasetIndex].data[t.index];for(let t=0;t<e.data.datasets.length;t++){let r=e.data.datasets[t];for(let e=0;e<r.data.length;e++){let a=r.data[e];xw(n.groups,a.groups)&&i.push({datasetIndex:t,index:e})}}}i=i.filter(t=>{let{datasetIndex:n,index:r}=t;return e.data.datasets[n].data[r].label!==XC}),e.setActiveElements(i);for(let t of e.getSortedVisibleDatasetMetas())for(let e of t.data){let t=e.$context,{datasetIndex:n,index:r,dataset:a,raw:o}=t;if(o.label===`nullValue`)continue;let s=typeof a.backgroundColor==`function`?a.backgroundColor(t):a.backgroundColor;i.length&&!i.some(e=>e.datasetIndex===n&&e.index===r)?e.options.backgroundColor=An(s,.5):e.options.backgroundColor=s}}};function xw(e,t){return t.length>e.length&&e.every((e,n)=>e===t[n])}let Sw={id:`sunburstLabelsPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues&&!n.showLabels||e.config.type!==`doughnut`)return;let r=e.ctx;Cw(e,n,r)}};function Cw(e,t,n){let r=t.style,i=r.fontSize||13,a=i+3;for(let o of e._metasets)for(let s=0;s<o._dataset.data.length;s++){let c=o._dataset.data[s];if(c.label===`nullValue`)continue;let l=[t.showLabels?c.label:void 0,t.showValues?t.callback(c.value,`y`):void 0].filter(C),u=o.data[s],{startAngle:d,endAngle:f,innerRadius:p,outerRadius:m,circumference:h}=u,g=u.options.offset/4,_=g*(1-Math.sin(Math.min(Math.PI,h||0)));p+=_,m+=_;let v=(d+f)/2,y=(p+m)/2,ee=(m-p)*.9,te=f-d;if((te>=Math.PI?m:Math.sin(te/2)*p*2)<l.length*a)continue;n.save();let ne={x:Math.cos(v)*g,y:Math.sin(v)*g},re=e.chartArea.left+e.chartArea.width/2+ne.x,ie=e.chartArea.top+e.chartArea.height/2+ne.y;n.translate(re,ie);let ae;v>Math.PI/2?(n.rotate(v-Math.PI),ae=-y):(ae=y,n.rotate(v));let oe=u.options.backgroundColor,se=vn(oe)>.7?`#666666`:`#FFFFFF`;n.fillStyle=r.textColor||se,n.textAlign=`center`,n.textBaseline=`middle`,n.font=pl(i,r.bold,r.italic);let ce=-((l.length-1)*a)/2;for(let e=0;e<l.length;e++){let t=jl(n,ee,l[e],r,`px`);n.fillText(t,ae,ce+e*a)}n.restore()}}let ww={id:`waterfallLinesPlugin`,beforeDraw(e,t,n){if(!n.showConnectorLines)return;let r=e._metasets?.[0]?.data;if(!r)return;let i=e.ctx;i.save(),i.setLineDash([3,2]);for(let e=0;e<r.length;e++){let t=r[e];if(t.height===0)continue;let n=Ew(r,e);if(!n)break;let a=Tw(t),o=Tw(n),s=t.$context.raw,c=s[1]-s[0],l=Math.round(c<0?a.bottom-1:a.top),u=Math.round(a.right),d=Math.round(o.left);i.strokeStyle=`#999`,i.beginPath(),i.moveTo(u+1,l+.5),i.lineTo(d,l+.5),i.stroke()}i.restore()}};function Tw(e){let t=e.base<e.y;return{left:e.x-e.width/2,right:e.x+e.width/2,bottom:t?e.base+e.height:e.y+e.height,top:t?e.base:e.y}}function Ew(e,t){return e.find((e,n)=>n>t&&e.height!==0)}B`
24
+ `,e.endsWith(`{`)&&n++;return t.trim()}let eC=BS.content,tC={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},nC={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`},rC={};function iC(e){return aC(Vy(e))}function aC(e){try{return oC(e)}catch(t){return{tokens:e,dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function oC(e){let{dependencies:t,literalValues:n,symbols:r}=cC(e),i=sC(e);if(!rC[i]){let t=$y([...e]),n=new ZS,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new qi(E(`Invalid formula`));let u=o(t),d=new YS;d.append(u),d.append(`return ${u.returnExpression};`),rC[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=eC[e.value.toUpperCase()];if(!n)throw new Zi(E(`Unknown function: "%s"`,e.value));lC(e);let r=[],i=sp(n,t.length);for(let e=0;e<t.length;e++){let a=n.args[i(e)??-1],s=t[e],c=a.type||[],l=c.includes(`META`)||c.includes(`RANGE<META>`),u=c.some(e=>uC(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new YS(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new qi(E(`Argument must be a reference to a cell or range.`));switch(e.debug&&(u.append(`debugger;`),u.append(`ctx["debug"] = true;`)),e.type){case`BOOLEAN`:return u.return(`{ value: ${e.value} }`);case`NUMBER`:return u.return(`this.literalValues.numbers[${c++}]`);case`STRING`:return u.return(`this.literalValues.strings[${s++}]`);case`REFERENCE`:return u.return(`${e.value.includes(`:`)||i?`range`:`ref`}(deps[${l++}], ${t?`true`:`false`})`);case`FUNCALL`:let n=a(e).map(e=>e.assignResultToVariable());u.append(...n);let d=e.value.toUpperCase();return u.return(`ctx['${d}'](${n.map(e=>e.returnExpression)})`);case`UNARY_OPERATION`:{let t=nC[e.value],n=o(e.operand,!1,!1).assignResultToVariable();return u.append(n),u.return(`ctx['${t}'](${n.returnExpression})`)}case`BIN_OPERATION`:{let t=tC[e.value],n=o(e.left,!1,!1).assignResultToVariable(),r=o(e.right,!1,!1).assignResultToVariable();return u.append(n),u.append(r),u.return(`ctx['${t}'](${n.returnExpression}, ${r.returnExpression})`)}case`SYMBOL`:let f=r.indexOf(e.value);return u.return(`getSymbolValue(this.symbols[${f}])`);case`EMPTY`:return u.return(`undefined`)}}}return{execute:rC[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function sC(e){let t=``;for(let n of e)switch(n.type){case`STRING`:t+=`|S|`;break;case`NUMBER`:t+=`|N|`;break;case`REFERENCE`:case`INVALID_REFERENCE`:n.value.includes(`:`)?t+=`|R|`:t+=`|C|`;break;case`SPACE`:break;default:t+=n.value;break}return t}function cC(e){let t={numbers:[],strings:[]},n=[],r=[];for(let i of e)switch(i.type){case`INVALID_REFERENCE`:case`REFERENCE`:n.push(i.value);break;case`STRING`:let e=ct(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=Wi(i.value,D);t.numbers.push({value:e});break}case`SYMBOL`:r.push(pt(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function lC(e){let t=e.args.length,n=e.value.toUpperCase(),r=eC[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Expected %(minArgRequired)s minimum, but got %(nbrArgSupplied)s instead.`,{functionName:n,minArgRequired:a,nbrArgSupplied:t}));if(t>r.maxArgPossible)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Expected %(maxArgPossible)s maximum, but got %(nbrArgSupplied)s instead.`,{functionName:n,maxArgPossible:r.maxArgPossible,nbrArgSupplied:t}));if(i>1){let e=i*Math.floor((t-a)/i),o=t-a-e-r.nbrArgOptional;if(o>0)throw new qi(E(`Invalid number of arguments for the %(functionName)s function. Repeatable arguments should be supplied in groups of %(nbrArgRepeating)s, with up to %(nbrArgOptional)s optional. Got %(nbrValueRemaining)s too many.`,{functionName:n,nbrArgRepeating:i,nbrArgOptional:r.nbrArgOptional,nbrValueRemaining:o}))}}function uC(e){return e.startsWith(`RANGE`)}let dC=BS.content;function fC(e){try{return tb($y(e)).filter(e=>e.type===`FUNCALL`&&!dC[e.value.toUpperCase()]?.isExported).length===0}catch{return!1}}function pC(e,t){if(!e.some(e=>e.type===`SYMBOL`&&t.includes(e.value.toUpperCase())))return[];let n;try{n=$y(e)}catch{return[]}return mC(n,t)}function mC(e,t){return tb(e).filter(e=>e.type===`FUNCALL`&&t.includes(e.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}function hC(e,t,n){if(!t.startsWith(`=`))return t;let r=Vy(t);for(let t=1;t<r.length;t++){if(r[t].type!==`REFERENCE`)continue;let i=r[t].value,a=gC(e,i,n).range;i!==a&&(r[t]={value:a,type:`REFERENCE`})}return Mt(r.map(e=>e.value))}function gC(e,t,n){let r=Mc(t).sheetName;if(r?!ll(r,n.sheetName.old):e!==n.sheetId)return{changeType:`NONE`,range:t};let i=yC(t,r?n.sheetId:e);if(i.invalidXc)return{changeType:`NONE`,range:t};let a=n.applyChange(i);if(a.changeType===`NONE`||a.changeType===`REMOVE`)return{changeType:a.changeType,range:t};let o=zc(a.range,e,_C(n));return o===k.InvalidReference?{changeType:`REMOVE`,range:o}:{changeType:a.changeType,range:o}}function _C(e){return t=>t===e.sheetId?e.sheetName.current:``}function vC(e){return{numberOfRows:2**53-1,numberOfCols:2**53-1}}function yC(e,t){return Ec.test(e)?Fc({xc:e,sheetId:t},vC):Ic(e)}let bC=`xMovingAverage`,xC={exponential:`exp`,logarithmic:`log`,polynomial:`poly`,trailingMovingAverage:`movingAvg`};function SC(e,t,n,r){let i=!1,a=[];for(let r in n){let o=n[r];if(o.labelCell){let e=TC(o.labelCell,t);o.labelCell!==e&&(i=!0,o={...o,labelCell:e})}let s=TC(o.dataRange,t);s===void 0||e.getRangeString(s,s.sheetId)===k.InvalidReference?(i=!0,o=void 0):s!==o.dataRange&&(i=!0,o={...o,dataRange:s}),a[r]=o}let o=r,s=TC(o,t);s!==o&&(i=!0,o=s);let c=a.filter(C);return{isStale:i,dataSets:c,labelRange:o}}function CC(e,t,n){return n.map(n=>({dataRange:Bc(e,t,n.dataRange),labelCell:n.labelCell?Bc(e,t,n.labelCell):void 0}))}function wC(e,t,n){return n?Bc(e,t,n):void 0}function TC(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}function EC(e,t,n,r){let i=[];for(let a of t){let{unboundedZone:t,sheetId:o,invalidSheetName:s,invalidXc:c}=e.getRangeFromSheetXC(n,a.dataRange);if(!(s||c))if(t.left!==t.right&&t.top!==t.bottom){if(t.right===void 0)continue;for(let n=t.left;n<=t.right;n++){let s={...t,left:n,right:n};i.push({...DC(e,o,s,r?{top:s.top,bottom:s.top,left:s.left,right:s.left}:void 0),backgroundColor:a.backgroundColor,rightYAxis:a.yAxisId===`y1`,customLabel:a.label,trend:a.trend})}}else i.push({...DC(e,o,t,r?{top:t.top,bottom:t.top,left:t.left,right:t.left}:void 0),backgroundColor:a.backgroundColor,rightYAxis:a.yAxisId===`y1`,customLabel:a.label,trend:a.trend})}return i}function DC(e,t,n,r){if(n.left!==n.right&&n.top!==n.bottom)throw Error(`Zone should be a single column or row: ${js(n)}`);if(r){let i=js(n),a=js(r);return{labelCell:e.getRangeFromSheetXC(t,a),dataRange:e.getRangeFromSheetXC(t,i)}}else return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,js(n))}}function OC(e,t){let n=t.labelCell?.zone,r=t.dataRange.zone;if(n){let{numberOfRows:e,numberOfCols:t}=Ws(r);e===1?r={...r,left:r.left+1}:t===1&&(r={...r,top:r.top+1})}let i=Pc({...t.dataRange,zone:r},e.getSheetSize),a={};t.customLabel?a={text:t.customLabel}:t.labelCell&&(a={reference:e.getRangeString(t.labelCell,`forceSheetReference`,{useBoundedReference:!0})});let o;return t.trend?.type&&(o={type:t.trend.type===`polynomial`&&t.trend.order===1?`linear`:xC[t.trend.type],color:t.trend.color,order:t.trend.order?Math.min(t.trend.order,6):void 0,window:t.trend.window||2}),{label:a,range:e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0}),backgroundColor:t.backgroundColor,rightYAxis:t.rightYAxis,trend:o}}function kC(e,t,n){if(!t)return;let r={...t.zone};n&&t.zone.bottom>t.zone.top&&(r.top+=1);let i=Pc({...t,zone:r},e.getSheetSize);return e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0})}function AC(e,t,n){let r;if(t.labelRange){let{changeType:i,range:a}=gC(e,t.labelRange,n);i!==`REMOVE`&&(r=a)}let i=[];for(let r of t.dataSets){let t={...r},{changeType:a,range:o}=gC(e,r.dataRange,n);a!==`REMOVE`&&(t.dataRange=o,i.push(t))}return{...t,dataSets:i,labelRange:r}}function jC(e){return e&&vn(e)<.3?`#FFFFFF`:`#000000`}function MC(e){return e&&vn(e)<.3?`#C8C8C8`:`#666666`}function NC(e){return e.dataSets&&(e.dataSets.find(e=>!Ec.test(e.dataRange))!==void 0||e.dataSets.map(e=>Ts(e.dataRange)).some(e=>e.top!==e.bottom&&tc(e)))?`InvalidDataSet`:`Success`}function PC(e){return e.labelRange&&!Ec.test(e.labelRange||``)?`InvalidLabelRange`:`Success`}function FC(e,t,n){if(!n||!e)return!1;if(!t)return!0;let r=rc(t.dataRange.zone);return!(rc(e.zone)<r)}function IC(e,t){let{x:n,y:r}=e.getMainViewportCoordinates(),{scrollX:i,scrollY:a}=e.getActiveSheetScrollInfo(),{width:o,height:s}=e.getVisibleRect(e.getActiveMainViewport());return{x:n+i+Math.max(0,(o-t.width)/2),y:r+a+Math.max(0,(s-t.height)/2)}}function LC(e){let t=!1,n=!1;if(`horizontal`in e&&e.horizontal)return{useLeftAxis:!0,useRightAxis:!1};for(let r of e.dataSets||[])r.yAxisId===`y1`?n=!0:t=!0;return t||=!n,{useLeftAxis:t,useRightAxis:n}}function RC(e,t,n=!1){return(r,i)=>{let a=e?.[i];return zC({format:a,locale:t},n)(r)}}function zC(e,t=!1){return n=>{if(n=Number(n),isNaN(n))return n;let{locale:r,format:i}=e;return HC(t?Go({value:n,format:i},r):L(n,{locale:r,format:!i&&Math.abs(n)>=1e3?`#,##`:i}))}}let BC=[{value:`left`,label:E(`Left`)},{value:`right`,label:E(`Right`)}];function VC(e,t){let n=[],r=$t(t.map(e=>e.data.length));for(let t=0;t<=r;t++)n.push(e.next());return n}function HC(e,t=20){return e?e.length>t?e.substring(0,t)+`…`:e:``}function UC(e){return e===`x1`||e===`xMovingAverage`}let WC={id:`chartShowValuesPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues||!e._metasets?.[0]?.data)return;let r=e.ctx;switch(r.save(),r.textAlign=`center`,r.textBaseline=`middle`,r.miterLimit=1,e.config.type){case`pie`:case`doughnut`:JC(e,n,r);break;case`bar`:case`line`:case`radar`:n.horizontal?qC(e,n,r):KC(e,n,r);break;case`funnel`:qC(e,n,r);break}r.restore()}};function GC(e,t,n,r){r.lineWidth=3,r.strokeText(e,t,n),r.lineWidth=1,r.fillText(e,t,n)}function KC(e,t,n){let r={};for(let i of e._metasets){if(UC(i.xAxisID)||i.hidden)continue;let a=e.scales[i.yAxisID];for(let o=0;o<i._parsed.length;o++){let s=i._parsed[o],c=Number(e.config.type===`radar`?s.r:s.y);if(isNaN(c))continue;let l=i.data[o],u=l.x,d=0;if(e.config.type===`line`||e.config.type===`radar`)d=c<0?l.y+10:l.y-10;else{let e=a.getPixelForValue(0);d=Math.abs(e-l.y)<12?c<0?e+12/2:e-12/2:c<0?l.y-l.height/2:l.y+l.height/2}r[u]||(r[u]=[]);for(let e of r[u]||[])Math.abs(e-d)<13&&(d=c<0?e+13:e-13);r[u].push(d),n.fillStyle=l.options.backgroundColor,n.strokeStyle=t.background||`#ffffff`,GC(t.callback(Number(c),i,o),u,d,n)}}}function qC(e,t,n){let r={};for(let i of e._metasets){if(UC(i.xAxisID))return;let a=e.scales[i.xAxisID].getPixelForValue(0);for(let e=0;e<i._parsed.length;e++){let o=Number(i._parsed[e].x);if(isNaN(o))continue;let s=t.callback(o,i,e),c=i.data[e],l=c.y,u=hl(n,s,{fontSize:12},`px`),d=Math.abs(c.x-a),f;f=d<u?o<0?a-u/2-3:a+u/2+3:o<0?c.x+c.width/2:c.x-c.width/2,r[l]||(r[l]=[]);for(let e of r[l])Math.abs(e-f)<u&&(f=o<0?e-u-3:e+u+3);r[l].push(f),n.fillStyle=c.options.backgroundColor,n.strokeStyle=t.background||`#ffffff`,GC(s,f,l,n)}}}function JC(e,t,n){for(let r of e._metasets)for(let e=0;e<r._parsed.length;e++){let i=Number(r._parsed[e]);if(isNaN(i)||i===0)continue;let a=r.data[e],{startAngle:o,endAngle:s,innerRadius:c,outerRadius:l}=a,u=(o+s)/2,d=(c+l)/2,f=a.x+d*Math.cos(u),p=a.y+d*Math.sin(u),m=t.callback(i,r,e),h=hl(n,m,{fontSize:12},`px`),g=l-c;if(h>=g||g<12)continue;let _=s-o,v=2*d*Math.tan(_/2);_<Math.PI/2&&(h>=v||v<12)||(n.fillStyle=jC(t.background),n.strokeStyle=t.background||`#ffffff`,GC(m,f,p,n))}}let YC={showHeaders:!0,headerDesign:{align:`center`,fillColor:`#808080`,bold:!0,fontSize:15},showValues:!0,showLabels:!0,valuesDesign:{align:`left`,verticalAlign:`bottom`,fontSize:12},coloringOptions:{type:`categoryColor`,colors:[],useValueBasedGradient:!0}},XC=`nullValue`;function ZC(e,t){let{dataSetsValues:n}=t,r=[],i=gw(e,n.length),a=[];for(let o in n){let{label:s,data:c,hidden:l}=n[o];s=e.dataSets?.[o].label||s;let u=i.next(),d={label:s,data:c,hidden:l,borderColor:e.background||`#FFFFFF`,borderWidth:+!!e.stacked,backgroundColor:u,yAxisID:e.horizontal?`y`:e.dataSets?.[o].yAxisId||`y`,xAxisID:`x`};r.push(d);let f=e.dataSets?.[o].trend,p=t.trendDataSetsValues?.[o];!f?.display||e.horizontal||!p||a.push(mw(d,f,p))}return r.push(...a),r}function QC(e,t){let{dataSetsValues:n,labels:r}=t,i=e.negativeValuesColor||`#EA6175`,a=e.positiveValuesColor||`#4EA7F2`,o=e.subTotalValuesColor||`#AAAAAA`,s=[],c=[],l={label:``,data:c,backgroundColor:s},u=[],d=0;for(let t of n)if(!t.hidden){for(let l=0;l<t.data.length;l++){let f=t.data[l];if(u.push(r[l]),isNaN(Number(f))){c.push([d,d]),s.push(``);continue}c.push([d,f+d]);let p=f>=0?a:i;l===0&&t===n[0]&&e.firstValueAsSubtotal&&(p=o),s.push(p),d+=f}e.showSubTotals&&(u.push(E(`Subtotal`)),c.push([0,d]),s.push(o))}return{datasets:[l],labels:u}}function $C(e,t){let{dataSetsValues:n,axisType:r,labels:i}=t,a=[],o=!!e.fillArea,s=!!e.stacked,c=[],l=gw(e,n.length);for(let u=0;u<n.length;u++){let{label:d,data:f,hidden:p}=n[u];d=e.dataSets?.[u].label||d;let m=l.next();r&&[`linear`,`time`].includes(r)&&(f=f.map((e,t)=>({x:i[t]||void 0,y:e})));let h={label:d,data:f,hidden:p,tension:0,borderColor:m,backgroundColor:o?kn(m,Je):m,pointBackgroundColor:m,fill:o?hw(u,s):!1,pointRadius:e.hideDataMarkers?0:3,yAxisID:e.dataSets?.[u].yAxisId||`y`};a.push(h);let g=e.dataSets?.[u].trend,_=t.trendDataSetsValues?.[u];!g?.display||!_||c.push(mw(h,g,_))}return a.push(...c),a}function ew(e,t){let n=$C(e,t);for(let e of n)UC(e.xAxisID)||(e.showLine=!1);return n}function tw(e,t){let{dataSetsValues:n}=t,r=[],i=VC(new Un(Math.max(0,...n.map(e=>e?.data?.length??0))),n);for(let{label:t,data:a,hidden:o}of n){if(o)continue;let n={label:t,data:a,borderColor:e.background||`#FFFFFF`,backgroundColor:i,hoverOffset:10};r.push(n)}return r}function nw(e,t){let{dataSetsValues:n}=t,r=[],i=gw(e,n.length),a=[];for(let o=0;o<n.length;o++){let{label:s,data:c,hidden:l}=n[o];s=e.dataSets?.[o].label||s;let u=e.dataSets?.[o],d=i.next(),f=u?.type??`line`,p={label:s,data:c,hidden:l,borderColor:d,backgroundColor:d,yAxisID:e.dataSets?.[o].yAxisId||`y`,xAxisID:`x`,type:f,order:f===`bar`?n.length+o:o,pointRadius:e.hideDataMarkers?0:3};r.push(p);let m=e.dataSets?.[o].trend,h=t.trendDataSetsValues?.[o];!m?.display||!h||a.push(mw(p,m,h))}return r.push(...a),r}function rw(e,t){let{dataSetsValues:n}=t,r=[],i=e.fillArea??!1,a=gw(e,n.length);for(let t=0;t<n.length;t++){let{label:o,data:s,hidden:c}=n[t];e.dataSets?.[t]?.label&&(o=e.dataSets[t].label);let l=a.next(),u={label:o,data:s,hidden:c,borderColor:l,backgroundColor:l,pointBackgroundColor:l,pointRadius:e.hideDataMarkers?0:3};i&&(u.backgroundColor=kn(l,Je),u.fill=`start`),r.push(u)}return r}function iw(e,t){let{availableRegions:n,dataSetsValues:r,labels:i}=t,a=e.region||n[0]?.id,o=a?t.getGeoJsonFeatures(a):void 0,s={outline:o,showOutline:!!o,data:[]};if(o&&a){let e={};if(r[0])for(let n=0;n<r[0].data.length;n++){if(!i[n]||r[0].data[n]===void 0)continue;let o=t.geoFeatureNameToId(a,i[n]);o&&(e[o]={value:r[0].data[n],label:i[n]})}for(let t of o)t.id&&s.data.push({feature:{...t,properties:{name:e[t.id]?.label}},value:e[t.id]?.value})}return[s]}function aw(e,t){let n=t.dataSetsValues[0],r=t.labels;if(!n)return[];let{label:i,data:a}=n;return i=e.dataSets?.[0].label||i,[{label:i,data:a.map(e=>e<=0?[0,0]:[-e,e]),backgroundColor:ow(r,e.funnelColors),yAxisID:`y`,xAxisID:`x`,barPercentage:1,categoryPercentage:1,borderColor:e.background||`#FFFFFF`,borderWidth:3}]}function ow(e,t){let n=new Un(e.length,t);return e.map(()=>n.next())}function sw(e,t){let{dataSetsValues:n,labels:r}=t,i=dw(lw(n,r)),a=i[0]||[],o=new Un(a.length,e.groupColors||[]),s=a.map(e=>({label:e.label,color:o.next()})),c=[];for(let t=i.length-1;t>=0;t--){let n={groupColors:s,parsing:{key:`value`},data:i[t],borderColor:t=>{let n=t.type===`data`?t.raw:void 0;return!n||n.label===`nullValue`?_e:e.background||`#FFFFFF`},backgroundColor:e=>{let t=e.type===`data`?e.raw:void 0;if(!t||t.label===`nullValue`)return _e;let n=t.groups[0];return s.find(e=>e.label===n)?.color},hoverOffset:10};c.push(n)}return c}function cw(e,t){let n=[],r=Math.max(...e.map(e=>e.data.length));for(let i=0;i<r;i++){n[i]={};for(let t=0;t<e.length;t++){let r=e[t].data[i]===null?XC:String(e[t].data[i]);n[i][t]=r}n[i].value=Number(t[i])}return n}function lw(e,t){return uw(cw(e,t),0,e.length,[])}function uw(e,t,n,r){if(t>=n)return[];let i=Object.groupBy(e,e=>e[t]);return Object.keys(i).map(e=>{let a=i[e]?.reduce((e,t)=>e+Number(t.value),0)||0,o=[...r,e];return{label:e,value:a,children:uw(i[e]||[],t+1,n,[...r,e]),groups:o,depth:t}}).sort((e,t)=>t.value-e.value)}function dw(e){let t=[],n=[...e];for(;n.length>0;){let e=n.shift();e&&(t[e.depth]||(t[e.depth]=[]),t[e.depth].push(e),e.children&&n.push(...e.children))}return t}function fw(e,t){let{dataSetsValues:n,labels:r,locale:i,axisFormats:a}=t,o={locale:i,format:a?.y};if(n.length===0)return[];let s=lw(n,r).sort((e,t)=>t.value-e.value),c=_w(e,s),l=[],u=Math.max(...n.map(e=>e.data.length));for(let e=0;e<u;e++){l[e]={};for(let t=0;t<n.length;t++)l[e][t]=n[t].data[e]?String(n[t].data[e]):void 0;l[e].value=Number(r[e])}let d=e.showLabels??YC.showLabels,f=e.showValues??YC.showValues,p=e.coloringOptions||YC.coloringOptions,m;return p?.type===`colorScale`&&(m=vw(s,p)),[{data:[],tree:l,labels:{display:d||f,overflow:`hidden`,...pw(e.valuesDesign,YC.valuesDesign),formatter:e=>[d?e.raw.g:void 0,f?L(e.raw.v,o):void 0].filter(C)},captions:{display:e.showHeaders??YC.showHeaders,padding:6,...pw(e.headerDesign,YC.headerDesign)},key:`value`,groups:S(0,n.length).map(e=>String(e)),borderWidth:0,spacing:1,displayMode:`headerBoxes`,groupColors:c,backgroundColor:t=>{if(t.type!==`data`)return`transparent`;if(!t.raw.isLeaf)return e.headerDesign?.fillColor||YC.headerDesign?.fillColor;if(p.type===`colorScale`)return m?.(t.raw.v)||`#FF0000`;if(p.type===`categoryColor`)return yw(t,s,p,c);throw Error(`Unsupported coloring option type}`)}}]}function pw(e,t){let n=e=>{let t=e.element.options.backgroundColor;return vn(t)>.7?`#666666`:`#FFFFFF`};return{align:e?.align??t?.align,position:e?.verticalAlign??t?.verticalAlign,color:e?.color||n,hoverColor:e?.color||n,font:{weight:e?.bold??t?.bold?`bold`:`normal`,style:e?.italic??t?.italic?`italic`:`normal`,size:e?.fontSize??t?.fontSize}}}function mw(e,t,n){let r=xn(e.backgroundColor);r.a=1;let i=t.color||An(bn(r),.5);return{type:`line`,xAxisID:t.type===`trailingMovingAverage`?bC:`x1`,yAxisID:e.yAxisID,label:e.label?E(`Trend line for %s`,e.label):``,data:n,order:-1,showLine:!0,pointRadius:0,backgroundColor:i,borderColor:i,borderDash:[5,5],borderWidth:void 0,fill:!1,pointBackgroundColor:i}}function hw(e,t){return t?e===0?`origin`:`-1`:`origin`}function gw(e,t){return new Un(t,e.dataSets?.map(e=>e.backgroundColor)||[])}function _w(e,t){let n=e.coloringOptions?.type===`categoryColor`?e.coloringOptions.colors:[],r=new Un(t.length,n);return t.map(e=>({label:e.label,color:r.next()}))}function vw(e,t){if(e.length===0)return;let n=dw(e),r=n[n.length-1],i=Math.min(...r.map(e=>e.value)),a=Math.max(...r.map(e=>e.value));if(Number.isFinite(i)&&Number.isFinite(a)){let e=[{value:i,color:t.minColor}];if(t.midColor){let n=(i+a)/2;e.push({value:n,color:t.midColor})}return e.push({value:a,color:t.maxColor}),Kn(e)}}function yw(e,t,n,r){let i=e.raw._data.children[0][0],a=r.find(e=>e.label===i)?.color;if(!a||!n.useValueBasedGradient)return a||`#FF0000`;let o=t.find(e=>e.label===i);if(!o||!o.children.length)return a;let s=dw(o.children),c=s[s.length-1],l=Math.max(...c.map(e=>e.value)),u=Math.min(...c.map(e=>e.value));return u===l||!isFinite(u)||!isFinite(l)?a:An(a,((Number(e.raw.v)||0)-l)/(u-l)*.5)}let bw={id:`sunburstHoverPlugin`,afterEvent(e,t,n){if(!n.enabled)return;let r=e.getActiveElements(),i=r.map(e=>({datasetIndex:e.datasetIndex,index:e.index}));for(let t of r){let n=e.data.datasets[t.datasetIndex].data[t.index];for(let t=0;t<e.data.datasets.length;t++){let r=e.data.datasets[t];for(let e=0;e<r.data.length;e++){let a=r.data[e];xw(n.groups,a.groups)&&i.push({datasetIndex:t,index:e})}}}i=i.filter(t=>{let{datasetIndex:n,index:r}=t;return e.data.datasets[n].data[r].label!==XC}),e.setActiveElements(i);for(let t of e.getSortedVisibleDatasetMetas())for(let e of t.data){let t=e.$context,{datasetIndex:n,index:r,dataset:a,raw:o}=t;if(o.label===`nullValue`)continue;let s=typeof a.backgroundColor==`function`?a.backgroundColor(t):a.backgroundColor;i.length&&!i.some(e=>e.datasetIndex===n&&e.index===r)?e.options.backgroundColor=An(s,.5):e.options.backgroundColor=s}}};function xw(e,t){return t.length>e.length&&e.every((e,n)=>e===t[n])}let Sw={id:`sunburstLabelsPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues&&!n.showLabels||e.config.type!==`doughnut`)return;let r=e.ctx;Cw(e,n,r)}};function Cw(e,t,n){let r=t.style,i=r.fontSize||13,a=i+3;for(let o of e._metasets)for(let s=0;s<o._dataset.data.length;s++){let c=o._dataset.data[s];if(c.label===`nullValue`)continue;let l=[t.showLabels?c.label:void 0,t.showValues?t.callback(c.value,`y`):void 0].filter(C),u=o.data[s],{startAngle:d,endAngle:f,innerRadius:p,outerRadius:m,circumference:h}=u,g=u.options.offset/4,_=g*(1-Math.sin(Math.min(Math.PI,h||0)));p+=_,m+=_;let v=(d+f)/2,y=(p+m)/2,ee=(m-p)*.9,te=f-d;if((te>=Math.PI?m:Math.sin(te/2)*p*2)<l.length*a)continue;n.save();let ne={x:Math.cos(v)*g,y:Math.sin(v)*g},re=e.chartArea.left+e.chartArea.width/2+ne.x,ie=e.chartArea.top+e.chartArea.height/2+ne.y;n.translate(re,ie);let ae;v>Math.PI/2?(n.rotate(v-Math.PI),ae=-y):(ae=y,n.rotate(v));let oe=u.options.backgroundColor,se=vn(oe)>.7?`#666666`:`#FFFFFF`;n.fillStyle=r.textColor||se,n.textAlign=`center`,n.textBaseline=`middle`,n.font=pl(i,r.bold,r.italic);let ce=-((l.length-1)*a)/2;for(let e=0;e<l.length;e++){let t=jl(n,ee,l[e],r,`px`);n.fillText(t,ae,ce+e*a)}n.restore()}}let ww={id:`waterfallLinesPlugin`,beforeDraw(e,t,n){if(!n.showConnectorLines)return;let r=e._metasets?.[0]?.data;if(!r)return;let i=e.ctx;i.save(),i.setLineDash([3,2]);for(let e=0;e<r.length;e++){let t=r[e];if(t.height===0)continue;let n=Ew(r,e);if(!n)break;let a=Tw(t),o=Tw(n),s=t.$context.raw,c=s[1]-s[0],l=Math.round(c<0?a.bottom-1:a.top),u=Math.round(a.right),d=Math.round(o.left);i.strokeStyle=`#999`,i.beginPath(),i.moveTo(u+1,l+.5),i.lineTo(d,l+.5),i.stroke()}i.restore()}};function Tw(e){let t=e.base<e.y;return{left:e.x-e.width/2,right:e.x+e.width/2,bottom:t?e.base+e.height:e.y+e.height,top:t?e.base:e.y}}function Ew(e,t){return e.find((e,n)=>n>t&&e.height!==0)}B`
25
25
  .o-spreadsheet {
26
26
  .o-chart-custom-tooltip {
27
27
  font-size: 12px;
@@ -1313,6 +1313,12 @@ stores.inject(MyMetaStore, storeInstance);
1313
1313
  background-color: ${Ae};
1314
1314
  border-color: ${Ae};
1315
1315
  }
1316
+
1317
+ &:focus {
1318
+ outline: none;
1319
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
1320
+ border-color: ${Ae};
1321
+ }
1316
1322
  }
1317
1323
  }
1318
1324
  `;var GV=class extends t.Component{static template=`o-spreadsheet.RadioSelection`;static props={choices:Array,onChange:Function,selectedValue:{optional:!1},name:String,direction:{type:String,optional:!0}};static defaultProps={direction:`horizontal`}},KV=class extends t.Component{static template=`o-spreadsheet-GeneralDesignEditor`;static components={RoundColorPicker:oA,ChartTitle:UV,Section:X,SidePanelCollapsible:xk,RadioSelection:GV};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function,defaultChartTitleFontSize:{type:Number,optional:!0},slots:{type:Object,optional:!0}};static defaultProps={defaultChartTitleFontSize:16};state;setup(){this.state=(0,t.useState)({activeTool:``})}get title(){return this.props.definition.title}toggleDropdownTool(e,t){let n=this.state.activeTool===e;this.state.activeTool=n?``:e}updateBackgroundColor(e){this.props.updateChart(this.props.chartId,{background:e})}updateTitle(e){let t={...this.title,text:e};this.props.updateChart(this.props.chartId,{title:t})}updateChartTitleStyle(e){let t={...this.title,...e};this.props.updateChart(this.props.chartId,{title:t}),this.state.activeTool=``}},qV=class extends t.Component{static template=`o-spreadsheet-ChartHumanizeNumbers`;static components={Checkbox:xA};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};get title(){let e=this.env.model.getters.getLocale();return E(`E.g. 1234567 -> %(value)s`,{value:L(1234567,{format:Ko({value:1234567},void 0,e),locale:e})})}},JV=class extends t.Component{static template=`o-spreadsheet-ChartLegend`;static components={Section:X};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};updateLegendPosition(e){this.props.updateChart(this.props.chartId,{legendPosition:e.target.value})}},YV=class extends t.Component{static template=`o-spreadsheet-SeriesDesignEditor`;static components={SidePanelCollapsible:xk,Section:X,RoundColorPicker:oA};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function,slots:{type:Object,optional:!0}};state=(0,t.useState)({index:0});getDataSeries(){let e=this.env.model.getters.getChartRuntime(this.props.chartId);return!e||!(`chartJsConfig`in e)?[]:e.chartJsConfig.data.datasets.filter(e=>!UC(e.xAxisID??``)).map(e=>e.label)}updateEditedSeries(e){this.state.index=e.target.selectedIndex}updateDataSeriesColor(e){let t=this.props.definition.dataSets;t?.[this.state.index]&&(t[this.state.index]={...t[this.state.index],backgroundColor:e},this.props.updateChart(this.props.chartId,{dataSets:t}))}getDataSeriesColor(){let e=this.props.definition.dataSets;if(!e?.[this.state.index])return``;let t=e[this.state.index].backgroundColor;return t?pn(t):Bn(this.state.index,Vn(this.props.definition.dataSets.length))}updateDataSeriesLabel(e){let t=e.target.value,n=this.props.definition.dataSets;n?.[this.state.index]&&(n[this.state.index]={...n[this.state.index],label:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesLabel(){return this.props.definition.dataSets[this.state.index]?.label||this.getDataSeries()[this.state.index]}},XV=class extends t.Component{static template=`o-spreadsheet-SeriesWithAxisDesignEditor`;static components={SeriesDesignEditor:YV,Checkbox:xA,RadioSelection:GV,Section:X,RoundColorPicker:oA};static props={chartId:String,definition:Object,canUpdateChart:Function,updateChart:Function,slots:{type:Object,optional:!0}};axisChoices=BC;updateDataSeriesAxis(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],yAxisId:t===`left`?`y`:`y1`},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSerieAxis(e){let t=this.props.definition.dataSets;return t?.[e]&&t[e].yAxisId===`y1`?`right`:`left`}get canHaveTwoVerticalAxis(){return!(`horizontal`in this.props.definition&&this.props.definition.horizontal)}toggleDataTrend(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{type:`polynomial`,order:1,...n[e].trend,display:t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}getTrendLineConfiguration(e){return this.props.definition.dataSets?.[e]?.trend}getTrendType(e){return e?e.type===`polynomial`&&e.order===1?`linear`:e.type:``}onChangeTrendType(e,t){let n=t.target.value,r;switch(n){case`linear`:case`polynomial`:r={type:`polynomial`,order:n===`linear`?1:this.getMaxPolynomialDegree(e)};break;case`exponential`:case`logarithmic`:case`trailingMovingAverage`:r={type:n};break;default:return}this.updateTrendLineValue(e,r)}getPolynomialDegrees(e){return S(1,this.getMaxPolynomialDegree(e)+1)}onChangePolynomialDegree(e,t){let n=t.target;this.updateTrendLineValue(e,{order:parseInt(n.value)})}getMaxPolynomialDegree(e){let t=this.env.model.getters.getChartRuntime(this.props.chartId);return Math.min(10,t.chartJsConfig.data.datasets[e].data.length-1)}get defaultWindowSize(){return 2}onChangeMovingAverageWindow(e,t){let n=t.target,r=parseInt(n.value)||2;r<=1&&(r=2),this.updateTrendLineValue(e,{window:r})}getDataSeriesColor(e){let t=this.props.definition.dataSets;if(!t?.[e])return``;let n=t[e].backgroundColor;return n?pn(n):Bn(e,Vn(this.props.definition.dataSets.length))}getTrendLineColor(e){return this.getTrendLineConfiguration(e)?.color??kn(this.getDataSeriesColor(e),.5)}updateTrendLineColor(e,t){this.updateTrendLineValue(e,{color:t})}updateTrendLineValue(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],trend:{...n[e].trend,...t}},this.props.updateChart(this.props.chartId,{dataSets:n}))}},ZV=class extends t.Component{static template=`o-spreadsheet-ChartShowValues`;static components={Checkbox:xA};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function,defaultValue:{type:Boolean,optional:!0}}},QV=class extends t.Component{static template=`o-spreadsheet-ChartWithAxisDesignPanel`;static components={GeneralDesignEditor:KV,SidePanelCollapsible:xk,Section:X,AxisDesignEditor:WV,SeriesWithAxisDesignEditor:XV,ChartLegend:JV,ChartShowValues:ZV,ChartHumanizeNumbers:qV};static props={chartId:String,definition:Object,canUpdateChart:Function,updateChart:Function};get axesList(){let{useLeftAxis:e,useRightAxis:t}=LC(this.props.definition),n=[{id:`x`,name:E(`Horizontal axis`)}];return e&&n.push({id:`y`,name:E(t?`Left axis`:`Vertical axis`)}),t&&n.push({id:`y1`,name:E(e?`Right axis`:`Vertical axis`)}),n}},$V=class extends QV{static template=`o-spreadsheet-GenericZoomableChartDesignPanel`;static components={...QV.components,Checkbox:xA};onToggleZoom(e){this.props.updateChart(this.props.chartId,{zoomable:e})}},eH=class extends $V{static template=`o-spreadsheet-BarChartDesignPanel`;get isZoomable(){return!this.props.definition.horizontal}},tH=class extends t.Component{static template=`o-spreadsheet-ChartShowDataMarkers`;static components={Checkbox:xA};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function}},nH=class extends $V{static template=`o-spreadsheet-ComboChartDesignPanel`;static components={...$V.components,ChartShowDataMarkers:tH,RadioSelection:GV};seriesTypeChoices=[{value:`bar`,label:E(`Bar`)},{value:`line`,label:E(`Line`)}];updateDataSeriesType(e,t){let n=[...this.props.definition.dataSets];n?.[e]&&(n[e]={...n[e],type:t},this.props.updateChart(this.props.chartId,{dataSets:n}))}getDataSeriesType(e){let t=this.props.definition.dataSets;return t?.[e]?t[e].type??`line`:`bar`}},rH=class extends BV{getLabelRangeOptions(){let e=this.props.definition;return[{name:`aggregated`,label:this.chartTerms.AggregatedChart,value:e.aggregated??!1,onChange:this.onUpdateAggregated.bind(this)},{name:`cumulative`,label:this.chartTerms.CumulativeData,value:e.cumulative??!1,onChange:this.onUpdateCumulative.bind(this)},{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:e.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}onUpdateCumulative(e){this.props.updateChart(this.props.chartId,{cumulative:e})}},iH=class extends t.Component{static template=`o-spreadsheet-FunnelChartDesignPanel`;static components={ChartShowValues:ZV,GeneralDesignEditor:KV,SidePanelCollapsible:xk,RoundColorPicker:oA,Section:X,ChartHumanizeNumbers:qV};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};getFunnelColorItems(){let e=this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.labels||[],t=ow(e,this.props.definition.funnelColors);return e.map((e,n)=>({label:e||E(`Value %s`,n+1),color:t[n]}))}updateFunnelItemColor(e,t){let n=Yt(this.props.definition.funnelColors||[],t,e);this.props.updateChart(this.props.chartId,{funnelColors:n})}},aH=class extends t.Component{static template=`o-spreadsheet-GaugeChartConfigPanel`;static components={ChartErrorSection:RV,ChartDataSeries:LV};static props={chartId:String,definition:Object,updateChart:Function,canUpdateChart:Function};state=(0,t.useState)({dataRangeDispatchResult:void 0});dataRange=this.props.definition.dataRange;get configurationErrorMessages(){return[...this.state.dataRangeDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>Wb.Errors[e]||Wb.Errors.Unexpected)}get isDataRangeInvalid(){return!!this.state.dataRangeDispatchResult?.isCancelledBecause(`InvalidGaugeDataRange`)}onDataRangeChanged(e){this.dataRange=e[0],this.state.dataRangeDispatchResult=this.props.canUpdateChart(this.props.chartId,{dataRange:this.dataRange})}updateDataRange(){this.state.dataRangeDispatchResult=this.props.updateChart(this.props.chartId,{dataRange:this.dataRange})}getDataRange(){return{dataRange:this.dataRange||``}}};B`
@@ -2072,6 +2078,9 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
2072
2078
  position: absolute;
2073
2079
  cursor: pointer;
2074
2080
  }
2081
+ .o-grid.o-dashboard-grid {
2082
+ background: #ffffff;
2083
+ }
2075
2084
  `;var nJ=class extends t.Component{static template=`o-spreadsheet-SpreadsheetDashboard`;static props={getGridSize:Function};static components={GridOverlay:sV,GridPopover:cV,Popover:ak,VerticalScrollBar:DV,HorizontalScrollBar:EV};cellPopovers;onMouseWheel;canvasPosition;hoveredCell;clickableCellsStore;gridRef;setup(){this.gridRef=(0,t.useRef)(`grid`),this.hoveredCell=z(gk),this.clickableCellsStore=z(tJ),(0,t.useChildSubEnv)({getPopoverContainerRect:()=>this.getGridRect()}),gV(`canvas`,this.env.model,()=>this.env.model.getters.getSheetViewDimension()),this.onMouseWheel=yV((e,t)=>{this.moveCanvas(e,t),this.hoveredCell.clear()}),this.cellPopovers=z(EA),vV(this.gridRef,this.moveCanvas.bind(this),()=>{let{scrollY:e}=this.env.model.getters.getActiveSheetScrollInfo();return e>0},()=>{let{maxOffsetY:e}=this.env.model.getters.getMaximumSheetOffset(),{scrollY:t}=this.env.model.getters.getActiveSheetScrollInfo();return t<e})}get gridContainer(){return V({"max-width":`${this.getMaxSheetWidth()}px`})}get gridOverlayDimensions(){return V({height:`100%`,width:`100%`})}getCellClickableStyle(e){return V({top:`${e.y}px`,left:`${e.x}px`,width:`${e.width}px`,height:`${e.height}px`})}getClickableCells(){return(0,t.toRaw)(this.clickableCellsStore.clickableCells)}selectClickableCell(e,t){if(![0,1].includes(e.button))return;let{position:n,action:r}=t;r(n,this.env,oT(e))}onClosePopover(){this.cellPopovers.close()}onGridResized(){let{height:e,width:t}=this.props.getGridSize(),n=this.getMaxSheetWidth();this.env.model.dispatch(`RESIZE_SHEETVIEW`,{width:Math.min(n,t),height:e,gridOffsetX:0,gridOffsetY:0})}moveCanvas(e,t){let{scrollX:n,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();this.env.model.dispatch(`SET_VIEWPORT_OFFSET`,{offsetX:n+e,offsetY:r+t})}getGridRect(){return{...Yw(this.gridRef),...this.env.model.getters.getSheetViewDimensionWithHeaders()}}getMaxSheetWidth(){let e=this.env.model.getters.getActiveSheetId(),{right:t}=this.env.model.getters.getSheetZone(e);return this.env.model.getters.getColDimensions(e,t).end}};B`
2076
2085
  .o-header-group {
2077
2086
  .o-header-group-header {
@@ -3446,4 +3455,4 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
3446
3455
  <Relationships xmlns="${Wf.Relationships}">
3447
3456
  <Relationship ${K(e)} />
3448
3457
  </Relationships>
3449
- `),`_rels/.rels`)}function OX(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=an(e,n,{compute:(e,t)=>e.slice(0,31-String(t).length)+t}),n.push(e),e!==r.name&&(t[r.name]=e,r.name=e)}if(!Object.keys(t).length)return e;let r=Object.keys(t).sort((e,t)=>t.length-e.length),i=JSON.stringify(e);for(let e of r){let n=RegExp(`'?${ut(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function kX(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Ws(Es(e.range)).numberOfRows>1);return e}var AX=class extends lf{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},n={},r=[],i=new Ml,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),dr(),r=MP(e,r);let s=wP(e,a);this.state=new WJ,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new pW(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeData=this.range.getRangeData.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.coreGetters.recomputeRanges=this.range.recomputeRanges.bind(this.range),this.coreGetters.isRangeValid=this.range.isRangeValid.bind(this.range),this.coreGetters.extendRange=this.range.extendRange.bind(this.range),this.coreGetters.getRangesUnion=this.range.getRangesUnion.bind(this.range),this.coreGetters.removeRangesSheetPrefix=this.range.removeRangesSheetPrefix.bind(this.range),this.coreGetters.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.selection=new HJ(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.coreViewPluginConfig=this.setupCoreViewPluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of uq.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of pq.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of fq.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of dq.getAll()){let t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),n.snapshotRequested||e[`[Content_Types].xml`]&&!this.getters.isReadonly()){let e=performance.now();console.debug(`Snapshot requested`),this.session.snapshot(this.exportData()),this.garbageCollectExternalResources(),console.debug(`Snapshot taken in`,performance.now()-e,`ms`)}(0,t.markRaw)(this),console.debug(`Model created in`,performance.now()-o,`ms`),console.debug(`######`)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:Nt(()=>this.exportData());await this.session.leave(e)}setupUiPlugin(e){let t=new e(this.uiPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}for(let n of e.layers)this.renderers[n]||(this.renderers[n]=[]),this.renderers[n].push(t);return t}setupCoreViewPlugin(e){let t=new e(this.coreViewPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}return t}setupCorePlugin(e,t){let n=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in n))throw Error(`Invalid getter name: ${t} for plugin ${n.constructor}`);if(t in this.coreGetters)throw Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=n[t].bind(n)}n.import(t),this.corePlugins.push(n),this.coreHandlers.push(n),this.handlers.push(n)}onRemoteRevisionReceived({commands:e}){for(let t of e){let e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new cK(RJ({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{if(!this.checkDispatchAllowed(e).isSuccessful){this.dispatchToHandlers(this.coreHandlers,{type:`UNDO`,commands:[e]});return}this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1}}),this.config.transportService,e)}setupSessionEvents(){this.session.on(`remote-revision-received`,this,this.onRemoteRevisionReceived),this.session.on(`revision-undone`,this,({commands:e})=>{this.dispatchFromCorePlugin(`UNDO`,{commands:e}),this.finalize()}),this.session.on(`revision-redone`,this,({commands:e})=>{this.dispatchFromCorePlugin(`REDO`,{commands:e}),this.finalize()}),this.session.on(`unexpected-revision-id`,this,()=>this.trigger(`unexpected-revision-id`)),this.session.on(`collaborative-event-received`,this,()=>{this.trigger(`update`)})}setupConfig(e){let t=e.client||{id:this.uuidGenerator.smallUuid(),name:E(`Anonymous`).toString()},n=e.transportService||new Wq,r=e.mode===`readonly`||e.mode===`dashboard`;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:r?new AJ(n):n,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger(`notify-ui`,e),raiseBlockingErrorUI:e=>this.trigger(`raise-error-ui`,{text:e}),customColors:e.customColors||[]}}setupExternalConfig(e){let t=e.loadLocales||(()=>Promise.resolve(Pr));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,canDispatch:this.canDispatch,custom:this.config.custom,external:this.config.external}}setupCoreViewPluginConfig(){return{getters:this.getters,stateObserver:this.state,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,canDispatch:this.canDispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}checkDispatchAllowed(e){let t=Dr(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new kr(t.flat()):kr.Success}checkDispatchAllowedCoreCommand(e){let t=this.corePlugins.map(t=>t.allowDispatch(e));return t.push(this.range.allowDispatch(e)),t}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map(t=>t.allowDispatch(e))}finalize(){this.status=3;for(let e of this.handlers)e.finalize();this.status=0,this.trigger(`command-finalized`)}canDispatch=(e,t)=>this.checkDispatchAllowed(jX(e,t));dispatch=(e,t)=>{let n=jX(e,t),r=this.status;if(this.getters.isReadonly()&&!Or(n))return new kr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new kr(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return this.trigger(`update`),t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{let t=performance.now();Dr(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize();let r=performance.now()-t;r>5&&console.debug(e,r,`ms`)});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(Dr(n)){let e=this.checkDispatchAllowed(n);if(!e.isSuccessful)return e;this.state.addCommand(n)}this.dispatchToHandlers(this.handlers,n);break;case 3:throw Error(`Cannot dispatch commands in the finalize state`);case 2:if(Dr(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return kr.Success};dispatchFromCorePlugin=(e,t)=>{let n=jX(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,kr.Success};dispatchToHandlers(e,t){let n=Dr(t);for(let r of e)!n&&r instanceof ZU||r.beforeHandle(t);for(let r of e)!n&&r instanceof ZU||r.handle(t);this.trigger(`command-dispatched`,t)}drawLayer(e,t){let n=this.renderers[t];if(n)for(let r of n)e.ctx.save(),r.drawLayer(e,t),e.ctx.restore()}exportData(){let e=zP();for(let t of this.handlers)t instanceof ZU&&t.export(e);return e.revisionId=this.session.getRevisionId()||`START_REVISION`,e=b(e),e}updateMode(e){this.config.mode=e,this.trigger(`update`)}exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=VP();for(let t of this.handlers)t instanceof Rp&&t.exportForExcel(e);return e=b(e),yX(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function jX(e,t={}){let n=b(t);return n.type=e,n}let MX={},NX={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,DESKTOP_BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},PX={autoCompleteProviders:dp,autofillModifiersRegistry:dG,autofillRulesRegistry:fG,cellMenuRegistry:BR,colMenuRegistry:iB,errorTypes:Ki,linkMenuRegistry:RA,functionRegistry:BS,featurePluginRegistry:dq,iconsOnCellRegistry:tG,statefulUIPluginRegistry:fq,coreViewsPluginRegistry:pq,corePluginRegistry:uq,rowMenuRegistry:dB,sidePanelRegistry:BU,figureRegistry:mk,chartSidePanelComponentRegistry:DH,chartComponentRegistry:mO,chartRegistry:pO,chartSubtypeRegistry:gO,topbarMenuRegistry:Hq,topbarComponentRegistry:Uq,clickableCellRegistry:vq,otRegistry:EG,inverseCommandRegistry:xq,urlRegistry:Wr,cellPopoverRegistry:_k,numberFormatMenuRegistry:Lq,repeatLocalCommandTransformRegistry:WK,repeatCommandTransformRegistry:UK,clipboardHandlersRegistries:of,pivotRegistry:yR,pivotTimeAdapterRegistry:sd,pivotSidePanelRegistry:xU,pivotNormalizationValueRegistry:Rd,supportedPivotPositionalFormulaRegistry:qU,pivotToFunctionValueRegistry:zd,migrationStepRegistry:yP,chartJsExtensionRegistry:Nf},FX={arg:H,isEvaluationError:j,toBoolean:P,toJsDate:F,toNumber:M,toString:N,toNormalizedPivotValue:Pd,toFunctionPivotValue:Id,toXC:T,toZone:Es,toUnboundedZone:Ts,toCartesian:ir,numberToLetters:Yn,lettersToNumber:Xn,UuidGenerator:Ml,formatValue:L,createCurrencyFormat:zo,ColorGenerator:Un,computeTextWidth:hl,createEmptyWorkbookData:zP,createEmptySheet:RP,createEmptyExcelSheet:BP,rgbaToHex:bn,colorToRGBA:xn,positionToZone:R,isDefined:C,isMatrix:Ir,lazy:Nt,genericRepeat:GK,createAction:m,createActions:f,transformRangeData:cf,deepEquals:w,overlap:Bs,union:Is,isInside:Hs,deepCopy:b,expandZoneOnInsertion:Ms,reduceZoneOnDeletion:Fs,unquote:pt,getMaxObjectId:Ed,getFunctionsFromTokens:pC,getFirstPivotFunction:gU,getNumberOfPivotFunctions:vU,parseDimension:kd,isDateOrDatetimeField:Ad,makeFieldProposal:dU,insertTokenAfterArgSeparator:pU,insertTokenAfterLeftParenthesis:mU,mergeContiguousZones:fc,getPivotHighlights:XH,pivotTimeAdapter:cd,UNDO_REDO_PIVOT_COMMANDS:cG,createPivotFormula:Nd,areDomainArgsFieldsValid:Md,splitReference:Mc,sanitizeSheetName:ht,getUniqueText:an,isNumber:Hi,isDateTime:ui,createCustomFields:Gd,PositionMap:RF},IX={isMarkdownLink:xt,parseMarkdownLink:wt,markdownLink:Ct,openLink:Yr,urlRepresentation:Jr},LX={Checkbox:xA,Section:X,RoundColorPicker:oA,ChartDataSeries:LV,ChartErrorSection:RV,ChartLabelRange:zV,ChartTitle:UV,ChartPanel:AH,ChartFigure:fk,ChartJsComponent:Dw,ClickableCellSortIcon:JU,ZoomableChartJsComponent:ED,Grid:KU,GridOverlay:sV,ScorecardChart:Ww,GaugeChartComponent:MD,LineConfigPanel:fH,BarConfigPanel:VV,PieChartDesignPanel:hH,GenericChartConfigPanel:BV,ChartWithAxisDesignPanel:QV,GenericZoomableChartDesignPanel:$V,LineChartDesignPanel:pH,GaugeChartConfigPanel:aH,GaugeChartDesignPanel:oH,ScorecardChartConfigPanel:vH,ScorecardChartDesignPanel:yH,GeoChartDesignPanel:uH,RadarChartDesignPanel:gH,WaterfallChartDesignPanel:EH,ComboChartDesignPanel:nH,FunnelChartDesignPanel:iH,SunburstChartDesignPanel:bH,TreeMapChartDesignPanel:TH,ChartTypePicker:OH,FigureComponent:hk,MenuPopover:lk,Popover:ak,SelectionInput:hA,ValidationMessages:QB,AddDimensionButton:tU,PivotDimensionGranularity:rU,PivotDimensionOrder:iU,PivotDimension:nU,PivotLayoutConfigurator:cU,PivotHTMLRenderer:XU,PivotDeferUpdate:QH,PivotTitleSection:lU,CogWheelMenu:FV,TextInput:AV,SidePanelCollapsible:xk,RadioSelection:GV,GeoChartRegionSelectSection:sH,ChartDashboardMenu:uk,FullScreenFigure:YU},RX={useDragAndDropListItems:cA,useHighlights:NH,useHighlightsOnHover:MH},zX={useStoreProvider:mf,DependencyContainer:uf,CellPopoverStore:EA,ComposerFocusStore:Cf,CellComposerStore:zB,FindAndReplaceStore:WH,HighlightStore:qk,DelayedHoveredCellStore:gk,HoveredTableStore:iV,ModelStore:yf,NotificationStore:Jk,RendererStore:bf,SelectionInputStore:mA,SpreadsheetStore:xf,useStore:z,useLocalStore:hf,SidePanelStore:HU,PivotSidePanelStore:yU,PivotMeasureDisplayPanelStore:JH,ClientFocusStore:pB,GridRenderer:hV};function BX(e,t){return BS.add(e,t),{addFunction:(e,t)=>BX(e,t)}}let VX={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:Wb,FIGURE_ID_SPLITTER:`??`,GRID_ICON_EDGE_LENGTH:17,GRID_ICON_MARGIN:2},HX={...SO,...yD};e.AbstractCellClipboardHandler=Ul,e.AbstractChart=Ow,e.AbstractFigureClipboardHandler=Gl,e.CellErrorType=k,e.ClientDisconnectedError=sK,e.CommandResult=jr,e.CorePlugin=ZU,e.CoreViewPlugin=SW,e.DispatchResult=kr,e.EvaluationError=A,e.LocalTransportService=Wq,e.Model=AX,e.PivotRuntimeDefinition=tR,e.Registry=g,e.Revision=oK,e.SPREADSHEET_DIMENSIONS=NX,e.Spreadsheet=kJ,e.SpreadsheetPivotTable=rR,e.UIPlugin=zp,e.__info__=MX,e.addFunction=BX,e.addRenderingLayer=zr,e.astToFormula=FB,e.chartHelpers=HX,e.compile=iC,e.compileTokens=aC,e.components=LX,e.constants=VX,e.convertAstNodes=eb,e.coreTypes=Er,e.findCellInNewZone=$s,e.functionCache=rC,e.getCaretDownSvg=Ej,e.getCaretUpSvg=Dj,e.helpers=FX,e.hooks=RX,e.invalidateCFEvaluationCommands=Sr,e.invalidateChartEvaluationCommands=br,e.invalidateDependenciesCommands=xr,e.invalidateEvaluationCommands=yr,e.iterateAstNodes=tb,e.links=IX,e.load=wP,e.parse=Qy,e.parseTokens=$y,e.readonlyAllowedCommands=Tr,e.registries=PX,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=ur,e.stores=zX,e.tokenColors=ot,e.tokenize=Yl,MX.version=`19.0.47`,MX.date=`2026-08-21T15:28:59.913Z`,MX.hash=`59a9b1b`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3458
+ `),`_rels/.rels`)}function OX(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=an(e,n,{compute:(e,t)=>e.slice(0,31-String(t).length)+t}),n.push(e),e!==r.name&&(t[r.name]=e,r.name=e)}if(!Object.keys(t).length)return e;let r=Object.keys(t).sort((e,t)=>t.length-e.length),i=JSON.stringify(e);for(let e of r){let n=RegExp(`'?${ut(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function kX(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Ws(Es(e.range)).numberOfRows>1);return e}var AX=class extends lf{corePlugins=[];statefulUIPlugins=[];range;session;isReplayingCommand=!1;renderers={};status=0;config;corePluginConfig;coreViewPluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},n={},r=[],i=new Ml,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),dr(),r=MP(e,r);let s=wP(e,a);this.state=new WJ,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new pW(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeData=this.range.getRangeData.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.coreGetters.recomputeRanges=this.range.recomputeRanges.bind(this.range),this.coreGetters.isRangeValid=this.range.isRangeValid.bind(this.range),this.coreGetters.extendRange=this.range.extendRange.bind(this.range),this.coreGetters.getRangesUnion=this.range.getRangesUnion.bind(this.range),this.coreGetters.removeRangesSheetPrefix=this.range.removeRangesSheetPrefix.bind(this.range),this.coreGetters.copyFormulaStringForSheet=this.range.copyFormulaStringForSheet.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.selection=new HJ(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.coreViewPluginConfig=this.setupCoreViewPluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of uq.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of pq.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of fq.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of dq.getAll()){let t=this.setupUiPlugin(e);this.handlers.push(t),this.uiHandlers.push(t)}if(this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),n.snapshotRequested||e[`[Content_Types].xml`]&&!this.getters.isReadonly()){let e=performance.now();console.debug(`Snapshot requested`),this.session.snapshot(this.exportData()),this.garbageCollectExternalResources(),console.debug(`Snapshot taken in`,performance.now()-e,`ms`)}(0,t.markRaw)(this),console.debug(`Model created in`,performance.now()-o,`ms`),console.debug(`######`)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:Nt(()=>this.exportData());await this.session.leave(e)}setupUiPlugin(e){let t=new e(this.uiPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}for(let n of e.layers)this.renderers[n]||(this.renderers[n]=[]),this.renderers[n].push(t);return t}setupCoreViewPlugin(e){let t=new e(this.coreViewPluginConfig);for(let n of e.getters){if(!(n in t))throw Error(`Invalid getter name: ${n} for plugin ${t.constructor}`);if(n in this.getters)throw Error(`Getter "${n}" is already defined.`);this.getters[n]=t[n].bind(t)}return t}setupCorePlugin(e,t){let n=new e(this.corePluginConfig);for(let t of e.getters){if(!(t in n))throw Error(`Invalid getter name: ${t} for plugin ${n.constructor}`);if(t in this.coreGetters)throw Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=n[t].bind(n)}n.import(t),this.corePlugins.push(n),this.coreHandlers.push(n),this.handlers.push(n)}onRemoteRevisionReceived({commands:e}){for(let t of e){let e=this.status;this.status=2,this.dispatchToHandlers(this.statefulUIPlugins,t),this.status=e}this.finalize()}setupSession(e){return new cK(RJ({initialRevisionId:e,recordChanges:this.state.recordChanges.bind(this.state),dispatch:e=>{if(!this.checkDispatchAllowed(e).isSuccessful){this.dispatchToHandlers(this.coreHandlers,{type:`UNDO`,commands:[e]});return}this.isReplayingCommand=!0,this.dispatchToHandlers(this.coreHandlers,e),this.isReplayingCommand=!1}}),this.config.transportService,e)}setupSessionEvents(){this.session.on(`remote-revision-received`,this,this.onRemoteRevisionReceived),this.session.on(`revision-undone`,this,({commands:e})=>{this.dispatchFromCorePlugin(`UNDO`,{commands:e}),this.finalize()}),this.session.on(`revision-redone`,this,({commands:e})=>{this.dispatchFromCorePlugin(`REDO`,{commands:e}),this.finalize()}),this.session.on(`unexpected-revision-id`,this,()=>this.trigger(`unexpected-revision-id`)),this.session.on(`collaborative-event-received`,this,()=>{this.trigger(`update`)})}setupConfig(e){let t=e.client||{id:this.uuidGenerator.smallUuid(),name:E(`Anonymous`).toString()},n=e.transportService||new Wq,r=e.mode===`readonly`||e.mode===`dashboard`;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService:r?new AJ(n):n,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger(`notify-ui`,e),raiseBlockingErrorUI:e=>this.trigger(`raise-error-ui`,{text:e}),customColors:e.customColors||[]}}setupExternalConfig(e){let t=e.loadLocales||(()=>Promise.resolve(Pr));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,canDispatch:this.canDispatch,custom:this.config.custom,external:this.config.external}}setupCoreViewPluginConfig(){return{getters:this.getters,stateObserver:this.state,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,canDispatch:this.canDispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrency:this.config.defaultCurrency,customColors:this.config.customColors||[],external:this.config.external}}checkDispatchAllowed(e){let t=Dr(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new kr(t.flat()):kr.Success}checkDispatchAllowedCoreCommand(e){let t=this.corePlugins.map(t=>t.allowDispatch(e));return t.push(this.range.allowDispatch(e)),t}checkDispatchAllowedLocalCommand(e){return this.uiHandlers.map(t=>t.allowDispatch(e))}finalize(){this.status=3;for(let e of this.handlers)e.finalize();this.status=0,this.trigger(`command-finalized`)}canDispatch=(e,t)=>this.checkDispatchAllowed(jX(e,t));dispatch=(e,t)=>{let n=jX(e,t),r=this.status;if(this.getters.isReadonly()&&!Or(n))return new kr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new kr(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return this.trigger(`update`),t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{let t=performance.now();Dr(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize();let r=performance.now()-t;r>5&&console.debug(e,r,`ms`)});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(Dr(n)){let e=this.checkDispatchAllowed(n);if(!e.isSuccessful)return e;this.state.addCommand(n)}this.dispatchToHandlers(this.handlers,n);break;case 3:throw Error(`Cannot dispatch commands in the finalize state`);case 2:if(Dr(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return kr.Success};dispatchFromCorePlugin=(e,t)=>{let n=jX(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,kr.Success};dispatchToHandlers(e,t){let n=Dr(t);for(let r of e)!n&&r instanceof ZU||r.beforeHandle(t);for(let r of e)!n&&r instanceof ZU||r.handle(t);this.trigger(`command-dispatched`,t)}drawLayer(e,t){let n=this.renderers[t];if(n)for(let r of n)e.ctx.save(),r.drawLayer(e,t),e.ctx.restore()}exportData(){let e=zP();for(let t of this.handlers)t instanceof ZU&&t.export(e);return e.revisionId=this.session.getRevisionId()||`START_REVISION`,e=b(e),e}updateMode(e){this.config.mode=e,this.trigger(`update`)}exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=VP();for(let t of this.handlers)t instanceof Rp&&t.exportForExcel(e);return e=b(e),yX(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function jX(e,t={}){let n=b(t);return n.type=e,n}let MX={},NX={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,DESKTOP_BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},PX={autoCompleteProviders:dp,autofillModifiersRegistry:dG,autofillRulesRegistry:fG,cellMenuRegistry:BR,colMenuRegistry:iB,errorTypes:Ki,linkMenuRegistry:RA,functionRegistry:BS,featurePluginRegistry:dq,iconsOnCellRegistry:tG,statefulUIPluginRegistry:fq,coreViewsPluginRegistry:pq,corePluginRegistry:uq,rowMenuRegistry:dB,sidePanelRegistry:BU,figureRegistry:mk,chartSidePanelComponentRegistry:DH,chartComponentRegistry:mO,chartRegistry:pO,chartSubtypeRegistry:gO,topbarMenuRegistry:Hq,topbarComponentRegistry:Uq,clickableCellRegistry:vq,otRegistry:EG,inverseCommandRegistry:xq,urlRegistry:Wr,cellPopoverRegistry:_k,numberFormatMenuRegistry:Lq,repeatLocalCommandTransformRegistry:WK,repeatCommandTransformRegistry:UK,clipboardHandlersRegistries:of,pivotRegistry:yR,pivotTimeAdapterRegistry:sd,pivotSidePanelRegistry:xU,pivotNormalizationValueRegistry:Rd,supportedPivotPositionalFormulaRegistry:qU,pivotToFunctionValueRegistry:zd,migrationStepRegistry:yP,chartJsExtensionRegistry:Nf},FX={arg:H,isEvaluationError:j,toBoolean:P,toJsDate:F,toNumber:M,toString:N,toNormalizedPivotValue:Pd,toFunctionPivotValue:Id,toXC:T,toZone:Es,toUnboundedZone:Ts,toCartesian:ir,numberToLetters:Yn,lettersToNumber:Xn,UuidGenerator:Ml,formatValue:L,createCurrencyFormat:zo,ColorGenerator:Un,computeTextWidth:hl,createEmptyWorkbookData:zP,createEmptySheet:RP,createEmptyExcelSheet:BP,rgbaToHex:bn,colorToRGBA:xn,positionToZone:R,isDefined:C,isMatrix:Ir,lazy:Nt,genericRepeat:GK,createAction:m,createActions:f,transformRangeData:cf,deepEquals:w,overlap:Bs,union:Is,isInside:Hs,deepCopy:b,expandZoneOnInsertion:Ms,reduceZoneOnDeletion:Fs,unquote:pt,getMaxObjectId:Ed,getFunctionsFromTokens:pC,getFirstPivotFunction:gU,getNumberOfPivotFunctions:vU,parseDimension:kd,isDateOrDatetimeField:Ad,makeFieldProposal:dU,insertTokenAfterArgSeparator:pU,insertTokenAfterLeftParenthesis:mU,mergeContiguousZones:fc,getPivotHighlights:XH,pivotTimeAdapter:cd,UNDO_REDO_PIVOT_COMMANDS:cG,createPivotFormula:Nd,areDomainArgsFieldsValid:Md,splitReference:Mc,sanitizeSheetName:ht,getUniqueText:an,isNumber:Hi,isDateTime:ui,createCustomFields:Gd,PositionMap:RF},IX={isMarkdownLink:xt,parseMarkdownLink:wt,markdownLink:Ct,openLink:Yr,urlRepresentation:Jr},LX={Checkbox:xA,Section:X,RoundColorPicker:oA,ChartDataSeries:LV,ChartErrorSection:RV,ChartLabelRange:zV,ChartTitle:UV,ChartPanel:AH,ChartFigure:fk,ChartJsComponent:Dw,ClickableCellSortIcon:JU,ZoomableChartJsComponent:ED,Grid:KU,GridOverlay:sV,ScorecardChart:Ww,GaugeChartComponent:MD,LineConfigPanel:fH,BarConfigPanel:VV,PieChartDesignPanel:hH,GenericChartConfigPanel:BV,ChartWithAxisDesignPanel:QV,GenericZoomableChartDesignPanel:$V,LineChartDesignPanel:pH,GaugeChartConfigPanel:aH,GaugeChartDesignPanel:oH,ScorecardChartConfigPanel:vH,ScorecardChartDesignPanel:yH,GeoChartDesignPanel:uH,RadarChartDesignPanel:gH,WaterfallChartDesignPanel:EH,ComboChartDesignPanel:nH,FunnelChartDesignPanel:iH,SunburstChartDesignPanel:bH,TreeMapChartDesignPanel:TH,ChartTypePicker:OH,FigureComponent:hk,MenuPopover:lk,Popover:ak,SelectionInput:hA,ValidationMessages:QB,AddDimensionButton:tU,PivotDimensionGranularity:rU,PivotDimensionOrder:iU,PivotDimension:nU,PivotLayoutConfigurator:cU,PivotHTMLRenderer:XU,PivotDeferUpdate:QH,PivotTitleSection:lU,CogWheelMenu:FV,TextInput:AV,SidePanelCollapsible:xk,RadioSelection:GV,GeoChartRegionSelectSection:sH,ChartDashboardMenu:uk,FullScreenFigure:YU},RX={useDragAndDropListItems:cA,useHighlights:NH,useHighlightsOnHover:MH},zX={useStoreProvider:mf,DependencyContainer:uf,CellPopoverStore:EA,ComposerFocusStore:Cf,CellComposerStore:zB,FindAndReplaceStore:WH,HighlightStore:qk,DelayedHoveredCellStore:gk,HoveredTableStore:iV,ModelStore:yf,NotificationStore:Jk,RendererStore:bf,SelectionInputStore:mA,SpreadsheetStore:xf,useStore:z,useLocalStore:hf,SidePanelStore:HU,PivotSidePanelStore:yU,PivotMeasureDisplayPanelStore:JH,ClientFocusStore:pB,GridRenderer:hV};function BX(e,t){return BS.add(e,t),{addFunction:(e,t)=>BX(e,t)}}let VX={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:Wb,FIGURE_ID_SPLITTER:`??`,GRID_ICON_EDGE_LENGTH:17,GRID_ICON_MARGIN:2},HX={...SO,...yD};e.AbstractCellClipboardHandler=Ul,e.AbstractChart=Ow,e.AbstractFigureClipboardHandler=Gl,e.CellErrorType=k,e.ClientDisconnectedError=sK,e.CommandResult=jr,e.CorePlugin=ZU,e.CoreViewPlugin=SW,e.DispatchResult=kr,e.EvaluationError=A,e.LocalTransportService=Wq,e.Model=AX,e.PivotRuntimeDefinition=tR,e.Registry=g,e.Revision=oK,e.SPREADSHEET_DIMENSIONS=NX,e.Spreadsheet=kJ,e.SpreadsheetPivotTable=rR,e.UIPlugin=zp,e.__info__=MX,e.addFunction=BX,e.addRenderingLayer=zr,e.astToFormula=FB,e.chartHelpers=HX,e.compile=iC,e.compileTokens=aC,e.components=LX,e.constants=VX,e.convertAstNodes=eb,e.coreTypes=Er,e.findCellInNewZone=$s,e.functionCache=rC,e.getCaretDownSvg=Ej,e.getCaretUpSvg=Dj,e.helpers=FX,e.hooks=RX,e.invalidateCFEvaluationCommands=Sr,e.invalidateChartEvaluationCommands=br,e.invalidateDependenciesCommands=xr,e.invalidateEvaluationCommands=yr,e.iterateAstNodes=tb,e.links=IX,e.load=wP,e.parse=Qy,e.parseTokens=$y,e.readonlyAllowedCommands=Tr,e.registries=PX,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=ur,e.stores=zX,e.tokenColors=ot,e.tokenize=Yl,MX.version=`19.0.48`,MX.date=`2026-08-29T09:14:12.472Z`,MX.hash=`0a6c168`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
@@ -1,9 +1,9 @@
1
1
  <!--
2
2
  This file is generated by o-spreadsheet build tools. Do not edit it.
3
3
  @see https://github.com/odoo/o-spreadsheet
4
- @version 19.0.47
5
- @date 2026-08-21T15:29:00.606Z
6
- @hash 59a9b1b
4
+ @version 19.0.48
5
+ @date 2026-08-29T09:14:13.364Z
6
+ @hash 0a6c168
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -6636,7 +6636,11 @@
6636
6636
  </t>
6637
6637
 
6638
6638
  <t t-name="o-spreadsheet-SpreadsheetDashboard">
6639
- <div class="o-grid o-two-columns" t-ref="dashboard" tabindex="-1" t-on-wheel="onMouseWheel">
6639
+ <div
6640
+ class="o-grid o-dashboard-grid o-two-columns"
6641
+ t-ref="dashboard"
6642
+ tabindex="-1"
6643
+ t-on-wheel="onMouseWheel">
6640
6644
  <div class="mx-auto h-100 position-relative" t-ref="grid" t-att-style="gridContainer">
6641
6645
  <GridOverlay
6642
6646
  onGridResized.bind="onGridResized"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "19.0.47",
3
+ "version": "19.0.48",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",