@odoo/o-spreadsheet 18.3.55 → 18.3.56

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.3.55
6
- * @date 2026-07-13T06:26:11.119Z
7
- * @hash dc14a7c
5
+ * @version 18.3.56
6
+ * @date 2026-07-20T10:59:24.232Z
7
+ * @hash a8d15b9
8
8
  */
9
9
  /* Originates from src/components/top_bar/top_bar.scss */
10
10
  @media (max-width: 900px) {
@@ -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.3.55
6
- * @date 2026-07-13T06:26:09.586Z
7
- * @hash dc14a7c
5
+ * @version 18.3.56
6
+ * @date 2026-07-20T10:59:22.640Z
7
+ * @hash a8d15b9
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";
@@ -39296,7 +39296,7 @@ var ScorecardChartConfigPanel = class extends Component {
39296
39296
  return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardKeyValue");
39297
39297
  }
39298
39298
  get isBaselineInvalid() {
39299
- return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
39299
+ return !!this.state.baselineDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
39300
39300
  }
39301
39301
  onKeyValueRangeChanged(ranges) {
39302
39302
  this.keyValue = ranges[0];
@@ -72237,6 +72237,6 @@ const chartHelpers = {
72237
72237
  //#endregion
72238
72238
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, 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 };
72239
72239
 
72240
- __info__.version = "18.3.55";
72241
- __info__.date = "2026-07-13T06:26:09.586Z";
72242
- __info__.hash = "dc14a7c";
72240
+ __info__.version = "18.3.56";
72241
+ __info__.date = "2026-07-20T10:59:22.640Z";
72242
+ __info__.hash = "a8d15b9";
@@ -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.3.55
6
- * @date 2026-07-13T06:26:09.586Z
7
- * @hash dc14a7c
5
+ * @version 18.3.56
6
+ * @date 2026-07-20T10:59:22.640Z
7
+ * @hash a8d15b9
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -39298,7 +39298,7 @@ stores.inject(MyMetaStore, storeInstance);
39298
39298
  return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardKeyValue");
39299
39299
  }
39300
39300
  get isBaselineInvalid() {
39301
- return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
39301
+ return !!this.state.baselineDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
39302
39302
  }
39303
39303
  onKeyValueRangeChanged(ranges) {
39304
39304
  this.keyValue = ranges[0];
@@ -72286,8 +72286,8 @@ exports.stores = stores;
72286
72286
  exports.tokenColors = tokenColors;
72287
72287
  exports.tokenize = tokenize;
72288
72288
 
72289
- __info__.version = "18.3.55";
72290
- __info__.date = "2026-07-13T06:26:09.586Z";
72291
- __info__.hash = "dc14a7c";
72289
+ __info__.version = "18.3.56";
72290
+ __info__.date = "2026-07-20T10:59:22.640Z";
72291
+ __info__.hash = "a8d15b9";
72292
72292
 
72293
72293
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -965,7 +965,7 @@ stores.inject(MyMetaStore, storeInstance);
965
965
  height: 100%;
966
966
  }
967
967
  }
968
- `;var IL=class extends t.Component{static template=`o-spreadsheet-GaugeChartDesignPanel`;static components={SidePanelCollapsible:nL,Section:Q,RoundColorPicker:fL,GeneralDesignEditor:pL,ChartErrorSection:ZI,StandaloneComposer:FL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};state;setup(){this.state=(0,t.useState)({sectionRuleCancelledReasons:new Set(this.checkSectionRuleFormulasAreValid(this.props.definition.sectionRule)),sectionRule:b(this.props.definition.sectionRule)})}get designErrorMessages(){return[...this.state.sectionRuleCancelledReasons||[]].filter(e=>e!==`NoChanges`).map(e=>dw.Errors[e]||dw.Errors.Unexpected)}get isRangeMinInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMin`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMinNaN`))}get isRangeMaxInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMax`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMaxNaN`))}get isLowerInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeLowerInflectionPointNaN`)}get isUpperInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeUpperInflectionPointNaN`)}updateSectionColor(e,t){let n=b(this.state.sectionRule);n.colors[e]=t,this.updateSectionRule(n)}updateSectionRule(e){this.state.sectionRuleCancelledReasons=new Set(this.checkSectionRuleFormulasAreValid(this.state.sectionRule));let t=this.props.updateChart(this.props.figureId,{sectionRule:e});if(t.isSuccessful)this.state.sectionRule=b(e);else for(let e of t.reasons)this.state.sectionRuleCancelledReasons.add(e)}onConfirmGaugeRange(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:t},this.updateSectionRule(this.state.sectionRule)}getGaugeInflectionComposerProps(e){let t=e===`lowerColor`?`lowerInflectionPoint`:`upperInflectionPoint`,n=this.state.sectionRule[t];return{onConfirm:e=>{this.state.sectionRule={...this.state.sectionRule,[t]:{...n,value:e}},this.updateSectionRule(this.state.sectionRule)},composerContent:n.value,invalid:e===`lowerColor`?this.isLowerInflectionPointInvalid:this.isUpperInflectionPointInvalid,defaultRangeSheetId:this.sheetId,class:t,placeholder:O(`Value`),title:O(`Value or formula`)}}checkSectionRuleFormulasAreValid(e){let t=new Set;return this.valueIsValidNumber(e.rangeMin)||t.add(`GaugeRangeMinNaN`),this.valueIsValidNumber(e.rangeMax)||t.add(`GaugeRangeMaxNaN`),this.valueIsValidNumber(e.lowerInflectionPoint.value)||t.add(`GaugeLowerInflectionPointNaN`),this.valueIsValidNumber(e.upperInflectionPoint.value)||t.add(`GaugeUpperInflectionPointNaN`),t}valueIsValidNumber(e){let t=this.env.model.getters.getLocale();if(!e.startsWith(`=`))return ja(e,t)!==void 0;let n=this.env.model.getters.evaluateFormula(this.sheetId,e);return A(n)?!1:ja(n,t)!==void 0}get sheetId(){let e=this.env.model.getters.getChart(this.props.figureId);if(!e)throw Error(`Chart not found with id `+this.props.figureId);return e.sheetId}},LL=class extends t.Component{static template=`o-spreadsheet-GeoChartRegionSelectSection`;static components={Section:Q};static props={figureId:String,definition:Object,updateChart:Function};updateSelectedRegion(e){let t=e.target.value;this.props.updateChart(this.props.figureId,{region:t})}get availableRegions(){return this.env.model.getters.getGeoChartAvailableRegions()}get selectedRegion(){return this.props.definition.region||this.availableRegions[0]?.id}},RL=class extends $I{static template=`o-spreadsheet-GeoChartConfigPanel`;static components={...$I.components,GeoChartRegionSelectSection:LL};get dataRanges(){return this.getDataSeriesRanges().slice(0,1)}onDataSeriesConfirmed(){this.dataSets=hc(this.env.model.getters,this.dataSets).slice(0,1),this.state.datasetDispatchResult=this.props.updateChart(this.props.figureId,{dataSets:this.dataSets})}getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}};let zL={minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`};var BL=class extends _L{static template=`o-spreadsheet-GeoChartDesignPanel`;static components={..._L.components,RoundColorPicker:fL};colorScalesChoices=dw.GeoChart.ColorScales;updateColorScaleType(e){let t=e.target.value;t===`custom`?this.updateColorScale(zL):this.updateColorScale(t)}updateColorScale(e){this.props.updateChart(this.props.figureId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.figureId,{missingValueColor:e})}updateLegendPosition(e){let t=e.target.value;this.props.updateChart(this.props.figureId,{legendPosition:t})}get selectedColorScale(){return typeof this.props.definition.colorScale==`object`?`custom`:this.props.definition.colorScale||`oranges`}get selectedMissingValueColor(){return this.props.definition.missingValueColor||`#ffffff`}get customColorScale(){if(typeof this.props.definition.colorScale==`object`)return this.props.definition.colorScale}getCustomColorScaleColor(e){return this.customColorScale?.[e]??``}setCustomColorScaleColor(e,t){!t&&e!==`midColor`&&(t=`#fff`);let n=this.customColorScale;n&&this.updateColorScale({...n,[e]:t})}},VL=class extends $I{static template=`o-spreadsheet-HierarchicalChartConfigPanel`;static components={...$I.components};getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},HL=class extends $I{static template=`o-spreadsheet-LineConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.figureId);return e&&e instanceof SE?Vw(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}get stackedLabel(){return this.props.definition.fillArea?this.chartTerms.StackedAreaChart:this.chartTerms.StackedLineChart}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}onUpdateLabelsAsText(e){this.props.updateChart(this.props.figureId,{labelsAsText:e})}onUpdateStacked(e){this.props.updateChart(this.props.figureId,{stacked:e})}onUpdateCumulative(e){this.props.updateChart(this.props.figureId,{cumulative:e})}},UL=class extends t.Component{static template=`o-spreadsheet-PieChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,Checkbox:Xj,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}}},WL=class extends t.Component{static template=`o-spreadsheet-RadarChartDesignPanel`;static components={GeneralDesignEditor:pL,SeriesDesignEditor:hL,Section:Q,Checkbox:Xj,ChartLegend:mL};static props={figureId:String,definition:Object,canUpdateChart:Function,updateChart:Function}},GL=class extends $I{static template=`o-spreadsheet-ScatterConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.figureId);return e&&e instanceof AE?Vw(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}onUpdateLabelsAsText(e){this.props.updateChart(this.props.figureId,{labelsAsText:e})}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}},KL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartConfigPanel`;static components={SelectionInput:JI,ChartErrorSection:ZI,Section:Q};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function};state=(0,t.useState)({keyValueDispatchResult:void 0,baselineDispatchResult:void 0});keyValue=this.props.definition.keyValue;baseline=this.props.definition.baseline;get errorMessages(){return[...this.state.keyValueDispatchResult?.reasons||[],...this.state.baselineDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>dw.Errors[e]||dw.Errors.Unexpected)}get isKeyValueInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardKeyValue`)}get isBaselineInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardBaseline`)}onKeyValueRangeChanged(e){this.keyValue=e[0],this.state.keyValueDispatchResult=this.props.canUpdateChart(this.props.figureId,{keyValue:this.keyValue})}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart(this.props.figureId,{keyValue:this.keyValue})}getKeyValueRange(){return this.keyValue||``}onBaselineRangeChanged(e){this.baseline=e[0],this.state.baselineDispatchResult=this.props.canUpdateChart(this.props.figureId,{baseline:this.baseline})}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart(this.props.figureId,{baseline:this.baseline})}getBaselineRange(){return this.baseline||``}updateBaselineMode(e){this.props.updateChart(this.props.figureId,{baselineMode:e.target.value})}},qL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartDesignPanel`;static components={GeneralDesignEditor:pL,RoundColorPicker:fL,SidePanelCollapsible:nL,Section:Q,Checkbox:Xj};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};get colorsSectionTitle(){return this.props.definition.baselineMode===`progress`?O(`Progress bar colors`):O(`Baseline colors`)}get humanizeNumbersLabel(){return O(`Humanize numbers`)}get defaultScorecardTitleFontSize(){return 14}updateHumanizeNumbers(e){this.props.updateChart(this.props.figureId,{humanize:e})}translate(e){return O(e)}updateBaselineDescr(e){this.props.updateChart(this.props.figureId,{baselineDescr:e.target.value})}setColor(e,t){switch(t){case`backgroundColor`:this.props.updateChart(this.props.figureId,{background:e});break;case`baselineColorDown`:this.props.updateChart(this.props.figureId,{baselineColorDown:e});break;case`baselineColorUp`:this.props.updateChart(this.props.figureId,{baselineColorUp:e});break}}},JL=class extends t.Component{static template=`o-spreadsheet-SunburstChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,SidePanelCollapsible:nL,Checkbox:Xj,TextStyler:cL,RoundColorPicker:fL,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};defaults=NT;get showValues(){return this.props.definition.showValues??NT.showValues}get showLabels(){return this.props.definition.showLabels??NT.showLabels}get groupColors(){let e=this.props.figureId;return this.env.model.getters.getChartRuntime(e).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.props.definition.groupColors)??[];n[e]=t,this.props.updateChart(this.props.figureId,{groupColors:n})}},YL=class extends t.Component{static template=`o-spreadsheet-TreeMapCategoryColors`;static components={Checkbox:Xj,RoundColorPicker:fL};static props={figureId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??uS.coloringOptions;if(e.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);return e}getTreeGroupAndColors(){return this.env.model.getters.getChartRuntime(this.props.figureId).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.coloringOptions);n.colors[e]=t||void 0,this.props.onColorChanged(n)}useValueBasedGradient(e){if(this.coloringOptions.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);this.props.onColorChanged({...this.coloringOptions,useValueBasedGradient:e})}},XL=class extends t.Component{static template=`o-spreadsheet-TreeMapColorScale`;static components={RoundColorPicker:fL};static props={figureId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??uS.coloringOptions;if(e.type!==`colorScale`)throw Error(`Coloring options is not a color scale`);return e}setColorScaleColor(e,t){this.props.onColorChanged({...this.coloringOptions,[e]:t})}};let ZL={type:`colorScale`,minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`},QL={type:`categoryColor`,colors:[],useValueBasedGradient:!0};var $L=class extends t.Component{static template=`o-spreadsheet-TreeMapChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,SidePanelCollapsible:nL,Checkbox:Xj,TextStyler:cL,RoundColorPicker:fL,BadgeSelection:rL,TreeMapCategoryColors:YL,TreeMapColorScale:XL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};savedColors={categoryColors:QL,colorScale:ZL};defaults=uS;get showHeaders(){return this.props.definition.showHeaders??uS.showHeaders}get showValues(){return this.props.definition.showValues??uS.showValues}get showLabels(){return this.props.definition.showLabels??uS.showLabels}get coloringOptions(){return this.props.definition.coloringOptions??uS.coloringOptions}changeColoringOption(e){let t=e===`categoryColor`?this.savedColors.categoryColors:this.savedColors.colorScale;this.props.updateChart(this.props.figureId,{coloringOptions:t})}onCategoryColorChange(e){this.savedColors.categoryColors=e,this.props.updateChart(this.props.figureId,{coloringOptions:e})}onColorScaleChange(e){this.savedColors.colorScale=e,this.props.updateChart(this.props.figureId,{coloringOptions:e})}get coloringOptionChoices(){return[{label:O(`Category color`),value:`categoryColor`},{label:O(`Color scale`),value:`colorScale`}]}},eR=class extends t.Component{static template=`o-spreadsheet-WaterfallChartDesignPanel`;static components={GeneralDesignEditor:pL,Checkbox:Xj,SidePanelCollapsible:nL,Section:Q,RoundColorPicker:fL,AxisDesignEditor:uL,RadioSelection:dL,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};axisChoices=tS;onUpdateShowSubTotals(e){this.props.updateChart(this.props.figureId,{showSubTotals:e})}onUpdateShowConnectorLines(e){this.props.updateChart(this.props.figureId,{showConnectorLines:e})}onUpdateFirstValueAsSubtotal(e){this.props.updateChart(this.props.figureId,{firstValueAsSubtotal:e})}updateColor(e,t){this.props.updateChart(this.props.figureId,{[e]:t})}get axesList(){return[{id:`x`,name:O(`Horizontal axis`)},{id:`y`,name:O(`Vertical axis`)}]}get positiveValuesColor(){return this.props.definition.positiveValuesColor||`#4EA7F2`}get negativeValuesColor(){return this.props.definition.negativeValuesColor||`#EA6175`}get subTotalValuesColor(){return this.props.definition.subTotalValuesColor||`#AAAAAA`}updateVerticalAxisPosition(e){this.props.updateChart(this.props.figureId,{verticalAxisPosition:e})}};let tR=new h;tR.add(`line`,{configuration:HL,design:_L}).add(`scatter`,{configuration:GL,design:_L}).add(`bar`,{configuration:eL,design:_L}).add(`combo`,{configuration:$I,design:vL}).add(`pie`,{configuration:$I,design:UL}).add(`gauge`,{configuration:xL,design:IL}).add(`scorecard`,{configuration:KL,design:qL}).add(`waterfall`,{configuration:$I,design:eR}).add(`pyramid`,{configuration:$I,design:_L}).add(`radar`,{configuration:$I,design:WL}).add(`sunburst`,{configuration:VL,design:JL}).add(`geo`,{configuration:RL,design:BL}).add(`funnel`,{configuration:yL,design:bL}).add(`treemap`,{configuration:VL,design:$L}),H`
968
+ `;var IL=class extends t.Component{static template=`o-spreadsheet-GaugeChartDesignPanel`;static components={SidePanelCollapsible:nL,Section:Q,RoundColorPicker:fL,GeneralDesignEditor:pL,ChartErrorSection:ZI,StandaloneComposer:FL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};state;setup(){this.state=(0,t.useState)({sectionRuleCancelledReasons:new Set(this.checkSectionRuleFormulasAreValid(this.props.definition.sectionRule)),sectionRule:b(this.props.definition.sectionRule)})}get designErrorMessages(){return[...this.state.sectionRuleCancelledReasons||[]].filter(e=>e!==`NoChanges`).map(e=>dw.Errors[e]||dw.Errors.Unexpected)}get isRangeMinInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMin`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMinNaN`))}get isRangeMaxInvalid(){return!!(this.state.sectionRuleCancelledReasons?.has(`EmptyGaugeRangeMax`)||this.state.sectionRuleCancelledReasons?.has(`GaugeRangeMaxNaN`))}get isLowerInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeLowerInflectionPointNaN`)}get isUpperInflectionPointInvalid(){return!!this.state.sectionRuleCancelledReasons?.has(`GaugeUpperInflectionPointNaN`)}updateSectionColor(e,t){let n=b(this.state.sectionRule);n.colors[e]=t,this.updateSectionRule(n)}updateSectionRule(e){this.state.sectionRuleCancelledReasons=new Set(this.checkSectionRuleFormulasAreValid(this.state.sectionRule));let t=this.props.updateChart(this.props.figureId,{sectionRule:e});if(t.isSuccessful)this.state.sectionRule=b(e);else for(let e of t.reasons)this.state.sectionRuleCancelledReasons.add(e)}onConfirmGaugeRange(e,t){this.state.sectionRule={...this.state.sectionRule,[e]:t},this.updateSectionRule(this.state.sectionRule)}getGaugeInflectionComposerProps(e){let t=e===`lowerColor`?`lowerInflectionPoint`:`upperInflectionPoint`,n=this.state.sectionRule[t];return{onConfirm:e=>{this.state.sectionRule={...this.state.sectionRule,[t]:{...n,value:e}},this.updateSectionRule(this.state.sectionRule)},composerContent:n.value,invalid:e===`lowerColor`?this.isLowerInflectionPointInvalid:this.isUpperInflectionPointInvalid,defaultRangeSheetId:this.sheetId,class:t,placeholder:O(`Value`),title:O(`Value or formula`)}}checkSectionRuleFormulasAreValid(e){let t=new Set;return this.valueIsValidNumber(e.rangeMin)||t.add(`GaugeRangeMinNaN`),this.valueIsValidNumber(e.rangeMax)||t.add(`GaugeRangeMaxNaN`),this.valueIsValidNumber(e.lowerInflectionPoint.value)||t.add(`GaugeLowerInflectionPointNaN`),this.valueIsValidNumber(e.upperInflectionPoint.value)||t.add(`GaugeUpperInflectionPointNaN`),t}valueIsValidNumber(e){let t=this.env.model.getters.getLocale();if(!e.startsWith(`=`))return ja(e,t)!==void 0;let n=this.env.model.getters.evaluateFormula(this.sheetId,e);return A(n)?!1:ja(n,t)!==void 0}get sheetId(){let e=this.env.model.getters.getChart(this.props.figureId);if(!e)throw Error(`Chart not found with id `+this.props.figureId);return e.sheetId}},LL=class extends t.Component{static template=`o-spreadsheet-GeoChartRegionSelectSection`;static components={Section:Q};static props={figureId:String,definition:Object,updateChart:Function};updateSelectedRegion(e){let t=e.target.value;this.props.updateChart(this.props.figureId,{region:t})}get availableRegions(){return this.env.model.getters.getGeoChartAvailableRegions()}get selectedRegion(){return this.props.definition.region||this.availableRegions[0]?.id}},RL=class extends $I{static template=`o-spreadsheet-GeoChartConfigPanel`;static components={...$I.components,GeoChartRegionSelectSection:LL};get dataRanges(){return this.getDataSeriesRanges().slice(0,1)}onDataSeriesConfirmed(){this.dataSets=hc(this.env.model.getters,this.dataSets).slice(0,1),this.state.datasetDispatchResult=this.props.updateChart(this.props.figureId,{dataSets:this.dataSets})}getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}};let zL={minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`};var BL=class extends _L{static template=`o-spreadsheet-GeoChartDesignPanel`;static components={..._L.components,RoundColorPicker:fL};colorScalesChoices=dw.GeoChart.ColorScales;updateColorScaleType(e){let t=e.target.value;t===`custom`?this.updateColorScale(zL):this.updateColorScale(t)}updateColorScale(e){this.props.updateChart(this.props.figureId,{colorScale:e})}updateMissingValueColor(e){this.props.updateChart(this.props.figureId,{missingValueColor:e})}updateLegendPosition(e){let t=e.target.value;this.props.updateChart(this.props.figureId,{legendPosition:t})}get selectedColorScale(){return typeof this.props.definition.colorScale==`object`?`custom`:this.props.definition.colorScale||`oranges`}get selectedMissingValueColor(){return this.props.definition.missingValueColor||`#ffffff`}get customColorScale(){if(typeof this.props.definition.colorScale==`object`)return this.props.definition.colorScale}getCustomColorScaleColor(e){return this.customColorScale?.[e]??``}setCustomColorScaleColor(e,t){!t&&e!==`midColor`&&(t=`#fff`);let n=this.customColorScale;n&&this.updateColorScale({...n,[e]:t})}},VL=class extends $I{static template=`o-spreadsheet-HierarchicalChartConfigPanel`;static components={...$I.components};getLabelRangeOptions(){return[{name:`dataSetsHaveTitle`,label:this.dataSetsHaveTitleLabel,value:this.props.definition.dataSetsHaveTitle,onChange:this.onUpdateDataSetsHaveTitle.bind(this)}]}},HL=class extends $I{static template=`o-spreadsheet-LineConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.figureId);return e&&e instanceof SE?Vw(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}get stackedLabel(){return this.props.definition.fillArea?this.chartTerms.StackedAreaChart:this.chartTerms.StackedLineChart}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}onUpdateLabelsAsText(e){this.props.updateChart(this.props.figureId,{labelsAsText:e})}onUpdateStacked(e){this.props.updateChart(this.props.figureId,{stacked:e})}onUpdateCumulative(e){this.props.updateChart(this.props.figureId,{cumulative:e})}},UL=class extends t.Component{static template=`o-spreadsheet-PieChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,Checkbox:Xj,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}}},WL=class extends t.Component{static template=`o-spreadsheet-RadarChartDesignPanel`;static components={GeneralDesignEditor:pL,SeriesDesignEditor:hL,Section:Q,Checkbox:Xj,ChartLegend:mL};static props={figureId:String,definition:Object,canUpdateChart:Function,updateChart:Function}},GL=class extends $I{static template=`o-spreadsheet-ScatterConfigPanel`;get canTreatLabelsAsText(){let e=this.env.model.getters.getChart(this.props.figureId);return e&&e instanceof AE?Vw(e.getDefinition(),e.dataSets,e.labelRange,this.env.model.getters):!1}onUpdateLabelsAsText(e){this.props.updateChart(this.props.figureId,{labelsAsText:e})}getLabelRangeOptions(){let e=super.getLabelRangeOptions();return this.canTreatLabelsAsText&&e.push({name:`labelsAsText`,value:this.props.definition.labelsAsText,label:this.chartTerms.TreatLabelsAsText,onChange:this.onUpdateLabelsAsText.bind(this)}),e}},KL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartConfigPanel`;static components={SelectionInput:JI,ChartErrorSection:ZI,Section:Q};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:Function};state=(0,t.useState)({keyValueDispatchResult:void 0,baselineDispatchResult:void 0});keyValue=this.props.definition.keyValue;baseline=this.props.definition.baseline;get errorMessages(){return[...this.state.keyValueDispatchResult?.reasons||[],...this.state.baselineDispatchResult?.reasons||[]].filter(e=>e!==`NoChanges`).map(e=>dw.Errors[e]||dw.Errors.Unexpected)}get isKeyValueInvalid(){return!!this.state.keyValueDispatchResult?.isCancelledBecause(`InvalidScorecardKeyValue`)}get isBaselineInvalid(){return!!this.state.baselineDispatchResult?.isCancelledBecause(`InvalidScorecardBaseline`)}onKeyValueRangeChanged(e){this.keyValue=e[0],this.state.keyValueDispatchResult=this.props.canUpdateChart(this.props.figureId,{keyValue:this.keyValue})}updateKeyValueRange(){this.state.keyValueDispatchResult=this.props.updateChart(this.props.figureId,{keyValue:this.keyValue})}getKeyValueRange(){return this.keyValue||``}onBaselineRangeChanged(e){this.baseline=e[0],this.state.baselineDispatchResult=this.props.canUpdateChart(this.props.figureId,{baseline:this.baseline})}updateBaselineRange(){this.state.baselineDispatchResult=this.props.updateChart(this.props.figureId,{baseline:this.baseline})}getBaselineRange(){return this.baseline||``}updateBaselineMode(e){this.props.updateChart(this.props.figureId,{baselineMode:e.target.value})}},qL=class extends t.Component{static template=`o-spreadsheet-ScorecardChartDesignPanel`;static components={GeneralDesignEditor:pL,RoundColorPicker:fL,SidePanelCollapsible:nL,Section:Q,Checkbox:Xj};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};get colorsSectionTitle(){return this.props.definition.baselineMode===`progress`?O(`Progress bar colors`):O(`Baseline colors`)}get humanizeNumbersLabel(){return O(`Humanize numbers`)}get defaultScorecardTitleFontSize(){return 14}updateHumanizeNumbers(e){this.props.updateChart(this.props.figureId,{humanize:e})}translate(e){return O(e)}updateBaselineDescr(e){this.props.updateChart(this.props.figureId,{baselineDescr:e.target.value})}setColor(e,t){switch(t){case`backgroundColor`:this.props.updateChart(this.props.figureId,{background:e});break;case`baselineColorDown`:this.props.updateChart(this.props.figureId,{baselineColorDown:e});break;case`baselineColorUp`:this.props.updateChart(this.props.figureId,{baselineColorUp:e});break}}},JL=class extends t.Component{static template=`o-spreadsheet-SunburstChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,SidePanelCollapsible:nL,Checkbox:Xj,TextStyler:cL,RoundColorPicker:fL,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};defaults=NT;get showValues(){return this.props.definition.showValues??NT.showValues}get showLabels(){return this.props.definition.showLabels??NT.showLabels}get groupColors(){let e=this.props.figureId;return this.env.model.getters.getChartRuntime(e).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.props.definition.groupColors)??[];n[e]=t,this.props.updateChart(this.props.figureId,{groupColors:n})}},YL=class extends t.Component{static template=`o-spreadsheet-TreeMapCategoryColors`;static components={Checkbox:Xj,RoundColorPicker:fL};static props={figureId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??uS.coloringOptions;if(e.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);return e}getTreeGroupAndColors(){return this.env.model.getters.getChartRuntime(this.props.figureId).chartJsConfig.data.datasets[0]?.groupColors||[]}onGroupColorChanged(e,t){let n=b(this.coloringOptions);n.colors[e]=t||void 0,this.props.onColorChanged(n)}useValueBasedGradient(e){if(this.coloringOptions.type!==`categoryColor`)throw Error(`Coloring options is not solid color`);this.props.onColorChanged({...this.coloringOptions,useValueBasedGradient:e})}},XL=class extends t.Component{static template=`o-spreadsheet-TreeMapColorScale`;static components={RoundColorPicker:fL};static props={figureId:String,definition:Object,onColorChanged:Function};get coloringOptions(){let e=this.props.definition.coloringOptions??uS.coloringOptions;if(e.type!==`colorScale`)throw Error(`Coloring options is not a color scale`);return e}setColorScaleColor(e,t){this.props.onColorChanged({...this.coloringOptions,[e]:t})}};let ZL={type:`colorScale`,minColor:`#FFF5EB`,midColor:`#FD8D3C`,maxColor:`#7F2704`},QL={type:`categoryColor`,colors:[],useValueBasedGradient:!0};var $L=class extends t.Component{static template=`o-spreadsheet-TreeMapChartDesignPanel`;static components={GeneralDesignEditor:pL,Section:Q,SidePanelCollapsible:nL,Checkbox:Xj,TextStyler:cL,RoundColorPicker:fL,BadgeSelection:rL,TreeMapCategoryColors:YL,TreeMapColorScale:XL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};savedColors={categoryColors:QL,colorScale:ZL};defaults=uS;get showHeaders(){return this.props.definition.showHeaders??uS.showHeaders}get showValues(){return this.props.definition.showValues??uS.showValues}get showLabels(){return this.props.definition.showLabels??uS.showLabels}get coloringOptions(){return this.props.definition.coloringOptions??uS.coloringOptions}changeColoringOption(e){let t=e===`categoryColor`?this.savedColors.categoryColors:this.savedColors.colorScale;this.props.updateChart(this.props.figureId,{coloringOptions:t})}onCategoryColorChange(e){this.savedColors.categoryColors=e,this.props.updateChart(this.props.figureId,{coloringOptions:e})}onColorScaleChange(e){this.savedColors.colorScale=e,this.props.updateChart(this.props.figureId,{coloringOptions:e})}get coloringOptionChoices(){return[{label:O(`Category color`),value:`categoryColor`},{label:O(`Color scale`),value:`colorScale`}]}},eR=class extends t.Component{static template=`o-spreadsheet-WaterfallChartDesignPanel`;static components={GeneralDesignEditor:pL,Checkbox:Xj,SidePanelCollapsible:nL,Section:Q,RoundColorPicker:fL,AxisDesignEditor:uL,RadioSelection:dL,ChartLegend:mL};static props={figureId:String,definition:Object,updateChart:Function,canUpdateChart:{type:Function,optional:!0}};axisChoices=tS;onUpdateShowSubTotals(e){this.props.updateChart(this.props.figureId,{showSubTotals:e})}onUpdateShowConnectorLines(e){this.props.updateChart(this.props.figureId,{showConnectorLines:e})}onUpdateFirstValueAsSubtotal(e){this.props.updateChart(this.props.figureId,{firstValueAsSubtotal:e})}updateColor(e,t){this.props.updateChart(this.props.figureId,{[e]:t})}get axesList(){return[{id:`x`,name:O(`Horizontal axis`)},{id:`y`,name:O(`Vertical axis`)}]}get positiveValuesColor(){return this.props.definition.positiveValuesColor||`#4EA7F2`}get negativeValuesColor(){return this.props.definition.negativeValuesColor||`#EA6175`}get subTotalValuesColor(){return this.props.definition.subTotalValuesColor||`#AAAAAA`}updateVerticalAxisPosition(e){this.props.updateChart(this.props.figureId,{verticalAxisPosition:e})}};let tR=new h;tR.add(`line`,{configuration:HL,design:_L}).add(`scatter`,{configuration:GL,design:_L}).add(`bar`,{configuration:eL,design:_L}).add(`combo`,{configuration:$I,design:vL}).add(`pie`,{configuration:$I,design:UL}).add(`gauge`,{configuration:xL,design:IL}).add(`scorecard`,{configuration:KL,design:qL}).add(`waterfall`,{configuration:$I,design:eR}).add(`pyramid`,{configuration:$I,design:_L}).add(`radar`,{configuration:$I,design:WL}).add(`sunburst`,{configuration:VL,design:JL}).add(`geo`,{configuration:RL,design:BL}).add(`funnel`,{configuration:yL,design:bL}).add(`treemap`,{configuration:VL,design:$L}),H`
969
969
  .o-section .o-input.o-type-selector {
970
970
  height: 30px;
971
971
  padding-left: 35px;
@@ -3382,4 +3382,4 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
3382
3382
  <Relationships xmlns="${iO.Relationships}">
3383
3383
  <Relationship ${q(e)} />
3384
3384
  </Relationships>
3385
- `),`_rels/.rels`)}function FK(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(`'?${at(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function IK(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>br(ar(e.range)).numberOfRows>1);return e}var LK=class extends Hd{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 al,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),qi(),r=Pj(e,r);let s=Ej(e,a);this.state=new nG,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new AV(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 eG(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 tW.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of iW.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of rW.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of nW.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 rU(XW({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:O(`Anonymous`).toString()},n=e.transportService||new HW;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(pa));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=ca(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new ua(t.flat()):ua.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(RK(e,t));dispatch=(e,t)=>{let n=RK(e,t),r=this.status;if(this.getters.isReadonly()&&!la(n))return new ua(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new ua(`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();ca(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(ca(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(ca(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return ua.Success};dispatchFromCorePlugin=(e,t)=>{let n=RK(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,ua.Success};dispatchToHandlers(e,t){let n=ca(t);for(let r of e)!n&&r instanceof mV||r.beforeHandle(t);for(let r of e)!n&&r instanceof mV||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=Vj();for(let t of this.handlers)t instanceof mV&&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=Uj();for(let t of this.handlers)t instanceof pV&&t.exportForExcel(e);return e=b(e),EK(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function RK(e,t={}){let n=b(t);return n.type=e,n}let zK={},BK={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},VK={autoCompleteProviders:oC,autofillModifiersRegistry:AC,autofillRulesRegistry:jC,cellMenuRegistry:NP,colMenuRegistry:EI,errorTypes:va,linkMenuRegistry:pM,functionRegistry:ix,featurePluginRegistry:nW,iconsOnCellRegistry:gO,statefulUIPluginRegistry:rW,coreViewsPluginRegistry:iW,corePluginRegistry:tW,rowMenuRegistry:jI,sidePanelRegistry:nB,figureRegistry:AD,chartSidePanelComponentRegistry:tR,chartComponentRegistry:zE,chartRegistry:RE,chartSubtypeRegistry:VE,topbarMenuRegistry:FI,topbarComponentRegistry:LI,clickableCellRegistry:aW,otRegistry:II,inverseCommandRegistry:ID,urlRegistry:ho,cellPopoverRegistry:VC,numberFormatMenuRegistry:DI,repeatLocalCommandTransformRegistry:LU,repeatCommandTransformRegistry:IU,clipboardHandlersRegistries:zd,pivotRegistry:bz,pivotTimeAdapterRegistry:qu,pivotSidePanelRegistry:Ez,pivotNormalizationValueRegistry:wd,supportedPivotPositionalFormulaRegistry:TC,pivotToFunctionValueRegistry:Td,migrationStepRegistry:xj,chartJsExtensionRegistry:pf},HK={arg:W,isEvaluationError:P,toBoolean:L,toJsDate:R,toNumber:F,toString:I,toNormalizedPivotValue:bd,toFunctionPivotValue:Sd,toXC:T,toZone:ar,toUnboundedZone:ir,toCartesian:Jn,numberToLetters:zn,lettersToNumber:Bn,UuidGenerator:al,formatValue:B,createCurrencyFormat:gs,ColorGenerator:Pn,computeTextWidth:Vc,createEmptyWorkbookData:Vj,createEmptySheet:Bj,createEmptyExcelSheet:Hj,rgbaToHex:mn,colorToRGBA:hn,positionToZone:E,isDefined:C,isMatrix:A,lazy:kt,genericRepeat:RU,createAction:m,createActions:f,transformRangeData:Vd,deepEquals:w,overlap:_r,union:pr,isInside:vr,deepCopy:b,expandZoneOnInsertion:lr,reduceZoneOnDeletion:fr,unquote:ct,getMaxObjectId:fd,getFunctionsFromTokens:kx,getFirstPivotFunction:SC,getNumberOfPivotFunctions:wC,parseDimension:hd,isDateOrDatetimeField:gd,makeFieldProposal:_C,insertTokenAfterArgSeparator:yC,insertTokenAfterLeftParenthesis:bC,mergeContiguousZones:zr,getPivotHighlights:NI,pivotTimeAdapter:Ju,UNDO_REDO_PIVOT_COMMANDS:_H,createPivotFormula:yd,areDomainArgsFieldsValid:vd,splitReference:ac,sanitizeSheetName:ut,getUniqueText:$t,isNumber:Li,isDateTime:ai},UK={isMarkdownLink:gt,parseMarkdownLink:yt,markdownLink:vt,openLink:bo,urlRepresentation:yo},WK={Checkbox:Xj,Section:Q,RoundColorPicker:fL,ChartDataSeries:YI,ChartErrorSection:ZI,ChartLabelRange:QI,ChartTitle:lL,ChartPanel:iR,ChartFigure:UE,ChartJsComponent:HS,Grid:dV,GridOverlay:VB,ScorecardChart:aC,LineConfigPanel:HL,BarConfigPanel:eL,PieChartDesignPanel:UL,GenericChartConfigPanel:$I,ChartWithAxisDesignPanel:_L,GaugeChartConfigPanel:xL,GaugeChartDesignPanel:IL,ScorecardChartConfigPanel:KL,ScorecardChartDesignPanel:qL,GeoChartDesignPanel:BL,RadarChartDesignPanel:WL,WaterfallChartDesignPanel:eR,ComboChartDesignPanel:vL,FunnelChartDesignPanel:bL,ChartTypePicker:nR,FigureComponent:rB,Menu:DM,Popover:CM,SelectionInput:JI,ValidationMessages:XI,AddDimensionButton:WR,PivotDimensionGranularity:JR,PivotDimensionOrder:YR,PivotDimension:qR,PivotLayoutConfigurator:$R,PivotHTMLRenderer:fV,PivotDeferUpdate:HR,PivotTitleSection:ez,CogWheelMenu:KR,TextInput:GR,SidePanelCollapsible:nL,RadioSelection:dL,GeoChartRegionSelectSection:LL},GK={useDragAndDropListItems:zI,useHighlights:lR,useHighlightsOnHover:cR},KK={useStoreProvider:qd,DependencyContainer:Ud,CellPopoverStore:nM,ComposerFocusStore:nf,CellComposerStore:_B,FindAndReplaceStore:IR,HighlightStore:uC,DelayedHoveredCellStore:tM,HoveredTableStore:zB,ModelStore:Qd,NotificationStore:dC,RendererStore:$d,SelectionInputStore:qI,SpreadsheetStore:ef,useStore:V,useLocalStore:Jd,SidePanelStore:sV,PivotSidePanelStore:wz,PivotMeasureDisplayPanelStore:BR};function qK(e,t){return ix.add(e,t),{addFunction:(e,t)=>qK(e,t)}}let JK={DEFAULT_LOCALE:k,HIGHLIGHT_COLOR:_,PIVOT_TABLE_CONFIG:et,ChartTerms:dw},YK={...hD,...nE};e.AbstractCellClipboardHandler=gl,e.AbstractChart=US,e.AbstractFigureClipboardHandler=Ad,e.CellErrorType=j,e.CommandResult=fa,e.CorePlugin=mV,e.CoreViewPlugin=RV,e.DispatchResult=ua,e.EvaluationError=M,e.Model=LK,e.PivotRuntimeDefinition=tz,e.Registry=h,e.Revision=tU,e.SPREADSHEET_DIMENSIONS=BK,e.Spreadsheet=VW,e.SpreadsheetPivotTable=iz,e.UIPlugin=bH,e.__info__=zK,e.addFunction=qK,e.addRenderingLayer=_a,e.astToFormula=zv,e.chartHelpers=YK,e.compile=bx,e.compileTokens=xx,e.components=WK,e.constants=JK,e.convertAstNodes=Fv,e.coreTypes=sa,e.findCellInNewZone=kr,e.functionCache=yx,e.helpers=HK,e.hooks=GK,e.invalidateCFEvaluationCommands=ia,e.invalidateChartEvaluationCommands=na,e.invalidateDependenciesCommands=ra,e.invalidateEvaluationCommands=ta,e.iterateAstNodes=Iv,e.links=UK,e.load=Ej,e.parse=Nv,e.parseTokens=Pv,e.readonlyAllowedCommands=oa,e.registries=VK,e.setDefaultSheetViewSize=Qe,e.setTranslationMethod=Ki,e.stores=KK,e.tokenColors=mC,e.tokenize=bl,zK.version=`18.3.55`,zK.date=`2026-07-13T06:26:09.586Z`,zK.hash=`dc14a7c`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3385
+ `),`_rels/.rels`)}function FK(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(`'?${at(e)}'?!`,`g`);i=i.replaceAll(n,n=>{let r=t[e];return n.replace(e,r)})}return JSON.parse(i)}function IK(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>br(ar(e.range)).numberOfRows>1);return e}var LK=class extends Hd{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 al,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),qi(),r=Pj(e,r);let s=Ej(e,a);this.state=new nG,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new AV(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 eG(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 tW.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of iW.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of rW.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of nW.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 rU(XW({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:O(`Anonymous`).toString()},n=e.transportService||new HW;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(pa));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=ca(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new ua(t.flat()):ua.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(RK(e,t));dispatch=(e,t)=>{let n=RK(e,t),r=this.status;if(this.getters.isReadonly()&&!la(n))return new ua(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new ua(`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();ca(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(ca(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(ca(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return ua.Success};dispatchFromCorePlugin=(e,t)=>{let n=RK(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,ua.Success};dispatchToHandlers(e,t){let n=ca(t);for(let r of e)!n&&r instanceof mV||r.beforeHandle(t);for(let r of e)!n&&r instanceof mV||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=Vj();for(let t of this.handlers)t instanceof mV&&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=Uj();for(let t of this.handlers)t instanceof pV&&t.exportForExcel(e);return e=b(e),EK(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function RK(e,t={}){let n=b(t);return n.type=e,n}let zK={},BK={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},VK={autoCompleteProviders:oC,autofillModifiersRegistry:AC,autofillRulesRegistry:jC,cellMenuRegistry:NP,colMenuRegistry:EI,errorTypes:va,linkMenuRegistry:pM,functionRegistry:ix,featurePluginRegistry:nW,iconsOnCellRegistry:gO,statefulUIPluginRegistry:rW,coreViewsPluginRegistry:iW,corePluginRegistry:tW,rowMenuRegistry:jI,sidePanelRegistry:nB,figureRegistry:AD,chartSidePanelComponentRegistry:tR,chartComponentRegistry:zE,chartRegistry:RE,chartSubtypeRegistry:VE,topbarMenuRegistry:FI,topbarComponentRegistry:LI,clickableCellRegistry:aW,otRegistry:II,inverseCommandRegistry:ID,urlRegistry:ho,cellPopoverRegistry:VC,numberFormatMenuRegistry:DI,repeatLocalCommandTransformRegistry:LU,repeatCommandTransformRegistry:IU,clipboardHandlersRegistries:zd,pivotRegistry:bz,pivotTimeAdapterRegistry:qu,pivotSidePanelRegistry:Ez,pivotNormalizationValueRegistry:wd,supportedPivotPositionalFormulaRegistry:TC,pivotToFunctionValueRegistry:Td,migrationStepRegistry:xj,chartJsExtensionRegistry:pf},HK={arg:W,isEvaluationError:P,toBoolean:L,toJsDate:R,toNumber:F,toString:I,toNormalizedPivotValue:bd,toFunctionPivotValue:Sd,toXC:T,toZone:ar,toUnboundedZone:ir,toCartesian:Jn,numberToLetters:zn,lettersToNumber:Bn,UuidGenerator:al,formatValue:B,createCurrencyFormat:gs,ColorGenerator:Pn,computeTextWidth:Vc,createEmptyWorkbookData:Vj,createEmptySheet:Bj,createEmptyExcelSheet:Hj,rgbaToHex:mn,colorToRGBA:hn,positionToZone:E,isDefined:C,isMatrix:A,lazy:kt,genericRepeat:RU,createAction:m,createActions:f,transformRangeData:Vd,deepEquals:w,overlap:_r,union:pr,isInside:vr,deepCopy:b,expandZoneOnInsertion:lr,reduceZoneOnDeletion:fr,unquote:ct,getMaxObjectId:fd,getFunctionsFromTokens:kx,getFirstPivotFunction:SC,getNumberOfPivotFunctions:wC,parseDimension:hd,isDateOrDatetimeField:gd,makeFieldProposal:_C,insertTokenAfterArgSeparator:yC,insertTokenAfterLeftParenthesis:bC,mergeContiguousZones:zr,getPivotHighlights:NI,pivotTimeAdapter:Ju,UNDO_REDO_PIVOT_COMMANDS:_H,createPivotFormula:yd,areDomainArgsFieldsValid:vd,splitReference:ac,sanitizeSheetName:ut,getUniqueText:$t,isNumber:Li,isDateTime:ai},UK={isMarkdownLink:gt,parseMarkdownLink:yt,markdownLink:vt,openLink:bo,urlRepresentation:yo},WK={Checkbox:Xj,Section:Q,RoundColorPicker:fL,ChartDataSeries:YI,ChartErrorSection:ZI,ChartLabelRange:QI,ChartTitle:lL,ChartPanel:iR,ChartFigure:UE,ChartJsComponent:HS,Grid:dV,GridOverlay:VB,ScorecardChart:aC,LineConfigPanel:HL,BarConfigPanel:eL,PieChartDesignPanel:UL,GenericChartConfigPanel:$I,ChartWithAxisDesignPanel:_L,GaugeChartConfigPanel:xL,GaugeChartDesignPanel:IL,ScorecardChartConfigPanel:KL,ScorecardChartDesignPanel:qL,GeoChartDesignPanel:BL,RadarChartDesignPanel:WL,WaterfallChartDesignPanel:eR,ComboChartDesignPanel:vL,FunnelChartDesignPanel:bL,ChartTypePicker:nR,FigureComponent:rB,Menu:DM,Popover:CM,SelectionInput:JI,ValidationMessages:XI,AddDimensionButton:WR,PivotDimensionGranularity:JR,PivotDimensionOrder:YR,PivotDimension:qR,PivotLayoutConfigurator:$R,PivotHTMLRenderer:fV,PivotDeferUpdate:HR,PivotTitleSection:ez,CogWheelMenu:KR,TextInput:GR,SidePanelCollapsible:nL,RadioSelection:dL,GeoChartRegionSelectSection:LL},GK={useDragAndDropListItems:zI,useHighlights:lR,useHighlightsOnHover:cR},KK={useStoreProvider:qd,DependencyContainer:Ud,CellPopoverStore:nM,ComposerFocusStore:nf,CellComposerStore:_B,FindAndReplaceStore:IR,HighlightStore:uC,DelayedHoveredCellStore:tM,HoveredTableStore:zB,ModelStore:Qd,NotificationStore:dC,RendererStore:$d,SelectionInputStore:qI,SpreadsheetStore:ef,useStore:V,useLocalStore:Jd,SidePanelStore:sV,PivotSidePanelStore:wz,PivotMeasureDisplayPanelStore:BR};function qK(e,t){return ix.add(e,t),{addFunction:(e,t)=>qK(e,t)}}let JK={DEFAULT_LOCALE:k,HIGHLIGHT_COLOR:_,PIVOT_TABLE_CONFIG:et,ChartTerms:dw},YK={...hD,...nE};e.AbstractCellClipboardHandler=gl,e.AbstractChart=US,e.AbstractFigureClipboardHandler=Ad,e.CellErrorType=j,e.CommandResult=fa,e.CorePlugin=mV,e.CoreViewPlugin=RV,e.DispatchResult=ua,e.EvaluationError=M,e.Model=LK,e.PivotRuntimeDefinition=tz,e.Registry=h,e.Revision=tU,e.SPREADSHEET_DIMENSIONS=BK,e.Spreadsheet=VW,e.SpreadsheetPivotTable=iz,e.UIPlugin=bH,e.__info__=zK,e.addFunction=qK,e.addRenderingLayer=_a,e.astToFormula=zv,e.chartHelpers=YK,e.compile=bx,e.compileTokens=xx,e.components=WK,e.constants=JK,e.convertAstNodes=Fv,e.coreTypes=sa,e.findCellInNewZone=kr,e.functionCache=yx,e.helpers=HK,e.hooks=GK,e.invalidateCFEvaluationCommands=ia,e.invalidateChartEvaluationCommands=na,e.invalidateDependenciesCommands=ra,e.invalidateEvaluationCommands=ta,e.iterateAstNodes=Iv,e.links=UK,e.load=Ej,e.parse=Nv,e.parseTokens=Pv,e.readonlyAllowedCommands=oa,e.registries=VK,e.setDefaultSheetViewSize=Qe,e.setTranslationMethod=Ki,e.stores=KK,e.tokenColors=mC,e.tokenize=bl,zK.version=`18.3.56`,zK.date=`2026-07-20T10:59:22.640Z`,zK.hash=`a8d15b9`})(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.3.55
5
- @date 2026-07-13T06:26:10.331Z
6
- @hash dc14a7c
4
+ @version 18.3.56
5
+ @date 2026-07-20T10:59:23.417Z
6
+ @hash a8d15b9
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "18.3.55",
3
+ "version": "18.3.56",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",