@odoo/o-spreadsheet 18.4.52 → 18.4.53

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 18.4.52
6
- * @date 2026-08-21T15:29:28.329Z
7
- * @hash 5715a49
5
+ * @version 18.4.53
6
+ * @date 2026-08-29T09:14:02.893Z
7
+ * @hash 8ca564d
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 18.4.52
6
- * @date 2026-08-21T15:29:26.810Z
7
- * @hash 5715a49
5
+ * @version 18.4.53
6
+ * @date 2026-08-29T09:14:01.099Z
7
+ * @hash 8ca564d
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";
@@ -18325,6 +18325,7 @@ function getRadarChartDatasets(definition, args) {
18325
18325
  hidden,
18326
18326
  borderColor,
18327
18327
  backgroundColor: borderColor,
18328
+ pointBackgroundColor: borderColor,
18328
18329
  pointRadius: definition.hideDataMarkers ? 0 : 3
18329
18330
  };
18330
18331
  if (fill) {
@@ -44325,6 +44326,12 @@ css`
44325
44326
  background-color: ${ACTION_COLOR};
44326
44327
  border-color: ${ACTION_COLOR};
44327
44328
  }
44329
+
44330
+ &:focus {
44331
+ outline: none;
44332
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
44333
+ border-color: ${ACTION_COLOR};
44334
+ }
44328
44335
  }
44329
44336
  }
44330
44337
  `;
@@ -69031,6 +69038,9 @@ css`
69031
69038
  position: absolute;
69032
69039
  cursor: pointer;
69033
69040
  }
69041
+ .o-grid.o-dashboard-grid {
69042
+ background: #ffffff;
69043
+ }
69034
69044
  `;
69035
69045
  var SpreadsheetDashboard = class extends Component {
69036
69046
  static template = "o-spreadsheet-SpreadsheetDashboard";
@@ -75436,6 +75446,6 @@ const chartHelpers = {
75436
75446
  //#endregion
75437
75447
  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, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
75438
75448
 
75439
- __info__.version = "18.4.52";
75440
- __info__.date = "2026-08-21T15:29:26.810Z";
75441
- __info__.hash = "5715a49";
75449
+ __info__.version = "18.4.53";
75450
+ __info__.date = "2026-08-29T09:14:01.099Z";
75451
+ __info__.hash = "8ca564d";
@@ -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 18.4.52
6
- * @date 2026-08-21T15:29:26.810Z
7
- * @hash 5715a49
5
+ * @version 18.4.53
6
+ * @date 2026-08-29T09:14:01.099Z
7
+ * @hash 8ca564d
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -18327,6 +18327,7 @@ stores.inject(MyMetaStore, storeInstance);
18327
18327
  hidden,
18328
18328
  borderColor,
18329
18329
  backgroundColor: borderColor,
18330
+ pointBackgroundColor: borderColor,
18330
18331
  pointRadius: definition.hideDataMarkers ? 0 : 3
18331
18332
  };
18332
18333
  if (fill) {
@@ -44327,6 +44328,12 @@ stores.inject(MyMetaStore, storeInstance);
44327
44328
  background-color: ${ACTION_COLOR};
44328
44329
  border-color: ${ACTION_COLOR};
44329
44330
  }
44331
+
44332
+ &:focus {
44333
+ outline: none;
44334
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
44335
+ border-color: ${ACTION_COLOR};
44336
+ }
44330
44337
  }
44331
44338
  }
44332
44339
  `;
@@ -69033,6 +69040,9 @@ stores.inject(MyMetaStore, storeInstance);
69033
69040
  position: absolute;
69034
69041
  cursor: pointer;
69035
69042
  }
69043
+ .o-grid.o-dashboard-grid {
69044
+ background: #ffffff;
69045
+ }
69036
69046
  `;
69037
69047
  var SpreadsheetDashboard = class extends _odoo_owl.Component {
69038
69048
  static template = "o-spreadsheet-SpreadsheetDashboard";
@@ -75487,8 +75497,8 @@ exports.stores = stores;
75487
75497
  exports.tokenColors = tokenColors;
75488
75498
  exports.tokenize = tokenize;
75489
75499
 
75490
- __info__.version = "18.4.52";
75491
- __info__.date = "2026-08-21T15:29:26.810Z";
75492
- __info__.hash = "5715a49";
75500
+ __info__.version = "18.4.53";
75501
+ __info__.date = "2026-08-29T09:14:01.099Z";
75502
+ __info__.hash = "8ca564d";
75493
75503
 
75494
75504
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -16,7 +16,7 @@ stores.inject(MyMetaStore, storeInstance);
16
16
  `)+`
17
17
  `}return(e){return new Gx(this.scope,this.code,e)}toString(){return Jx(this.code)}},Gx=class{scope;returnExpression;code;constructor(e,t,n){this.scope=e,this.returnExpression=n,this.code=Jx(t)}toString(){return this.code}assignResultToVariable(){if(this.scope.isAlreadyDeclared(this.returnExpression))return this;let e=this.scope.nextVariableName(),t=new Wx(this.scope);return t.append(this.code),t.append(`const ${e} = ${this.returnExpression};`),t.return(e)}},Kx=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 qx(e){return e.split(`
18
18
  `).map(e=>e.trim()).filter(e=>e!==``)}function Jx(e){let t=``,n=0,r=qx(e);for(let e of r)e.startsWith(`}`)&&n--,t+=` `.repeat(n)+e+`
19
- `,e.endsWith(`{`)&&n++;return t.trim()}let Yx=Lx.content,Xx={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},Zx={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`},Qx={};function $x(e){return eS($v(e))}function eS(e){try{return tS(e)}catch(t){return{tokens:e,dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function tS(e){let{dependencies:t,literalValues:n,symbols:r}=rS(e),i=nS(e);if(!Qx[i]){let t=fy([...e]),n=new Kx,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new zi(E(`Invalid formula`));let u=o(t),d=new Wx;d.append(u),d.append(`return ${u.returnExpression};`),Qx[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=Yx[e.value.toUpperCase()];if(!n)throw new Ui(E(`Unknown function: "%s"`,e.value));iS(e);let r=[],i=Rf(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`),u=c.some(e=>aS(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new Wx(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new zi(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!t&&e.value.includes(`:`)||i?u.return(`range(deps[${l++}])`):u.return(`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=Zx[e.value],n=o(e.operand,!1,!1).assignResultToVariable();return u.append(n),u.return(`ctx['${t}'](${n.returnExpression})`)}case`BIN_OPERATION`:{let t=Xx[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:Qx[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function nS(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 rS(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=it(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=Ii(i.value,D);t.numbers.push({value:e});break}case`SYMBOL`:r.push(lt(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function iS(e){let t=e.args.length,n=e.value.toUpperCase(),r=Yx[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new zi(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 zi(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 zi(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 aS(e){return e.startsWith(`RANGE`)}let oS=Lx.content;function sS(e){try{return my(fy(e)).filter(e=>e.type===`FUNCALL`&&!oS[e.value.toUpperCase()]?.isExported).length===0}catch{return!1}}function cS(e,t){if(!e.some(e=>e.type===`SYMBOL`&&t.includes(e.value.toUpperCase())))return[];let n;try{n=fy(e)}catch{return[]}return lS(n,t)}function lS(e,t){return my(e).filter(e=>e.type===`FUNCALL`&&t.includes(e.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}function uS(e,t,n){if(!t.startsWith(`=`))return t;let r=$v(t);for(let t=1;t<r.length;t++){if(r[t].type!==`REFERENCE`)continue;let i=r[t].value,a=dS(e,i,n).range;i!==a&&(r[t]={value:a,type:`REFERENCE`})}return Ot(r.map(e=>e.value))}function dS(e,t,n){let r=yc(t).sheetName;if(r?!Jc(r,n.sheetName.old):e!==n.sheetId)return{changeType:`NONE`,range:t};let i=mS(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=Ec(a.range,e,fS(n));return o===k.InvalidReference?{changeType:`REMOVE`,range:o}:{changeType:a.changeType,range:o}}function fS(e){return t=>t===e.sheetId?e.sheetName.current:``}function pS(e){return{numberOfRows:2**53-1,numberOfCols:2**53-1}}function mS(e,t){return pc.test(e)?Sc({xc:e,sheetId:t},pS):Cc(e)}let hS=`xMovingAverage`,gS={exponential:`exp`,logarithmic:`log`,polynomial:`poly`,trailingMovingAverage:`movingAvg`};function _S(e,t,n,r){let i=!1,a=[];for(let r in n){let o=n[r];if(o.labelCell){let e=bS(o.labelCell,t);o.labelCell!==e&&(i=!0,o={...o,labelCell:e})}let s=bS(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=bS(o,t);s!==o&&(i=!0,o=s);let c=a.filter(C);return{isStale:i,dataSets:c,labelRange:o}}function vS(e,t,n){return n.map(n=>({dataRange:Dc(e,t,n.dataRange),labelCell:n.labelCell?Dc(e,t,n.labelCell):void 0}))}function yS(e,t,n){return n?Dc(e,t,n):void 0}function bS(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}function xS(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({...SS(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({...SS(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 SS(e,t,n,r){if(n.left!==n.right&&n.top!==n.bottom)throw Error(`Zone should be a single column or row: ${ys(n)}`);if(r){let i=ys(n),a=ys(r);return{labelCell:e.getRangeFromSheetXC(t,a),dataRange:e.getRangeFromSheetXC(t,i)}}else return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,ys(n))}}function CS(e,t){let n=t.labelCell?.zone,r=t.dataRange.zone;if(n){let{numberOfRows:e,numberOfCols:t}=Ms(r);e===1?r={...r,left:r.left+1}:t===1&&(r={...r,top:r.top+1})}let i=xc({...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`:gS[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 wS(e,t,n){if(!t)return;let r={...t.zone};n&&t.zone.bottom>t.zone.top&&(r.top+=1);let i=xc({...t,zone:r},e.getSheetSize);return e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0})}function TS(e,t,n){let r;if(t.labelRange){let{changeType:i,range:a}=dS(e,t.labelRange,n);i!==`REMOVE`&&(r=a)}let i=[];for(let r of t.dataSets){let t={...r},{changeType:a,range:o}=dS(e,r.dataRange,n);a!==`REMOVE`&&(t.dataRange=o,i.push(t))}return{...t,dataSets:i,labelRange:r}}function ES(e){return e&&fn(e)<.3?`#FFFFFF`:`#000000`}function DS(e){return e&&fn(e)<.3?`#C8C8C8`:`#666666`}function OS(e){return e.dataSets&&(e.dataSets.find(e=>!pc.test(e.dataRange))!==void 0||e.dataSets.map(e=>ps(e.dataRange)).some(e=>e.top!==e.bottom&&Us(e)))?`InvalidDataSet`:`Success`}function kS(e){return e.labelRange&&!pc.test(e.labelRange||``)?`InvalidLabelRange`:`Success`}function AS(e,t,n){if(!n||!e)return!1;if(!t)return!0;let r=Gs(t.dataRange.zone);return!(Gs(e.zone)<r)}function jS(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 MS(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 NS(e,t){return(n,r)=>{let i=e?.[r];return PS({format:i,locale:t})(n)}}function PS(e){return t=>{if(t=Number(t),isNaN(t))return t;let{locale:n,format:r}=e;return LS(R(t,{locale:n,format:!r&&Math.abs(t)>=1e3?`#,##`:r}))}}let FS=[{value:`left`,label:E(`Left`)},{value:`right`,label:E(`Right`)}];function IS(e,t){let n=[],r=Jt(t.map(e=>e.data.length));for(let t=0;t<=r;t++)n.push(e.next());return n}function LS(e){return e?e.length>20?e.substring(0,20)+`…`:e:``}function RS(e){return e===`x1`||e===`xMovingAverage`}let zS={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`:US(e,n,r);break;case`bar`:case`line`:case`radar`:n.horizontal?HS(e,n,r):VS(e,n,r);break;case`funnel`:HS(e,n,r);break}r.restore()}};function BS(e,t,n,r){r.lineWidth=3,r.strokeText(e,t,n),r.lineWidth=1,r.fillText(e,t,n)}function VS(e,t,n){let r={};for(let i of e._metasets){if(RS(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`,BS(t.callback(Number(c),i,o),u,d,n)}}}function HS(e,t,n){let r={};for(let i of e._metasets){if(RS(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=el(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`,BS(s,f,l,n)}}}function US(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=el(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=ES(t.background),n.strokeStyle=t.background||`#ffffff`,BS(m,f,p,n))}}let WS={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}},GS=`nullValue`;function KS(e,t){let{dataSetsValues:n}=t,r=[],i=dC(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(lC(d,f,p))}return r.push(...a),r}function qS(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 JS(e,t){let{dataSetsValues:n,axisType:r,labels:i}=t,a=[],o=!!e.fillArea,s=!!e.stacked,c=[],l=dC(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?Sn(m,Je):m,pointBackgroundColor:m,fill:o?uC(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(lC(h,g,_))}return a.push(...c),a}function YS(e,t){let n=JS(e,t);for(let e of n)RS(e.xAxisID)||(e.showLine=!1);return n}function XS(e,t){let{dataSetsValues:n}=t,r=[],i=IS(new In(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 ZS(e,t){let{dataSetsValues:n}=t,r=[],i=dC(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(lC(p,m,h))}return r.push(...a),r}function QS(e,t){let{dataSetsValues:n}=t,r=[],i=e.fillArea??!1,a=dC(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=Sn(l,Je),u.fill=`start`),r.push(u)}return r}function $S(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 eC(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:tC(r,e.funnelColors),yAxisID:`y`,xAxisID:`x`,barPercentage:1,categoryPercentage:1,borderColor:e.background||`#FFFFFF`,borderWidth:3}]}function tC(e,t){let n=new In(e.length,t);return e.map(()=>n.next())}function nC(e,t){let{dataSetsValues:n,labels:r}=t,i=oC(iC(n,r)),a=i[0]||[],o=new In(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 rC(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?GS:String(e[t].data[i]);n[i][t]=r}n[i].value=Number(t[i])}return n}function iC(e,t){return aC(rC(e,t),0,e.length,[])}function aC(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:aC(i[e]||[],t+1,n,[...r,e]),groups:o,depth:t}}).sort((e,t)=>t.value-e.value)}function oC(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 sC(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=iC(n,r).sort((e,t)=>t.value-e.value),c=fC(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??WS.showLabels,f=e.showValues??WS.showValues,p=e.coloringOptions||WS.coloringOptions,m;return p?.type===`colorScale`&&(m=pC(s,p)),[{data:[],tree:l,labels:{display:d||f,overflow:`hidden`,...cC(e.valuesDesign,WS.valuesDesign),formatter:e=>[d?e.raw.g:void 0,f?R(e.raw.v,o):void 0].filter(C)},captions:{display:e.showHeaders??WS.showHeaders,padding:6,...cC(e.headerDesign,WS.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||WS.headerDesign?.fillColor;if(p.type===`colorScale`)return m?.(t.raw.v)||`#FF0000`;if(p.type===`categoryColor`)return mC(t,s,p,c);throw Error(`Unsupported coloring option type}`)}}]}function cC(e,t){let n=e=>{let t=e.element.options.backgroundColor;return fn(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 lC(e,t,n){let r=hn(e.backgroundColor);r.a=1;let i=t.color||Cn(mn(r),.5);return{type:`line`,xAxisID:t.type===`trailingMovingAverage`?hS:`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 uC(e,t){return t?e===0?`origin`:`-1`:`origin`}function dC(e,t){return new In(t,e.dataSets?.map(e=>e.backgroundColor)||[])}function fC(e,t){let n=e.coloringOptions?.type===`categoryColor`?e.coloringOptions.colors:[],r=new In(t.length,n);return t.map(e=>({label:e.label,color:r.next()}))}function pC(e,t){if(e.length===0)return;let n=oC(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}),zn(e)}}function mC(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=oC(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:Cn(a,((Number(e.raw.v)||0)-l)/(u-l)*.5)}let hC={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];gC(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!==GS}),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=Cn(s,.5):e.options.backgroundColor=s}}};function gC(e,t){return t.length>e.length&&e.every((e,n)=>e===t[n])}let _C={id:`sunburstLabelsPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues&&!n.showLabels||e.config.type!==`doughnut`)return;let r=e.ctx;vC(e,n,r)}};function vC(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=fn(oe)>.7?`#666666`:`#FFFFFF`;n.fillStyle=r.textColor||se,n.textAlign=`center`,n.textBaseline=`middle`,n.font=Qc(i,r.bold,r.italic);let ce=-((l.length-1)*a)/2;for(let e=0;e<l.length;e++){let t=gl(n,ee,l[e],r,`px`);n.fillText(t,ae,ce+e*a)}n.restore()}}let yC={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=xC(r,e);if(!n)break;let a=bC(t),o=bC(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 bC(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 xC(e,t){return e.find((e,n)=>n>t&&e.height!==0)}V`
19
+ `,e.endsWith(`{`)&&n++;return t.trim()}let Yx=Lx.content,Xx={"=":`EQ`,"+":`ADD`,"-":`MINUS`,"*":`MULTIPLY`,"/":`DIVIDE`,">=":`GTE`,"<>":`NE`,">":`GT`,"<=":`LTE`,"<":`LT`,"^":`POWER`,"&":`CONCATENATE`},Zx={"-":`UMINUS`,"+":`UPLUS`,"%":`UNARY.PERCENT`},Qx={};function $x(e){return eS($v(e))}function eS(e){try{return tS(e)}catch(t){return{tokens:e,dependencies:[],execute:function(){return t},isBadExpression:!0,normalizedFormula:e.map(e=>e.value).join(``)}}}function tS(e){let{dependencies:t,literalValues:n,symbols:r}=rS(e),i=nS(e);if(!Qx[i]){let t=fy([...e]),n=new Kx,s=0,c=0,l=0;if(t.type===`BIN_OPERATION`&&t.value===`:`||t.type===`EMPTY`)throw new zi(E(`Invalid formula`));let u=o(t),d=new Wx;d.append(u),d.append(`return ${u.returnExpression};`),Qx[i]=Function(`deps`,`ref`,`range`,`getSymbolValue`,`ctx`,d.toString());function a(e){let{args:t}=e,n=Yx[e.value.toUpperCase()];if(!n)throw new Ui(E(`Unknown function: "%s"`,e.value));iS(e);let r=[],i=Rf(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`),u=c.some(e=>aS(e));r.push(o(s,l,u))}return r}function o(e,t=!1,i=!1){let u=new Wx(n);if(e.type!==`REFERENCE`&&!(e.type===`BIN_OPERATION`&&e.value===`:`)&&t)throw new zi(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!t&&e.value.includes(`:`)||i?u.return(`range(deps[${l++}])`):u.return(`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=Zx[e.value],n=o(e.operand,!1,!1).assignResultToVariable();return u.append(n),u.return(`ctx['${t}'](${n.returnExpression})`)}case`BIN_OPERATION`:{let t=Xx[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:Qx[i],dependencies:t,literalValues:n,symbols:r,tokens:e,isBadExpression:!1,normalizedFormula:i}}function nS(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 rS(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=it(i.value);t.strings.push({value:e});break;case`NUMBER`:{let e=Ii(i.value,D);t.numbers.push({value:e});break}case`SYMBOL`:r.push(lt(i.value,`'`))}return{dependencies:n,literalValues:t,symbols:r}}function iS(e){let t=e.args.length,n=e.value.toUpperCase(),r=Yx[n],{nbrArgRepeating:i,minArgRequired:a}=r;if(t<a)throw new zi(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 zi(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 zi(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 aS(e){return e.startsWith(`RANGE`)}let oS=Lx.content;function sS(e){try{return my(fy(e)).filter(e=>e.type===`FUNCALL`&&!oS[e.value.toUpperCase()]?.isExported).length===0}catch{return!1}}function cS(e,t){if(!e.some(e=>e.type===`SYMBOL`&&t.includes(e.value.toUpperCase())))return[];let n;try{n=fy(e)}catch{return[]}return lS(n,t)}function lS(e,t){return my(e).filter(e=>e.type===`FUNCALL`&&t.includes(e.value.toUpperCase())).map(e=>({functionName:e.value.toUpperCase(),args:e.args}))}function uS(e,t,n){if(!t.startsWith(`=`))return t;let r=$v(t);for(let t=1;t<r.length;t++){if(r[t].type!==`REFERENCE`)continue;let i=r[t].value,a=dS(e,i,n).range;i!==a&&(r[t]={value:a,type:`REFERENCE`})}return Ot(r.map(e=>e.value))}function dS(e,t,n){let r=yc(t).sheetName;if(r?!Jc(r,n.sheetName.old):e!==n.sheetId)return{changeType:`NONE`,range:t};let i=mS(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=Ec(a.range,e,fS(n));return o===k.InvalidReference?{changeType:`REMOVE`,range:o}:{changeType:a.changeType,range:o}}function fS(e){return t=>t===e.sheetId?e.sheetName.current:``}function pS(e){return{numberOfRows:2**53-1,numberOfCols:2**53-1}}function mS(e,t){return pc.test(e)?Sc({xc:e,sheetId:t},pS):Cc(e)}let hS=`xMovingAverage`,gS={exponential:`exp`,logarithmic:`log`,polynomial:`poly`,trailingMovingAverage:`movingAvg`};function _S(e,t,n,r){let i=!1,a=[];for(let r in n){let o=n[r];if(o.labelCell){let e=bS(o.labelCell,t);o.labelCell!==e&&(i=!0,o={...o,labelCell:e})}let s=bS(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=bS(o,t);s!==o&&(i=!0,o=s);let c=a.filter(C);return{isStale:i,dataSets:c,labelRange:o}}function vS(e,t,n){return n.map(n=>({dataRange:Dc(e,t,n.dataRange),labelCell:n.labelCell?Dc(e,t,n.labelCell):void 0}))}function yS(e,t,n){return n?Dc(e,t,n):void 0}function bS(e,t){if(!e)return;let n=t(e);switch(n.changeType){case`REMOVE`:return;default:return n.range}}function xS(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({...SS(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({...SS(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 SS(e,t,n,r){if(n.left!==n.right&&n.top!==n.bottom)throw Error(`Zone should be a single column or row: ${ys(n)}`);if(r){let i=ys(n),a=ys(r);return{labelCell:e.getRangeFromSheetXC(t,a),dataRange:e.getRangeFromSheetXC(t,i)}}else return{labelCell:void 0,dataRange:e.getRangeFromSheetXC(t,ys(n))}}function CS(e,t){let n=t.labelCell?.zone,r=t.dataRange.zone;if(n){let{numberOfRows:e,numberOfCols:t}=Ms(r);e===1?r={...r,left:r.left+1}:t===1&&(r={...r,top:r.top+1})}let i=xc({...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`:gS[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 wS(e,t,n){if(!t)return;let r={...t.zone};n&&t.zone.bottom>t.zone.top&&(r.top+=1);let i=xc({...t,zone:r},e.getSheetSize);return e.getRangeString(i,`forceSheetReference`,{useBoundedReference:!0})}function TS(e,t,n){let r;if(t.labelRange){let{changeType:i,range:a}=dS(e,t.labelRange,n);i!==`REMOVE`&&(r=a)}let i=[];for(let r of t.dataSets){let t={...r},{changeType:a,range:o}=dS(e,r.dataRange,n);a!==`REMOVE`&&(t.dataRange=o,i.push(t))}return{...t,dataSets:i,labelRange:r}}function ES(e){return e&&fn(e)<.3?`#FFFFFF`:`#000000`}function DS(e){return e&&fn(e)<.3?`#C8C8C8`:`#666666`}function OS(e){return e.dataSets&&(e.dataSets.find(e=>!pc.test(e.dataRange))!==void 0||e.dataSets.map(e=>ps(e.dataRange)).some(e=>e.top!==e.bottom&&Us(e)))?`InvalidDataSet`:`Success`}function kS(e){return e.labelRange&&!pc.test(e.labelRange||``)?`InvalidLabelRange`:`Success`}function AS(e,t,n){if(!n||!e)return!1;if(!t)return!0;let r=Gs(t.dataRange.zone);return!(Gs(e.zone)<r)}function jS(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 MS(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 NS(e,t){return(n,r)=>{let i=e?.[r];return PS({format:i,locale:t})(n)}}function PS(e){return t=>{if(t=Number(t),isNaN(t))return t;let{locale:n,format:r}=e;return LS(R(t,{locale:n,format:!r&&Math.abs(t)>=1e3?`#,##`:r}))}}let FS=[{value:`left`,label:E(`Left`)},{value:`right`,label:E(`Right`)}];function IS(e,t){let n=[],r=Jt(t.map(e=>e.data.length));for(let t=0;t<=r;t++)n.push(e.next());return n}function LS(e){return e?e.length>20?e.substring(0,20)+`…`:e:``}function RS(e){return e===`x1`||e===`xMovingAverage`}let zS={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`:US(e,n,r);break;case`bar`:case`line`:case`radar`:n.horizontal?HS(e,n,r):VS(e,n,r);break;case`funnel`:HS(e,n,r);break}r.restore()}};function BS(e,t,n,r){r.lineWidth=3,r.strokeText(e,t,n),r.lineWidth=1,r.fillText(e,t,n)}function VS(e,t,n){let r={};for(let i of e._metasets){if(RS(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`,BS(t.callback(Number(c),i,o),u,d,n)}}}function HS(e,t,n){let r={};for(let i of e._metasets){if(RS(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=el(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`,BS(s,f,l,n)}}}function US(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=el(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=ES(t.background),n.strokeStyle=t.background||`#ffffff`,BS(m,f,p,n))}}let WS={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}},GS=`nullValue`;function KS(e,t){let{dataSetsValues:n}=t,r=[],i=dC(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(lC(d,f,p))}return r.push(...a),r}function qS(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 JS(e,t){let{dataSetsValues:n,axisType:r,labels:i}=t,a=[],o=!!e.fillArea,s=!!e.stacked,c=[],l=dC(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?Sn(m,Je):m,pointBackgroundColor:m,fill:o?uC(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(lC(h,g,_))}return a.push(...c),a}function YS(e,t){let n=JS(e,t);for(let e of n)RS(e.xAxisID)||(e.showLine=!1);return n}function XS(e,t){let{dataSetsValues:n}=t,r=[],i=IS(new In(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 ZS(e,t){let{dataSetsValues:n}=t,r=[],i=dC(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(lC(p,m,h))}return r.push(...a),r}function QS(e,t){let{dataSetsValues:n}=t,r=[],i=e.fillArea??!1,a=dC(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=Sn(l,Je),u.fill=`start`),r.push(u)}return r}function $S(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 eC(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:tC(r,e.funnelColors),yAxisID:`y`,xAxisID:`x`,barPercentage:1,categoryPercentage:1,borderColor:e.background||`#FFFFFF`,borderWidth:3}]}function tC(e,t){let n=new In(e.length,t);return e.map(()=>n.next())}function nC(e,t){let{dataSetsValues:n,labels:r}=t,i=oC(iC(n,r)),a=i[0]||[],o=new In(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 rC(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?GS:String(e[t].data[i]);n[i][t]=r}n[i].value=Number(t[i])}return n}function iC(e,t){return aC(rC(e,t),0,e.length,[])}function aC(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:aC(i[e]||[],t+1,n,[...r,e]),groups:o,depth:t}}).sort((e,t)=>t.value-e.value)}function oC(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 sC(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=iC(n,r).sort((e,t)=>t.value-e.value),c=fC(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??WS.showLabels,f=e.showValues??WS.showValues,p=e.coloringOptions||WS.coloringOptions,m;return p?.type===`colorScale`&&(m=pC(s,p)),[{data:[],tree:l,labels:{display:d||f,overflow:`hidden`,...cC(e.valuesDesign,WS.valuesDesign),formatter:e=>[d?e.raw.g:void 0,f?R(e.raw.v,o):void 0].filter(C)},captions:{display:e.showHeaders??WS.showHeaders,padding:6,...cC(e.headerDesign,WS.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||WS.headerDesign?.fillColor;if(p.type===`colorScale`)return m?.(t.raw.v)||`#FF0000`;if(p.type===`categoryColor`)return mC(t,s,p,c);throw Error(`Unsupported coloring option type}`)}}]}function cC(e,t){let n=e=>{let t=e.element.options.backgroundColor;return fn(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 lC(e,t,n){let r=hn(e.backgroundColor);r.a=1;let i=t.color||Cn(mn(r),.5);return{type:`line`,xAxisID:t.type===`trailingMovingAverage`?hS:`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 uC(e,t){return t?e===0?`origin`:`-1`:`origin`}function dC(e,t){return new In(t,e.dataSets?.map(e=>e.backgroundColor)||[])}function fC(e,t){let n=e.coloringOptions?.type===`categoryColor`?e.coloringOptions.colors:[],r=new In(t.length,n);return t.map(e=>({label:e.label,color:r.next()}))}function pC(e,t){if(e.length===0)return;let n=oC(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}),zn(e)}}function mC(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=oC(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:Cn(a,((Number(e.raw.v)||0)-l)/(u-l)*.5)}let hC={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];gC(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!==GS}),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=Cn(s,.5):e.options.backgroundColor=s}}};function gC(e,t){return t.length>e.length&&e.every((e,n)=>e===t[n])}let _C={id:`sunburstLabelsPlugin`,afterDatasetsDraw(e,t,n){if(!n.showValues&&!n.showLabels||e.config.type!==`doughnut`)return;let r=e.ctx;vC(e,n,r)}};function vC(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=fn(oe)>.7?`#666666`:`#FFFFFF`;n.fillStyle=r.textColor||se,n.textAlign=`center`,n.textBaseline=`middle`,n.font=Qc(i,r.bold,r.italic);let ce=-((l.length-1)*a)/2;for(let e=0;e<l.length;e++){let t=gl(n,ee,l[e],r,`px`);n.fillText(t,ae,ce+e*a)}n.restore()}}let yC={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=xC(r,e);if(!n)break;let a=bC(t),o=bC(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 bC(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 xC(e,t){return e.find((e,n)=>n>t&&e.height!==0)}V`
20
20
  .o-spreadsheet {
21
21
  .o-chart-custom-tooltip {
22
22
  font-size: 12px;
@@ -1318,6 +1318,12 @@ stores.inject(MyMetaStore, storeInstance);
1318
1318
  background-color: ${Ae};
1319
1319
  border-color: ${Ae};
1320
1320
  }
1321
+
1322
+ &:focus {
1323
+ outline: none;
1324
+ box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
1325
+ border-color: ${Ae};
1326
+ }
1321
1327
  }
1322
1328
  }
1323
1329
  `;var kz=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`}},Az=class extends t.Component{static template=`o-spreadsheet-GeneralDesignEditor`;static components={RoundColorPicker:ik,ChartTitle:Dz,Section:X,SidePanelCollapsible:hO,RadioSelection:kz};static props={figureId: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.figureId,{background:e})}updateTitle(e){let t={...this.title,text:e};this.props.updateChart(this.props.figureId,{title:t})}updateChartTitleStyle(e){let t={...this.title,...e};this.props.updateChart(this.props.figureId,{title:t}),this.state.activeTool=``}},jz=class extends t.Component{static template=`o-spreadsheet-ChartLegend`;static components={Section:X};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function};updateLegendPosition(e){this.props.updateChart(this.props.figureId,{legendPosition:e.target.value})}},Mz=class extends t.Component{static template=`o-spreadsheet-SeriesDesignEditor`;static components={SidePanelCollapsible:hO,Section:X,RoundColorPicker:ik};static props={figureId: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.figureId);return!e||!(`chartJsConfig`in e)?[]:e.chartJsConfig.data.datasets.filter(e=>!RS(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.figureId,{dataSets:t}))}getDataSeriesColor(){let e=this.props.definition.dataSets;if(!e?.[this.state.index])return``;let t=e[this.state.index].backgroundColor;return t?sn(t):Nn(this.state.index,Pn(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.figureId,{dataSets:n}))}getDataSeriesLabel(){return this.props.definition.dataSets[this.state.index]?.label||this.getDataSeries()[this.state.index]}},Nz=class extends t.Component{static template=`o-spreadsheet-SeriesWithAxisDesignEditor`;static components={SeriesDesignEditor:Mz,Checkbox:yk,RadioSelection:kz,Section:X,RoundColorPicker:ik};static props={figureId:String,definition:Object,canUpdateChart:Function,updateChart:Function,slots:{type:Object,optional:!0}};axisChoices=FS;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.figureId,{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.figureId,{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.figureId);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?sn(n):Nn(e,Pn(this.props.definition.dataSets.length))}getTrendLineColor(e){return this.getTrendLineConfiguration(e)?.color??Sn(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.figureId,{dataSets:n}))}},Pz=class extends t.Component{static template=`o-spreadsheet-ChartShowValues`;static components={Checkbox:yk};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function,defaultValue:{type:Boolean,optional:!0}}},Fz=class extends t.Component{static template=`o-spreadsheet-ChartWithAxisDesignPanel`;static components={GeneralDesignEditor:Az,SidePanelCollapsible:hO,Section:X,AxisDesignEditor:Oz,SeriesWithAxisDesignEditor:Nz,ChartLegend:jz,ChartShowValues:Pz};static props={figureId:String,definition:Object,canUpdateChart:Function,updateChart:Function};get axesList(){let{useLeftAxis:e,useRightAxis:t}=MS(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}},Iz=class extends t.Component{static template=`o-spreadsheet-ChartShowDataMarkers`;static components={Checkbox:yk};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function}},Lz=class extends Fz{static template=`o-spreadsheet-ComboChartDesignPanel`;static components={...Fz.components,ChartShowDataMarkers:Iz,RadioSelection:kz};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.figureId,{dataSets:n}))}getDataSeriesType(e){let t=this.props.definition.dataSets;return t?.[e]?t[e].type??`line`:`bar`}},Rz=class extends bz{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.figureId,{cumulative:e})}},zz=class extends t.Component{static template=`o-spreadsheet-FunnelChartDesignPanel`;static components={ChartShowValues:Pz,GeneralDesignEditor:Az,SidePanelCollapsible:hO,RoundColorPicker:ik,Section:X};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function};getFunnelColorItems(){let e=this.env.model.getters.getChartRuntime(this.props.figureId).chartJsConfig.data.labels||[],t=tC(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=Wt(this.props.definition.funnelColors||[],t,e);this.props.updateChart(this.props.figureId,{funnelColors:n})}},Bz=class extends t.Component{static template=`o-spreadsheet-GaugeChartConfigPanel`;static components={ChartErrorSection:vz,ChartDataSeries:_z};static props={figureId: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=>Mw.Errors[e]||Mw.Errors.Unexpected)}get isDataRangeInvalid(){return!!this.state.dataRangeDispatchResult?.isCancelledBecause(`InvalidGaugeDataRange`)}onDataRangeChanged(e){this.dataRange=e[0],this.state.dataRangeDispatchResult=this.props.canUpdateChart(this.props.figureId,{dataRange:this.dataRange})}updateDataRange(){this.state.dataRangeDispatchResult=this.props.updateChart(this.props.figureId,{dataRange:this.dataRange})}getDataRange(){return{dataRange:this.dataRange||``}}};V`
@@ -2092,6 +2098,9 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
2092
2098
  position: absolute;
2093
2099
  cursor: pointer;
2094
2100
  }
2101
+ .o-grid.o-dashboard-grid {
2102
+ background: #ffffff;
2103
+ }
2095
2104
  `;var ZG=class extends t.Component{static template=`o-spreadsheet-SpreadsheetDashboard`;static props={getGridSize:Function};static components={GridOverlay:YR,GridPopover:XR,Popover:eO,VerticalScrollBar:hz,HorizontalScrollBar:mz};cellPopovers;onMouseWheel;canvasPosition;hoveredCell;clickableCellsStore;gridRef;setup(){this.gridRef=(0,t.useRef)(`grid`),this.hoveredCell=B(uO),this.clickableCellsStore=B(XG),(0,t.useChildSubEnv)({getPopoverContainerRect:()=>this.getGridRect()}),iz(`canvas`,this.env.model,()=>this.env.model.getters.getSheetViewDimension()),this.onMouseWheel=sz((e,t)=>{this.moveCanvas(e,t),this.hoveredCell.clear()}),this.cellPopovers=B(wk),oz(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 H({"max-width":`${this.getMaxSheetWidth()}px`})}get gridOverlayDimensions(){return H({height:`100%`,width:`100%`})}getCellClickableStyle(e){return H({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,tw(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{...WC(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}};V`
2096
2105
  .o-header-group {
2097
2106
  .o-header-group-header {
@@ -3411,4 +3420,4 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
3411
3420
  <Relationships xmlns="${xf.Relationships}">
3412
3421
  <Relationship ${K(e)} />
3413
3422
  </Relationships>
3414
- `),`_rels/.rels`)}function bJ(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=$t(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(`'?${ot(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function xJ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Ms(ms(e.range)).numberOfRows>1);return e}var SJ=class extends zd{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 _l,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),ir(),r=vN(e,r);let s=uN(e,a);this.state=new RK,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new yH(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 IK(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 sG.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of uG.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of lG.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of cG.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:kt(()=>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 sW(MK({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 zG;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService: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(Er));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=yr(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new xr(t.flat()):xr.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(CJ(e,t));dispatch=(e,t)=>{let n=CJ(e,t),r=this.status;if(this.getters.isReadonly()&&!br(n))return new xr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new xr(`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();yr(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(yr(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(yr(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return xr.Success};dispatchFromCorePlugin=(e,t)=>{let n=CJ(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,xr.Success};dispatchToHandlers(e,t){let n=yr(t);for(let r of e)!n&&r instanceof rH||r.beforeHandle(t);for(let r of e)!n&&r instanceof rH||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=TN();for(let t of this.handlers)t instanceof rH&&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=DN();for(let t of this.handlers)t instanceof nH&&t.exportForExcel(e);return e=b(e),dJ(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function CJ(e,t={}){let n=b(t);return n.type=e,n}let wJ={},TJ={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},EJ={autoCompleteProviders:FO,autofillModifiersRegistry:fU,autofillRulesRegistry:pU,cellMenuRegistry:qI,colMenuRegistry:dR,errorTypes:Ri,linkMenuRegistry:Ik,functionRegistry:Lx,featurePluginRegistry:cG,iconsOnCellRegistry:nU,statefulUIPluginRegistry:lG,coreViewsPluginRegistry:uG,corePluginRegistry:sG,rowMenuRegistry:vR,sidePanelRegistry:KV,figureRegistry:cO,chartSidePanelComponentRegistry:cB,chartComponentRegistry:mD,chartRegistry:pD,chartSubtypeRegistry:gD,topbarMenuRegistry:LG,topbarComponentRegistry:RG,clickableCellRegistry:hG,otRegistry:DU,inverseCommandRegistry:gG,urlRegistry:Ir,cellPopoverRegistry:dO,numberFormatMenuRegistry:MG,repeatLocalCommandTransformRegistry:HW,repeatCommandTransformRegistry:VW,clipboardHandlersRegistries:Id,pivotRegistry:xV,pivotTimeAdapterRegistry:Wu,pivotSidePanelRegistry:DV,pivotNormalizationValueRegistry:xd,supportedPivotPositionalFormulaRegistry:$V,pivotToFunctionValueRegistry:Sd,migrationStepRegistry:aN,chartJsExtensionRegistry:uf},DJ={arg:U,isEvaluationError:j,toBoolean:F,toJsDate:I,toNumber:M,toString:N,toNormalizedPivotValue:_d,toFunctionPivotValue:yd,toXC:T,toZone:ms,toUnboundedZone:ps,toCartesian:Zn,numberToLetters:Hn,lettersToNumber:Un,UuidGenerator:_l,formatValue:R,createCurrencyFormat:ko,ColorGenerator:In,computeTextWidth:el,createEmptyWorkbookData:TN,createEmptySheet:wN,createEmptyExcelSheet:EN,rgbaToHex:mn,colorToRGBA:hn,positionToZone:z,isDefined:C,isMatrix:Or,lazy:kt,genericRepeat:UW,createAction:m,createActions:f,transformRangeData:Rd,deepEquals:w,overlap:Os,union:ws,isInside:As,deepCopy:b,expandZoneOnInsertion:bs,reduceZoneOnDeletion:Cs,unquote:lt,getMaxObjectId:ld,getFunctionsFromTokens:cS,getFirstPivotFunction:$B,getNumberOfPivotFunctions:tV,parseDimension:fd,isDateOrDatetimeField:pd,makeFieldProposal:JB,insertTokenAfterArgSeparator:XB,insertTokenAfterLeftParenthesis:ZB,mergeContiguousZones:$s,getPivotHighlights:jB,pivotTimeAdapter:Gu,UNDO_REDO_PIVOT_COMMANDS:lU,createPivotFormula:gd,areDomainArgsFieldsValid:hd,splitReference:yc,sanitizeSheetName:dt,getUniqueText:$t,isNumber:Pi,isDateTime:ni},OJ={isMarkdownLink:_t,parseMarkdownLink:bt,markdownLink:yt,openLink:Vr,urlRepresentation:Br},kJ={Checkbox:yk,Section:X,RoundColorPicker:ik,ChartDataSeries:_z,ChartErrorSection:vz,ChartLabelRange:yz,ChartTitle:Dz,ChartPanel:dB,ChartFigure:oO,ChartJsComponent:SC,Grid:QV,GridOverlay:YR,ScorecardChart:zC,LineConfigPanel:qz,BarConfigPanel:xz,PieChartDesignPanel:Xz,GenericChartConfigPanel:bz,ChartWithAxisDesignPanel:Fz,LineChartDesignPanel:Jz,GaugeChartConfigPanel:Bz,GaugeChartDesignPanel:Vz,ScorecardChartConfigPanel:$z,ScorecardChartDesignPanel:eB,GeoChartDesignPanel:Gz,RadarChartDesignPanel:Zz,WaterfallChartDesignPanel:sB,ComboChartDesignPanel:Lz,FunnelChartDesignPanel:zz,ChartTypePicker:lB,FigureComponent:lO,MenuPopover:iO,Popover:eO,SelectionInput:pk,ValidationMessages:BR,AddDimensionButton:IB,PivotDimensionGranularity:BB,PivotDimensionOrder:VB,PivotDimension:zB,PivotLayoutConfigurator:GB,PivotHTMLRenderer:tH,PivotDeferUpdate:NB,PivotTitleSection:KB,CogWheelMenu:RB,TextInput:LB,SidePanelCollapsible:hO,RadioSelection:kz,GeoChartRegionSelectSection:Hz,ChartDashboardMenu:aO,FullScreenChart:eH},AJ={useDragAndDropListItems:ok,useHighlights:mB,useHighlightsOnHover:pB},jJ={useStoreProvider:Wd,DependencyContainer:Bd,CellPopoverStore:wk,ComposerFocusStore:$d,CellComposerStore:DR,FindAndReplaceStore:TB,HighlightStore:LO,DelayedHoveredCellStore:uO,HoveredTableStore:KR,ModelStore:Yd,NotificationStore:RO,RendererStore:Xd,SelectionInputStore:fk,SpreadsheetStore:Zd,useStore:B,useLocalStore:Gd,SidePanelStore:JV,PivotSidePanelStore:TV,PivotMeasureDisplayPanelStore:kB,ClientFocusStore:bR,GridRenderer:rz};function MJ(e,t){return Lx.add(e,t),{addFunction:(e,t)=>MJ(e,t)}}let NJ={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:Mw},PJ={...CD,...wE};e.AbstractCellClipboardHandler=Ol,e.AbstractChart=CC,e.AbstractFigureClipboardHandler=Dd,e.CellErrorType=k,e.ClientDisconnectedError=oW,e.CommandResult=Cr,e.CorePlugin=rH,e.CoreViewPlugin=DH,e.DispatchResult=xr,e.EvaluationError=A,e.LocalTransportService=zG,e.Model=SJ,e.PivotRuntimeDefinition=nV,e.Registry=g,e.Revision=aW,e.SPREADSHEET_DIMENSIONS=TJ,e.Spreadsheet=wK,e.SpreadsheetPivotTable=aV,e.UIPlugin=CU,e.__info__=wJ,e.addFunction=MJ,e.addRenderingLayer=jr,e.astToFormula=_y,e.chartHelpers=PJ,e.compile=$x,e.compileTokens=eS,e.components=kJ,e.constants=NJ,e.convertAstNodes=py,e.coreTypes=vr,e.findCellInNewZone=Vs,e.functionCache=Qx,e.helpers=DJ,e.hooks=AJ,e.invalidateCFEvaluationCommands=hr,e.invalidateChartEvaluationCommands=pr,e.invalidateDependenciesCommands=mr,e.invalidateEvaluationCommands=fr,e.iterateAstNodes=my,e.links=OJ,e.load=uN,e.parse=dy,e.parseTokens=fy,e.readonlyAllowedCommands=_r,e.registries=EJ,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=rr,e.stores=jJ,e.tokenColors=HO,e.tokenize=Ml,wJ.version=`18.4.52`,wJ.date=`2026-08-21T15:29:26.810Z`,wJ.hash=`5715a49`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3423
+ `),`_rels/.rels`)}function bJ(e){let t={},n=[];for(let r of e.sheets){let e=r.name.slice(0,31);e=$t(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(`'?${ot(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function xJ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>Ms(ms(e.range)).numberOfRows>1);return e}var SJ=class extends zd{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 _l,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),ir(),r=vN(e,r);let s=uN(e,a);this.state=new RK,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new yH(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 IK(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 sG.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of uG.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of lG.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of cG.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:kt(()=>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 sW(MK({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 zG;return{...e,mode:e.mode||`normal`,custom:e.custom||{},external:this.setupExternalConfig(e.external||{}),transportService: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(Er));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=yr(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new xr(t.flat()):xr.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(CJ(e,t));dispatch=(e,t)=>{let n=CJ(e,t),r=this.status;if(this.getters.isReadonly()&&!br(n))return new xr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new xr(`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();yr(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(yr(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(yr(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return xr.Success};dispatchFromCorePlugin=(e,t)=>{let n=CJ(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,xr.Success};dispatchToHandlers(e,t){let n=yr(t);for(let r of e)!n&&r instanceof rH||r.beforeHandle(t);for(let r of e)!n&&r instanceof rH||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=TN();for(let t of this.handlers)t instanceof rH&&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=DN();for(let t of this.handlers)t instanceof nH&&t.exportForExcel(e);return e=b(e),dJ(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function CJ(e,t={}){let n=b(t);return n.type=e,n}let wJ={},TJ={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},EJ={autoCompleteProviders:FO,autofillModifiersRegistry:fU,autofillRulesRegistry:pU,cellMenuRegistry:qI,colMenuRegistry:dR,errorTypes:Ri,linkMenuRegistry:Ik,functionRegistry:Lx,featurePluginRegistry:cG,iconsOnCellRegistry:nU,statefulUIPluginRegistry:lG,coreViewsPluginRegistry:uG,corePluginRegistry:sG,rowMenuRegistry:vR,sidePanelRegistry:KV,figureRegistry:cO,chartSidePanelComponentRegistry:cB,chartComponentRegistry:mD,chartRegistry:pD,chartSubtypeRegistry:gD,topbarMenuRegistry:LG,topbarComponentRegistry:RG,clickableCellRegistry:hG,otRegistry:DU,inverseCommandRegistry:gG,urlRegistry:Ir,cellPopoverRegistry:dO,numberFormatMenuRegistry:MG,repeatLocalCommandTransformRegistry:HW,repeatCommandTransformRegistry:VW,clipboardHandlersRegistries:Id,pivotRegistry:xV,pivotTimeAdapterRegistry:Wu,pivotSidePanelRegistry:DV,pivotNormalizationValueRegistry:xd,supportedPivotPositionalFormulaRegistry:$V,pivotToFunctionValueRegistry:Sd,migrationStepRegistry:aN,chartJsExtensionRegistry:uf},DJ={arg:U,isEvaluationError:j,toBoolean:F,toJsDate:I,toNumber:M,toString:N,toNormalizedPivotValue:_d,toFunctionPivotValue:yd,toXC:T,toZone:ms,toUnboundedZone:ps,toCartesian:Zn,numberToLetters:Hn,lettersToNumber:Un,UuidGenerator:_l,formatValue:R,createCurrencyFormat:ko,ColorGenerator:In,computeTextWidth:el,createEmptyWorkbookData:TN,createEmptySheet:wN,createEmptyExcelSheet:EN,rgbaToHex:mn,colorToRGBA:hn,positionToZone:z,isDefined:C,isMatrix:Or,lazy:kt,genericRepeat:UW,createAction:m,createActions:f,transformRangeData:Rd,deepEquals:w,overlap:Os,union:ws,isInside:As,deepCopy:b,expandZoneOnInsertion:bs,reduceZoneOnDeletion:Cs,unquote:lt,getMaxObjectId:ld,getFunctionsFromTokens:cS,getFirstPivotFunction:$B,getNumberOfPivotFunctions:tV,parseDimension:fd,isDateOrDatetimeField:pd,makeFieldProposal:JB,insertTokenAfterArgSeparator:XB,insertTokenAfterLeftParenthesis:ZB,mergeContiguousZones:$s,getPivotHighlights:jB,pivotTimeAdapter:Gu,UNDO_REDO_PIVOT_COMMANDS:lU,createPivotFormula:gd,areDomainArgsFieldsValid:hd,splitReference:yc,sanitizeSheetName:dt,getUniqueText:$t,isNumber:Pi,isDateTime:ni},OJ={isMarkdownLink:_t,parseMarkdownLink:bt,markdownLink:yt,openLink:Vr,urlRepresentation:Br},kJ={Checkbox:yk,Section:X,RoundColorPicker:ik,ChartDataSeries:_z,ChartErrorSection:vz,ChartLabelRange:yz,ChartTitle:Dz,ChartPanel:dB,ChartFigure:oO,ChartJsComponent:SC,Grid:QV,GridOverlay:YR,ScorecardChart:zC,LineConfigPanel:qz,BarConfigPanel:xz,PieChartDesignPanel:Xz,GenericChartConfigPanel:bz,ChartWithAxisDesignPanel:Fz,LineChartDesignPanel:Jz,GaugeChartConfigPanel:Bz,GaugeChartDesignPanel:Vz,ScorecardChartConfigPanel:$z,ScorecardChartDesignPanel:eB,GeoChartDesignPanel:Gz,RadarChartDesignPanel:Zz,WaterfallChartDesignPanel:sB,ComboChartDesignPanel:Lz,FunnelChartDesignPanel:zz,ChartTypePicker:lB,FigureComponent:lO,MenuPopover:iO,Popover:eO,SelectionInput:pk,ValidationMessages:BR,AddDimensionButton:IB,PivotDimensionGranularity:BB,PivotDimensionOrder:VB,PivotDimension:zB,PivotLayoutConfigurator:GB,PivotHTMLRenderer:tH,PivotDeferUpdate:NB,PivotTitleSection:KB,CogWheelMenu:RB,TextInput:LB,SidePanelCollapsible:hO,RadioSelection:kz,GeoChartRegionSelectSection:Hz,ChartDashboardMenu:aO,FullScreenChart:eH},AJ={useDragAndDropListItems:ok,useHighlights:mB,useHighlightsOnHover:pB},jJ={useStoreProvider:Wd,DependencyContainer:Bd,CellPopoverStore:wk,ComposerFocusStore:$d,CellComposerStore:DR,FindAndReplaceStore:TB,HighlightStore:LO,DelayedHoveredCellStore:uO,HoveredTableStore:KR,ModelStore:Yd,NotificationStore:RO,RendererStore:Xd,SelectionInputStore:fk,SpreadsheetStore:Zd,useStore:B,useLocalStore:Gd,SidePanelStore:JV,PivotSidePanelStore:TV,PivotMeasureDisplayPanelStore:kB,ClientFocusStore:bR,GridRenderer:rz};function MJ(e,t){return Lx.add(e,t),{addFunction:(e,t)=>MJ(e,t)}}let NJ={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:Mw},PJ={...CD,...wE};e.AbstractCellClipboardHandler=Ol,e.AbstractChart=CC,e.AbstractFigureClipboardHandler=Dd,e.CellErrorType=k,e.ClientDisconnectedError=oW,e.CommandResult=Cr,e.CorePlugin=rH,e.CoreViewPlugin=DH,e.DispatchResult=xr,e.EvaluationError=A,e.LocalTransportService=zG,e.Model=SJ,e.PivotRuntimeDefinition=nV,e.Registry=g,e.Revision=aW,e.SPREADSHEET_DIMENSIONS=TJ,e.Spreadsheet=wK,e.SpreadsheetPivotTable=aV,e.UIPlugin=CU,e.__info__=wJ,e.addFunction=MJ,e.addRenderingLayer=jr,e.astToFormula=_y,e.chartHelpers=PJ,e.compile=$x,e.compileTokens=eS,e.components=kJ,e.constants=NJ,e.convertAstNodes=py,e.coreTypes=vr,e.findCellInNewZone=Vs,e.functionCache=Qx,e.helpers=DJ,e.hooks=AJ,e.invalidateCFEvaluationCommands=hr,e.invalidateChartEvaluationCommands=pr,e.invalidateDependenciesCommands=mr,e.invalidateEvaluationCommands=fr,e.iterateAstNodes=my,e.links=OJ,e.load=uN,e.parse=dy,e.parseTokens=fy,e.readonlyAllowedCommands=_r,e.registries=EJ,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=rr,e.stores=jJ,e.tokenColors=HO,e.tokenize=Ml,wJ.version=`18.4.53`,wJ.date=`2026-08-29T09:14:01.099Z`,wJ.hash=`8ca564d`})(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 18.4.52
5
- @date 2026-08-21T15:29:27.544Z
6
- @hash 5715a49
4
+ @version 18.4.53
5
+ @date 2026-08-29T09:14:02.071Z
6
+ @hash 8ca564d
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -6198,7 +6198,11 @@
6198
6198
  </t>
6199
6199
 
6200
6200
  <t t-name="o-spreadsheet-SpreadsheetDashboard">
6201
- <div class="o-grid o-two-columns" t-ref="dashboard" tabindex="-1" t-on-wheel="onMouseWheel">
6201
+ <div
6202
+ class="o-grid o-dashboard-grid o-two-columns"
6203
+ t-ref="dashboard"
6204
+ tabindex="-1"
6205
+ t-on-wheel="onMouseWheel">
6202
6206
  <div class="mx-auto h-100 position-relative" t-ref="grid" t-att-style="gridContainer">
6203
6207
  <GridOverlay
6204
6208
  onGridResized.bind="onGridResized"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "18.4.52",
3
+ "version": "18.4.53",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",