@odoo/o-spreadsheet 17.0.99 → 17.0.100

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 17.0.99
6
- * @date 2026-05-27T05:56:40.513Z
7
- * @hash 54d8c62
5
+ * @version 17.0.100
6
+ * @date 2026-06-06T06:18:41.503Z
7
+ * @hash 55a7453
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -51096,6 +51096,6 @@ exports.setDefaultSheetViewSize = setDefaultSheetViewSize;
51096
51096
  exports.setTranslationMethod = setTranslationMethod;
51097
51097
  exports.tokenize = tokenize;
51098
51098
 
51099
- __info__.version = "17.0.99";
51100
- __info__.date = "2026-05-27T05:56:40.513Z";
51101
- __info__.hash = "54d8c62";
51099
+ __info__.version = "17.0.100";
51100
+ __info__.date = "2026-06-06T06:18:41.503Z";
51101
+ __info__.hash = "55a7453";
@@ -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 17.0.99
6
- * @date 2026-05-27T05:56:40.513Z
7
- * @hash 54d8c62
5
+ * @version 17.0.100
6
+ * @date 2026-06-06T06:18:41.503Z
7
+ * @hash 55a7453
8
8
  */
9
9
 
10
10
  import { Component, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, useChildSubEnv, useComponent, useEffect, useExternalListener, useRef, useState, useSubEnv, xml } from "@odoo/owl";
@@ -50875,6 +50875,6 @@ const constants = { DEFAULT_LOCALE };
50875
50875
  //#endregion
50876
50876
  export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
50877
50877
 
50878
- __info__.version = "17.0.99";
50879
- __info__.date = "2026-05-27T05:56:40.513Z";
50880
- __info__.hash = "54d8c62";
50878
+ __info__.version = "17.0.100";
50879
+ __info__.date = "2026-06-06T06:18:41.503Z";
50880
+ __info__.hash = "55a7453";
@@ -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 17.0.99
6
- * @date 2026-05-27T05:56:40.513Z
7
- * @hash 54d8c62
5
+ * @version 17.0.100
6
+ * @date 2026-06-06T06:18:41.503Z
7
+ * @hash 55a7453
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -50913,8 +50913,8 @@ exports.setDefaultSheetViewSize = setDefaultSheetViewSize;
50913
50913
  exports.setTranslationMethod = setTranslationMethod;
50914
50914
  exports.tokenize = tokenize;
50915
50915
 
50916
- __info__.version = "17.0.99";
50917
- __info__.date = "2026-05-27T05:56:40.513Z";
50918
- __info__.hash = "54d8c62";
50916
+ __info__.version = "17.0.100";
50917
+ __info__.date = "2026-06-06T06:18:41.503Z";
50918
+ __info__.hash = "55a7453";
50919
50919
 
50920
50920
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -2674,4 +2674,4 @@
2674
2674
  <Relationships xmlns="${Hw.Relationships}">
2675
2675
  <Relationship ${Y(e)} />
2676
2676
  </Relationships>
2677
- `),`_rels/.rels`)}var AN=class extends Bk{corePlugins=[];featurePlugins=[];statefulUIPlugins=[];coreViewsPlugins=[];range;session;isReplayingCommand=!1;renderers=[];status=0;config;corePluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},n={},r=[],i=new ko,a=!0){super(),v(),r=TO(e,r);let o=yO(e,a);this.state=new fM,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(o.revisionId),this.coreGetters={},this.range=new uk(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new dM(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of yj.getAll())this.setupCorePlugin(e,o);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of Sj.getAll()){let t=this.setupUiPlugin(e);this.coreViewsPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of xj.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of bj.getAll()){let t=this.setupUiPlugin(e);this.featurePlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}this.uuidGenerator.setIsFastStrategy(!1),this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),n.snapshotRequested&&(this.session.snapshot(this.exportData()),this.garbageCollectExternalResources()),(0,t.markRaw)(this)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:vt(()=>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)}let n=e.layers.map(e=>[t,e]);return this.renderers.push(...n),this.renderers.sort((e,t)=>e[1]-t[1]),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 uA(sM({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:y(`Anonymous`).toString()},n=e.transportService||new Qj;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})}}setupExternalConfig(e){let t=e.loadLocales||(()=>Promise.resolve(hr));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,uuidGenerator:this.uuidGenerator,custom:this.config.custom,external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrencyFormat:this.config.defaultCurrencyFormat}}checkDispatchAllowed(e){let t=ur(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new fr(t.flat()):fr.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}canDispatch=(e,t)=>this.checkDispatchAllowed(jN(e,t));dispatch=(e,t)=>{let n=jN(e,t),r=this.status;if(this.getters.isReadonly()&&!dr(n))return new fr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new fr(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{ur(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize()});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(ur(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(ur(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return fr.Success};dispatchFromCorePlugin=(e,t)=>{let n=jN(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,fr.Success};dispatchToHandlers(e,t){let n=ur(t);for(let r of e)!n&&r instanceof IO||r.beforeHandle(t);for(let r of e)!n&&r instanceof IO||r.handle(t)}drawGrid(e){for(let[t,n]of this.renderers)e.ctx.save(),t.drawGrid(e,n),e.ctx.restore()}exportData(){let e=MO();for(let t of this.handlers)t instanceof IO&&t.export(e);return e.revisionId=this.session.getRevisionId()||`START_REVISION`,e=S(e),e}updateMode(e){e!==`normal`&&this.dispatch(`CANCEL_EDITION`),this.config.mode=e,this.trigger(`update`)}exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=PO();for(let t of this.handlers)t instanceof FO&&t.exportForExcel(e);return e=S(e),xN(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function jN(e,t={}){let n=S(t);return n.type=e,n}let MN={},NN={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},PN={autofillModifiersRegistry:Ss,autofillRulesRegistry:Cs,cellMenuRegistry:db,colMenuRegistry:rS,linkMenuRegistry:sl,functionRegistry:Ny,featurePluginRegistry:bj,statefulUIPluginRegistry:xj,coreViewsPluginRegistry:Sj,corePluginRegistry:yj,rowMenuRegistry:oS,sidePanelRegistry:bC,figureRegistry:wu,chartSidePanelComponentRegistry:kS,chartComponentRegistry:vu,chartRegistry:_u,topbarMenuRegistry:cS,topbarComponentRegistry:xC,clickableCellRegistry:Cj,otRegistry:lS,inverseCommandRegistry:Au,urlRegistry:qa,cellPopoverRegistry:ul,numberFormatMenuRegistry:iS,repeatLocalCommandTransformRegistry:WA,repeatCommandTransformRegistry:$},FN={arg:K,toBoolean:F,toJsDate:I,toNumber:N,toString:P,toXC:O,toZone:ea,toUnboundedZone:Qi,toCartesian:rn,numberToLetters:D,lettersToNumber:en,UuidGenerator:ko,formatValue:z,createCurrencyFormat:Ei,computeTextWidth:_o,createEmptyWorkbookData:MO,createEmptySheet:jO,createEmptyExcelSheet:NO,getDefaultChartJsRuntime:Dl,chartFontColor:Jo,ChartColors:qo,EvaluationError:b,CellErrorLevel:te,getFillingMode:Ml,rgbaToHex:Kt,colorToRGBA:qt,positionToZone:V,isDefined:T,isMatrix:j,lazy:vt,genericRepeat:GA,createAction:Mo,createActions:Ao,transformRangeData:Po,deepEquals:E,isNumber:Yn,isDateTime:_n},IN={isMarkdownLink:at,parseMarkdownLink:ct,markdownLink:st,openLink:Qa,urlRepresentation:Za},LN={ChartPanel:AS,ChartFigure:bu,ChartJsComponent:Fo,Grid:Lw,GridOverlay:bw,ScorecardChart:xs,LineConfigPanel:TS,LineBarPieDesignPanel:xS,BarConfigPanel:gS,LineBarPieConfigPanel:hS,GaugeChartConfigPanel:CS,GaugeChartDesignPanel:wS,ScorecardChartConfigPanel:DS,ScorecardChartDesignPanel:OS,FigureComponent:SC,Menu:pc,SelectionInput:pS},RN={useDragAndDropListItems:FS};function zN(e,t){return Ny.add(e,t),{addFunction:(e,t)=>zN(e,t)}}let BN={DEFAULT_LOCALE:A};e.AbstractChart=Io,e.CommandResult=mr,e.CorePlugin=IO,e.DispatchResult=fr,e.EvaluationError=b,e.Model=AN,e.Registry=H,e.Revision=cA,e.SPREADSHEET_DIMENSIONS=NN,e.Spreadsheet=Zj,e.UIPlugin=Q,e.__info__=MN,e.addFunction=zN,e.astToFormula=ET,e.compile=NT,e.compileTokens=PT,e.components=LN,e.constants=BN,e.convertAstNodes=ST,e.coreTypes=lr,e.findCellInNewZone=Ta,e.functionCache=MT,e.helpers=FN,e.hooks=RN,e.invalidateCFEvaluationCommands=sr,e.invalidateDependenciesCommands=or,e.invalidateEvaluationCommands=ar,e.iterateAstNodes=CT,e.links=IN,e.load=yO,e.parse=bT,e.parseTokens=xT,e.readonlyAllowedCommands=cr,e.registries=PN,e.setDefaultSheetViewSize=Ke,e.setTranslationMethod=_,e.tokenize=vc,MN.version=`17.0.99`,MN.date=`2026-05-27T05:56:40.513Z`,MN.hash=`54d8c62`})(this.o_spreadsheet=this.o_spreadsheet||{},owl);
2677
+ `),`_rels/.rels`)}var AN=class extends Bk{corePlugins=[];featurePlugins=[];statefulUIPlugins=[];coreViewsPlugins=[];range;session;isReplayingCommand=!1;renderers=[];status=0;config;corePluginConfig;uiPluginConfig;state;selection;getters;coreGetters;uuidGenerator;handlers=[];uiHandlers=[];coreHandlers=[];constructor(e={},n={},r=[],i=new ko,a=!0){super(),v(),r=TO(e,r);let o=yO(e,a);this.state=new fM,this.uuidGenerator=i,this.config=this.setupConfig(n),this.session=this.setupSession(o.revisionId),this.coreGetters={},this.range=new uk(this.coreGetters),this.coreGetters.getRangeString=this.range.getRangeString.bind(this.range),this.coreGetters.getRangeFromSheetXC=this.range.getRangeFromSheetXC.bind(this.range),this.coreGetters.createAdaptedRanges=this.range.createAdaptedRanges.bind(this.range),this.coreGetters.getRangeDataFromXc=this.range.getRangeDataFromXc.bind(this.range),this.coreGetters.getRangeDataFromZone=this.range.getRangeDataFromZone.bind(this.range),this.coreGetters.getRangeFromRangeData=this.range.getRangeFromRangeData.bind(this.range),this.coreGetters.getRangeFromZone=this.range.getRangeFromZone.bind(this.range),this.getters={isReadonly:()=>this.config.mode===`readonly`||this.config.mode===`dashboard`,isDashboard:()=>this.config.mode===`dashboard`},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new dM(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range),this.corePluginConfig=this.setupCorePluginConfig(),this.uiPluginConfig=this.setupUiPluginConfig();for(let e of yj.getAll())this.setupCorePlugin(e,o);Object.assign(this.getters,this.coreGetters),this.session.loadInitialMessages(r);for(let e of Sj.getAll()){let t=this.setupUiPlugin(e);this.coreViewsPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t),this.coreHandlers.push(t)}for(let e of xj.getAll()){let t=this.setupUiPlugin(e);this.statefulUIPlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}for(let e of bj.getAll()){let t=this.setupUiPlugin(e);this.featurePlugins.push(t),this.handlers.push(t),this.uiHandlers.push(t)}this.uuidGenerator.setIsFastStrategy(!1),this.dispatch(`START`),this.selection.observe(this,{handleEvent:()=>this.trigger(`update`)}),this.setupSessionEvents(),this.joinSession(),n.snapshotRequested&&(this.session.snapshot(this.exportData()),this.garbageCollectExternalResources()),(0,t.markRaw)(this)}joinSession(){this.session.join(this.config.client)}async leaveSession(){let e=this.getters.isReadonly()?void 0:vt(()=>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)}let n=e.layers.map(e=>[t,e]);return this.renderers.push(...n),this.renderers.sort((e,t)=>e[1]-t[1]),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 uA(sM({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:y(`Anonymous`).toString()},n=e.transportService||new Qj;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})}}setupExternalConfig(e){let t=e.loadLocales||(()=>Promise.resolve(hr));return{...e,loadLocales:t}}setupCorePluginConfig(){return{getters:this.coreGetters,stateObserver:this.state,range:this.range,dispatch:this.dispatchFromCorePlugin,uuidGenerator:this.uuidGenerator,custom:this.config.custom,external:this.config.external}}setupUiPluginConfig(){return{getters:this.getters,stateObserver:this.state,dispatch:this.dispatch,selection:this.selection,moveClient:this.session.move.bind(this.session),custom:this.config.custom,uiActions:this.config,session:this.session,defaultCurrencyFormat:this.config.defaultCurrencyFormat}}checkDispatchAllowed(e){let t=ur(e)?this.checkDispatchAllowedCoreCommand(e):this.checkDispatchAllowedLocalCommand(e);return t.some(e=>e!==`Success`)?new fr(t.flat()):fr.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}canDispatch=(e,t)=>this.checkDispatchAllowed(jN(e,t));dispatch=(e,t)=>{let n=jN(e,t),r=this.status;if(this.getters.isReadonly()&&!dr(n))return new fr(`Readonly`);if(!this.session.canApplyOptimisticUpdate())return new fr(`WaitingSessionConfirmation`);switch(r){case 0:let t=this.checkDispatchAllowed(n);if(!t.isSuccessful)return t;this.status=1;let{changes:r,commands:i}=this.state.recordChanges(()=>{ur(n)&&this.state.addCommand(n),this.dispatchToHandlers(this.handlers,n),this.finalize()});this.session.save(n,i,r),this.status=0,this.trigger(`update`);break;case 1:if(ur(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(ur(n))throw Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,n)}return fr.Success};dispatchFromCorePlugin=(e,t)=>{let n=jN(e,t),r=this.status;this.status=2;let i=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(i,n),this.status=r,fr.Success};dispatchToHandlers(e,t){let n=ur(t);for(let r of e)!n&&r instanceof IO||r.beforeHandle(t);for(let r of e)!n&&r instanceof IO||r.handle(t)}drawGrid(e){for(let[t,n]of this.renderers)e.ctx.save(),t.drawGrid(e,n),e.ctx.restore()}exportData(){let e=MO();for(let t of this.handlers)t instanceof IO&&t.export(e);return e.revisionId=this.session.getRevisionId()||`START_REVISION`,e=S(e),e}updateMode(e){e!==`normal`&&this.dispatch(`CANCEL_EDITION`),this.config.mode=e,this.trigger(`update`)}exportXLSX(){this.dispatch(`EVALUATE_CELLS`);let e=PO();for(let t of this.handlers)t instanceof FO&&t.exportForExcel(e);return e=S(e),xN(e)}garbageCollectExternalResources(){for(let e of this.corePlugins)e.garbageCollectExternalResources()}};function jN(e,t={}){let n=S(t);return n.type=e,n}let MN={},NN={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:26,HEADER_WIDTH:48,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:96,DEFAULT_CELL_HEIGHT:23,SCROLLBAR_WIDTH:15},PN={autofillModifiersRegistry:Ss,autofillRulesRegistry:Cs,cellMenuRegistry:db,colMenuRegistry:rS,linkMenuRegistry:sl,functionRegistry:Ny,featurePluginRegistry:bj,statefulUIPluginRegistry:xj,coreViewsPluginRegistry:Sj,corePluginRegistry:yj,rowMenuRegistry:oS,sidePanelRegistry:bC,figureRegistry:wu,chartSidePanelComponentRegistry:kS,chartComponentRegistry:vu,chartRegistry:_u,topbarMenuRegistry:cS,topbarComponentRegistry:xC,clickableCellRegistry:Cj,otRegistry:lS,inverseCommandRegistry:Au,urlRegistry:qa,cellPopoverRegistry:ul,numberFormatMenuRegistry:iS,repeatLocalCommandTransformRegistry:WA,repeatCommandTransformRegistry:$},FN={arg:K,toBoolean:F,toJsDate:I,toNumber:N,toString:P,toXC:O,toZone:ea,toUnboundedZone:Qi,toCartesian:rn,numberToLetters:D,lettersToNumber:en,UuidGenerator:ko,formatValue:z,createCurrencyFormat:Ei,computeTextWidth:_o,createEmptyWorkbookData:MO,createEmptySheet:jO,createEmptyExcelSheet:NO,getDefaultChartJsRuntime:Dl,chartFontColor:Jo,ChartColors:qo,EvaluationError:b,CellErrorLevel:te,getFillingMode:Ml,rgbaToHex:Kt,colorToRGBA:qt,positionToZone:V,isDefined:T,isMatrix:j,lazy:vt,genericRepeat:GA,createAction:Mo,createActions:Ao,transformRangeData:Po,deepEquals:E,isNumber:Yn,isDateTime:_n},IN={isMarkdownLink:at,parseMarkdownLink:ct,markdownLink:st,openLink:Qa,urlRepresentation:Za},LN={ChartPanel:AS,ChartFigure:bu,ChartJsComponent:Fo,Grid:Lw,GridOverlay:bw,ScorecardChart:xs,LineConfigPanel:TS,LineBarPieDesignPanel:xS,BarConfigPanel:gS,LineBarPieConfigPanel:hS,GaugeChartConfigPanel:CS,GaugeChartDesignPanel:wS,ScorecardChartConfigPanel:DS,ScorecardChartDesignPanel:OS,FigureComponent:SC,Menu:pc,SelectionInput:pS},RN={useDragAndDropListItems:FS};function zN(e,t){return Ny.add(e,t),{addFunction:(e,t)=>zN(e,t)}}let BN={DEFAULT_LOCALE:A};e.AbstractChart=Io,e.CommandResult=mr,e.CorePlugin=IO,e.DispatchResult=fr,e.EvaluationError=b,e.Model=AN,e.Registry=H,e.Revision=cA,e.SPREADSHEET_DIMENSIONS=NN,e.Spreadsheet=Zj,e.UIPlugin=Q,e.__info__=MN,e.addFunction=zN,e.astToFormula=ET,e.compile=NT,e.compileTokens=PT,e.components=LN,e.constants=BN,e.convertAstNodes=ST,e.coreTypes=lr,e.findCellInNewZone=Ta,e.functionCache=MT,e.helpers=FN,e.hooks=RN,e.invalidateCFEvaluationCommands=sr,e.invalidateDependenciesCommands=or,e.invalidateEvaluationCommands=ar,e.iterateAstNodes=CT,e.links=IN,e.load=yO,e.parse=bT,e.parseTokens=xT,e.readonlyAllowedCommands=cr,e.registries=PN,e.setDefaultSheetViewSize=Ke,e.setTranslationMethod=_,e.tokenize=vc,MN.version=`17.0.100`,MN.date=`2026-06-06T06:18:41.503Z`,MN.hash=`55a7453`})(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 17.0.99
5
- @date 2026-05-27T05:56:41.097Z
6
- @hash 54d8c62
4
+ @version 17.0.100
5
+ @date 2026-06-06T06:18:42.060Z
6
+ @hash 55a7453
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ActionButton">
@@ -2432,6 +2432,7 @@ https://fontawesome.com/license -->
2432
2432
 
2433
2433
  <t t-name="o-spreadsheet-Menu">
2434
2434
  <Popover t-if="menuItemsAndSeparators.length" t-props="popoverProps">
2435
+ <t t-set="shouldDisplayIcons" t-value="this.childrenHaveIcon"/>
2435
2436
  <div
2436
2437
  t-ref="menu"
2437
2438
  class="o-menu"
@@ -2453,7 +2454,7 @@ https://fontawesome.com/license -->
2453
2454
  t-att-class="{ 'o-menu-root': isMenuRoot, 'disabled': !isMenuEnabled, 'o-menu-item-active': isParentMenu(subMenu, menuItem)}"
2454
2455
  t-att-style="getColor(menuItem)">
2455
2456
  <div class="d-flex w-100">
2456
- <div t-if="childrenHaveIcon" class="o-menu-item-icon align-middle flex-shrink-0">
2457
+ <div t-if="shouldDisplayIcons" class="o-menu-item-icon align-middle flex-shrink-0">
2457
2458
  <t t-if="getIconName(menuItem)" t-call="{{getIconName(menuItem)}}"/>
2458
2459
  </div>
2459
2460
  <div class="o-menu-item-name align-middle text-truncate" t-esc="getName(menuItem)"/>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "17.0.99",
3
+ "version": "17.0.100",
4
4
  "description": "A spreadsheet component",
5
5
  "type": "module",
6
6
  "main": "dist/o-spreadsheet.cjs.js",