@odoo/o-spreadsheet 18.4.38 → 18.4.39

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.38
6
- * @date 2026-05-11T13:46:00.483Z
7
- * @hash dafe57f
5
+ * @version 18.4.39
6
+ * @date 2026-05-12T12:17:38.999Z
7
+ * @hash e8a3b47
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -75453,6 +75453,6 @@ exports.stores = stores;
75453
75453
  exports.tokenColors = tokenColors;
75454
75454
  exports.tokenize = tokenize;
75455
75455
 
75456
- __info__.version = "18.4.38";
75457
- __info__.date = "2026-05-11T13:46:00.483Z";
75458
- __info__.hash = "dafe57f";
75456
+ __info__.version = "18.4.39";
75457
+ __info__.date = "2026-05-12T12:17:38.999Z";
75458
+ __info__.hash = "e8a3b47";
@@ -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.38
6
- * @date 2026-05-11T13:46:02.052Z
7
- * @hash dafe57f
5
+ * @version 18.4.39
6
+ * @date 2026-05-12T12:17:40.663Z
7
+ * @hash e8a3b47
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.38
6
- * @date 2026-05-11T13:46:00.483Z
7
- * @hash dafe57f
5
+ * @version 18.4.39
6
+ * @date 2026-05-12T12:17:38.999Z
7
+ * @hash e8a3b47
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";
@@ -75219,6 +75219,6 @@ const chartHelpers = {
75219
75219
  //#endregion
75220
75220
  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 };
75221
75221
 
75222
- __info__.version = "18.4.38";
75223
- __info__.date = "2026-05-11T13:46:00.483Z";
75224
- __info__.hash = "dafe57f";
75222
+ __info__.version = "18.4.39";
75223
+ __info__.date = "2026-05-12T12:17:38.999Z";
75224
+ __info__.hash = "e8a3b47";
@@ -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.38
6
- * @date 2026-05-11T13:46:00.483Z
7
- * @hash dafe57f
5
+ * @version 18.4.39
6
+ * @date 2026-05-12T12:17:38.999Z
7
+ * @hash e8a3b47
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -75270,8 +75270,8 @@ exports.stores = stores;
75270
75270
  exports.tokenColors = tokenColors;
75271
75271
  exports.tokenize = tokenize;
75272
75272
 
75273
- __info__.version = "18.4.38";
75274
- __info__.date = "2026-05-11T13:46:00.483Z";
75275
- __info__.hash = "dafe57f";
75273
+ __info__.version = "18.4.39";
75274
+ __info__.date = "2026-05-12T12:17:38.999Z";
75275
+ __info__.hash = "e8a3b47";
75276
75276
 
75277
75277
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -3409,4 +3409,4 @@ You can download it directly instead.`,5),sticky:!1,type:`warning`});return}r=aw
3409
3409
  <Relationships xmlns="${bf.Relationships}">
3410
3410
  <Relationship ${K(e)} />
3411
3411
  </Relationships>
3412
- `),`_rels/.rels`)}function yJ(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 bJ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>js(ps(e.range)).numberOfRows>1);return e}var xJ=class extends Rd{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 gl,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),ir(),r=_N(e,r);let s=lN(e,a);this.state=new LK,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new vH(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 FK(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 oG.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of lG.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of cG.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of sG.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 oW(jK({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 RG;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(SJ(e,t));dispatch=(e,t)=>{let n=SJ(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=SJ(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 nH||r.beforeHandle(t);for(let r of e)!n&&r instanceof nH||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=wN();for(let t of this.handlers)t instanceof nH&&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=EN();for(let t of this.handlers)t instanceof tH&&t.exportForExcel(e);return e=b(e),uJ(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function SJ(e,t={}){let n=b(t);return n.type=e,n}let CJ={},wJ={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},TJ={autoCompleteProviders:PO,autofillModifiersRegistry:dU,autofillRulesRegistry:fU,cellMenuRegistry:KI,colMenuRegistry:uR,errorTypes:Ri,linkMenuRegistry:Fk,functionRegistry:Ix,featurePluginRegistry:sG,iconsOnCellRegistry:tU,statefulUIPluginRegistry:cG,coreViewsPluginRegistry:lG,corePluginRegistry:oG,rowMenuRegistry:_R,sidePanelRegistry:GV,figureRegistry:sO,chartSidePanelComponentRegistry:sB,chartComponentRegistry:pD,chartRegistry:fD,chartSubtypeRegistry:hD,topbarMenuRegistry:IG,topbarComponentRegistry:LG,clickableCellRegistry:mG,otRegistry:EU,inverseCommandRegistry:hG,urlRegistry:Ir,cellPopoverRegistry:uO,numberFormatMenuRegistry:jG,repeatLocalCommandTransformRegistry:VW,repeatCommandTransformRegistry:BW,clipboardHandlersRegistries:Fd,pivotRegistry:bV,pivotTimeAdapterRegistry:Uu,pivotSidePanelRegistry:EV,pivotNormalizationValueRegistry:bd,supportedPivotPositionalFormulaRegistry:QV,pivotToFunctionValueRegistry:xd,migrationStepRegistry:iN,chartJsExtensionRegistry:lf},EJ={arg:U,isEvaluationError:j,toBoolean:P,toJsDate:F,toNumber:M,toString:N,toNormalizedPivotValue:gd,toFunctionPivotValue:vd,toXC:T,toZone:ps,toUnboundedZone:fs,toCartesian:Zn,numberToLetters:Hn,lettersToNumber:Un,UuidGenerator:gl,formatValue:L,createCurrencyFormat:ko,ColorGenerator:In,computeTextWidth:$c,createEmptyWorkbookData:wN,createEmptySheet:CN,createEmptyExcelSheet:TN,rgbaToHex:mn,colorToRGBA:hn,positionToZone:z,isDefined:C,isMatrix:Or,lazy:kt,genericRepeat:HW,createAction:m,createActions:f,transformRangeData:Ld,deepEquals:w,overlap:Ds,union:Cs,isInside:ks,deepCopy:b,expandZoneOnInsertion:ys,reduceZoneOnDeletion:Ss,unquote:lt,getMaxObjectId:cd,getFunctionsFromTokens:sS,getFirstPivotFunction:QB,getNumberOfPivotFunctions:$B,parseDimension:dd,isDateOrDatetimeField:fd,makeFieldProposal:qB,insertTokenAfterArgSeparator:YB,insertTokenAfterLeftParenthesis:XB,mergeContiguousZones:Qs,getPivotHighlights:AB,pivotTimeAdapter:Wu,UNDO_REDO_PIVOT_COMMANDS:cU,createPivotFormula:hd,areDomainArgsFieldsValid:md,splitReference:vc,sanitizeSheetName:dt,getUniqueText:$t,isNumber:Pi,isDateTime:ni},DJ={isMarkdownLink:_t,parseMarkdownLink:bt,markdownLink:yt,openLink:Vr,urlRepresentation:Br},OJ={Checkbox:vk,Section:X,RoundColorPicker:rk,ChartDataSeries:gz,ChartErrorSection:_z,ChartLabelRange:vz,ChartTitle:Ez,ChartPanel:uB,ChartFigure:aO,ChartJsComponent:xC,Grid:ZV,GridOverlay:JR,ScorecardChart:RC,LineConfigPanel:Kz,BarConfigPanel:bz,PieChartDesignPanel:Yz,GenericChartConfigPanel:yz,ChartWithAxisDesignPanel:Pz,LineChartDesignPanel:qz,GaugeChartConfigPanel:zz,GaugeChartDesignPanel:Bz,ScorecardChartConfigPanel:Qz,ScorecardChartDesignPanel:$z,GeoChartDesignPanel:Wz,RadarChartDesignPanel:Xz,WaterfallChartDesignPanel:oB,ComboChartDesignPanel:Iz,FunnelChartDesignPanel:Rz,ChartTypePicker:cB,FigureComponent:cO,MenuPopover:rO,Popover:$D,SelectionInput:fk,ValidationMessages:zR,AddDimensionButton:FB,PivotDimensionGranularity:zB,PivotDimensionOrder:BB,PivotDimension:RB,PivotLayoutConfigurator:WB,PivotHTMLRenderer:eH,PivotDeferUpdate:MB,PivotTitleSection:GB,CogWheelMenu:LB,TextInput:IB,SidePanelCollapsible:mO,RadioSelection:Oz,GeoChartRegionSelectSection:Vz,ChartDashboardMenu:iO,FullScreenChart:$V},kJ={useDragAndDropListItems:ak,useHighlights:pB,useHighlightsOnHover:fB},AJ={useStoreProvider:Ud,DependencyContainer:zd,CellPopoverStore:Ck,ComposerFocusStore:Qd,CellComposerStore:ER,FindAndReplaceStore:wB,HighlightStore:IO,DelayedHoveredCellStore:lO,HoveredTableStore:GR,ModelStore:Jd,NotificationStore:LO,RendererStore:Yd,SelectionInputStore:dk,SpreadsheetStore:Xd,useStore:B,useLocalStore:Wd,SidePanelStore:qV,PivotSidePanelStore:wV,PivotMeasureDisplayPanelStore:OB,ClientFocusStore:yR,GridRenderer:nz};function jJ(e,t){return Ix.add(e,t),{addFunction:(e,t)=>jJ(e,t)}}let MJ={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:jw},NJ={...SD,...CE};e.AbstractCellClipboardHandler=Dl,e.AbstractChart=SC,e.AbstractFigureClipboardHandler=Ed,e.CellErrorType=k,e.ClientDisconnectedError=aW,e.CommandResult=Cr,e.CorePlugin=nH,e.CoreViewPlugin=EH,e.DispatchResult=xr,e.EvaluationError=A,e.LocalTransportService=RG,e.Model=xJ,e.PivotRuntimeDefinition=eV,e.Registry=g,e.Revision=iW,e.SPREADSHEET_DIMENSIONS=wJ,e.Spreadsheet=CK,e.SpreadsheetPivotTable=iV,e.UIPlugin=SU,e.__info__=CJ,e.addFunction=jJ,e.addRenderingLayer=jr,e.astToFormula=gy,e.chartHelpers=NJ,e.compile=Qx,e.compileTokens=$x,e.components=OJ,e.constants=MJ,e.convertAstNodes=fy,e.coreTypes=vr,e.findCellInNewZone=Bs,e.functionCache=Zx,e.helpers=EJ,e.hooks=kJ,e.invalidateCFEvaluationCommands=hr,e.invalidateChartEvaluationCommands=pr,e.invalidateDependenciesCommands=mr,e.invalidateEvaluationCommands=fr,e.iterateAstNodes=py,e.links=DJ,e.load=lN,e.parse=uy,e.parseTokens=dy,e.readonlyAllowedCommands=_r,e.registries=TJ,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=rr,e.stores=AJ,e.tokenColors=VO,e.tokenize=jl,CJ.version=`18.4.38`,CJ.date=`2026-05-11T13:46:00.483Z`,CJ.hash=`dafe57f`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3412
+ `),`_rels/.rels`)}function yJ(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 bJ(e){for(let t of e.sheets)t.tables=t.tables.filter(e=>js(ps(e.range)).numberOfRows>1);return e}var xJ=class extends Rd{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 gl,a=!1){let o=performance.now();console.debug(`##### Model creation #####`),super(),ir(),r=_N(e,r);let s=lN(e,a);this.state=new LK,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(s.revisionId),this.coreGetters={},this.range=new vH(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 FK(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 oG.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of lG.getAll()){let t=this.setupCoreViewPlugin(e);this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of cG.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of sG.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 oW(jK({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 RG;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(SJ(e,t));dispatch=(e,t)=>{let n=SJ(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=SJ(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 nH||r.beforeHandle(t);for(let r of e)!n&&r instanceof nH||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=wN();for(let t of this.handlers)t instanceof nH&&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=EN();for(let t of this.handlers)t instanceof tH&&t.exportForExcel(e);return e=b(e),uJ(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function SJ(e,t={}){let n=b(t);return n.type=e,n}let CJ={},wJ={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},TJ={autoCompleteProviders:PO,autofillModifiersRegistry:dU,autofillRulesRegistry:fU,cellMenuRegistry:KI,colMenuRegistry:uR,errorTypes:Ri,linkMenuRegistry:Fk,functionRegistry:Ix,featurePluginRegistry:sG,iconsOnCellRegistry:tU,statefulUIPluginRegistry:cG,coreViewsPluginRegistry:lG,corePluginRegistry:oG,rowMenuRegistry:_R,sidePanelRegistry:GV,figureRegistry:sO,chartSidePanelComponentRegistry:sB,chartComponentRegistry:pD,chartRegistry:fD,chartSubtypeRegistry:hD,topbarMenuRegistry:IG,topbarComponentRegistry:LG,clickableCellRegistry:mG,otRegistry:EU,inverseCommandRegistry:hG,urlRegistry:Ir,cellPopoverRegistry:uO,numberFormatMenuRegistry:jG,repeatLocalCommandTransformRegistry:VW,repeatCommandTransformRegistry:BW,clipboardHandlersRegistries:Fd,pivotRegistry:bV,pivotTimeAdapterRegistry:Uu,pivotSidePanelRegistry:EV,pivotNormalizationValueRegistry:bd,supportedPivotPositionalFormulaRegistry:QV,pivotToFunctionValueRegistry:xd,migrationStepRegistry:iN,chartJsExtensionRegistry:lf},EJ={arg:U,isEvaluationError:j,toBoolean:P,toJsDate:F,toNumber:M,toString:N,toNormalizedPivotValue:gd,toFunctionPivotValue:vd,toXC:T,toZone:ps,toUnboundedZone:fs,toCartesian:Zn,numberToLetters:Hn,lettersToNumber:Un,UuidGenerator:gl,formatValue:L,createCurrencyFormat:ko,ColorGenerator:In,computeTextWidth:$c,createEmptyWorkbookData:wN,createEmptySheet:CN,createEmptyExcelSheet:TN,rgbaToHex:mn,colorToRGBA:hn,positionToZone:z,isDefined:C,isMatrix:Or,lazy:kt,genericRepeat:HW,createAction:m,createActions:f,transformRangeData:Ld,deepEquals:w,overlap:Ds,union:Cs,isInside:ks,deepCopy:b,expandZoneOnInsertion:ys,reduceZoneOnDeletion:Ss,unquote:lt,getMaxObjectId:cd,getFunctionsFromTokens:sS,getFirstPivotFunction:QB,getNumberOfPivotFunctions:$B,parseDimension:dd,isDateOrDatetimeField:fd,makeFieldProposal:qB,insertTokenAfterArgSeparator:YB,insertTokenAfterLeftParenthesis:XB,mergeContiguousZones:Qs,getPivotHighlights:AB,pivotTimeAdapter:Wu,UNDO_REDO_PIVOT_COMMANDS:cU,createPivotFormula:hd,areDomainArgsFieldsValid:md,splitReference:vc,sanitizeSheetName:dt,getUniqueText:$t,isNumber:Pi,isDateTime:ni},DJ={isMarkdownLink:_t,parseMarkdownLink:bt,markdownLink:yt,openLink:Vr,urlRepresentation:Br},OJ={Checkbox:vk,Section:X,RoundColorPicker:rk,ChartDataSeries:gz,ChartErrorSection:_z,ChartLabelRange:vz,ChartTitle:Ez,ChartPanel:uB,ChartFigure:aO,ChartJsComponent:xC,Grid:ZV,GridOverlay:JR,ScorecardChart:RC,LineConfigPanel:Kz,BarConfigPanel:bz,PieChartDesignPanel:Yz,GenericChartConfigPanel:yz,ChartWithAxisDesignPanel:Pz,LineChartDesignPanel:qz,GaugeChartConfigPanel:zz,GaugeChartDesignPanel:Bz,ScorecardChartConfigPanel:Qz,ScorecardChartDesignPanel:$z,GeoChartDesignPanel:Wz,RadarChartDesignPanel:Xz,WaterfallChartDesignPanel:oB,ComboChartDesignPanel:Iz,FunnelChartDesignPanel:Rz,ChartTypePicker:cB,FigureComponent:cO,MenuPopover:rO,Popover:$D,SelectionInput:fk,ValidationMessages:zR,AddDimensionButton:FB,PivotDimensionGranularity:zB,PivotDimensionOrder:BB,PivotDimension:RB,PivotLayoutConfigurator:WB,PivotHTMLRenderer:eH,PivotDeferUpdate:MB,PivotTitleSection:GB,CogWheelMenu:LB,TextInput:IB,SidePanelCollapsible:mO,RadioSelection:Oz,GeoChartRegionSelectSection:Vz,ChartDashboardMenu:iO,FullScreenChart:$V},kJ={useDragAndDropListItems:ak,useHighlights:pB,useHighlightsOnHover:fB},AJ={useStoreProvider:Ud,DependencyContainer:zd,CellPopoverStore:Ck,ComposerFocusStore:Qd,CellComposerStore:ER,FindAndReplaceStore:wB,HighlightStore:IO,DelayedHoveredCellStore:lO,HoveredTableStore:GR,ModelStore:Jd,NotificationStore:LO,RendererStore:Yd,SelectionInputStore:dk,SpreadsheetStore:Xd,useStore:B,useLocalStore:Wd,SidePanelStore:qV,PivotSidePanelStore:wV,PivotMeasureDisplayPanelStore:OB,ClientFocusStore:yR,GridRenderer:nz};function jJ(e,t){return Ix.add(e,t),{addFunction:(e,t)=>jJ(e,t)}}let MJ={DEFAULT_LOCALE:D,HIGHLIGHT_COLOR:v,PIVOT_TABLE_CONFIG:tt,ChartTerms:jw},NJ={...SD,...CE};e.AbstractCellClipboardHandler=Dl,e.AbstractChart=SC,e.AbstractFigureClipboardHandler=Ed,e.CellErrorType=k,e.ClientDisconnectedError=aW,e.CommandResult=Cr,e.CorePlugin=nH,e.CoreViewPlugin=EH,e.DispatchResult=xr,e.EvaluationError=A,e.LocalTransportService=RG,e.Model=xJ,e.PivotRuntimeDefinition=eV,e.Registry=g,e.Revision=iW,e.SPREADSHEET_DIMENSIONS=wJ,e.Spreadsheet=CK,e.SpreadsheetPivotTable=iV,e.UIPlugin=SU,e.__info__=CJ,e.addFunction=jJ,e.addRenderingLayer=jr,e.astToFormula=gy,e.chartHelpers=NJ,e.compile=Qx,e.compileTokens=$x,e.components=OJ,e.constants=MJ,e.convertAstNodes=fy,e.coreTypes=vr,e.findCellInNewZone=Bs,e.functionCache=Zx,e.helpers=EJ,e.hooks=kJ,e.invalidateCFEvaluationCommands=hr,e.invalidateChartEvaluationCommands=pr,e.invalidateDependenciesCommands=mr,e.invalidateEvaluationCommands=fr,e.iterateAstNodes=py,e.links=DJ,e.load=lN,e.parse=uy,e.parseTokens=dy,e.readonlyAllowedCommands=_r,e.registries=TJ,e.setDefaultSheetViewSize=$e,e.setTranslationMethod=rr,e.stores=AJ,e.tokenColors=VO,e.tokenize=jl,CJ.version=`18.4.39`,CJ.date=`2026-05-12T12:17:38.999Z`,CJ.hash=`e8a3b47`})(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.38
5
- @date 2026-05-11T13:46:01.273Z
6
- @hash dafe57f
4
+ @version 18.4.39
5
+ @date 2026-05-12T12:17:39.814Z
6
+ @hash e8a3b47
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.4.38",
3
+ "version": "18.4.39",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",
@@ -28,7 +28,7 @@
28
28
  "test:watch": "jest --watch",
29
29
  "prettier": "prettier . --write",
30
30
  "check-formatting": "prettier . --check && eslint",
31
- "postinstall": "husky install",
31
+ "prepare": "husky install",
32
32
  "watch": "npm-run-all -p watch:*",
33
33
  "watch:bundle": "npm run bundle:iife -- --watch",
34
34
  "watch:ts": "npm run build:js -- --watch",
@@ -87,7 +87,7 @@
87
87
  "jszip": "^3.6.0",
88
88
  "lint-staged": "^12.1.2",
89
89
  "live-server": "^1.2.1",
90
- "luxon": "^3.5.0",
90
+ "luxon": "3.5.0",
91
91
  "minimist": "^1.2.8",
92
92
  "mockdate": "^3.0.2",
93
93
  "node-watch": "^0.7.3",
@@ -135,8 +135,8 @@
135
135
  "xmlSelfClosingSpace": false
136
136
  },
137
137
  "dependencies": {
138
- "@odoo/owl": "2.8.1",
139
- "bootstrap": "^5.3.3",
138
+ "@odoo/owl": "2.8.2",
139
+ "bootstrap": "5.3.3",
140
140
  "font-awesome": "^4.7.0",
141
141
  "rbush": "^3.0.1"
142
142
  },