@odoo/o-spreadsheet 16.0.43 → 16.0.45

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.
@@ -20611,8 +20611,15 @@ class Composer extends owl.Component {
20611
20611
  }
20612
20612
  onPaste(ev) {
20613
20613
  if (this.env.model.getters.getEditionMode() !== "inactive") {
20614
+ // let the browser clipboard work
20614
20615
  ev.stopPropagation();
20615
20616
  }
20617
+ else {
20618
+ // the user meant to paste in the sheet, not open the composer with the pasted content
20619
+ // While we're not editing, we still have the focus and should therefore prevent
20620
+ // the native "paste" to occur.
20621
+ ev.preventDefault();
20622
+ }
20616
20623
  }
20617
20624
  /*
20618
20625
  * Triggered automatically by the content-editable between the keydown and key up
@@ -20622,10 +20629,6 @@ class Composer extends owl.Component {
20622
20629
  if (!this.shouldProcessInputEvents) {
20623
20630
  return;
20624
20631
  }
20625
- if (ev.inputType === "insertFromPaste" &&
20626
- this.env.model.getters.getEditionMode() === "inactive") {
20627
- return;
20628
- }
20629
20632
  ev.stopPropagation();
20630
20633
  let content;
20631
20634
  if (this.env.model.getters.getEditionMode() === "inactive") {
@@ -20942,10 +20945,7 @@ class GridComposer extends owl.Component {
20942
20945
  }
20943
20946
  get containerStyle() {
20944
20947
  if (this.env.model.getters.getEditionMode() === "inactive" || !this.rect) {
20945
- return `
20946
- position: absolute;
20947
- z-index: -1000;
20948
- `;
20948
+ return `z-index: -1000;`;
20949
20949
  }
20950
20950
  const isFormula = this.env.model.getters.getCurrentContent().startsWith("=");
20951
20951
  const cell = this.env.model.getters.getActiveCell();
@@ -21416,7 +21416,7 @@ class FiguresContainer extends owl.Component {
21416
21416
  return containers;
21417
21417
  }
21418
21418
  getContainerStyle(container) {
21419
- const { width: viewWidth, height: viewHeight } = this.env.model.getters.getMainViewportRect();
21419
+ const { width: viewWidth, height: viewHeight } = this.env.model.getters.getSheetViewDimension();
21420
21420
  const { x: viewportX, y: viewportY } = this.env.model.getters.getMainViewportCoordinates();
21421
21421
  const left = ["bottomRight", "topRight"].includes(container) ? viewportX : 0;
21422
21422
  const width = viewWidth - left;
@@ -43331,6 +43331,7 @@ const helpers = {
43331
43331
  rgbaToHex,
43332
43332
  colorToRGBA,
43333
43333
  positionToZone,
43334
+ deepEquals,
43334
43335
  };
43335
43336
  const components = {
43336
43337
  ChartPanel,
@@ -43383,6 +43384,6 @@ exports.setTranslationMethod = setTranslationMethod;
43383
43384
  exports.tokenize = tokenize;
43384
43385
 
43385
43386
 
43386
- __info__.version = '16.0.43';
43387
- __info__.date = '2024-06-03T14:49:29.032Z';
43388
- __info__.hash = '7bff796';
43387
+ __info__.version = '16.0.45';
43388
+ __info__.date = '2024-06-14T09:57:08.849Z';
43389
+ __info__.hash = '5da9171';
@@ -289,6 +289,10 @@ declare function isMarkdownLink(str: string): boolean;
289
289
  */
290
290
  declare function markdownLink(label: string, url: string): string;
291
291
  declare function parseMarkdownLink(str: string): Link;
292
+ /**
293
+ * Compares two objects.
294
+ */
295
+ declare function deepEquals(o1: any, o2: any): boolean;
292
296
 
293
297
  interface ConstructorArgs {
294
298
  zone: Zone | UnboundedZone;
@@ -6591,6 +6595,7 @@ declare const helpers: {
6591
6595
  rgbaToHex: typeof rgbaToHex;
6592
6596
  colorToRGBA: typeof colorToRGBA;
6593
6597
  positionToZone: typeof positionToZone;
6598
+ deepEquals: typeof deepEquals;
6594
6599
  };
6595
6600
  declare const components: {
6596
6601
  ChartPanel: typeof ChartPanel;
@@ -20607,8 +20607,15 @@ class Composer extends Component {
20607
20607
  }
20608
20608
  onPaste(ev) {
20609
20609
  if (this.env.model.getters.getEditionMode() !== "inactive") {
20610
+ // let the browser clipboard work
20610
20611
  ev.stopPropagation();
20611
20612
  }
20613
+ else {
20614
+ // the user meant to paste in the sheet, not open the composer with the pasted content
20615
+ // While we're not editing, we still have the focus and should therefore prevent
20616
+ // the native "paste" to occur.
20617
+ ev.preventDefault();
20618
+ }
20612
20619
  }
20613
20620
  /*
20614
20621
  * Triggered automatically by the content-editable between the keydown and key up
@@ -20618,10 +20625,6 @@ class Composer extends Component {
20618
20625
  if (!this.shouldProcessInputEvents) {
20619
20626
  return;
20620
20627
  }
20621
- if (ev.inputType === "insertFromPaste" &&
20622
- this.env.model.getters.getEditionMode() === "inactive") {
20623
- return;
20624
- }
20625
20628
  ev.stopPropagation();
20626
20629
  let content;
20627
20630
  if (this.env.model.getters.getEditionMode() === "inactive") {
@@ -20938,10 +20941,7 @@ class GridComposer extends Component {
20938
20941
  }
20939
20942
  get containerStyle() {
20940
20943
  if (this.env.model.getters.getEditionMode() === "inactive" || !this.rect) {
20941
- return `
20942
- position: absolute;
20943
- z-index: -1000;
20944
- `;
20944
+ return `z-index: -1000;`;
20945
20945
  }
20946
20946
  const isFormula = this.env.model.getters.getCurrentContent().startsWith("=");
20947
20947
  const cell = this.env.model.getters.getActiveCell();
@@ -21412,7 +21412,7 @@ class FiguresContainer extends Component {
21412
21412
  return containers;
21413
21413
  }
21414
21414
  getContainerStyle(container) {
21415
- const { width: viewWidth, height: viewHeight } = this.env.model.getters.getMainViewportRect();
21415
+ const { width: viewWidth, height: viewHeight } = this.env.model.getters.getSheetViewDimension();
21416
21416
  const { x: viewportX, y: viewportY } = this.env.model.getters.getMainViewportCoordinates();
21417
21417
  const left = ["bottomRight", "topRight"].includes(container) ? viewportX : 0;
21418
21418
  const width = viewWidth - left;
@@ -43327,6 +43327,7 @@ const helpers = {
43327
43327
  rgbaToHex,
43328
43328
  colorToRGBA,
43329
43329
  positionToZone,
43330
+ deepEquals,
43330
43331
  };
43331
43332
  const components = {
43332
43333
  ChartPanel,
@@ -43351,6 +43352,6 @@ function addFunction(functionName, functionDescription) {
43351
43352
  export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, cellTypes, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
43352
43353
 
43353
43354
 
43354
- __info__.version = '16.0.43';
43355
- __info__.date = '2024-06-03T14:49:29.032Z';
43356
- __info__.hash = '7bff796';
43355
+ __info__.version = '16.0.45';
43356
+ __info__.date = '2024-06-14T09:57:08.849Z';
43357
+ __info__.hash = '5da9171';
@@ -20608,8 +20608,15 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
20608
20608
  }
20609
20609
  onPaste(ev) {
20610
20610
  if (this.env.model.getters.getEditionMode() !== "inactive") {
20611
+ // let the browser clipboard work
20611
20612
  ev.stopPropagation();
20612
20613
  }
20614
+ else {
20615
+ // the user meant to paste in the sheet, not open the composer with the pasted content
20616
+ // While we're not editing, we still have the focus and should therefore prevent
20617
+ // the native "paste" to occur.
20618
+ ev.preventDefault();
20619
+ }
20613
20620
  }
20614
20621
  /*
20615
20622
  * Triggered automatically by the content-editable between the keydown and key up
@@ -20619,10 +20626,6 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
20619
20626
  if (!this.shouldProcessInputEvents) {
20620
20627
  return;
20621
20628
  }
20622
- if (ev.inputType === "insertFromPaste" &&
20623
- this.env.model.getters.getEditionMode() === "inactive") {
20624
- return;
20625
- }
20626
20629
  ev.stopPropagation();
20627
20630
  let content;
20628
20631
  if (this.env.model.getters.getEditionMode() === "inactive") {
@@ -20939,10 +20942,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
20939
20942
  }
20940
20943
  get containerStyle() {
20941
20944
  if (this.env.model.getters.getEditionMode() === "inactive" || !this.rect) {
20942
- return `
20943
- position: absolute;
20944
- z-index: -1000;
20945
- `;
20945
+ return `z-index: -1000;`;
20946
20946
  }
20947
20947
  const isFormula = this.env.model.getters.getCurrentContent().startsWith("=");
20948
20948
  const cell = this.env.model.getters.getActiveCell();
@@ -21413,7 +21413,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
21413
21413
  return containers;
21414
21414
  }
21415
21415
  getContainerStyle(container) {
21416
- const { width: viewWidth, height: viewHeight } = this.env.model.getters.getMainViewportRect();
21416
+ const { width: viewWidth, height: viewHeight } = this.env.model.getters.getSheetViewDimension();
21417
21417
  const { x: viewportX, y: viewportY } = this.env.model.getters.getMainViewportCoordinates();
21418
21418
  const left = ["bottomRight", "topRight"].includes(container) ? viewportX : 0;
21419
21419
  const width = viewWidth - left;
@@ -43328,6 +43328,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
43328
43328
  rgbaToHex,
43329
43329
  colorToRGBA,
43330
43330
  positionToZone,
43331
+ deepEquals,
43331
43332
  };
43332
43333
  const components = {
43333
43334
  ChartPanel,
@@ -43382,9 +43383,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
43382
43383
  Object.defineProperty(exports, '__esModule', { value: true });
43383
43384
 
43384
43385
 
43385
- __info__.version = '16.0.43';
43386
- __info__.date = '2024-06-03T14:49:29.032Z';
43387
- __info__.hash = '7bff796';
43386
+ __info__.version = '16.0.45';
43387
+ __info__.date = '2024-06-14T09:57:08.849Z';
43388
+ __info__.hash = '5da9171';
43388
43389
 
43389
43390
 
43390
43391
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -1093,14 +1093,14 @@
1093
1093
  .o-topbar-toolbar .o-composer-container {
1094
1094
  z-index: ${oe.TopBarComposer};
1095
1095
  }
1096
- `;class Kg extends t.Component{constructor(){super(...arguments),this.composerRef=t.useRef("o_composer"),this.contentHelper=new Hg(this.composerRef.el),this.composerState=t.useState({positionStart:0,positionEnd:0}),this.autoCompleteState=t.useState({showProvider:!1,provider:"functions",search:""}),this.functionDescriptionState=t.useState({showDescription:!1,functionName:"",functionDescription:{},argToFocus:0}),this.isKeyStillDown=!1,this.compositionActive=!1,this.borderStyle="box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);",this.shouldProcessInputEvents=!1,this.tokens=[],this.keyMapping={ArrowUp:this.processArrowKeys,ArrowDown:this.processArrowKeys,ArrowLeft:this.processArrowKeys,ArrowRight:this.processArrowKeys,Enter:this.processEnterKey,Escape:this.processEscapeKey,F2:()=>console.warn("Not implemented"),F4:this.processF4Key,Tab:e=>this.processTabKey(e)}}get assistantStyle(){if(this.props.delimitation&&this.props.rect){const{x:e,y:t,height:i}=this.props.rect;let n="";return t>this.props.delimitation.height-(t+i)&&(n+="\n top: -8px;\n transform: translate(0, -100%);\n "),e+300>this.props.delimitation.width&&(n+="right:0px;"),n+="width:300px;"}return"width:300px;"}setup(){t.onMounted((()=>{const e=this.composerRef.el;this.props.isDefaultFocus&&this.env.focusableElement.setFocusableElement(e),this.contentHelper.updateEl(e),this.processContent()})),t.onPatched((()=>{this.isKeyStillDown||this.processContent(),"inactive"===this.env.model.getters.getEditionMode()&&this.processTokenAtCursor()}))}processArrowKeys(e){if(this.env.model.getters.isSelectingForComposer()||"inactive"===this.env.model.getters.getEditionMode())return this.functionDescriptionState.showDescription=!1,void e.preventDefault();const t=this.env.model.getters.getCurrentContent();"cellFocus"!==this.props.focus||this.autoCompleteState.showProvider||t.startsWith("=")?(e.stopPropagation(),["ArrowUp","ArrowDown"].includes(e.key)&&this.autoCompleteState.showProvider&&this.autocompleteAPI&&(e.preventDefault(),"ArrowUp"===e.key?this.autocompleteAPI.moveUp():this.autocompleteAPI.moveDown()),this.updateCursorIfNeeded()):this.env.model.dispatch("STOP_EDITION")}processTabKey(e){if(e.preventDefault(),e.stopPropagation(),"inactive"!==this.env.model.getters.getEditionMode()){if(this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}else this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION");this.env.model.dispatch("STOP_EDITION")}const t=e.shiftKey?"left":"right";this.env.model.selection.moveAnchorCell(t,1)}processEnterKey(e){if(e.preventDefault(),e.stopPropagation(),this.isKeyStillDown=!1,this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}this.env.model.dispatch("STOP_EDITION");const t=e.shiftKey?"up":"down";this.env.model.selection.moveAnchorCell(t,1)}processEscapeKey(){this.env.model.dispatch("STOP_EDITION",{cancel:!0})}processF4Key(){this.env.model.dispatch("CYCLE_EDITION_REFERENCES"),this.processContent()}onCompositionStart(){this.compositionActive=!0}onCompositionEnd(){this.compositionActive=!1}onKeydown(e){if("inactive"===this.env.model.getters.getEditionMode())return;let t=this.keyMapping[e.key];t?t.call(this,e):(e.stopPropagation(),this.updateCursorIfNeeded())}updateCursorIfNeeded(){if(!(this.env.model.getters.isSelectingForComposer()||"inactive"===this.env.model.getters.getEditionMode())){const{start:e,end:t}=this.contentHelper.getCurrentSelection();this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:e,end:t}),this.isKeyStillDown=!0}}onPaste(e){"inactive"!==this.env.model.getters.getEditionMode()&&e.stopPropagation()}onInput(e){var t,i;if(!this.shouldProcessInputEvents)return;if("insertFromPaste"===e.inputType&&"inactive"===this.env.model.getters.getEditionMode())return;let n;if(e.stopPropagation(),"inactive"===this.env.model.getters.getEditionMode())n=e.data||"";else{const e=this.composerRef.el;n=e.childNodes.length?e.textContent:""}if("inactive"===this.props.focus)return null===(i=(t=this.props).onComposerCellFocused)||void 0===i?void 0:i.call(t,n);this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION"),this.env.model.dispatch("SET_CURRENT_CONTENT",{content:n,selection:this.contentHelper.getCurrentSelection()})}onKeyup(e){if(this.isKeyStillDown=!1,"inactive"===this.props.focus||["Control","Shift","Tab","Enter","F4"].includes(e.key))return;if(this.autoCompleteState.showProvider&&["ArrowUp","ArrowDown"].includes(e.key))return;if(this.env.model.getters.isSelectingForComposer()&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key))return;if(e.preventDefault(),e.stopPropagation(),this.autoCompleteState.showProvider=!1,e.ctrlKey&&" "===e.key)return this.autoCompleteState.search="",this.autoCompleteState.showProvider=!0,void this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION");const{start:t,end:i}=this.env.model.getters.getComposerSelection(),{start:n,end:o}=this.contentHelper.getCurrentSelection();n===t&&o===i||this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",this.contentHelper.getCurrentSelection()),this.processTokenAtCursor(),this.processContent()}onMousedown(e){e.button>0||this.contentHelper.removeSelection()}onClick(){if(this.env.model.getters.isReadonly())return;const e=this.contentHelper.getCurrentSelection();this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION"),this.props.onComposerContentFocused(),this.props.focus,this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",e),this.processTokenAtCursor()}onBlur(){this.isKeyStillDown=!1}onCompleted(e){e&&this.autoComplete(e)}onContextMenu(e){var t,i;"inactive"===this.env.model.getters.getEditionMode()&&(null===(i=(t=this.props).onInputContextMenu)||void 0===i||i.call(t,e))}processContent(){if(this.compositionActive)return;this.contentHelper.removeAll(),this.shouldProcessInputEvents=!1,"inactive"!==this.props.focus&&(this.contentHelper.el.focus(),this.contentHelper.selectRange(0,0));const e=this.getContent();if(0!==e.length){this.contentHelper.setText(e);const{start:t,end:i}=this.env.model.getters.getComposerSelection();"inactive"!==this.props.focus&&this.contentHelper.selectRange(t,i)}this.shouldProcessInputEvents=!0}getContent(){let e;const t=this.env.model.getters.getCurrentContent(),i=t.startsWith("=")&&this.env.model.getters.getCurrentTokens().length>0;return e=""===t?[]:i&&"inactive"!==this.props.focus?this.getColoredTokens():[{value:t}],e}getColoredTokens(){const e=this.env.model.getters.getCurrentTokens(),t=this.env.model.getters.getTokenAtCursor(),i=[],{start:n,end:o}=this.env.model.getters.getComposerSelection();for(const r of e){switch(r.type){case"OPERATOR":case"NUMBER":case"FUNCTION":case"COMMA":case"STRING":i.push({value:r.value,color:Xg[r.type]||"#000"});break;case"REFERENCE":const{xc:e,sheetName:n}=$t(r.value);i.push({value:r.value,color:this.rangeColor(e,n)||"#000"});break;case"SYMBOL":let o=r.value;["TRUE","FALSE"].includes(o.toUpperCase())?i.push({value:r.value,color:jg}):i.push({value:r.value,color:"#000"});break;case"LEFT_PAREN":case"RIGHT_PAREN":t&&["LEFT_PAREN","RIGHT_PAREN"].includes(t.type)&&t.parenIndex&&t.parenIndex===r.parenIndex?i.push({value:r.value,color:"black"}):i.push({value:r.value,color:Xg[r.type]||"#000"});break;default:i.push({value:r.value,color:"#000"})}this.env.model.getters.showSelectionIndicator()&&o===n&&o===r.end&&(i[i.length-1].class=Yg)}return i}rangeColor(e,t){if("inactive"===this.props.focus)return;const i=this.env.model.getters.getHighlights(),n=t?this.env.model.getters.getSheetIdByName(t):this.env.model.getters.getEditionSheet(),o=i.find((t=>{if(t.sheetId!==n)return!1;let i=this.env.model.getters.getRangeFromSheetXC(n,e).zone;const{height:o,width:r}=Gi(i);return i=o*r==1?this.env.model.getters.expandZone(n,i):i,Ui(i,t.zone)}));return o&&o.color?o.color:void 0}processTokenAtCursor(){let e=this.env.model.getters.getCurrentContent();if(this.autoCompleteState.showProvider=!1,this.functionDescriptionState.showDescription=!1,e.startsWith("=")){const e=this.env.model.getters.getTokenAtCursor();if(e){const{xc:t}=$t(e.value);if("FUNCTION"===e.type||"SYMBOL"===e.type&&!Ot.test(t))this.autoCompleteState.search=e.value,this.autoCompleteState.showProvider=!0;else if(e.functionContext&&"UNKNOWN"!==e.type){const t=e.functionContext,i=t.parent.toUpperCase(),n=Gg[i],o=t.argPosition;this.functionDescriptionState.functionName=i,this.functionDescriptionState.functionDescription=n,this.functionDescriptionState.argToFocus=n.getArgToFocus(o+1)-1,this.functionDescriptionState.showDescription=!0}}}}autoComplete(e){if(e){const t=this.env.model.getters.getTokenAtCursor();if(t){let i=t.end,n=t.end;["SYMBOL","FUNCTION"].includes(t.type)&&(i=t.start);const o=this.env.model.getters.getCurrentTokens();if(this.autoCompleteState.provider&&o.length){e+="(";const i=o.map((e=>e.start)).indexOf(t.start);if(i+1<o.length){"LEFT_PAREN"===o[i+1].type&&n++}}this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:i,end:n})}this.env.model.dispatch("REPLACE_COMPOSER_CURSOR_SELECTION",{text:e})}this.processTokenAtCursor()}}Kg.template="o-spreadsheet-Composer",Kg.components={TextValueProvider:Bg,FunctionDescriptionProvider:Wg},Kg.defaultProps={inputStyle:"",focus:"inactive",isDefaultFocus:!1};const Qg=3*.4*window.devicePixelRatio||1;Cn`
1096
+ `;class Kg extends t.Component{constructor(){super(...arguments),this.composerRef=t.useRef("o_composer"),this.contentHelper=new Hg(this.composerRef.el),this.composerState=t.useState({positionStart:0,positionEnd:0}),this.autoCompleteState=t.useState({showProvider:!1,provider:"functions",search:""}),this.functionDescriptionState=t.useState({showDescription:!1,functionName:"",functionDescription:{},argToFocus:0}),this.isKeyStillDown=!1,this.compositionActive=!1,this.borderStyle="box-shadow: 0 1px 4px 3px rgba(60, 64, 67, 0.15);",this.shouldProcessInputEvents=!1,this.tokens=[],this.keyMapping={ArrowUp:this.processArrowKeys,ArrowDown:this.processArrowKeys,ArrowLeft:this.processArrowKeys,ArrowRight:this.processArrowKeys,Enter:this.processEnterKey,Escape:this.processEscapeKey,F2:()=>console.warn("Not implemented"),F4:this.processF4Key,Tab:e=>this.processTabKey(e)}}get assistantStyle(){if(this.props.delimitation&&this.props.rect){const{x:e,y:t,height:i}=this.props.rect;let n="";return t>this.props.delimitation.height-(t+i)&&(n+="\n top: -8px;\n transform: translate(0, -100%);\n "),e+300>this.props.delimitation.width&&(n+="right:0px;"),n+="width:300px;"}return"width:300px;"}setup(){t.onMounted((()=>{const e=this.composerRef.el;this.props.isDefaultFocus&&this.env.focusableElement.setFocusableElement(e),this.contentHelper.updateEl(e),this.processContent()})),t.onPatched((()=>{this.isKeyStillDown||this.processContent(),"inactive"===this.env.model.getters.getEditionMode()&&this.processTokenAtCursor()}))}processArrowKeys(e){if(this.env.model.getters.isSelectingForComposer()||"inactive"===this.env.model.getters.getEditionMode())return this.functionDescriptionState.showDescription=!1,void e.preventDefault();const t=this.env.model.getters.getCurrentContent();"cellFocus"!==this.props.focus||this.autoCompleteState.showProvider||t.startsWith("=")?(e.stopPropagation(),["ArrowUp","ArrowDown"].includes(e.key)&&this.autoCompleteState.showProvider&&this.autocompleteAPI&&(e.preventDefault(),"ArrowUp"===e.key?this.autocompleteAPI.moveUp():this.autocompleteAPI.moveDown()),this.updateCursorIfNeeded()):this.env.model.dispatch("STOP_EDITION")}processTabKey(e){if(e.preventDefault(),e.stopPropagation(),"inactive"!==this.env.model.getters.getEditionMode()){if(this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}else this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION");this.env.model.dispatch("STOP_EDITION")}const t=e.shiftKey?"left":"right";this.env.model.selection.moveAnchorCell(t,1)}processEnterKey(e){if(e.preventDefault(),e.stopPropagation(),this.isKeyStillDown=!1,this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}this.env.model.dispatch("STOP_EDITION");const t=e.shiftKey?"up":"down";this.env.model.selection.moveAnchorCell(t,1)}processEscapeKey(){this.env.model.dispatch("STOP_EDITION",{cancel:!0})}processF4Key(){this.env.model.dispatch("CYCLE_EDITION_REFERENCES"),this.processContent()}onCompositionStart(){this.compositionActive=!0}onCompositionEnd(){this.compositionActive=!1}onKeydown(e){if("inactive"===this.env.model.getters.getEditionMode())return;let t=this.keyMapping[e.key];t?t.call(this,e):(e.stopPropagation(),this.updateCursorIfNeeded())}updateCursorIfNeeded(){if(!(this.env.model.getters.isSelectingForComposer()||"inactive"===this.env.model.getters.getEditionMode())){const{start:e,end:t}=this.contentHelper.getCurrentSelection();this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:e,end:t}),this.isKeyStillDown=!0}}onPaste(e){"inactive"!==this.env.model.getters.getEditionMode()?e.stopPropagation():e.preventDefault()}onInput(e){var t,i;if(!this.shouldProcessInputEvents)return;let n;if(e.stopPropagation(),"inactive"===this.env.model.getters.getEditionMode())n=e.data||"";else{const e=this.composerRef.el;n=e.childNodes.length?e.textContent:""}if("inactive"===this.props.focus)return null===(i=(t=this.props).onComposerCellFocused)||void 0===i?void 0:i.call(t,n);this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION"),this.env.model.dispatch("SET_CURRENT_CONTENT",{content:n,selection:this.contentHelper.getCurrentSelection()})}onKeyup(e){if(this.isKeyStillDown=!1,"inactive"===this.props.focus||["Control","Shift","Tab","Enter","F4"].includes(e.key))return;if(this.autoCompleteState.showProvider&&["ArrowUp","ArrowDown"].includes(e.key))return;if(this.env.model.getters.isSelectingForComposer()&&["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key))return;if(e.preventDefault(),e.stopPropagation(),this.autoCompleteState.showProvider=!1,e.ctrlKey&&" "===e.key)return this.autoCompleteState.search="",this.autoCompleteState.showProvider=!0,void this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION");const{start:t,end:i}=this.env.model.getters.getComposerSelection(),{start:n,end:o}=this.contentHelper.getCurrentSelection();n===t&&o===i||this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",this.contentHelper.getCurrentSelection()),this.processTokenAtCursor(),this.processContent()}onMousedown(e){e.button>0||this.contentHelper.removeSelection()}onClick(){if(this.env.model.getters.isReadonly())return;const e=this.contentHelper.getCurrentSelection();this.env.model.dispatch("STOP_COMPOSER_RANGE_SELECTION"),this.props.onComposerContentFocused(),this.props.focus,this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",e),this.processTokenAtCursor()}onBlur(){this.isKeyStillDown=!1}onCompleted(e){e&&this.autoComplete(e)}onContextMenu(e){var t,i;"inactive"===this.env.model.getters.getEditionMode()&&(null===(i=(t=this.props).onInputContextMenu)||void 0===i||i.call(t,e))}processContent(){if(this.compositionActive)return;this.contentHelper.removeAll(),this.shouldProcessInputEvents=!1,"inactive"!==this.props.focus&&(this.contentHelper.el.focus(),this.contentHelper.selectRange(0,0));const e=this.getContent();if(0!==e.length){this.contentHelper.setText(e);const{start:t,end:i}=this.env.model.getters.getComposerSelection();"inactive"!==this.props.focus&&this.contentHelper.selectRange(t,i)}this.shouldProcessInputEvents=!0}getContent(){let e;const t=this.env.model.getters.getCurrentContent(),i=t.startsWith("=")&&this.env.model.getters.getCurrentTokens().length>0;return e=""===t?[]:i&&"inactive"!==this.props.focus?this.getColoredTokens():[{value:t}],e}getColoredTokens(){const e=this.env.model.getters.getCurrentTokens(),t=this.env.model.getters.getTokenAtCursor(),i=[],{start:n,end:o}=this.env.model.getters.getComposerSelection();for(const r of e){switch(r.type){case"OPERATOR":case"NUMBER":case"FUNCTION":case"COMMA":case"STRING":i.push({value:r.value,color:Xg[r.type]||"#000"});break;case"REFERENCE":const{xc:e,sheetName:n}=$t(r.value);i.push({value:r.value,color:this.rangeColor(e,n)||"#000"});break;case"SYMBOL":let o=r.value;["TRUE","FALSE"].includes(o.toUpperCase())?i.push({value:r.value,color:jg}):i.push({value:r.value,color:"#000"});break;case"LEFT_PAREN":case"RIGHT_PAREN":t&&["LEFT_PAREN","RIGHT_PAREN"].includes(t.type)&&t.parenIndex&&t.parenIndex===r.parenIndex?i.push({value:r.value,color:"black"}):i.push({value:r.value,color:Xg[r.type]||"#000"});break;default:i.push({value:r.value,color:"#000"})}this.env.model.getters.showSelectionIndicator()&&o===n&&o===r.end&&(i[i.length-1].class=Yg)}return i}rangeColor(e,t){if("inactive"===this.props.focus)return;const i=this.env.model.getters.getHighlights(),n=t?this.env.model.getters.getSheetIdByName(t):this.env.model.getters.getEditionSheet(),o=i.find((t=>{if(t.sheetId!==n)return!1;let i=this.env.model.getters.getRangeFromSheetXC(n,e).zone;const{height:o,width:r}=Gi(i);return i=o*r==1?this.env.model.getters.expandZone(n,i):i,Ui(i,t.zone)}));return o&&o.color?o.color:void 0}processTokenAtCursor(){let e=this.env.model.getters.getCurrentContent();if(this.autoCompleteState.showProvider=!1,this.functionDescriptionState.showDescription=!1,e.startsWith("=")){const e=this.env.model.getters.getTokenAtCursor();if(e){const{xc:t}=$t(e.value);if("FUNCTION"===e.type||"SYMBOL"===e.type&&!Ot.test(t))this.autoCompleteState.search=e.value,this.autoCompleteState.showProvider=!0;else if(e.functionContext&&"UNKNOWN"!==e.type){const t=e.functionContext,i=t.parent.toUpperCase(),n=Gg[i],o=t.argPosition;this.functionDescriptionState.functionName=i,this.functionDescriptionState.functionDescription=n,this.functionDescriptionState.argToFocus=n.getArgToFocus(o+1)-1,this.functionDescriptionState.showDescription=!0}}}}autoComplete(e){if(e){const t=this.env.model.getters.getTokenAtCursor();if(t){let i=t.end,n=t.end;["SYMBOL","FUNCTION"].includes(t.type)&&(i=t.start);const o=this.env.model.getters.getCurrentTokens();if(this.autoCompleteState.provider&&o.length){e+="(";const i=o.map((e=>e.start)).indexOf(t.start);if(i+1<o.length){"LEFT_PAREN"===o[i+1].type&&n++}}this.env.model.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:i,end:n})}this.env.model.dispatch("REPLACE_COMPOSER_CURSOR_SELECTION",{text:e})}this.processTokenAtCursor()}}Kg.template="o-spreadsheet-Composer",Kg.components={TextValueProvider:Bg,FunctionDescriptionProvider:Wg},Kg.defaultProps={inputStyle:"",focus:"inactive",isDefaultFocus:!1};const Qg=3*.4*window.devicePixelRatio||1;Cn`
1097
1097
  div.o-grid-composer {
1098
1098
  z-index: ${oe.GridComposer};
1099
1099
  box-sizing: border-box;
1100
1100
  position: absolute;
1101
1101
  border: ${Qg}px solid ${E};
1102
1102
  }
1103
- `;class Jg extends t.Component{constructor(){super(...arguments),this.rect=void 0,this.isEditing=!1}get defaultRect(){return{x:0,y:0,width:0,height:0}}setup(){t.onWillUpdateProps((()=>{const e="inactive"!==this.env.model.getters.getEditionMode();if(this.isEditing!==e){if(this.isEditing=e,!e)return this.rect=void 0,void this.env.focusableElement.focus();const t=this.env.model.getters.getPosition(),i=this.env.model.getters.expandZone(this.env.model.getters.getActiveSheetId(),Ki(t));this.rect=this.env.model.getters.getVisibleRect(i)}}))}get composerProps(){const{width:e,height:t}=this.env.model.getters.getSheetViewDimensionWithHeaders();return{rect:this.rect&&{...this.rect},delimitation:{width:e,height:t},inputStyle:this.composerStyle,focus:this.props.focus,isDefaultFocus:!0,onComposerContentFocused:this.props.onComposerContentFocused,onComposerCellFocused:this.props.onComposerCellFocused,onInputContextMenu:this.props.onInputContextMenu}}get containerStyle(){if("inactive"===this.env.model.getters.getEditionMode()||!this.rect)return"\n position: absolute;\n z-index: -1000;\n ";const e=this.env.model.getters.getCurrentContent().startsWith("="),t=this.env.model.getters.getActiveCell();let i={};if(t){const e=this.env.model.getters.getCellPosition(t.id);i=this.env.model.getters.getCellComputedStyle(e.sheetId,e.col,e.row)}const{x:n,y:o,width:r,height:s}=this.rect,a=!e&&i.fillColor||"#ffffff",l=!e&&i.textColor||"#000000",c=!e&&i.fontSize||10,h=!e&&i.bold?"bold":500,d=!e&&i.italic?"italic":"normal",u=e?"none":En(i);let g="left";e||(g=i.align||(null==t?void 0:t.defaultAlign)||"left");const p=this.env.model.getters.getSheetViewDimensionWithHeaders();return`\n left: ${n-1}px;\n top: ${o}px;\n min-width: ${r+2}px;\n min-height: ${s+1}px;\n\n max-width: ${p.width-this.rect.x}px;\n max-height: ${p.height-this.rect.y}px;\n\n background: ${a};\n color: ${l};\n\n font-size: ${se[c]}px;\n font-weight: ${h};\n font-style: ${d};\n text-decoration: ${u};\n\n text-align: ${g};\n `}get composerStyle(){return`\n line-height: ${F}px;\n max-height: inherit;\n overflow: hidden;\n `}}Jg.template="o-spreadsheet-GridComposer",Jg.components={Composer:Kg};const ep=Cn`
1103
+ `;class Jg extends t.Component{constructor(){super(...arguments),this.rect=void 0,this.isEditing=!1}get defaultRect(){return{x:0,y:0,width:0,height:0}}setup(){t.onWillUpdateProps((()=>{const e="inactive"!==this.env.model.getters.getEditionMode();if(this.isEditing!==e){if(this.isEditing=e,!e)return this.rect=void 0,void this.env.focusableElement.focus();const t=this.env.model.getters.getPosition(),i=this.env.model.getters.expandZone(this.env.model.getters.getActiveSheetId(),Ki(t));this.rect=this.env.model.getters.getVisibleRect(i)}}))}get composerProps(){const{width:e,height:t}=this.env.model.getters.getSheetViewDimensionWithHeaders();return{rect:this.rect&&{...this.rect},delimitation:{width:e,height:t},inputStyle:this.composerStyle,focus:this.props.focus,isDefaultFocus:!0,onComposerContentFocused:this.props.onComposerContentFocused,onComposerCellFocused:this.props.onComposerCellFocused,onInputContextMenu:this.props.onInputContextMenu}}get containerStyle(){if("inactive"===this.env.model.getters.getEditionMode()||!this.rect)return"z-index: -1000;";const e=this.env.model.getters.getCurrentContent().startsWith("="),t=this.env.model.getters.getActiveCell();let i={};if(t){const e=this.env.model.getters.getCellPosition(t.id);i=this.env.model.getters.getCellComputedStyle(e.sheetId,e.col,e.row)}const{x:n,y:o,width:r,height:s}=this.rect,a=!e&&i.fillColor||"#ffffff",l=!e&&i.textColor||"#000000",c=!e&&i.fontSize||10,h=!e&&i.bold?"bold":500,d=!e&&i.italic?"italic":"normal",u=e?"none":En(i);let g="left";e||(g=i.align||(null==t?void 0:t.defaultAlign)||"left");const p=this.env.model.getters.getSheetViewDimensionWithHeaders();return`\n left: ${n-1}px;\n top: ${o}px;\n min-width: ${r+2}px;\n min-height: ${s+1}px;\n\n max-width: ${p.width-this.rect.x}px;\n max-height: ${p.height-this.rect.y}px;\n\n background: ${a};\n color: ${l};\n\n font-size: ${se[c]}px;\n font-weight: ${h};\n font-style: ${d};\n text-decoration: ${u};\n\n text-align: ${g};\n `}get composerStyle(){return`\n line-height: ${F}px;\n max-height: inherit;\n overflow: hidden;\n `}}Jg.template="o-spreadsheet-GridComposer",Jg.components={Composer:Kg};const ep=Cn`
1104
1104
  .o-filter-icon {
1105
1105
  color: ${I};
1106
1106
  position: absolute;
@@ -1179,7 +1179,7 @@
1179
1179
  }
1180
1180
  }
1181
1181
  }
1182
- `;class op extends t.Component{constructor(){super(...arguments),this.figureRegistry=Jn,this.figureRef=t.useRef("figure")}get isSelected(){return this.env.model.getters.getSelectedFigureId()===this.props.figure.id}getBorderWidth(){return this.env.isDashboard()?0:this.isSelected?2:1}get borderStyle(){return`border: ${this.getBorderWidth()}px solid ${this.isSelected?E:"#c9ccd2"};`}get wrapperStyle(){const{x:e,y:t,width:i,height:n}=this.props.figure;return wn({left:`${e}px`,top:`${t}px`,width:`${i}px`,height:`${n}px`,"z-index":String(oe.Figure+(this.isSelected?1:0))})}getResizerPosition(e){let t="";return e.includes("top")?t+="top: -3px;":e.includes("bottom")?t+="bottom: -3px;":t+=" bottom: calc(50% - 3px);",e.includes("left")?t+="left: -3px;":e.includes("right")?t+="right: -3px;":t+=" right: calc(50% - 3px);",t}setup(){t.useEffect(((e,t,i)=>{e===t&&(null==i||i.focus({preventScroll:!0}))}),(()=>[this.env.model.getters.getSelectedFigureId(),this.props.figure.id,this.figureRef.el])),t.onWillUnmount((()=>{this.props.onFigureDeleted()}))}clickAnchor(e,t,i){this.props.onClickAnchor(e,t,i)}onMouseDown(e){this.props.onMouseDown(e)}onKeyDown(e){const t=this.props.figure,i=function(e,t="key"){let i="";_n.includes(e.key)||(Ln(e)&&(i+="Ctrl+"),e.altKey&&(i+="Alt+"),e.shiftKey&&(i+="Shift+"));const n="key"===t?e.key:e.code;return i+=kn.test(n)?n.toUpperCase():n,i}(e);switch(i){case"Delete":this.env.model.dispatch("DELETE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:t.id}),this.props.onFigureDeleted(),e.preventDefault(),e.stopPropagation();break;case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":const n={ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1]}[e.key];this.env.model.dispatch("UPDATE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:t.id,x:t.x+n[0],y:t.y+n[1]}),e.preventDefault(),e.stopPropagation();break;case"Ctrl+A":e.preventDefault(),e.stopPropagation();break;case"Ctrl+Y":case"Ctrl+Z":"Ctrl+Y"===i?this.env.model.dispatch("REQUEST_REDO"):"Ctrl+Z"===i&&this.env.model.dispatch("REQUEST_UNDO"),e.preventDefault(),e.stopPropagation()}}}op.template="o-spreadsheet-FigureComponent",op.components={},op.defaultProps={onFigureDeleted:()=>{},onMouseDown:()=>{},onClickAnchor:()=>{}},op.props={figure:Object,style:{type:String,optional:!0},onFigureDeleted:{type:Function,optional:!0},onMouseDown:{type:Function,optional:!0},onClickAnchor:{type:Function,optional:!0}};class rp extends t.Component{constructor(){super(...arguments),this.dnd=t.useState({figId:void 0,x:0,y:0,width:0,height:0})}setup(){t.onMounted((()=>{this.render()}))}getVisibleFigures(){const e=this.env.model.getters.getVisibleFigures();return this.dnd.figId&&!e.some((e=>e.id===this.dnd.figId))&&e.push(this.env.model.getters.getFigure(this.env.model.getters.getActiveSheetId(),this.dnd.figId)),e}get containers(){const e=this.getVisibleFigures(),t=[];for(const i of["topLeft","topRight","bottomLeft","bottomRight"]){const n=e.filter((e=>this.getFigureContainer(e)===i));n.length>0&&t.push({type:i,figures:n,style:this.getContainerStyle(i),inverseViewportStyle:this.getInverseViewportPositionStyle(i)})}return this.dnd.figId&&t.push({type:"dnd",figures:[this.getDndFigure()],style:this.getContainerStyle("dnd"),inverseViewportStyle:this.getInverseViewportPositionStyle("dnd")}),t}getContainerStyle(e){const{width:t,height:i}=this.env.model.getters.getMainViewportRect(),{x:n,y:o}=this.env.model.getters.getMainViewportCoordinates(),r=["bottomRight","topRight"].includes(e)?n:0,s=t-r,a=["bottomRight","bottomLeft"].includes(e)?o:0;return wn({left:`${r}px`,top:`${a}px`,width:`${s}px`,height:`${i-a}px`})}getInverseViewportPositionStyle(e){const{scrollX:t,scrollY:i}=this.env.model.getters.getActiveSheetScrollInfo(),{x:n,y:o}=this.env.model.getters.getMainViewportCoordinates();return wn({left:`${["bottomRight","topRight"].includes(e)?-(n+t):0}px`,top:`${["bottomRight","bottomLeft"].includes(e)?-(o+i):0}px`})}getFigureContainer(e){const{x:t,y:i}=this.env.model.getters.getMainViewportCoordinates();return e.id===this.dnd.figId?"dnd":e.x<t&&e.y<i?"topLeft":e.x<t?"bottomLeft":e.y<i?"topRight":"bottomRight"}startDraggingFigure(e,t){if(t.button>0||this.env.model.getters.isReadonly())return;if(!this.env.model.dispatch("SELECT_FIGURE",{id:e.id}).isSuccessful)return;const i=this.env.model.getters.getActiveSheetId(),n=t.clientX,o=t.clientY,{x:r,y:s}=this.internalToScreenCoordinates(e);this.dnd.x=r,this.dnd.y=s,this.dnd.width=e.width,this.dnd.height=e.height;Ts((t=>{const{x:i,y:a}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:l,scrollY:c}=this.env.model.getters.getActiveSheetScrollInfo(),h=i?0:-l,d=a?0:-c;this.dnd.figId=e.id;let u=t.clientX-n;this.dnd.x=Math.max(r+u,h);let g=t.clientY-o;this.dnd.y=Math.max(s+g,d)}),(t=>{if(!this.dnd.figId)return;let{x:n,y:o}=this.screenCoordinatesToInternal(this.dnd);this.dnd.figId=void 0,this.env.model.dispatch("UPDATE_FIGURE",{sheetId:i,id:e.id,x:n,y:o})}))}startResize(e,t,i,n){n.stopPropagation();const o=n.clientX,r=n.clientY,{scrollX:s,scrollY:a}=this.env.model.getters.getActiveSheetScrollInfo(),{x:l,y:c}=this.internalToScreenCoordinates(e);let h;this.dnd.x=l,this.dnd.y=c,this.dnd.width=e.width,this.dnd.height=e.height,h=n=>{this.dnd.figId=e.id;const h=Math.max(t*(n.clientX-o),80-e.width),d=Math.max(i*(n.clientY-r),80-e.height);this.dnd.width=e.width+h,this.dnd.height=e.height+d,t<0&&(this.dnd.x=l-h),i<0&&(this.dnd.y=c-d),this.dnd.x+s<=0&&(this.dnd.width=this.dnd.width+this.dnd.x+s,this.dnd.x=-s),this.dnd.y+a<=0&&(this.dnd.height=this.dnd.height+this.dnd.y+a,this.dnd.y=-a)};Ts(h,(n=>{if(!this.dnd.figId)return;this.dnd.figId=void 0;let{x:o,y:r}=this.screenCoordinatesToInternal(this.dnd);const s={x:o,y:r};t&&(s.width=this.dnd.width),i&&(s.height=this.dnd.height),this.env.model.dispatch("UPDATE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:e.id,...s})}))}getDndFigure(){const e=this.getVisibleFigures().find((e=>e.id===this.dnd.figId));if(!e)throw new Error("Dnd figure not found");return{...e,x:this.dnd.x,y:this.dnd.y,width:this.dnd.width,height:this.dnd.height}}getFigureStyle(e){return e.id!==this.dnd.figId?"":wn({opacity:"0.9",cursor:"grabbing"})}internalToScreenCoordinates({x:e,y:t}){const{x:i,y:n}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:o,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();return{x:e=e<i?e:e-o,y:t=t<n?t:t-r}}screenCoordinatesToInternal({x:e,y:t}){const{x:i,y:n}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:o,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();return{x:e=i&&e<i?e:e+o,y:t=n&&t<n?t:t+r}}}function sp(e,i,n){let o={col:void 0,row:void 0};const{Date:r}=window;let s=0,a=0,l=0;function c(){return{col:e.model.getters.getColIndex(s),row:e.model.getters.getRowIndex(a)}}const{pause:h,resume:d}=function(e,i){let n;const{setInterval:o,clearInterval:r}=window;return t.useEffect((()=>(n=o(e,i),()=>r(n))),(()=>[i])),{pause:()=>{r(n),n=void 0},resume:()=>{void 0===n&&(n=o(e,i))}}}((function(){const{col:e,row:t}=c(),i=r.now()-l;i>300&&(e!==o.col||t!==o.row)&&p(void 0,void 0);if(i>300){if(e<0||t<0)return;p(e,t)}}),200);function u(e){i.el===e.target&&(s=e.offsetX,a=e.offsetY,l=r.now())}function g(){const{col:e,row:t}=c();e===o.col&&t===o.row||p(void 0,void 0)}function p(e,t){e===o.col&&t===o.row||(o.col=e,o.row=t,n({col:e,row:t}))}return t.onMounted((()=>{const e=i.el;e.addEventListener("mousemove",u),e.addEventListener("mouseleave",h),e.addEventListener("mouseenter",d),e.addEventListener("mousedown",g)})),t.onWillUnmount((()=>{const e=i.el;e.removeEventListener("mousemove",u),e.removeEventListener("mouseleave",h),e.removeEventListener("mouseenter",d),e.removeEventListener("mousedown",g)})),o}rp.template="o-spreadsheet-FiguresContainer",rp.components={FigureComponent:op},Jn.add("chart",{Component:Is,SidePanelComponent:"ChartPanel"});class ap extends t.Component{setup(){this.gridOverlay=t.useRef("gridOverlay"),sp(this.env,this.gridOverlay,this.props.onCellHovered),t.useEffect((()=>this.props.onGridResized({height:this.gridOverlayEl.clientHeight,width:this.gridOverlayEl.clientWidth})),(()=>[this.gridOverlayEl.clientHeight,this.gridOverlayEl.clientWidth])),function(e,i,n){let o=null,r=null;function s(e){1===e.touches.length&&(o=e.touches[0].clientX,r=e.touches[0].clientY)}function a(){o=null,r=null}function l(e){if(1!==e.touches.length)return;n()&&(e.preventDefault(),e.stopPropagation());const t=e.touches[0].clientX,s=e.touches[0].clientY;i(o-t,r-s),o=t,r=s}t.onMounted((()=>{e.el.addEventListener("touchstart",s),e.el.addEventListener("touchend",a),e.el.addEventListener("touchmove",l)})),t.onWillUnmount((()=>{e.el.removeEventListener("touchstart",s),e.el.removeEventListener("touchend",a),e.el.removeEventListener("touchmove",l)}))}(this.gridOverlay,this.props.onGridMoved,(()=>{const{scrollY:e}=this.env.model.getters.getActiveSheetDOMScrollInfo();return e>0}))}get gridOverlayEl(){if(!this.gridOverlay.el)throw new Error("GridOverlay el is not defined.");return this.gridOverlay.el}onMouseDown(e){if(e.button>0)return;const[t,i]=this.getCartesianCoordinates(e);this.props.onCellClicked(t,i,{expandZone:e.shiftKey,addZone:Ln(e)})}onDoubleClick(e){const[t,i]=this.getCartesianCoordinates(e);this.props.onCellDoubleClicked(t,i)}onContextMenu(e){e.preventDefault();const[t,i]=this.getCartesianCoordinates(e);this.props.onCellRightClicked(t,i,{x:e.clientX,y:e.clientY})}getCartesianCoordinates(e){return[this.env.model.getters.getColIndex(e.offsetX),this.env.model.getters.getRowIndex(e.offsetY)]}}ap.template="o-spreadsheet-GridOverlay",ap.components={FiguresContainer:rp},ap.defaultProps={onCellHovered:()=>{},onCellDoubleClicked:()=>{},onCellClicked:()=>{},onCellRightClicked:()=>{},onGridResized:()=>{},onFigureDeleted:()=>{},sidePanelIsOpen:!1};class lp extends t.Component{constructor(){super(...arguments),this.zIndex=oe.GridPopover}get cellPopover(){const e=this.env.model.getters.getCellPopover(this.props.hoveredCell);if(!e.isOpen)return{isOpen:!1};const t=e.coordinates;return{...e,coordinates:{x:t.x+this.props.gridPosition.x,y:t.y+this.props.gridPosition.y}}}}lp.template="o-spreadsheet-GridPopover",lp.components={Popover:Un};class cp extends t.Component{constructor(){super(...arguments),this.PADDING=0,this.MAX_SIZE_MARGIN=0,this.MIN_ELEMENT_SIZE=0,this.lastSelectedElementIndex=null,this.state=t.useState({resizerIsActive:!1,isResizing:!1,isMoving:!1,isSelecting:!1,waitingForMove:!1,activeElement:0,draggerLinePosition:0,draggerShadowPosition:0,draggerShadowThickness:0,delta:0,base:0,position:"before"})}_computeHandleDisplay(e){const t=this._getEvOffset(e),i=this._getElementIndex(t);if(i<0)return;const n=this._getDimensionsInViewport(i);t-n.start<this.PADDING&&i!==this._getViewportOffset()?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=n.start,this.state.activeElement=this._getPreviousVisibleElement(i)):n.end-t<this.PADDING?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=n.end,this.state.activeElement=i):this.state.resizerIsActive=!1}_computeGrabDisplay(e){const t=this._getElementIndex(this._getEvOffset(e)),i=this._getActiveElements(),n=this._getSelectedZoneStart(),o=this._getSelectedZoneEnd();i.has(n)&&n<=t&&t<=o?this.state.waitingForMove=!0:this.state.waitingForMove=!1}onMouseMove(e){this.state.isResizing||this.state.isMoving||this.state.isSelecting||(this._computeHandleDisplay(e),this._computeGrabDisplay(e))}onMouseLeave(){this.state.resizerIsActive=this.state.isResizing,this.state.waitingForMove=!1}onDblClick(e){this._fitElementSize(this.state.activeElement),this.state.isResizing=!1,this._computeHandleDisplay(e),this._computeGrabDisplay(e)}onMouseDown(e){this.state.isResizing=!0,this.state.delta=0;const t=this._getClientPosition(e),i=this.state.draggerLinePosition,n=this._getElementSize(this.state.activeElement),o=i-n+this.MIN_ELEMENT_SIZE,r=this._getMaxSize();Ts((e=>{this.state.delta=this._getClientPosition(e)-t,this.state.draggerLinePosition=i+this.state.delta,this.state.draggerLinePosition<o&&(this.state.draggerLinePosition=o,this.state.delta=this.MIN_ELEMENT_SIZE-n),this.state.draggerLinePosition>r&&(this.state.draggerLinePosition=r,this.state.delta=r-i)}),(e=>{this.state.isResizing=!1,0!==this.state.delta&&this._updateSize()}))}select(e){if(e.button>0)return;const t=this._getElementIndex(this._getEvOffset(e));t<0||(!0!==this.state.waitingForMove?("editing"===this.env.model.getters.getEditionMode()&&this.env.model.selection.getBackToDefault(),this.startSelection(e,t)):this.env.model.getters.isGridSelectionActive()?this.startMovement(e):this._selectElement(t,!1))}startMovement(e){this.state.waitingForMove=!1,this.state.isMoving=!0;const t=this._getDimensionsInViewport(this._getSelectedZoneStart()),i=this._getDimensionsInViewport(this._getSelectedZoneEnd()),n=t.start;this.state.draggerLinePosition=n,this.state.base=this._getSelectedZoneStart(),this.state.draggerShadowPosition=n,this.state.draggerShadowThickness=i.end-t.start;As(this.env,((e,i)=>{let n="COL"===this._getType()?e:i;if(n>=0){const e=this._getDimensionsInViewport(n);n<=this._getSelectedZoneStart()?(this.state.draggerLinePosition=e.start,this.state.draggerShadowPosition=e.start,this.state.base=n,this.state.position="before"):this._getSelectedZoneEnd()<n?(this.state.draggerLinePosition=e.end,this.state.draggerShadowPosition=e.end-this.state.draggerShadowThickness,this.state.base=n,this.state.position="after"):(this.state.draggerLinePosition=t.start,this.state.draggerShadowPosition=t.start,this.state.base=this._getSelectedZoneStart())}}),(()=>{this.state.isMoving=!1,this.state.base!==this._getSelectedZoneStart()&&this._moveElements(),this._computeGrabDisplay(e)}))}startSelection(e,t){this.state.isSelecting=!0,e.shiftKey?this._increaseSelection(t):this._selectElement(t,Ln(e)),this.lastSelectedElementIndex=t;As(this.env,((e,t)=>{let i="COL"===this._getType()?e:t;i!==this.lastSelectedElementIndex&&-1!==i&&(this._increaseSelection(i),this.lastSelectedElementIndex=i)}),(()=>{this.state.isSelecting=!1,this.lastSelectedElementIndex=null,this.env.model.dispatch(Ln(e)?"PREPARE_SELECTION_INPUT_EXPANSION":"STOP_SELECTION_INPUT"),this._computeGrabDisplay(e)}))}onMouseUp(e){this.lastSelectedElementIndex=null}onContextMenu(e){e.preventDefault();const t=this._getElementIndex(this._getEvOffset(e));if(t<0)return;this._getActiveElements().has(t)||this._selectElement(t,!1);const i=this._getType();this.props.onOpenContextMenu(i,e.clientX,e.clientY)}}Cn`
1182
+ `;class op extends t.Component{constructor(){super(...arguments),this.figureRegistry=Jn,this.figureRef=t.useRef("figure")}get isSelected(){return this.env.model.getters.getSelectedFigureId()===this.props.figure.id}getBorderWidth(){return this.env.isDashboard()?0:this.isSelected?2:1}get borderStyle(){return`border: ${this.getBorderWidth()}px solid ${this.isSelected?E:"#c9ccd2"};`}get wrapperStyle(){const{x:e,y:t,width:i,height:n}=this.props.figure;return wn({left:`${e}px`,top:`${t}px`,width:`${i}px`,height:`${n}px`,"z-index":String(oe.Figure+(this.isSelected?1:0))})}getResizerPosition(e){let t="";return e.includes("top")?t+="top: -3px;":e.includes("bottom")?t+="bottom: -3px;":t+=" bottom: calc(50% - 3px);",e.includes("left")?t+="left: -3px;":e.includes("right")?t+="right: -3px;":t+=" right: calc(50% - 3px);",t}setup(){t.useEffect(((e,t,i)=>{e===t&&(null==i||i.focus({preventScroll:!0}))}),(()=>[this.env.model.getters.getSelectedFigureId(),this.props.figure.id,this.figureRef.el])),t.onWillUnmount((()=>{this.props.onFigureDeleted()}))}clickAnchor(e,t,i){this.props.onClickAnchor(e,t,i)}onMouseDown(e){this.props.onMouseDown(e)}onKeyDown(e){const t=this.props.figure,i=function(e,t="key"){let i="";_n.includes(e.key)||(Ln(e)&&(i+="Ctrl+"),e.altKey&&(i+="Alt+"),e.shiftKey&&(i+="Shift+"));const n="key"===t?e.key:e.code;return i+=kn.test(n)?n.toUpperCase():n,i}(e);switch(i){case"Delete":this.env.model.dispatch("DELETE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:t.id}),this.props.onFigureDeleted(),e.preventDefault(),e.stopPropagation();break;case"ArrowDown":case"ArrowLeft":case"ArrowRight":case"ArrowUp":const n={ArrowDown:[0,1],ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1]}[e.key];this.env.model.dispatch("UPDATE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:t.id,x:t.x+n[0],y:t.y+n[1]}),e.preventDefault(),e.stopPropagation();break;case"Ctrl+A":e.preventDefault(),e.stopPropagation();break;case"Ctrl+Y":case"Ctrl+Z":"Ctrl+Y"===i?this.env.model.dispatch("REQUEST_REDO"):"Ctrl+Z"===i&&this.env.model.dispatch("REQUEST_UNDO"),e.preventDefault(),e.stopPropagation()}}}op.template="o-spreadsheet-FigureComponent",op.components={},op.defaultProps={onFigureDeleted:()=>{},onMouseDown:()=>{},onClickAnchor:()=>{}},op.props={figure:Object,style:{type:String,optional:!0},onFigureDeleted:{type:Function,optional:!0},onMouseDown:{type:Function,optional:!0},onClickAnchor:{type:Function,optional:!0}};class rp extends t.Component{constructor(){super(...arguments),this.dnd=t.useState({figId:void 0,x:0,y:0,width:0,height:0})}setup(){t.onMounted((()=>{this.render()}))}getVisibleFigures(){const e=this.env.model.getters.getVisibleFigures();return this.dnd.figId&&!e.some((e=>e.id===this.dnd.figId))&&e.push(this.env.model.getters.getFigure(this.env.model.getters.getActiveSheetId(),this.dnd.figId)),e}get containers(){const e=this.getVisibleFigures(),t=[];for(const i of["topLeft","topRight","bottomLeft","bottomRight"]){const n=e.filter((e=>this.getFigureContainer(e)===i));n.length>0&&t.push({type:i,figures:n,style:this.getContainerStyle(i),inverseViewportStyle:this.getInverseViewportPositionStyle(i)})}return this.dnd.figId&&t.push({type:"dnd",figures:[this.getDndFigure()],style:this.getContainerStyle("dnd"),inverseViewportStyle:this.getInverseViewportPositionStyle("dnd")}),t}getContainerStyle(e){const{width:t,height:i}=this.env.model.getters.getSheetViewDimension(),{x:n,y:o}=this.env.model.getters.getMainViewportCoordinates(),r=["bottomRight","topRight"].includes(e)?n:0,s=t-r,a=["bottomRight","bottomLeft"].includes(e)?o:0;return wn({left:`${r}px`,top:`${a}px`,width:`${s}px`,height:`${i-a}px`})}getInverseViewportPositionStyle(e){const{scrollX:t,scrollY:i}=this.env.model.getters.getActiveSheetScrollInfo(),{x:n,y:o}=this.env.model.getters.getMainViewportCoordinates();return wn({left:`${["bottomRight","topRight"].includes(e)?-(n+t):0}px`,top:`${["bottomRight","bottomLeft"].includes(e)?-(o+i):0}px`})}getFigureContainer(e){const{x:t,y:i}=this.env.model.getters.getMainViewportCoordinates();return e.id===this.dnd.figId?"dnd":e.x<t&&e.y<i?"topLeft":e.x<t?"bottomLeft":e.y<i?"topRight":"bottomRight"}startDraggingFigure(e,t){if(t.button>0||this.env.model.getters.isReadonly())return;if(!this.env.model.dispatch("SELECT_FIGURE",{id:e.id}).isSuccessful)return;const i=this.env.model.getters.getActiveSheetId(),n=t.clientX,o=t.clientY,{x:r,y:s}=this.internalToScreenCoordinates(e);this.dnd.x=r,this.dnd.y=s,this.dnd.width=e.width,this.dnd.height=e.height;Ts((t=>{const{x:i,y:a}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:l,scrollY:c}=this.env.model.getters.getActiveSheetScrollInfo(),h=i?0:-l,d=a?0:-c;this.dnd.figId=e.id;let u=t.clientX-n;this.dnd.x=Math.max(r+u,h);let g=t.clientY-o;this.dnd.y=Math.max(s+g,d)}),(t=>{if(!this.dnd.figId)return;let{x:n,y:o}=this.screenCoordinatesToInternal(this.dnd);this.dnd.figId=void 0,this.env.model.dispatch("UPDATE_FIGURE",{sheetId:i,id:e.id,x:n,y:o})}))}startResize(e,t,i,n){n.stopPropagation();const o=n.clientX,r=n.clientY,{scrollX:s,scrollY:a}=this.env.model.getters.getActiveSheetScrollInfo(),{x:l,y:c}=this.internalToScreenCoordinates(e);let h;this.dnd.x=l,this.dnd.y=c,this.dnd.width=e.width,this.dnd.height=e.height,h=n=>{this.dnd.figId=e.id;const h=Math.max(t*(n.clientX-o),80-e.width),d=Math.max(i*(n.clientY-r),80-e.height);this.dnd.width=e.width+h,this.dnd.height=e.height+d,t<0&&(this.dnd.x=l-h),i<0&&(this.dnd.y=c-d),this.dnd.x+s<=0&&(this.dnd.width=this.dnd.width+this.dnd.x+s,this.dnd.x=-s),this.dnd.y+a<=0&&(this.dnd.height=this.dnd.height+this.dnd.y+a,this.dnd.y=-a)};Ts(h,(n=>{if(!this.dnd.figId)return;this.dnd.figId=void 0;let{x:o,y:r}=this.screenCoordinatesToInternal(this.dnd);const s={x:o,y:r};t&&(s.width=this.dnd.width),i&&(s.height=this.dnd.height),this.env.model.dispatch("UPDATE_FIGURE",{sheetId:this.env.model.getters.getActiveSheetId(),id:e.id,...s})}))}getDndFigure(){const e=this.getVisibleFigures().find((e=>e.id===this.dnd.figId));if(!e)throw new Error("Dnd figure not found");return{...e,x:this.dnd.x,y:this.dnd.y,width:this.dnd.width,height:this.dnd.height}}getFigureStyle(e){return e.id!==this.dnd.figId?"":wn({opacity:"0.9",cursor:"grabbing"})}internalToScreenCoordinates({x:e,y:t}){const{x:i,y:n}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:o,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();return{x:e=e<i?e:e-o,y:t=t<n?t:t-r}}screenCoordinatesToInternal({x:e,y:t}){const{x:i,y:n}=this.env.model.getters.getMainViewportCoordinates(),{scrollX:o,scrollY:r}=this.env.model.getters.getActiveSheetScrollInfo();return{x:e=i&&e<i?e:e+o,y:t=n&&t<n?t:t+r}}}function sp(e,i,n){let o={col:void 0,row:void 0};const{Date:r}=window;let s=0,a=0,l=0;function c(){return{col:e.model.getters.getColIndex(s),row:e.model.getters.getRowIndex(a)}}const{pause:h,resume:d}=function(e,i){let n;const{setInterval:o,clearInterval:r}=window;return t.useEffect((()=>(n=o(e,i),()=>r(n))),(()=>[i])),{pause:()=>{r(n),n=void 0},resume:()=>{void 0===n&&(n=o(e,i))}}}((function(){const{col:e,row:t}=c(),i=r.now()-l;i>300&&(e!==o.col||t!==o.row)&&p(void 0,void 0);if(i>300){if(e<0||t<0)return;p(e,t)}}),200);function u(e){i.el===e.target&&(s=e.offsetX,a=e.offsetY,l=r.now())}function g(){const{col:e,row:t}=c();e===o.col&&t===o.row||p(void 0,void 0)}function p(e,t){e===o.col&&t===o.row||(o.col=e,o.row=t,n({col:e,row:t}))}return t.onMounted((()=>{const e=i.el;e.addEventListener("mousemove",u),e.addEventListener("mouseleave",h),e.addEventListener("mouseenter",d),e.addEventListener("mousedown",g)})),t.onWillUnmount((()=>{const e=i.el;e.removeEventListener("mousemove",u),e.removeEventListener("mouseleave",h),e.removeEventListener("mouseenter",d),e.removeEventListener("mousedown",g)})),o}rp.template="o-spreadsheet-FiguresContainer",rp.components={FigureComponent:op},Jn.add("chart",{Component:Is,SidePanelComponent:"ChartPanel"});class ap extends t.Component{setup(){this.gridOverlay=t.useRef("gridOverlay"),sp(this.env,this.gridOverlay,this.props.onCellHovered),t.useEffect((()=>this.props.onGridResized({height:this.gridOverlayEl.clientHeight,width:this.gridOverlayEl.clientWidth})),(()=>[this.gridOverlayEl.clientHeight,this.gridOverlayEl.clientWidth])),function(e,i,n){let o=null,r=null;function s(e){1===e.touches.length&&(o=e.touches[0].clientX,r=e.touches[0].clientY)}function a(){o=null,r=null}function l(e){if(1!==e.touches.length)return;n()&&(e.preventDefault(),e.stopPropagation());const t=e.touches[0].clientX,s=e.touches[0].clientY;i(o-t,r-s),o=t,r=s}t.onMounted((()=>{e.el.addEventListener("touchstart",s),e.el.addEventListener("touchend",a),e.el.addEventListener("touchmove",l)})),t.onWillUnmount((()=>{e.el.removeEventListener("touchstart",s),e.el.removeEventListener("touchend",a),e.el.removeEventListener("touchmove",l)}))}(this.gridOverlay,this.props.onGridMoved,(()=>{const{scrollY:e}=this.env.model.getters.getActiveSheetDOMScrollInfo();return e>0}))}get gridOverlayEl(){if(!this.gridOverlay.el)throw new Error("GridOverlay el is not defined.");return this.gridOverlay.el}onMouseDown(e){if(e.button>0)return;const[t,i]=this.getCartesianCoordinates(e);this.props.onCellClicked(t,i,{expandZone:e.shiftKey,addZone:Ln(e)})}onDoubleClick(e){const[t,i]=this.getCartesianCoordinates(e);this.props.onCellDoubleClicked(t,i)}onContextMenu(e){e.preventDefault();const[t,i]=this.getCartesianCoordinates(e);this.props.onCellRightClicked(t,i,{x:e.clientX,y:e.clientY})}getCartesianCoordinates(e){return[this.env.model.getters.getColIndex(e.offsetX),this.env.model.getters.getRowIndex(e.offsetY)]}}ap.template="o-spreadsheet-GridOverlay",ap.components={FiguresContainer:rp},ap.defaultProps={onCellHovered:()=>{},onCellDoubleClicked:()=>{},onCellClicked:()=>{},onCellRightClicked:()=>{},onGridResized:()=>{},onFigureDeleted:()=>{},sidePanelIsOpen:!1};class lp extends t.Component{constructor(){super(...arguments),this.zIndex=oe.GridPopover}get cellPopover(){const e=this.env.model.getters.getCellPopover(this.props.hoveredCell);if(!e.isOpen)return{isOpen:!1};const t=e.coordinates;return{...e,coordinates:{x:t.x+this.props.gridPosition.x,y:t.y+this.props.gridPosition.y}}}}lp.template="o-spreadsheet-GridPopover",lp.components={Popover:Un};class cp extends t.Component{constructor(){super(...arguments),this.PADDING=0,this.MAX_SIZE_MARGIN=0,this.MIN_ELEMENT_SIZE=0,this.lastSelectedElementIndex=null,this.state=t.useState({resizerIsActive:!1,isResizing:!1,isMoving:!1,isSelecting:!1,waitingForMove:!1,activeElement:0,draggerLinePosition:0,draggerShadowPosition:0,draggerShadowThickness:0,delta:0,base:0,position:"before"})}_computeHandleDisplay(e){const t=this._getEvOffset(e),i=this._getElementIndex(t);if(i<0)return;const n=this._getDimensionsInViewport(i);t-n.start<this.PADDING&&i!==this._getViewportOffset()?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=n.start,this.state.activeElement=this._getPreviousVisibleElement(i)):n.end-t<this.PADDING?(this.state.resizerIsActive=!0,this.state.draggerLinePosition=n.end,this.state.activeElement=i):this.state.resizerIsActive=!1}_computeGrabDisplay(e){const t=this._getElementIndex(this._getEvOffset(e)),i=this._getActiveElements(),n=this._getSelectedZoneStart(),o=this._getSelectedZoneEnd();i.has(n)&&n<=t&&t<=o?this.state.waitingForMove=!0:this.state.waitingForMove=!1}onMouseMove(e){this.state.isResizing||this.state.isMoving||this.state.isSelecting||(this._computeHandleDisplay(e),this._computeGrabDisplay(e))}onMouseLeave(){this.state.resizerIsActive=this.state.isResizing,this.state.waitingForMove=!1}onDblClick(e){this._fitElementSize(this.state.activeElement),this.state.isResizing=!1,this._computeHandleDisplay(e),this._computeGrabDisplay(e)}onMouseDown(e){this.state.isResizing=!0,this.state.delta=0;const t=this._getClientPosition(e),i=this.state.draggerLinePosition,n=this._getElementSize(this.state.activeElement),o=i-n+this.MIN_ELEMENT_SIZE,r=this._getMaxSize();Ts((e=>{this.state.delta=this._getClientPosition(e)-t,this.state.draggerLinePosition=i+this.state.delta,this.state.draggerLinePosition<o&&(this.state.draggerLinePosition=o,this.state.delta=this.MIN_ELEMENT_SIZE-n),this.state.draggerLinePosition>r&&(this.state.draggerLinePosition=r,this.state.delta=r-i)}),(e=>{this.state.isResizing=!1,0!==this.state.delta&&this._updateSize()}))}select(e){if(e.button>0)return;const t=this._getElementIndex(this._getEvOffset(e));t<0||(!0!==this.state.waitingForMove?("editing"===this.env.model.getters.getEditionMode()&&this.env.model.selection.getBackToDefault(),this.startSelection(e,t)):this.env.model.getters.isGridSelectionActive()?this.startMovement(e):this._selectElement(t,!1))}startMovement(e){this.state.waitingForMove=!1,this.state.isMoving=!0;const t=this._getDimensionsInViewport(this._getSelectedZoneStart()),i=this._getDimensionsInViewport(this._getSelectedZoneEnd()),n=t.start;this.state.draggerLinePosition=n,this.state.base=this._getSelectedZoneStart(),this.state.draggerShadowPosition=n,this.state.draggerShadowThickness=i.end-t.start;As(this.env,((e,i)=>{let n="COL"===this._getType()?e:i;if(n>=0){const e=this._getDimensionsInViewport(n);n<=this._getSelectedZoneStart()?(this.state.draggerLinePosition=e.start,this.state.draggerShadowPosition=e.start,this.state.base=n,this.state.position="before"):this._getSelectedZoneEnd()<n?(this.state.draggerLinePosition=e.end,this.state.draggerShadowPosition=e.end-this.state.draggerShadowThickness,this.state.base=n,this.state.position="after"):(this.state.draggerLinePosition=t.start,this.state.draggerShadowPosition=t.start,this.state.base=this._getSelectedZoneStart())}}),(()=>{this.state.isMoving=!1,this.state.base!==this._getSelectedZoneStart()&&this._moveElements(),this._computeGrabDisplay(e)}))}startSelection(e,t){this.state.isSelecting=!0,e.shiftKey?this._increaseSelection(t):this._selectElement(t,Ln(e)),this.lastSelectedElementIndex=t;As(this.env,((e,t)=>{let i="COL"===this._getType()?e:t;i!==this.lastSelectedElementIndex&&-1!==i&&(this._increaseSelection(i),this.lastSelectedElementIndex=i)}),(()=>{this.state.isSelecting=!1,this.lastSelectedElementIndex=null,this.env.model.dispatch(Ln(e)?"PREPARE_SELECTION_INPUT_EXPANSION":"STOP_SELECTION_INPUT"),this._computeGrabDisplay(e)}))}onMouseUp(e){this.lastSelectedElementIndex=null}onContextMenu(e){e.preventDefault();const t=this._getElementIndex(this._getEvOffset(e));if(t<0)return;this._getActiveElements().has(t)||this._selectElement(t,!1);const i=this._getType();this.props.onOpenContextMenu(i,e.clientX,e.clientY)}}Cn`
1183
1183
  .o-col-resizer {
1184
1184
  position: absolute;
1185
1185
  top: 0;
@@ -2432,4 +2432,4 @@
2432
2432
  <tableParts count="${e.filterTables.length}">
2433
2433
  ${Rf(a)}
2434
2434
  </tableParts>
2435
- `}var bS;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(bS||(bS={}));const SS={},CS={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:O,HEADER_WIDTH:M,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:_,DEFAULT_CELL_HEIGHT:F,SCROLLBAR_WIDTH:D},ES={autofillModifiersRegistry:sn,autofillRulesRegistry:vn,cellMenuRegistry:Ho,colMenuRegistry:Wo,linkMenuRegistry:Zn,functionRegistry:Bu,uiPluginRegistry:ab,corePluginRegistry:sb,rowMenuRegistry:Go,sidePanelRegistry:Cs,figureRegistry:Jn,sheetMenuRegistry:Zo,chartSidePanelComponentRegistry:ds,chartComponentRegistry:on,chartRegistry:nn,topbarMenuRegistry:tr,topbarComponentRegistry:Es,clickableCellRegistry:lb,otRegistry:ir,inverseCommandRegistry:eo,cellRegistry:Kn,cellPopoverRegistry:Xn},wS={LinkCell:Op},yS={args:Ds,toBoolean:qs,toJsDate:Zs,toNumber:Vs,toString:Bs,toXC:Vt,toZone:Oi,toCartesian:Ut,numberToLetters:Lt,createFullMenuItem:Wn,UuidGenerator:Ai,formatValue:Qt,computeTextWidth:_e,isMarkdownLink:He,parseMarkdownLink:Ge,markdownLink:We,createEmptyWorkbookData:Kf,createEmptySheet:Xf,createEmptyExcelSheet:Qf,getDefaultChartJsRuntime:Nr,chartFontColor:Cr,getMenuChildren:Nn,ChartColors:Sr,EvaluationError:c,CellErrorLevel:l,getFillingMode:_r,rgbaToHex:Ct,colorToRGBA:Et,positionToZone:Ki},xS={ChartPanel:us,ChartFigure:Is,ChartJsComponent:rn,Grid:yp,GridOverlay:ap,ScorecardChart:ys,LineConfigPanel:as,LineBarPieDesignPanel:ns,BarConfigPanel:sr,LineBarPieConfigPanel:rr,GaugeChartConfigPanel:rs,GaugeChartDesignPanel:ss,ScorecardChartConfigPanel:cs,ScorecardChartDesignPanel:hs};e.AbstractChart=ar,e.CorePlugin=Jf,e.DATETIME_FORMAT=Y,e.DispatchResult=gn,e.EvaluationError=c,e.Model=class extends Hv{constructor(e={},i={},n=[],o=new Ai,r=!0){super(),this.corePlugins=[],this.uiPlugins=[],this.isReplayingCommand=!1,this.renderers=[],this.status=0,this.handlers=[],this.coreHandlers=[],this.dispatch=(e,t)=>{const i={type:e,...t};let n=this.status;if(this.getters.isReadonly()&&(o=i,!hn.has(o.type)))return new gn(67);var o;if(!this.session.canApplyOptimisticUpdate())return new gn(64);switch(n){case 0:const t=this.checkDispatchAllowed(i);if(!t.isSuccessful)return t;this.status=1;const{changes:n,commands:o}=this.state.recordChanges((()=>{un(i)&&this.state.addCommand(i),this.dispatchToHandlers(this.handlers,i),this.finalize()}));this.session.save(o,n),this.status=0,this.trigger("update");break;case 1:if(un(i)){const e=this.checkDispatchAllowed(i);if(!e.isSuccessful)return e;this.state.addCommand(i),this.dispatchToHandlers(this.handlers,i)}else this.dispatchToHandlers(this.handlers,i);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(un(i))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,i)}return gn.Success},this.dispatchFromCorePlugin=(e,t)=>{const i={type:e,...t},n=this.status;this.status=2;const o=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(o,i),this.status=n,gn.Success},n=jf(e,n);const s=qf(e,r);this.state=new Fb,this.uuidGenerator=o,this.config=this.setupConfig(i),this.session=this.setupSession(s.revisionId),this.config.moveClient=this.session.move.bind(this.session),this.history=new Nb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new Ob(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.getSelectionRangeString=this.range.getSelectionRangeString.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode,canUndo:this.history.canUndo.bind(this.history),canRedo:this.history.canRedo.bind(this.history),getClient:this.session.getClient.bind(this.session),getConnectedClients:this.session.getConnectedClients.bind(this.session),isFullySynchronized:this.session.isFullySynchronized.bind(this.session)},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new _b(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range);for(let e of sb.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of ab.getAll())this.setupUiPlugin(e);this.uuidGenerator.setIsFastStrategy(!1),this.handlers.push(this.history),this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.session.loadInitialMessages(n),this.joinSession(),i.snapshotRequested&&this.session.snapshot(this.exportData()),t.markRaw(this)}joinSession(){this.session.join(this.config.client)}leaveSession(){this.session.leave()}setupUiPlugin(e){const t=new e(this.getters,this.state,this.dispatch,this.config,this.selection);for(let i of e.getters){if(!(i in t))throw new Error(`Invalid getter name: ${i} for plugin ${t.constructor}`);if(i in this.getters)throw new Error(`Getter "${i}" is already defined.`);this.getters[i]=t[i].bind(t)}this.uiPlugins.push(t),this.handlers.push(t);const i=e.layers.map((e=>[t,e]));this.renderers.push(...i),this.renderers.sort(((e,t)=>e[1]-t[1]))}setupCorePlugin(e,t){const i=new e(this.coreGetters,this.state,this.range,this.dispatchFromCorePlugin,this.config,this.uuidGenerator);for(let t of e.getters){if(!(t in i))throw new Error(`Invalid getter name: ${t} for plugin ${i.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=i[t].bind(i)}i.import(t),this.corePlugins.push(i),this.coreHandlers.push(i),this.handlers.push(i)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.uiPlugins,t),this.status=e}this.finalize()}setupSession(e){return new Qv(Tb(e,this.state.recordChanges.bind(this.state),(e=>{this.checkDispatchAllowed(e).isSuccessful&&(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-redone",this,this.finalize),this.session.on("revision-undone",this,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){const t=e.client||{id:this.uuidGenerator.uuidv4(),name:r("Anonymous").toString()},i=e.transportService||new bb;return{...e,mode:e.mode||"normal",evalContext:e.evalContext||{},transportService:i,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e)}}checkDispatchAllowed(e){const t=this.handlers.map((t=>t.allowDispatch(e)));return t.some((e=>0!==e))?new gn(t.flat()):gn.Success}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0}dispatchToHandlers(e,t){t=Ae(t);for(const i of e)i.beforeHandle(t);for(const i of e)i.handle(t)}drawGrid(e){for(let[t,i]of this.renderers)e.ctx.save(),t.drawGrid(e,i),e.ctx.restore()}exportData(){let e=Kf();for(let t of this.handlers)t instanceof Jf&&t.export(e);return e.revisionId=this.session.getRevisionId()||K,e=Ae(e),e}updateMode(e){"normal"!==e&&this.dispatch("STOP_EDITION",{cancel:!0}),this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Kf(),sheets:[Qf(Gf,"Sheet1")]};for(let t of this.handlers)t instanceof $g&&t.exportForExcel(e);return e=Ae(e),fS(e)}},e.Registry=tn,e.Revision=Xv,e.SPREADSHEET_DIMENSIONS=CS,e.Spreadsheet=vb,e.UIPlugin=Lg,e.__info__=SS,e.addFunction=function(e,t){Bu.add(e,t)},e.astToFormula=vg,e.cellTypes=wS,e.compile=Mg,e.components=xS,e.convertAstNodes=fg,e.coreTypes=dn,e.findCellInNewZone=Yi,e.functionCache=Og,e.helpers=yS,e.invalidateEvaluationCommands=ln,e.load=qf,e.parse=pg,e.readonlyAllowedCommands=hn,e.registries=ES,e.setTranslationMethod=function(e){i=e},e.tokenize=qu,Object.defineProperty(e,"__esModule",{value:!0}),SS.version="16.0.43",SS.date="2024-06-03T14:49:29.032Z",SS.hash="7bff796"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
2435
+ `}var bS;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(bS||(bS={}));const SS={},CS={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:O,HEADER_WIDTH:M,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:_,DEFAULT_CELL_HEIGHT:F,SCROLLBAR_WIDTH:D},ES={autofillModifiersRegistry:sn,autofillRulesRegistry:vn,cellMenuRegistry:Ho,colMenuRegistry:Wo,linkMenuRegistry:Zn,functionRegistry:Bu,uiPluginRegistry:ab,corePluginRegistry:sb,rowMenuRegistry:Go,sidePanelRegistry:Cs,figureRegistry:Jn,sheetMenuRegistry:Zo,chartSidePanelComponentRegistry:ds,chartComponentRegistry:on,chartRegistry:nn,topbarMenuRegistry:tr,topbarComponentRegistry:Es,clickableCellRegistry:lb,otRegistry:ir,inverseCommandRegistry:eo,cellRegistry:Kn,cellPopoverRegistry:Xn},wS={LinkCell:Op},yS={args:Ds,toBoolean:qs,toJsDate:Zs,toNumber:Vs,toString:Bs,toXC:Vt,toZone:Oi,toCartesian:Ut,numberToLetters:Lt,createFullMenuItem:Wn,UuidGenerator:Ai,formatValue:Qt,computeTextWidth:_e,isMarkdownLink:He,parseMarkdownLink:Ge,markdownLink:We,createEmptyWorkbookData:Kf,createEmptySheet:Xf,createEmptyExcelSheet:Qf,getDefaultChartJsRuntime:Nr,chartFontColor:Cr,getMenuChildren:Nn,ChartColors:Sr,EvaluationError:c,CellErrorLevel:l,getFillingMode:_r,rgbaToHex:Ct,colorToRGBA:Et,positionToZone:Ki,deepEquals:ot},xS={ChartPanel:us,ChartFigure:Is,ChartJsComponent:rn,Grid:yp,GridOverlay:ap,ScorecardChart:ys,LineConfigPanel:as,LineBarPieDesignPanel:ns,BarConfigPanel:sr,LineBarPieConfigPanel:rr,GaugeChartConfigPanel:rs,GaugeChartDesignPanel:ss,ScorecardChartConfigPanel:cs,ScorecardChartDesignPanel:hs};e.AbstractChart=ar,e.CorePlugin=Jf,e.DATETIME_FORMAT=Y,e.DispatchResult=gn,e.EvaluationError=c,e.Model=class extends Hv{constructor(e={},i={},n=[],o=new Ai,r=!0){super(),this.corePlugins=[],this.uiPlugins=[],this.isReplayingCommand=!1,this.renderers=[],this.status=0,this.handlers=[],this.coreHandlers=[],this.dispatch=(e,t)=>{const i={type:e,...t};let n=this.status;if(this.getters.isReadonly()&&(o=i,!hn.has(o.type)))return new gn(67);var o;if(!this.session.canApplyOptimisticUpdate())return new gn(64);switch(n){case 0:const t=this.checkDispatchAllowed(i);if(!t.isSuccessful)return t;this.status=1;const{changes:n,commands:o}=this.state.recordChanges((()=>{un(i)&&this.state.addCommand(i),this.dispatchToHandlers(this.handlers,i),this.finalize()}));this.session.save(o,n),this.status=0,this.trigger("update");break;case 1:if(un(i)){const e=this.checkDispatchAllowed(i);if(!e.isSuccessful)return e;this.state.addCommand(i),this.dispatchToHandlers(this.handlers,i)}else this.dispatchToHandlers(this.handlers,i);break;case 3:throw new Error("Cannot dispatch commands in the finalize state");case 2:if(un(i))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,i)}return gn.Success},this.dispatchFromCorePlugin=(e,t)=>{const i={type:e,...t},n=this.status;this.status=2;const o=this.isReplayingCommand?this.coreHandlers:this.handlers;return this.dispatchToHandlers(o,i),this.status=n,gn.Success},n=jf(e,n);const s=qf(e,r);this.state=new Fb,this.uuidGenerator=o,this.config=this.setupConfig(i),this.session=this.setupSession(s.revisionId),this.config.moveClient=this.session.move.bind(this.session),this.history=new Nb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new Ob(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.getSelectionRangeString=this.range.getSelectionRangeString.bind(this.range),this.getters={isReadonly:()=>"readonly"===this.config.mode||"dashboard"===this.config.mode,isDashboard:()=>"dashboard"===this.config.mode,canUndo:this.history.canUndo.bind(this.history),canRedo:this.history.canRedo.bind(this.history),getClient:this.session.getClient.bind(this.session),getConnectedClients:this.session.getConnectedClients.bind(this.session),isFullySynchronized:this.session.isFullySynchronized.bind(this.session)},this.uuidGenerator.setIsFastStrategy(!0),this.selection=new _b(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range);for(let e of sb.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of ab.getAll())this.setupUiPlugin(e);this.uuidGenerator.setIsFastStrategy(!1),this.handlers.push(this.history),this.dispatch("START"),this.selection.observe(this,{handleEvent:()=>this.trigger("update")}),this.setupSessionEvents(),this.session.loadInitialMessages(n),this.joinSession(),i.snapshotRequested&&this.session.snapshot(this.exportData()),t.markRaw(this)}joinSession(){this.session.join(this.config.client)}leaveSession(){this.session.leave()}setupUiPlugin(e){const t=new e(this.getters,this.state,this.dispatch,this.config,this.selection);for(let i of e.getters){if(!(i in t))throw new Error(`Invalid getter name: ${i} for plugin ${t.constructor}`);if(i in this.getters)throw new Error(`Getter "${i}" is already defined.`);this.getters[i]=t[i].bind(t)}this.uiPlugins.push(t),this.handlers.push(t);const i=e.layers.map((e=>[t,e]));this.renderers.push(...i),this.renderers.sort(((e,t)=>e[1]-t[1]))}setupCorePlugin(e,t){const i=new e(this.coreGetters,this.state,this.range,this.dispatchFromCorePlugin,this.config,this.uuidGenerator);for(let t of e.getters){if(!(t in i))throw new Error(`Invalid getter name: ${t} for plugin ${i.constructor}`);if(t in this.coreGetters)throw new Error(`Getter "${t}" is already defined.`);this.coreGetters[t]=i[t].bind(i)}i.import(t),this.corePlugins.push(i),this.coreHandlers.push(i),this.handlers.push(i)}onRemoteRevisionReceived({commands:e}){for(let t of e){const e=this.status;this.status=2,this.dispatchToHandlers(this.uiPlugins,t),this.status=e}this.finalize()}setupSession(e){return new Qv(Tb(e,this.state.recordChanges.bind(this.state),(e=>{this.checkDispatchAllowed(e).isSuccessful&&(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-redone",this,this.finalize),this.session.on("revision-undone",this,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){const t=e.client||{id:this.uuidGenerator.uuidv4(),name:r("Anonymous").toString()},i=e.transportService||new bb;return{...e,mode:e.mode||"normal",evalContext:e.evalContext||{},transportService:i,client:t,moveClient:()=>{},snapshotRequested:!1,notifyUI:e=>this.trigger("notify-ui",e)}}checkDispatchAllowed(e){const t=this.handlers.map((t=>t.allowDispatch(e)));return t.some((e=>0!==e))?new gn(t.flat()):gn.Success}finalize(){this.status=3;for(const e of this.handlers)e.finalize();this.status=0}dispatchToHandlers(e,t){t=Ae(t);for(const i of e)i.beforeHandle(t);for(const i of e)i.handle(t)}drawGrid(e){for(let[t,i]of this.renderers)e.ctx.save(),t.drawGrid(e,i),e.ctx.restore()}exportData(){let e=Kf();for(let t of this.handlers)t instanceof Jf&&t.export(e);return e.revisionId=this.session.getRevisionId()||K,e=Ae(e),e}updateMode(e){"normal"!==e&&this.dispatch("STOP_EDITION",{cancel:!0}),this.config.mode=e,this.trigger("update")}exportXLSX(){this.dispatch("EVALUATE_CELLS");let e={...Kf(),sheets:[Qf(Gf,"Sheet1")]};for(let t of this.handlers)t instanceof $g&&t.exportForExcel(e);return e=Ae(e),fS(e)}},e.Registry=tn,e.Revision=Xv,e.SPREADSHEET_DIMENSIONS=CS,e.Spreadsheet=vb,e.UIPlugin=Lg,e.__info__=SS,e.addFunction=function(e,t){Bu.add(e,t)},e.astToFormula=vg,e.cellTypes=wS,e.compile=Mg,e.components=xS,e.convertAstNodes=fg,e.coreTypes=dn,e.findCellInNewZone=Yi,e.functionCache=Og,e.helpers=yS,e.invalidateEvaluationCommands=ln,e.load=qf,e.parse=pg,e.readonlyAllowedCommands=hn,e.registries=ES,e.setTranslationMethod=function(e){i=e},e.tokenize=qu,Object.defineProperty(e,"__esModule",{value:!0}),SS.version="16.0.45",SS.date="2024-06-14T09:57:08.849Z",SS.hash="5da9171"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
@@ -3239,7 +3239,7 @@ https://fontawesome.com/license -->
3239
3239
  </t>
3240
3240
  </odoo>
3241
3241
  <!--
3242
- __info__.version = '16.0.43';
3243
- __info__.date = '2024-06-03T14:49:50.520Z';
3244
- __info__.hash = '7bff796';
3242
+ __info__.version = '16.0.45';
3243
+ __info__.date = '2024-06-14T09:57:31.403Z';
3244
+ __info__.hash = '5da9171';
3245
3245
  -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "16.0.43",
3
+ "version": "16.0.45",
4
4
  "description": "A spreadsheet component",
5
5
  "main": "dist/o-spreadsheet.cjs.js",
6
6
  "browser": "dist/o-spreadsheet.iife.js",