@odoo/o-spreadsheet 15.2.7 → 15.2.9

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.
@@ -15034,20 +15034,20 @@ const TEMPLATE$l = xml$n /* xml */ `
15034
15034
  <div class="o-section-title" t-esc="env._t('${conditionalFormattingTerms.CF_TITLE}')"></div>
15035
15035
  <div class="o_field_radio o_horizontal o_field_widget o-cf-type-selector">
15036
15036
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('CellIsRule')">
15037
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'CellIsRule'}}" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15037
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'CellIsRule'" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15038
15038
  <label for="cellIsRule" class="custom-control-label o_form_label">
15039
15039
  <t t-esc="env._t('${conditionalFormattingTerms.SingleColor}')"/>
15040
15040
  </label>
15041
15041
  </div>
15042
15042
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('ColorScaleRule')">
15043
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'ColorScaleRule'}}" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15043
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'ColorScaleRule'" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15044
15044
  <label for="colorScaleRule" class="custom-control-label o_form_label">
15045
15045
  <t t-esc="env._t('${conditionalFormattingTerms.ColorScale}')"/>
15046
15046
  </label>
15047
15047
  </div>
15048
15048
 
15049
15049
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('IconSetRule')">
15050
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'IconSetRule'}}" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15050
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'IconSetRule'" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15051
15051
  <label for="iconSetRule" class="custom-control-label o_form_label">
15052
15052
  <t t-esc="env._t('${conditionalFormattingTerms.IconSet}')"/>
15053
15053
  </label>
@@ -27438,6 +27438,7 @@ class Composer extends owl.Component {
27438
27438
  this.autocompleteAPI.moveDown();
27439
27439
  }
27440
27440
  }
27441
+ this.updateCursorIfNeeded();
27441
27442
  }
27442
27443
  processTabKey(ev) {
27443
27444
  ev.preventDefault();
@@ -27491,9 +27492,12 @@ class Composer extends owl.Component {
27491
27492
  }
27492
27493
  else {
27493
27494
  ev.stopPropagation();
27495
+ this.updateCursorIfNeeded();
27494
27496
  }
27495
- const { start, end } = this.contentHelper.getCurrentSelection();
27497
+ }
27498
+ updateCursorIfNeeded() {
27496
27499
  if (!this.getters.isSelectingForComposer()) {
27500
+ const { start, end } = this.contentHelper.getCurrentSelection();
27497
27501
  this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
27498
27502
  this.isKeyStillDown = true;
27499
27503
  }
@@ -31336,6 +31340,6 @@ exports.registries = registries;
31336
31340
  exports.setTranslationMethod = setTranslationMethod;
31337
31341
 
31338
31342
 
31339
- __info__.version = '15.2.7';
31340
- __info__.date = '2023-05-12T10:54:29.220Z';
31341
- __info__.hash = 'd33fde8';
31343
+ __info__.version = '15.2.9';
31344
+ __info__.date = '2023-06-12T13:42:56.116Z';
31345
+ __info__.hash = 'e4aee80';
@@ -4787,6 +4787,7 @@ declare class Composer extends Component<Props$a, SpreadsheetEnv> {
4787
4787
  onCompositionStart(): void;
4788
4788
  onCompositionEnd(): void;
4789
4789
  onKeydown(ev: KeyboardEvent): void;
4790
+ private updateCursorIfNeeded;
4790
4791
  onInput(): void;
4791
4792
  onKeyup(ev: KeyboardEvent): void;
4792
4793
  onMousedown(ev: MouseEvent): void;
@@ -15011,20 +15011,20 @@ const TEMPLATE$l = xml$n /* xml */ `
15011
15011
  <div class="o-section-title" t-esc="env._t('${conditionalFormattingTerms.CF_TITLE}')"></div>
15012
15012
  <div class="o_field_radio o_horizontal o_field_widget o-cf-type-selector">
15013
15013
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('CellIsRule')">
15014
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'CellIsRule'}}" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15014
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'CellIsRule'" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15015
15015
  <label for="cellIsRule" class="custom-control-label o_form_label">
15016
15016
  <t t-esc="env._t('${conditionalFormattingTerms.SingleColor}')"/>
15017
15017
  </label>
15018
15018
  </div>
15019
15019
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('ColorScaleRule')">
15020
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'ColorScaleRule'}}" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15020
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'ColorScaleRule'" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15021
15021
  <label for="colorScaleRule" class="custom-control-label o_form_label">
15022
15022
  <t t-esc="env._t('${conditionalFormattingTerms.ColorScale}')"/>
15023
15023
  </label>
15024
15024
  </div>
15025
15025
 
15026
15026
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('IconSetRule')">
15027
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'IconSetRule'}}" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15027
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'IconSetRule'" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15028
15028
  <label for="iconSetRule" class="custom-control-label o_form_label">
15029
15029
  <t t-esc="env._t('${conditionalFormattingTerms.IconSet}')"/>
15030
15030
  </label>
@@ -27415,6 +27415,7 @@ class Composer extends Component {
27415
27415
  this.autocompleteAPI.moveDown();
27416
27416
  }
27417
27417
  }
27418
+ this.updateCursorIfNeeded();
27418
27419
  }
27419
27420
  processTabKey(ev) {
27420
27421
  ev.preventDefault();
@@ -27468,9 +27469,12 @@ class Composer extends Component {
27468
27469
  }
27469
27470
  else {
27470
27471
  ev.stopPropagation();
27472
+ this.updateCursorIfNeeded();
27471
27473
  }
27472
- const { start, end } = this.contentHelper.getCurrentSelection();
27474
+ }
27475
+ updateCursorIfNeeded() {
27473
27476
  if (!this.getters.isSelectingForComposer()) {
27477
+ const { start, end } = this.contentHelper.getCurrentSelection();
27474
27478
  this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
27475
27479
  this.isKeyStillDown = true;
27476
27480
  }
@@ -31290,6 +31294,6 @@ const helpers = {
31290
31294
  export { CommandResult, CorePlugin, DATETIME_FORMAT, DataSource, DispatchResult, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, DEBUG as __DEBUG__, __info__, astToFormula, cellTypes, compile, convertAstNodes, coreTypes, functionCache, helpers, invalidateEvaluationCommands, parse, readonlyAllowedCommands, registries, setTranslationMethod };
31291
31295
 
31292
31296
 
31293
- __info__.version = '15.2.7';
31294
- __info__.date = '2023-05-12T10:54:29.220Z';
31295
- __info__.hash = 'd33fde8';
31297
+ __info__.version = '15.2.9';
31298
+ __info__.date = '2023-06-12T13:42:56.116Z';
31299
+ __info__.hash = 'e4aee80';
@@ -15031,20 +15031,20 @@
15031
15031
  <div class="o-section-title" t-esc="env._t('${conditionalFormattingTerms.CF_TITLE}')"></div>
15032
15032
  <div class="o_field_radio o_horizontal o_field_widget o-cf-type-selector">
15033
15033
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('CellIsRule')">
15034
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'CellIsRule'}}" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15034
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'CellIsRule'" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
15035
15035
  <label for="cellIsRule" class="custom-control-label o_form_label">
15036
15036
  <t t-esc="env._t('${conditionalFormattingTerms.SingleColor}')"/>
15037
15037
  </label>
15038
15038
  </div>
15039
15039
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('ColorScaleRule')">
15040
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'ColorScaleRule'}}" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15040
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'ColorScaleRule'" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
15041
15041
  <label for="colorScaleRule" class="custom-control-label o_form_label">
15042
15042
  <t t-esc="env._t('${conditionalFormattingTerms.ColorScale}')"/>
15043
15043
  </label>
15044
15044
  </div>
15045
15045
 
15046
15046
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('IconSetRule')">
15047
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'IconSetRule'}}" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15047
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'IconSetRule'" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
15048
15048
  <label for="iconSetRule" class="custom-control-label o_form_label">
15049
15049
  <t t-esc="env._t('${conditionalFormattingTerms.IconSet}')"/>
15050
15050
  </label>
@@ -27435,6 +27435,7 @@
27435
27435
  this.autocompleteAPI.moveDown();
27436
27436
  }
27437
27437
  }
27438
+ this.updateCursorIfNeeded();
27438
27439
  }
27439
27440
  processTabKey(ev) {
27440
27441
  ev.preventDefault();
@@ -27488,9 +27489,12 @@
27488
27489
  }
27489
27490
  else {
27490
27491
  ev.stopPropagation();
27492
+ this.updateCursorIfNeeded();
27491
27493
  }
27492
- const { start, end } = this.contentHelper.getCurrentSelection();
27494
+ }
27495
+ updateCursorIfNeeded() {
27493
27496
  if (!this.getters.isSelectingForComposer()) {
27497
+ const { start, end } = this.contentHelper.getCurrentSelection();
27494
27498
  this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION", { start, end });
27495
27499
  this.isKeyStillDown = true;
27496
27500
  }
@@ -31335,9 +31339,9 @@
31335
31339
  Object.defineProperty(exports, '__esModule', { value: true });
31336
31340
 
31337
31341
 
31338
- __info__.version = '15.2.7';
31339
- __info__.date = '2023-05-12T10:54:29.220Z';
31340
- __info__.hash = 'd33fde8';
31342
+ __info__.version = '15.2.9';
31343
+ __info__.date = '2023-06-12T13:42:56.116Z';
31344
+ __info__.hash = 'e4aee80';
31341
31345
 
31342
31346
 
31343
31347
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -592,20 +592,20 @@
592
592
  <div class="o-section-title" t-esc="env._t('${rc.CF_TITLE}')"></div>
593
593
  <div class="o_field_radio o_horizontal o_field_widget o-cf-type-selector">
594
594
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('CellIsRule')">
595
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'CellIsRule'}}" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
595
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'CellIsRule'" type="radio" id="cellIsRule" name="ruleType" value="CellIsRule"/>
596
596
  <label for="cellIsRule" class="custom-control-label o_form_label">
597
597
  <t t-esc="env._t('${rc.SingleColor}')"/>
598
598
  </label>
599
599
  </div>
600
600
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('ColorScaleRule')">
601
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'ColorScaleRule'}}" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
601
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'ColorScaleRule'" type="radio" id="colorScaleRule" name="ruleType" value="ColorScaleRule"/>
602
602
  <label for="colorScaleRule" class="custom-control-label o_form_label">
603
603
  <t t-esc="env._t('${rc.ColorScale}')"/>
604
604
  </label>
605
605
  </div>
606
606
 
607
607
  <div class="custom-control custom-radio o_cf_radio_item" t-on-click="changeRuleType('IconSetRule')">
608
- <input class="custom-control-input o_radio_input" t-attf-checked="{{state.currentCFType === 'IconSetRule'}}" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
608
+ <input class="custom-control-input o_radio_input" t-att-checked="state.currentCFType === 'IconSetRule'" type="radio" id="iconSetRule" name="ruleType" value="IconSetRule"/>
609
609
  <label for="iconSetRule" class="custom-control-label o_form_label">
610
610
  <t t-esc="env._t('${rc.IconSet}')"/>
611
611
  </label>
@@ -1926,7 +1926,7 @@
1926
1926
  .o-topbar-toolbar .o-composer-container:focus-within {
1927
1927
  border: 1px solid ${p};
1928
1928
  }
1929
- `;class tg extends t.Component{constructor(){super(...arguments),this.composerRef=Vp("o_composer"),this.getters=this.env.getters,this.dispatch=this.env.dispatch,this.composerState=Bp({positionStart:0,positionEnd:0}),this.autoCompleteState=Bp({showProvider:!1,provider:"functions",search:""}),this.functionDescriptionState=Bp({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:()=>console.warn("Not implemented"),Tab:e=>this.processTabKey(e)},this.contentHelper=new Lp(this.composerRef.el)}get assistantStyle(){if(this.props.delimitation&&this.props.rect){const[e,t,,s]=this.props.rect;let o="";return t>this.props.delimitation.height-(t+s)&&(o+="\n top: -8px;\n transform: translate(0, -100%);\n "),e+300>this.props.delimitation.width&&(o+="right:0px;"),o+="width:300px;"}return"width:300px;"}setup(){Hp((()=>{Os.composer=this;const e=this.composerRef.el;this.contentHelper.updateEl(e),this.processContent()})),Zp((()=>{var e,t;delete Os.composer,null===(t=(e=this.props).onComposerUnmounted)||void 0===t||t.call(e)})),zp((()=>{this.isKeyStillDown||this.processContent()}))}processArrowKeys(e){if(this.getters.isSelectingForComposer())return this.functionDescriptionState.showDescription=!1,void e.preventDefault();("cellFocus"!==this.props.focus||this.autoCompleteState.showProvider)&&(e.stopPropagation(),["ArrowUp","ArrowDown"].includes(e.key)&&this.autoCompleteState.showProvider&&this.autocompleteAPI&&(e.preventDefault(),"ArrowUp"===e.key?this.autocompleteAPI.moveUp():this.autocompleteAPI.moveDown()))}processTabKey(e){if(e.preventDefault(),e.stopPropagation(),this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}else this.dispatch("STOP_COMPOSER_RANGE_SELECTION");const t=e.shiftKey?-1:1;this.dispatch("MOVE_POSITION",{deltaX:t,deltaY:0})}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.dispatch("STOP_EDITION"),this.dispatch("MOVE_POSITION",{deltaX:0,deltaY:e.shiftKey?-1:1})}processEscapeKey(){this.dispatch("STOP_EDITION",{cancel:!0})}onCompositionStart(){this.compositionActive=!0}onCompositionEnd(){this.compositionActive=!1}onKeydown(e){let t=this.keyMapping[e.key];t?t.call(this,e):e.stopPropagation();const{start:s,end:o}=this.contentHelper.getCurrentSelection();this.getters.isSelectingForComposer()||(this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:s,end:o}),this.isKeyStillDown=!0)}onInput(){if("inactive"===this.props.focus||!this.shouldProcessInputEvents)return;this.dispatch("STOP_COMPOSER_RANGE_SELECTION");const e=this.composerRef.el;this.dispatch("SET_CURRENT_CONTENT",{content:e.childNodes.length?e.textContent:"",selection:this.contentHelper.getCurrentSelection()})}onKeyup(e){if(this.isKeyStillDown=!1,"inactive"===this.props.focus||["Control","Shift","Tab","Enter"].includes(e.key))return;if(this.autoCompleteState.showProvider&&["ArrowUp","ArrowDown"].includes(e.key))return;if(this.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.dispatch("STOP_COMPOSER_RANGE_SELECTION");const{start:t,end:s}=this.getters.getComposerSelection(),{start:o,end:i}=this.contentHelper.getCurrentSelection();o===t&&i===s||this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",this.contentHelper.getCurrentSelection()),this.processTokenAtCursor(),this.processContent()}onMousedown(e){e.button>0||this.contentHelper.removeSelection()}onClick(){if(this.getters.isReadonly())return;const e=this.contentHelper.getCurrentSelection();this.dispatch("STOP_COMPOSER_RANGE_SELECTION"),"inactive"===this.props.focus&&this.props.onComposerContentFocused(e),this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",e),this.processTokenAtCursor()}onBlur(){this.isKeyStillDown=!1}onCompleted(e){e&&this.autoComplete(e)}processContent(){if(this.compositionActive)return;this.contentHelper.removeAll(),this.shouldProcessInputEvents=!1,"inactive"!==this.props.focus&&this.contentHelper.selectRange(0,0);const e=this.getContent();if(0!==e.length){this.contentHelper.setText(e);const{start:t,end:s}=this.getters.getComposerSelection();"inactive"!==this.props.focus&&this.contentHelper.selectRange(t,s)}this.shouldProcessInputEvents=!0}getContent(){let e;const t=this.getters.getCurrentContent(),s=t.startsWith("=")&&this.getters.getCurrentTokens().length>0;return e=""===t?[]:s&&"inactive"!==this.getters.getEditionMode()?this.getColoredTokens():[{value:t}],e}getColoredTokens(){const e=this.getters.getCurrentTokens(),t=this.getters.getTokenAtCursor(),s=[],{end:o}=this.getters.getComposerSelection();for(const i of e){switch(i.type){case"OPERATOR":case"NUMBER":case"FUNCTION":case"COMMA":case"STRING":s.push({value:i.value,color:Qp[i.type]||"#000"});break;case"REFERENCE":const{xc:e,sheetName:o}=ts(i.value);s.push({value:i.value,color:this.rangeColor(e,o)||"#000"});break;case"SYMBOL":let n=i.value;["TRUE","FALSE"].includes(n.toUpperCase())?s.push({value:i.value,color:Yp}):s.push({value:i.value,color:"#000"});break;case"LEFT_PAREN":case"RIGHT_PAREN":t&&["LEFT_PAREN","RIGHT_PAREN"].includes(t.type)&&t.parenIndex&&t.parenIndex===i.parenIndex?s.push({value:i.value,color:"pink"}):s.push({value:i.value,color:Qp[i.type]||"#000"});break;default:s.push({value:i.value,color:"#000"})}"waitingForRangeSelection"===this.getters.getEditionMode()&&o===i.end&&(s[s.length-1].class=Kp)}return s}rangeColor(e,t){if("inactive"===this.getters.getEditionMode())return;const s=this.getters.getHighlights(),o=t?this.getters.getSheetIdByName(t):this.getters.getEditionSheet(),i=s.find((t=>{if(t.sheet!==o)return!1;let s=Ws(e);const{height:i,width:n}=oo(s);return s=i*n==1?this.getters.expandZone(o,Ws(e)):s,t.sheet===o&&Qs(s,t.zone)}));return i&&i.color?i.color:void 0}processTokenAtCursor(){let e=this.getters.getCurrentContent();if(this.autoCompleteState.showProvider=!1,this.functionDescriptionState.showDescription=!1,e.startsWith("=")){const e=this.getters.getTokenAtCursor();if(e){const{xc:t}=ts(e.value);if("FUNCTION"===e.type||"SYMBOL"===e.type&&!es.test(t))this.autoCompleteState.search=e.value,this.autoCompleteState.showProvider=!0;else if(e.functionContext&&"UNKNOWN"!==e.type){const t=e.functionContext,s=t.parent.toUpperCase(),o=qp[s],i=t.argPosition;this.functionDescriptionState.functionName=s,this.functionDescriptionState.functionDescription=o,this.functionDescriptionState.argToFocus=o.getArgToFocus(i+1)-1,this.functionDescriptionState.showDescription=!0}}}}autoComplete(e){if(e){const t=this.getters.getTokenAtCursor();if(t){let s=t.end,o=t.end;["SYMBOL","FUNCTION"].includes(t.type)&&(s=t.start);const i=this.getters.getCurrentTokens();if(this.autoCompleteState.provider&&i.length){e+="(";const s=i.map((e=>e.start)).indexOf(t.start);if(s+1<i.length){"LEFT_PAREN"===i[s+1].type&&o++}}this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:s,end:o})}this.dispatch("REPLACE_COMPOSER_CURSOR_SELECTION",{text:e})}this.processTokenAtCursor()}}tg.template=Jp,tg.style=eg,tg.components={TextValueProvider:Rp,FunctionDescriptionProvider:Up},tg.defaultProps={inputStyle:"",focus:"inactive"};const{useState:sg,onMounted:og}=t.hooks,{xml:ig,css:ng}=t.tags,rg=ig`
1929
+ `;class tg extends t.Component{constructor(){super(...arguments),this.composerRef=Vp("o_composer"),this.getters=this.env.getters,this.dispatch=this.env.dispatch,this.composerState=Bp({positionStart:0,positionEnd:0}),this.autoCompleteState=Bp({showProvider:!1,provider:"functions",search:""}),this.functionDescriptionState=Bp({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:()=>console.warn("Not implemented"),Tab:e=>this.processTabKey(e)},this.contentHelper=new Lp(this.composerRef.el)}get assistantStyle(){if(this.props.delimitation&&this.props.rect){const[e,t,,s]=this.props.rect;let o="";return t>this.props.delimitation.height-(t+s)&&(o+="\n top: -8px;\n transform: translate(0, -100%);\n "),e+300>this.props.delimitation.width&&(o+="right:0px;"),o+="width:300px;"}return"width:300px;"}setup(){Hp((()=>{Os.composer=this;const e=this.composerRef.el;this.contentHelper.updateEl(e),this.processContent()})),Zp((()=>{var e,t;delete Os.composer,null===(t=(e=this.props).onComposerUnmounted)||void 0===t||t.call(e)})),zp((()=>{this.isKeyStillDown||this.processContent()}))}processArrowKeys(e){if(this.getters.isSelectingForComposer())return this.functionDescriptionState.showDescription=!1,void e.preventDefault();("cellFocus"!==this.props.focus||this.autoCompleteState.showProvider)&&(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())}processTabKey(e){if(e.preventDefault(),e.stopPropagation(),this.autoCompleteState.showProvider&&this.autocompleteAPI){const e=this.autocompleteAPI.getValueToFill();if(e)return void this.autoComplete(e)}else this.dispatch("STOP_COMPOSER_RANGE_SELECTION");const t=e.shiftKey?-1:1;this.dispatch("MOVE_POSITION",{deltaX:t,deltaY:0})}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.dispatch("STOP_EDITION"),this.dispatch("MOVE_POSITION",{deltaX:0,deltaY:e.shiftKey?-1:1})}processEscapeKey(){this.dispatch("STOP_EDITION",{cancel:!0})}onCompositionStart(){this.compositionActive=!0}onCompositionEnd(){this.compositionActive=!1}onKeydown(e){let t=this.keyMapping[e.key];t?t.call(this,e):(e.stopPropagation(),this.updateCursorIfNeeded())}updateCursorIfNeeded(){if(!this.getters.isSelectingForComposer()){const{start:e,end:t}=this.contentHelper.getCurrentSelection();this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:e,end:t}),this.isKeyStillDown=!0}}onInput(){if("inactive"===this.props.focus||!this.shouldProcessInputEvents)return;this.dispatch("STOP_COMPOSER_RANGE_SELECTION");const e=this.composerRef.el;this.dispatch("SET_CURRENT_CONTENT",{content:e.childNodes.length?e.textContent:"",selection:this.contentHelper.getCurrentSelection()})}onKeyup(e){if(this.isKeyStillDown=!1,"inactive"===this.props.focus||["Control","Shift","Tab","Enter"].includes(e.key))return;if(this.autoCompleteState.showProvider&&["ArrowUp","ArrowDown"].includes(e.key))return;if(this.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.dispatch("STOP_COMPOSER_RANGE_SELECTION");const{start:t,end:s}=this.getters.getComposerSelection(),{start:o,end:i}=this.contentHelper.getCurrentSelection();o===t&&i===s||this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",this.contentHelper.getCurrentSelection()),this.processTokenAtCursor(),this.processContent()}onMousedown(e){e.button>0||this.contentHelper.removeSelection()}onClick(){if(this.getters.isReadonly())return;const e=this.contentHelper.getCurrentSelection();this.dispatch("STOP_COMPOSER_RANGE_SELECTION"),"inactive"===this.props.focus&&this.props.onComposerContentFocused(e),this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",e),this.processTokenAtCursor()}onBlur(){this.isKeyStillDown=!1}onCompleted(e){e&&this.autoComplete(e)}processContent(){if(this.compositionActive)return;this.contentHelper.removeAll(),this.shouldProcessInputEvents=!1,"inactive"!==this.props.focus&&this.contentHelper.selectRange(0,0);const e=this.getContent();if(0!==e.length){this.contentHelper.setText(e);const{start:t,end:s}=this.getters.getComposerSelection();"inactive"!==this.props.focus&&this.contentHelper.selectRange(t,s)}this.shouldProcessInputEvents=!0}getContent(){let e;const t=this.getters.getCurrentContent(),s=t.startsWith("=")&&this.getters.getCurrentTokens().length>0;return e=""===t?[]:s&&"inactive"!==this.getters.getEditionMode()?this.getColoredTokens():[{value:t}],e}getColoredTokens(){const e=this.getters.getCurrentTokens(),t=this.getters.getTokenAtCursor(),s=[],{end:o}=this.getters.getComposerSelection();for(const i of e){switch(i.type){case"OPERATOR":case"NUMBER":case"FUNCTION":case"COMMA":case"STRING":s.push({value:i.value,color:Qp[i.type]||"#000"});break;case"REFERENCE":const{xc:e,sheetName:o}=ts(i.value);s.push({value:i.value,color:this.rangeColor(e,o)||"#000"});break;case"SYMBOL":let n=i.value;["TRUE","FALSE"].includes(n.toUpperCase())?s.push({value:i.value,color:Yp}):s.push({value:i.value,color:"#000"});break;case"LEFT_PAREN":case"RIGHT_PAREN":t&&["LEFT_PAREN","RIGHT_PAREN"].includes(t.type)&&t.parenIndex&&t.parenIndex===i.parenIndex?s.push({value:i.value,color:"pink"}):s.push({value:i.value,color:Qp[i.type]||"#000"});break;default:s.push({value:i.value,color:"#000"})}"waitingForRangeSelection"===this.getters.getEditionMode()&&o===i.end&&(s[s.length-1].class=Kp)}return s}rangeColor(e,t){if("inactive"===this.getters.getEditionMode())return;const s=this.getters.getHighlights(),o=t?this.getters.getSheetIdByName(t):this.getters.getEditionSheet(),i=s.find((t=>{if(t.sheet!==o)return!1;let s=Ws(e);const{height:i,width:n}=oo(s);return s=i*n==1?this.getters.expandZone(o,Ws(e)):s,t.sheet===o&&Qs(s,t.zone)}));return i&&i.color?i.color:void 0}processTokenAtCursor(){let e=this.getters.getCurrentContent();if(this.autoCompleteState.showProvider=!1,this.functionDescriptionState.showDescription=!1,e.startsWith("=")){const e=this.getters.getTokenAtCursor();if(e){const{xc:t}=ts(e.value);if("FUNCTION"===e.type||"SYMBOL"===e.type&&!es.test(t))this.autoCompleteState.search=e.value,this.autoCompleteState.showProvider=!0;else if(e.functionContext&&"UNKNOWN"!==e.type){const t=e.functionContext,s=t.parent.toUpperCase(),o=qp[s],i=t.argPosition;this.functionDescriptionState.functionName=s,this.functionDescriptionState.functionDescription=o,this.functionDescriptionState.argToFocus=o.getArgToFocus(i+1)-1,this.functionDescriptionState.showDescription=!0}}}}autoComplete(e){if(e){const t=this.getters.getTokenAtCursor();if(t){let s=t.end,o=t.end;["SYMBOL","FUNCTION"].includes(t.type)&&(s=t.start);const i=this.getters.getCurrentTokens();if(this.autoCompleteState.provider&&i.length){e+="(";const s=i.map((e=>e.start)).indexOf(t.start);if(s+1<i.length){"LEFT_PAREN"===i[s+1].type&&o++}}this.dispatch("CHANGE_COMPOSER_CURSOR_SELECTION",{start:s,end:o})}this.dispatch("REPLACE_COMPOSER_CURSOR_SELECTION",{text:e})}this.processTokenAtCursor()}}tg.template=Jp,tg.style=eg,tg.components={TextValueProvider:Rp,FunctionDescriptionProvider:Up},tg.defaultProps={inputStyle:"",focus:"inactive"};const{useState:sg,onMounted:og}=t.hooks,{xml:ig,css:ng}=t.tags,rg=ig`
1930
1930
  <div class="o-grid-composer" t-att-style="containerStyle">
1931
1931
  <Composer
1932
1932
  focus = "props.focus"
@@ -3087,4 +3087,4 @@
3087
3087
  height: ${15}px;
3088
3088
  vertical-align: sub;
3089
3089
  }
3090
- `;class Wf extends t.Component{constructor(e,s={}){super(e,s),this.model=new Nu(this.props.data,{evalContext:{env:this.env},transportService:this.props.transportService,client:this.props.client,isReadonly:this.props.isReadonly,snapshotRequested:this.props.snapshotRequested},this.props.stateUpdateMessages),this.sidePanel=t.useState({isOpen:!1,panelProps:{}}),this.linkEditor=t.useState({isOpen:!1}),this.composer=t.useState({topBarFocus:"inactive",gridFocusMode:"inactive"}),this.keyDownMapping={"CTRL+H":()=>this.toggleSidePanel("FindAndReplace",{}),"CTRL+F":()=>this.toggleSidePanel("FindAndReplace",{})},Pf({openSidePanel:(e,t={})=>this.openSidePanel(e,t),toggleSidePanel:(e,t={})=>this.toggleSidePanel(e,t),dispatch:this.model.dispatch,getters:this.model.getters,uuidGenerator:this.model.uuidGenerator,_t:Wf._t,clipboard:navigator.clipboard,export:this.model.exportData.bind(this.model),waitForIdle:this.model.waitForIdle.bind(this.model),exportXLSX:this.model.exportXLSX.bind(this.model),openLinkEditor:()=>this.openLinkEditor()}),this.activateFirstSheet()}setup(){Df(window,"resize",this.render),Df(document.body,"keyup",this.onKeyup.bind(this)),Df(window,"beforeunload",this.leaveCollaborativeSession.bind(this)),Uf((()=>this.initiateModelEvents())),Vf((()=>this.leaveCollaborativeSession())),Bf((e=>this.checkReadonly(e)))}get focusTopBarComposer(){return"inactive"===this.model.getters.getEditionMode()?"inactive":this.composer.topBarFocus}get focusGridComposer(){return"inactive"===this.model.getters.getEditionMode()?"inactive":this.composer.gridFocusMode}initiateModelEvents(){this.model.on("update",this,this.render),this.model.on("notify-ui",this,this.onNotifyUI),this.model.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.props.client&&this.model.joinSession(this.props.client)}onNotifyUI(e){if("NOTIFICATION"===e.type)this.env.notifyUser(e.text)}checkReadonly(e){this.props.isReadonly!==e.isReadonly&&this.model.updateReadOnly(e.isReadonly)}leaveCollaborativeSession(){this.model.off("update",this),this.model.leaveSession()}activateFirstSheet(){const e=this.model.getters.getActiveSheetId(),[t]=this.model.getters.getSheets();t.id!==e&&this.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e,sheetIdTo:t.id})}destroy(){this.model.destroy(),super.destroy()}openSidePanel(e,t){this.sidePanel.component=e,this.sidePanel.panelProps=t,this.sidePanel.isOpen=!0}closeSidePanel(){this.sidePanel.isOpen=!1,this.focusGrid()}openLinkEditor(){this.linkEditor.isOpen=!0}closeLinkEditor(){this.linkEditor.isOpen=!1,this.focusGrid()}toggleSidePanel(e,t){this.sidePanel.isOpen&&e===this.sidePanel.component?(this.sidePanel.isOpen=!1,this.focusGrid()):this.openSidePanel(e,t)}focusGrid(){if(!this._focusGrid)throw new Error("_focusGrid should be exposed by the grid component");this._focusGrid()}save(){this.trigger("save-content",{data:this.model.exportData()})}onKeyup(e){"Control"===e.key&&this.model.getters.getSelectionMode()!==Rh.expanding&&this.model.dispatch("STOP_SELECTION")}onKeydown(e){"Control"!==e.key||e.repeat||this.model.dispatch(this.model.getters.getSelectionMode()===Rh.idle?"PREPARE_SELECTION_EXPANSION":"START_SELECTION_EXPANSION");let t="";(e.ctrlKey||e.metaKey)&&(t+="CTRL+"),t+=e.key.toUpperCase();let s=this.keyDownMapping[t];if(s)return e.preventDefault(),e.stopPropagation(),void s()}onTopBarComposerFocused(e){this.model.getters.isReadonly()||(this.composer.topBarFocus="contentFocus",this.composer.gridFocusMode="inactive",this.setComposerContent({selection:e}||{}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}onGridComposerContentFocused(){this.model.getters.isReadonly()||(this.composer.topBarFocus="inactive",this.composer.gridFocusMode="contentFocus",this.setComposerContent({}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}onGridComposerCellFocused(e,t){this.model.getters.isReadonly()||(this.composer.topBarFocus="inactive",this.composer.gridFocusMode="cellFocus",this.setComposerContent({content:e,selection:t}||{}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}setComposerContent({content:e,selection:t}){"inactive"===this.model.getters.getEditionMode()?this.model.dispatch("START_EDITION",{text:e,selection:t}):e&&this.model.dispatch("SET_CURRENT_CONTENT",{content:e,selection:t})}}Wf.template=Zf,Wf.style=Gf,Wf.components={TopBar:$f,Grid:wf,BottomBar:ip,SidePanel:Mf,LinkEditor:ef},Wf._t=e=>e;const qf={},jf={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:m,HEADER_WIDTH:v,TOPBAR_HEIGHT:E,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:b,DEFAULT_CELL_HEIGHT:S,SCROLLBAR_WIDTH:C},Xf={autofillModifiersRegistry:La,autofillRulesRegistry:Ma,cellMenuRegistry:gl,colMenuRegistry:fl,linkMenuRegistry:ml,functionRegistry:cr,uiPluginRegistry:ad,corePluginRegistry:rd,rowMenuRegistry:vl,sidePanelRegistry:bh,sheetMenuRegistry:bl,topbarMenuRegistry:Sl,topbarComponentRegistry:Sh,otRegistry:Cl,inverseCommandRegistry:_a,cellRegistry:Wr},Yf={LinkCell:ta},Kf={args:Oe,toBoolean:fe,toNumber:de,toString:pe,toXC:is,toZone:Ws,toCartesian:os,numberToLetters:ss,createFullMenuItem:ka,UuidGenerator:Bs,formatDecimal:ae,computeTextWidth:vs,isMarkdownLink:xs,parseMarkdownLink:Rs,markdownLink:Ts,createEmptyWorkbookData:ga};e.CorePlugin=ma,e.DATETIME_FORMAT=_,e.DataSource=hd,e.DispatchResult=Ve,e.Model=Nu,e.Registry=Me,e.Revision=Kh,e.SPREADSHEET_DIMENSIONS=jf,e.Spreadsheet=Wf,e.UIPlugin=Ch,e.__DEBUG__=Os,e.__info__=qf,e.astToFormula=Fr,e.cellTypes=Yf,e.compile=Zr,e.convertAstNodes=kr,e.coreTypes=Pe,e.functionCache=zr,e.helpers=Kf,e.invalidateEvaluationCommands=$e,e.parse=Or,e.readonlyAllowedCommands=De,e.registries=Xf,e.setTranslationMethod=function(e){i=e},Object.defineProperty(e,"__esModule",{value:!0}),qf.version="15.2.7",qf.date="2023-05-12T10:54:29.220Z",qf.hash="d33fde8"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
3090
+ `;class Wf extends t.Component{constructor(e,s={}){super(e,s),this.model=new Nu(this.props.data,{evalContext:{env:this.env},transportService:this.props.transportService,client:this.props.client,isReadonly:this.props.isReadonly,snapshotRequested:this.props.snapshotRequested},this.props.stateUpdateMessages),this.sidePanel=t.useState({isOpen:!1,panelProps:{}}),this.linkEditor=t.useState({isOpen:!1}),this.composer=t.useState({topBarFocus:"inactive",gridFocusMode:"inactive"}),this.keyDownMapping={"CTRL+H":()=>this.toggleSidePanel("FindAndReplace",{}),"CTRL+F":()=>this.toggleSidePanel("FindAndReplace",{})},Pf({openSidePanel:(e,t={})=>this.openSidePanel(e,t),toggleSidePanel:(e,t={})=>this.toggleSidePanel(e,t),dispatch:this.model.dispatch,getters:this.model.getters,uuidGenerator:this.model.uuidGenerator,_t:Wf._t,clipboard:navigator.clipboard,export:this.model.exportData.bind(this.model),waitForIdle:this.model.waitForIdle.bind(this.model),exportXLSX:this.model.exportXLSX.bind(this.model),openLinkEditor:()=>this.openLinkEditor()}),this.activateFirstSheet()}setup(){Df(window,"resize",this.render),Df(document.body,"keyup",this.onKeyup.bind(this)),Df(window,"beforeunload",this.leaveCollaborativeSession.bind(this)),Uf((()=>this.initiateModelEvents())),Vf((()=>this.leaveCollaborativeSession())),Bf((e=>this.checkReadonly(e)))}get focusTopBarComposer(){return"inactive"===this.model.getters.getEditionMode()?"inactive":this.composer.topBarFocus}get focusGridComposer(){return"inactive"===this.model.getters.getEditionMode()?"inactive":this.composer.gridFocusMode}initiateModelEvents(){this.model.on("update",this,this.render),this.model.on("notify-ui",this,this.onNotifyUI),this.model.on("unexpected-revision-id",this,(()=>this.trigger("unexpected-revision-id"))),this.props.client&&this.model.joinSession(this.props.client)}onNotifyUI(e){if("NOTIFICATION"===e.type)this.env.notifyUser(e.text)}checkReadonly(e){this.props.isReadonly!==e.isReadonly&&this.model.updateReadOnly(e.isReadonly)}leaveCollaborativeSession(){this.model.off("update",this),this.model.leaveSession()}activateFirstSheet(){const e=this.model.getters.getActiveSheetId(),[t]=this.model.getters.getSheets();t.id!==e&&this.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:e,sheetIdTo:t.id})}destroy(){this.model.destroy(),super.destroy()}openSidePanel(e,t){this.sidePanel.component=e,this.sidePanel.panelProps=t,this.sidePanel.isOpen=!0}closeSidePanel(){this.sidePanel.isOpen=!1,this.focusGrid()}openLinkEditor(){this.linkEditor.isOpen=!0}closeLinkEditor(){this.linkEditor.isOpen=!1,this.focusGrid()}toggleSidePanel(e,t){this.sidePanel.isOpen&&e===this.sidePanel.component?(this.sidePanel.isOpen=!1,this.focusGrid()):this.openSidePanel(e,t)}focusGrid(){if(!this._focusGrid)throw new Error("_focusGrid should be exposed by the grid component");this._focusGrid()}save(){this.trigger("save-content",{data:this.model.exportData()})}onKeyup(e){"Control"===e.key&&this.model.getters.getSelectionMode()!==Rh.expanding&&this.model.dispatch("STOP_SELECTION")}onKeydown(e){"Control"!==e.key||e.repeat||this.model.dispatch(this.model.getters.getSelectionMode()===Rh.idle?"PREPARE_SELECTION_EXPANSION":"START_SELECTION_EXPANSION");let t="";(e.ctrlKey||e.metaKey)&&(t+="CTRL+"),t+=e.key.toUpperCase();let s=this.keyDownMapping[t];if(s)return e.preventDefault(),e.stopPropagation(),void s()}onTopBarComposerFocused(e){this.model.getters.isReadonly()||(this.composer.topBarFocus="contentFocus",this.composer.gridFocusMode="inactive",this.setComposerContent({selection:e}||{}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}onGridComposerContentFocused(){this.model.getters.isReadonly()||(this.composer.topBarFocus="inactive",this.composer.gridFocusMode="contentFocus",this.setComposerContent({}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}onGridComposerCellFocused(e,t){this.model.getters.isReadonly()||(this.composer.topBarFocus="inactive",this.composer.gridFocusMode="cellFocus",this.setComposerContent({content:e,selection:t}||{}),this.env.dispatch("UNFOCUS_SELECTION_INPUT"))}setComposerContent({content:e,selection:t}){"inactive"===this.model.getters.getEditionMode()?this.model.dispatch("START_EDITION",{text:e,selection:t}):e&&this.model.dispatch("SET_CURRENT_CONTENT",{content:e,selection:t})}}Wf.template=Zf,Wf.style=Gf,Wf.components={TopBar:$f,Grid:wf,BottomBar:ip,SidePanel:Mf,LinkEditor:ef},Wf._t=e=>e;const qf={},jf={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:m,HEADER_WIDTH:v,TOPBAR_HEIGHT:E,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:b,DEFAULT_CELL_HEIGHT:S,SCROLLBAR_WIDTH:C},Xf={autofillModifiersRegistry:La,autofillRulesRegistry:Ma,cellMenuRegistry:gl,colMenuRegistry:fl,linkMenuRegistry:ml,functionRegistry:cr,uiPluginRegistry:ad,corePluginRegistry:rd,rowMenuRegistry:vl,sidePanelRegistry:bh,sheetMenuRegistry:bl,topbarMenuRegistry:Sl,topbarComponentRegistry:Sh,otRegistry:Cl,inverseCommandRegistry:_a,cellRegistry:Wr},Yf={LinkCell:ta},Kf={args:Oe,toBoolean:fe,toNumber:de,toString:pe,toXC:is,toZone:Ws,toCartesian:os,numberToLetters:ss,createFullMenuItem:ka,UuidGenerator:Bs,formatDecimal:ae,computeTextWidth:vs,isMarkdownLink:xs,parseMarkdownLink:Rs,markdownLink:Ts,createEmptyWorkbookData:ga};e.CorePlugin=ma,e.DATETIME_FORMAT=_,e.DataSource=hd,e.DispatchResult=Ve,e.Model=Nu,e.Registry=Me,e.Revision=Kh,e.SPREADSHEET_DIMENSIONS=jf,e.Spreadsheet=Wf,e.UIPlugin=Ch,e.__DEBUG__=Os,e.__info__=qf,e.astToFormula=Fr,e.cellTypes=Yf,e.compile=Zr,e.convertAstNodes=kr,e.coreTypes=Pe,e.functionCache=zr,e.helpers=Kf,e.invalidateEvaluationCommands=$e,e.parse=Or,e.readonlyAllowedCommands=De,e.registries=Xf,e.setTranslationMethod=function(e){i=e},Object.defineProperty(e,"__esModule",{value:!0}),qf.version="15.2.9",qf.date="2023-06-12T13:42:56.116Z",qf.hash="e4aee80"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "15.2.7",
3
+ "version": "15.2.9",
4
4
  "description": "A spreadsheet component",
5
5
  "main": "dist/o-spreadsheet.cjs.js",
6
6
  "browser": "dist/o-spreadsheet.iife.js",