@odoo/o-spreadsheet 16.0.33 → 16.0.34

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.
@@ -5928,17 +5928,20 @@ rowMenuRegistry
5928
5928
  });
5929
5929
 
5930
5930
  function interactiveRenameSheet(env, sheetId, errorText) {
5931
+ if (env.model.getters.isReadonly()) {
5932
+ return;
5933
+ }
5931
5934
  const placeholder = env.model.getters.getSheetName(sheetId);
5932
5935
  const title = _lt("Rename Sheet");
5933
5936
  const callback = (name) => {
5934
5937
  if (name === null || name === placeholder) {
5935
5938
  return;
5936
5939
  }
5937
- if (name === "") {
5938
- interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5939
- }
5940
5940
  const result = env.model.dispatch("RENAME_SHEET", { sheetId, name });
5941
5941
  if (!result.isSuccessful) {
5942
+ if (result.reasons.includes(10 /* CommandResult.MissingSheetName */)) {
5943
+ interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5944
+ }
5942
5945
  if (result.reasons.includes(11 /* CommandResult.DuplicatedSheetName */)) {
5943
5946
  interactiveRenameSheet(env, sheetId, _lt("A sheet with the name %s already exists. Please select another name.", name));
5944
5947
  }
@@ -43271,6 +43274,6 @@ exports.setTranslationMethod = setTranslationMethod;
43271
43274
  exports.tokenize = tokenize;
43272
43275
 
43273
43276
 
43274
- __info__.version = '16.0.33';
43275
- __info__.date = '2024-02-16T14:49:10.674Z';
43276
- __info__.hash = 'c0cefe8';
43277
+ __info__.version = '16.0.34';
43278
+ __info__.date = '2024-03-12T07:54:05.304Z';
43279
+ __info__.hash = 'e923ddd';
@@ -5924,17 +5924,20 @@ rowMenuRegistry
5924
5924
  });
5925
5925
 
5926
5926
  function interactiveRenameSheet(env, sheetId, errorText) {
5927
+ if (env.model.getters.isReadonly()) {
5928
+ return;
5929
+ }
5927
5930
  const placeholder = env.model.getters.getSheetName(sheetId);
5928
5931
  const title = _lt("Rename Sheet");
5929
5932
  const callback = (name) => {
5930
5933
  if (name === null || name === placeholder) {
5931
5934
  return;
5932
5935
  }
5933
- if (name === "") {
5934
- interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5935
- }
5936
5936
  const result = env.model.dispatch("RENAME_SHEET", { sheetId, name });
5937
5937
  if (!result.isSuccessful) {
5938
+ if (result.reasons.includes(10 /* CommandResult.MissingSheetName */)) {
5939
+ interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5940
+ }
5938
5941
  if (result.reasons.includes(11 /* CommandResult.DuplicatedSheetName */)) {
5939
5942
  interactiveRenameSheet(env, sheetId, _lt("A sheet with the name %s already exists. Please select another name.", name));
5940
5943
  }
@@ -43239,6 +43242,6 @@ function addFunction(functionName, functionDescription) {
43239
43242
  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 };
43240
43243
 
43241
43244
 
43242
- __info__.version = '16.0.33';
43243
- __info__.date = '2024-02-16T14:49:10.674Z';
43244
- __info__.hash = 'c0cefe8';
43245
+ __info__.version = '16.0.34';
43246
+ __info__.date = '2024-03-12T07:54:05.304Z';
43247
+ __info__.hash = 'e923ddd';
@@ -5925,17 +5925,20 @@
5925
5925
  });
5926
5926
 
5927
5927
  function interactiveRenameSheet(env, sheetId, errorText) {
5928
+ if (env.model.getters.isReadonly()) {
5929
+ return;
5930
+ }
5928
5931
  const placeholder = env.model.getters.getSheetName(sheetId);
5929
5932
  const title = _lt("Rename Sheet");
5930
5933
  const callback = (name) => {
5931
5934
  if (name === null || name === placeholder) {
5932
5935
  return;
5933
5936
  }
5934
- if (name === "") {
5935
- interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5936
- }
5937
5937
  const result = env.model.dispatch("RENAME_SHEET", { sheetId, name });
5938
5938
  if (!result.isSuccessful) {
5939
+ if (result.reasons.includes(10 /* CommandResult.MissingSheetName */)) {
5940
+ interactiveRenameSheet(env, sheetId, _lt("The sheet name cannot be empty."));
5941
+ }
5939
5942
  if (result.reasons.includes(11 /* CommandResult.DuplicatedSheetName */)) {
5940
5943
  interactiveRenameSheet(env, sheetId, _lt("A sheet with the name %s already exists. Please select another name.", name));
5941
5944
  }
@@ -43270,9 +43273,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
43270
43273
  Object.defineProperty(exports, '__esModule', { value: true });
43271
43274
 
43272
43275
 
43273
- __info__.version = '16.0.33';
43274
- __info__.date = '2024-02-16T14:49:10.674Z';
43275
- __info__.hash = 'c0cefe8';
43276
+ __info__.version = '16.0.34';
43277
+ __info__.date = '2024-03-12T07:54:05.304Z';
43278
+ __info__.hash = 'e923ddd';
43276
43279
 
43277
43280
 
43278
43281
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
@@ -269,7 +269,7 @@
269
269
  }
270
270
  }
271
271
  }
272
- `;class Wn extends t.Component{constructor(){super(...arguments),this.menuItems=Hn.getAll(),this.state=t.useState(this.defaultState),this.menu=t.useState({isOpen:!1}),this.linkEditorRef=t.useRef("linkEditor"),this.position=Dn(this.linkEditorRef),this.urlInput=t.useRef("urlInput")}setup(){t.onMounted((()=>{var e;return null===(e=this.urlInput.el)||void 0===e?void 0:e.focus()}))}get defaultState(){const{col:e,row:t}=this.props.cellPosition,i=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getCell(i,e,t);return(null==n?void 0:n.isLink())?{link:{url:n.link.url,label:n.formattedValue},urlRepresentation:n.urlRepresentation,isUrlEditable:n.isUrlEditable}:{link:{url:"",label:(null==n?void 0:n.formattedValue)||""},isUrlEditable:!0,urlRepresentation:""}}get menuPosition(){return{x:this.position.x+320-12-2,y:this.position.y+100}}onSpecialLink(e){const{detail:t}=e;this.state.link.url=t.link.url,this.state.link.label=t.link.label,this.state.isUrlEditable=t.isUrlEditable,this.state.urlRepresentation=t.urlRepresentation}openMenu(){this.menu.isOpen=!0}removeLink(){this.state.link.url="",this.state.urlRepresentation="",this.state.isUrlEditable=!0}save(){var e,t;const{col:i,row:n}=this.props.cellPosition,o=this.state.link.label||this.state.link.url;this.env.model.dispatch("UPDATE_CELL",{col:i,row:n,sheetId:this.env.model.getters.getActiveSheetId(),content:We(o,this.state.link.url)}),null===(t=(e=this.props).onClosed)||void 0===t||t.call(e)}cancel(){var e,t;null===(t=(e=this.props).onClosed)||void 0===t||t.call(e)}onKeyDown(e){switch(e.key){case"Enter":this.state.link.url&&this.save();break;case"Escape":this.cancel()}}}Wn.template="o-spreadsheet-LinkEditor",Wn.size={width:340,height:180},Wn.components={Menu:$n};const Gn={onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:Wn,cellCorner:"BottomLeft"})},qn=new Ji;qn.add("ErrorToolTip",wn).add("LinkCell",Pn).add("LinkEditor",Gn).add("FilterMenu",In);const Zn=new Ji,jn=new Ji,Yn=new Ji,Xn=(new Ji).add("ADD_COLUMNS_ROWS",(function(e){const t=[];let i=e.base;"after"===e.position&&i++;for(let n=0;n<e.quantity;n++)t.push(n+i);return[{type:"REMOVE_COLUMNS_ROWS",dimension:e.dimension,elements:t,sheetId:e.sheetId}]})).add("REMOVE_COLUMNS_ROWS",(function(e){const t=[],i=[...e.elements].sort(((e,t)=>e-t));for(let n of Le(i)){const i=0===n[0]?0:n[0]-1,o=0===n[0]?"before":"after";t.push({type:"ADD_COLUMNS_ROWS",dimension:e.dimension,quantity:n.length,base:i,sheetId:e.sheetId,position:o})}return t})).add("ADD_MERGE",(function(e){return[{type:"REMOVE_MERGE",sheetId:e.sheetId,target:e.target}]})).add("REMOVE_MERGE",(function(e){return[{type:"ADD_MERGE",sheetId:e.sheetId,target:e.target}]})).add("CREATE_SHEET",(function(e){return[{type:"DELETE_SHEET",sheetId:e.sheetId}]})).add("DELETE_SHEET",(function(e){return[{type:"CREATE_SHEET",sheetId:e.sheetId,position:1}]})).add("DUPLICATE_SHEET",(function(e){return[{type:"DELETE_SHEET",sheetId:e.sheetIdTo}]})).add("CREATE_FIGURE",(function(e){return[{type:"DELETE_FIGURE",id:e.figure.id,sheetId:e.sheetId}]})).add("CREATE_CHART",(function(e){return[{type:"DELETE_FIGURE",id:e.id,sheetId:e.sheetId}]})).add("HIDE_COLUMNS_ROWS",(function(e){return[{type:"UNHIDE_COLUMNS_ROWS",sheetId:e.sheetId,dimension:e.dimension,elements:e.elements}]})).add("UNHIDE_COLUMNS_ROWS",(function(e){return[{type:"HIDE_COLUMNS_ROWS",sheetId:e.sheetId,dimension:e.dimension,elements:e.elements}]}));for(const e of cn.values())Xn.contains(e)||Xn.add(e,Kn);function Kn(e){return[e]}const Qn=[rn.number,rn.error,rn.text,rn.boolean];function Jn(e,t){return{index:t,type:e?e.evaluated.type:rn.empty,value:e?e.evaluated.value:""}}function eo(e,t,i,n,o){let s=dn.Success,a=n.right>n.left;if(e.model.getters.doesIntersectMerge(t,n)){let i;a=!1;for(let o=n.top;o<=n.bottom;o++){i=[];for(let r=n.left;r<=n.right;r++){let n=e.model.getters.getMerge(t,r,o);n&&!i.includes(n.id.toString())&&i.push(n.id.toString())}if(i.length>=2){a=!0;break}}}const{col:l,row:c}=i;if(a)s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o});else{const i=e.model.getters.getContiguousZone(t,n);Li(i,n)?s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o}):e.askConfirmation(r("We found data next to your selection. Since this data was not selected, it will not be sorted. Do you want to extend your selection?"),(()=>{n=i,s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o})}),(()=>{s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o})}))}if(s.isCancelledBecause(63)){const{col:t,row:o}=i;e.model.selection.selectZone({cell:{col:t,row:o},zone:n}),e.raiseError(r("Cannot sort. To sort, select only cells or only merges that have the same size."))}}function to(e){const t=e.model.dispatch("CUT");t.isSuccessful||t.isCancelledBecause(19)&&e.raiseError(r("This operation is not allowed with multiple selections."))}const io={filterOverlap:r("You cannot create overlapping filters."),nonContinuousTargets:r("A filter can only be created on a continuous selection."),mergeInFilter:r("You can't create a filter over a range that contains a merge.")};function no(e,t,i){const n=e.model.dispatch("CREATE_FILTER_TABLE",{target:i,sheetId:t});n.isCancelledBecause(78)?e.raiseError(io.filterOverlap):n.isCancelledBecause(80)?e.raiseError(io.mergeInFilter):n.isCancelledBecause(81)&&e.raiseError(io.nonContinuousTargets)}const oo={wrongPasteSelection:r("This operation is not allowed with multiple selections."),willRemoveExistingMerge:r("This operation is not possible due to a merge. Please remove the merges first than try again."),wrongFigurePasteOption:r("Cannot do a special paste of a figure."),frozenPaneOverlap:r("Cannot paste merged cells over a frozen pane.")};function ro(e,t){t.isSuccessful||(t.reasons.includes(20)?e.raiseError(oo.wrongPasteSelection):t.reasons.includes(2)?e.raiseError(oo.willRemoveExistingMerge):t.reasons.includes(22)?e.raiseError(oo.wrongFigurePasteOption):t.reasons.includes(75)&&e.raiseError(oo.frozenPaneOverlap))}function so(e,t,i){const n=e.model.dispatch("PASTE",{target:t,pasteOption:i});ro(e,n)}function ao(e,t,i){const n=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,text:i});ro(e,n)}function lo(e){const t=e.model.getters.getActiveCols();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}function co(e){const t=e.model.getters.getActiveRows();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function ho(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function uo(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}async function go(e){try{return await e.clipboard.readText()}catch(e){return console.warn("The OS clipboard could not be read."),void console.error(e)}}const po=async e=>{e.model.dispatch("COPY"),await e.clipboard.writeText(e.model.getters.getClipboardContent())},mo=async e=>{to(e),await e.clipboard.writeText(e.model.getters.getClipboardContent())},fo=async e=>{const t=e.model.getters.getClipboardContent(),i=await go(e),n=e.model.getters.getSelectedZones();i&&i!==t?ao(e,n,i):so(e,n)},vo=async e=>{const t=e.model.getters.getClipboardContent(),i=await go(e),n=e.model.getters.getSelectedZones();i&&i!==t?e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:n,text:i}):e.model.dispatch("PASTE",{target:e.model.getters.getSelectedZones(),pasteOption:"onlyValue"})},bo=e=>so(e,e.model.getters.getSelectedZones(),"onlyFormat"),So=e=>!e.model.getters.isCutOperation(),Co=e=>{if(e.model.getters.getSelectedZones().length>1)return r("Delete rows");let t,i;const n=e.model.getters.getActiveRows();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.top,i=n.bottom}return t===i?r("Delete row %s",(t+1).toString()):r("Delete rows %s - %s",(t+1).toString(),(i+1).toString())},Eo=e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){const i=e.model.getters.getSelectedZones()[0];for(let e=i.top;e<=i.bottom;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},wo=(e,t)=>{const i=t.model.getters.getActiveSheetId(),n=t.model.getters.getElementsFromSelection(e),o=t.model.getters.checkElementsIncludeAllVisibleHeaders(i,e,n),r=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(i,e,n);return!o&&!r},yo=e=>{if(e.model.getters.getSelectedZones().length>1)return r("Delete columns");let t,i;const n=e.model.getters.getActiveCols();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.left,i=n.right}return t===i?r("Delete column %s",kt(t)):r("Delete columns %s - %s",kt(t),kt(i))},xo=e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){const i=e.model.getters.getSelectedZones()[0];for(let e=i.left;e<=i.right;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},Ro=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"ROW"});ro(e,i)},Io=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"COL"});ro(e,i)},To=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"ROW"});ro(e,i)},Ao=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"COL"});ro(e,i)},Mo=e=>{const t=e.model.getters.getActiveRows();let i,n;if(t.size)i=Math.min(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.top,n=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",base:i,quantity:n,dimension:"ROW"})},No=e=>{const t=e.model.getters.getActiveRows();let i,n;if(t.size)i=Math.max(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.bottom,n=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",base:i,quantity:n,dimension:"ROW"})},Oo=e=>{const t=e.model.getters.getActiveCols();let i,n;if(t.size)i=Math.min(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.left,n=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",dimension:"COL",base:i,quantity:n})},_o=e=>{const t=e.model.getters.getActiveCols();let i,n;if(t.size)i=Math.max(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.right,n=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",dimension:"COL",base:i,quantity:n})},Fo=e=>{e.openSidePanel("ConditionalFormatting",{selection:e.model.getters.getSelectedZones()})},Do=e=>{let{col:t,row:i}=e.model.getters.getPosition();e.model.dispatch("OPEN_CELL_POPOVER",{col:t,row:i,popoverType:"LinkEditor"})},ko=e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSelectedZones();return e.model.getters.doesZonesContainFilter(t,i)},$o=e=>{const{anchor:t,zones:i}=e.model.getters.getSelection(),n=e.model.getters.getActiveSheetId();eo(e,n,t.cell,i[0],"ascending")},Lo=e=>{const{anchor:t,zones:i}=e.model.getters.getSelection(),n=e.model.getters.getActiveSheetId();eo(e,n,t.cell,i[0],"descending")},Po=e=>1===e.model.getters.getSelectedZones().length,Uo=new Bn;Uo.add("cut",{name:r("Cut"),description:"Ctrl+X",sequence:10,action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste values only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("add_row_before",{name:e=>{const t=co(e);return 1===t?r("Insert row"):r("Insert %s rows",t.toString())},sequence:70,action:Mo,isVisible:Po}).add("add_column_before",{name:e=>{const t=lo(e);return 1===t?r("Insert column"):r("Insert %s columns",t.toString())},sequence:90,action:Oo,isVisible:Po}).add("insert_cell",{name:r("Insert cells"),sequence:100,isVisible:Po,separator:!0}).addChild("insert_cell_down",["insert_cell"],{name:r("Shift down"),sequence:10,action:Ro}).addChild("insert_cell_right",["insert_cell"],{name:r("Shift right"),sequence:20,action:Io}).add("delete_row",{name:Co,sequence:110,action:Eo,isVisible:Po}).add("delete_column",{name:yo,sequence:120,action:xo,isVisible:Po}).add("delete_cell",{name:r("Delete cells"),sequence:130,isVisible:Po}).addChild("delete_cell_up",["delete_cell"],{name:r("Shift up"),sequence:10,action:To}).addChild("delete_cell_down",["delete_cell"],{name:r("Shift left"),sequence:20,action:Ao}).add("insert_link",{name:e=>{const t=e.model.getters.getActiveSheetId(),{col:i,row:n}=e.model.getters.getPosition(),o=e.model.getters.getCell(t,i,n);return o&&o.isLink()?r("Edit link"):r("Insert link")},separator:!0,sequence:150,action:Do});const Vo=new Bn;Vo.add("cut",{name:r("Cut"),description:"Ctrl+X",sequence:10,action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("sort_columns",{name:e=>e.model.getters.getActiveCols().size>1?r("Sort columns"):r("Sort column"),sequence:50,isVisible:Po,separator:!0}).addChild("sort_ascending",["sort_columns"],{name:r("Ascending (A ⟶ Z)"),sequence:10,action:$o}).addChild("sort_descending",["sort_columns"],{name:r("Descending (Z ⟶ A)"),sequence:20,action:Lo}).add("add_column_before",{name:e=>{const t=lo(e);return 1===t?r("Insert column left"):r("Insert %s columns left",t.toString())},sequence:70,action:Oo}).add("add_column_after",{name:e=>{const t=lo(e);return 1===t?r("Insert column right"):r("Insert %s columns right",t.toString())},sequence:80,action:_o}).add("delete_column",{name:yo,sequence:90,action:xo,isVisible:e=>wo("COL",e)}).add("clear_column",{name:e=>{if(e.model.getters.getSelectedZones().length>1)return r("Clear columns");let t,i;const n=e.model.getters.getActiveCols();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.left,i=n.right}return t===i?r("Clear column %s",kt(t)):r("Clear columns %s - %s",kt(t),kt(i))},sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId(),i=[...e.model.getters.getActiveCols()].map((i=>e.model.getters.getColsZone(t,i,i)));e.model.dispatch("DELETE_CONTENT",{target:i,sheetId:e.model.getters.getActiveSheetId()})}}).add("hide_columns",{name:e=>{const t=e.model.getters.getElementsFromSelection("COL");let i=t[0],n=t[t.length-1];return 1===t.length?r("Hide column %s",kt(i).toString()):n-i+1===t.length?r("Hide columns %s - %s",kt(i).toString(),kt(n).toString()):r("Hide columns")},sequence:85,action:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getElementsFromSelection("COL");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"COL",i)},separator:!0}).add("unhide_columns",{name:r("Unhide columns"),sequence:86,action:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("COL").some((e=>t.includes(e)))},separator:!0}).add("conditional_formatting",{name:r("Conditional formatting"),sequence:110,action:Fo});const zo=new Bn;function Bo(e,t,i){const n=e.model.getters.getSheetName(t),o=r("Rename Sheet");e.editText(o,(i=>{if(null===i||i===n)return;""===i&&Bo(e,t,r("The sheet name cannot be empty."));const o=e.model.dispatch("RENAME_SHEET",{sheetId:t,name:i});o.isSuccessful||(o.reasons.includes(11)&&Bo(e,t,r("A sheet with the name %s already exists. Please select another name.",i)),o.reasons.includes(13)&&Bo(e,t,r("Some used characters are not allowed in a sheet name (Forbidden characters are %s).",ee.join(" "))))}),{placeholder:n,error:i})}zo.add("cut",{name:r("Cut"),sequence:10,description:"Ctrl+X",action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("add_row_before",{name:e=>{const t=co(e);return 1===t?r("Insert row above"):r("Insert %s rows above",t.toString())},sequence:50,action:Mo}).add("add_row_after",{name:e=>{const t=co(e);return 1===t?r("Insert row below"):r("Insert %s rows below",t.toString())},sequence:60,action:No}).add("delete_row",{name:Co,sequence:70,action:Eo,isVisible:e=>wo("ROW",e)}).add("clear_row",{name:e=>{if(e.model.getters.getSelectedZones().length>1)return r("Clear rows");let t,i;const n=e.model.getters.getActiveRows();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.top,i=n.bottom}return t===i?r("Clear row %s",(t+1).toString()):r("Clear rows %s - %s",(t+1).toString(),(i+1).toString())},sequence:80,action:e=>{const t=e.model.getters.getActiveSheetId(),i=[...e.model.getters.getActiveRows()].map((i=>e.model.getters.getRowsZone(t,i,i)));e.model.dispatch("DELETE_CONTENT",{target:i,sheetId:e.model.getters.getActiveSheetId()})}}).add("hide_rows",{name:e=>{const t=e.model.getters.getElementsFromSelection("ROW");let i=t[0],n=t[t.length-1];return 1===t.length?r("Hide row %s",(i+1).toString()):n-i+1===t.length?r("Hide rows %s - %s",(i+1).toString(),(n+1).toString()):r("Hide rows")},sequence:85,action:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getElementsFromSelection("ROW");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"ROW",i)},separator:!0}).add("unhide_rows",{name:r("Unhide rows"),sequence:86,action:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("ROW").some((e=>t.includes(e)))},separator:!0}).add("conditional_formatting",{name:r("Conditional formatting"),sequence:90,action:Fo});const Ho=new Bn;Ho.add("delete",{name:r("Delete"),sequence:10,isVisible:e=>e.model.getters.getSheetIds().length>1,action:e=>e.askConfirmation(r("Are you sure you want to delete this sheet ?"),(()=>{e.model.dispatch("DELETE_SHEET",{sheetId:e.model.getters.getActiveSheetId()})}))}).add("duplicate",{name:r("Duplicate"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.uuidGenerator.uuidv4();e.model.dispatch("DUPLICATE_SHEET",{sheetId:t,sheetIdTo:i}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:i})}}).add("rename",{name:r("Rename"),sequence:30,action:e=>Bo(e,e.model.getters.getActiveSheetId())}).add("move_right",{name:r("Move right"),sequence:40,isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getVisibleSheetIds();return i.indexOf(t)!==i.length-1},action:e=>e.model.dispatch("MOVE_SHEET",{sheetId:e.model.getters.getActiveSheetId(),direction:"right"})}).add("move_left",{name:r("Move left"),sequence:50,isVisible:e=>{const t=e.model.getters.getActiveSheetId();return e.model.getters.getVisibleSheetIds()[0]!==t},action:e=>e.model.dispatch("MOVE_SHEET",{sheetId:e.model.getters.getActiveSheetId(),direction:"left"})}).add("hide_sheet",{name:r("Hide sheet"),sequence:60,isVisible:e=>1!==e.model.getters.getVisibleSheetIds().length,action:e=>e.model.dispatch("HIDE_SHEET",{sheetId:e.model.getters.getActiveSheetId()})});const Wo={Errors:{25:r("The range is invalid"),51:r("The argument is missing. Please provide a value"),52:r("The second argument is missing. Please provide a value"),53:r("The minpoint must be a number"),54:r("The midpoint must be a number"),55:r("The maxpoint must be a number"),56:r("The first value must be a number"),57:r("The second value must be a number"),47:r("Minimum must be smaller then Maximum"),50:r("Minimum must be smaller then Midpoint"),49:r("Midpoint must be smaller then Maximum"),48:r("Lower inflection point must be smaller than upper inflection point"),58:r("Invalid Minpoint formula"),60:r("Invalid Maxpoint formula"),59:r("Invalid Midpoint formula"),61:r("Invalid upper inflection point formula"),62:r("Invalid lower inflection point formula"),24:r("A range needs to be defined"),Unexpected:r("The rule is invalid for an unknown reason")},ColorScale:r("Color scale"),IconSet:r("Icon set")},Go={IsEmpty:r("Is empty"),IsNotEmpty:r("Is not empty"),ContainsText:r("Contains"),NotContains:r("Does not contain"),BeginsWith:r("Starts with"),EndsWith:r("Ends with"),Equal:r("Is equal to"),NotEqual:r("Is not equal to"),GreaterThan:r("Is greater than"),GreaterThanOrEqual:r("Is greater than or equal to"),LessThan:r("Is less than"),LessThanOrEqual:r("Is less than or equal to"),Between:r("Is between"),NotBetween:r("Is not between")},qo={Series:r("Series"),Errors:{Unexpected:r("The chart definition is invalid for an unknown reason"),32:r("The dataset is invalid"),33:r("Labels are invalid"),34:r("The key value is invalid"),35:r("The baseline value is invalid"),36:r("The data range is invalid"),37:r("A minimum range limit value is needed"),38:r("The minimum range limit value must be a number"),39:r("A maximum range limit value is needed"),40:r("The maximum range limit value must be a number"),41:r("Minimum range limit must be smaller than maximum range limit"),42:r("The lower inflection point value must be a number"),43:r("The upper inflection point value must be a number")}},Zo={Automatic:r("Automatic"),Number:r("Number"),Percent:r("Percent"),Currency:r("Currency"),CurrencyRounded:r("Currency rounded"),Date:r("Date"),Time:r("Time"),DateTime:r("Date time"),Duration:r("Duration"),CustomCurrency:r("Custom currency")},jo={Custom:r("Custom")},Yo=r("Merged cells are preventing this operation. Unmerge those cells and try again.");function Xo(e,t,i){const n=e.model.getters.getActiveSheetId(),o="COL"===t?"FREEZE_COLUMNS":"FREEZE_ROWS";e.model.dispatch(o,{sheetId:n,quantity:i}).isCancelledBecause(65)&&e.raiseError(Yo)}const Ko=new Bn;Ko.add("file",{name:r("File"),sequence:10}).add("edit",{name:r("Edit"),sequence:20}).add("view",{name:r("View"),sequence:30}).add("insert",{name:r("Insert"),sequence:40}).add("format",{name:r("Format"),sequence:50}).add("data",{name:r("Data"),sequence:60}).addChild("save",["file"],{name:r("Save"),description:"Ctrl+S",sequence:10,action:()=>console.log("Not implemented")}).addChild("undo",["edit"],{name:r("Undo"),description:"Ctrl+Z",sequence:10,action:e=>e.model.dispatch("REQUEST_UNDO")}).addChild("redo",["edit"],{name:r("Redo"),description:"Ctrl+Y",sequence:20,action:e=>e.model.dispatch("REQUEST_REDO"),separator:!0}).addChild("copy",["edit"],{name:r("Copy"),description:"Ctrl+C",sequence:30,isReadonlyAllowed:!0,action:po}).addChild("cut",["edit"],{name:r("Cut"),description:"Ctrl+X",sequence:40,action:mo}).addChild("paste",["edit"],{name:r("Paste"),description:"Ctrl+V",sequence:50,action:fo}).addChild("paste_special",["edit"],{name:r("Paste special"),sequence:60,separator:!0,isVisible:So}).addChild("paste_special_value",["edit","paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_special_format",["edit","paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).addChild("sort_range",["data"],{name:r("Sort range"),sequence:62,isVisible:Po,separator:!0}).addChild("sort_ascending",["data","sort_range"],{name:r("Ascending (A ⟶ Z)"),sequence:10,action:$o}).addChild("sort_descending",["data","sort_range"],{name:r("Descending (Z ⟶ A)"),sequence:20,action:Lo}).addChild("find_and_replace",["edit"],{name:r("Find and replace"),description:"Ctrl+H",sequence:65,isReadonlyAllowed:!0,action:e=>{e.openSidePanel("FindAndReplace",{})},separator:!0}).addChild("edit_delete_cell_values",["edit"],{name:r("Delete values"),sequence:70,action:e=>e.model.dispatch("DELETE_CONTENT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})}).addChild("edit_delete_row",["edit"],{name:Co,sequence:80,action:Eo,isVisible:e=>wo("ROW",e)}).addChild("edit_delete_column",["edit"],{name:yo,sequence:90,action:xo,isVisible:e=>wo("COL",e)}).addChild("edit_delete_cell_shift_up",["edit"],{name:r("Delete cell and shift up"),sequence:93,action:To}).addChild("edit_delete_cell_shift_left",["edit"],{name:r("Delete cell and shift left"),sequence:97,action:Ao}).addChild("edit_unhide_columns",["edit"],{name:r("Unhide all columns"),sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"COL",elements:Array.from(Array(e.model.getters.getNumberCols(t)).keys())})},isVisible:e=>e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).length>0}).addChild("edit_unhide_rows",["edit"],{name:r("Unhide all rows"),sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"ROW",elements:Array.from(Array(e.model.getters.getNumberRows(t)).keys())})},isVisible:e=>e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).length>0}).addChild("insert_row_before",["insert"],{name:e=>{const t=co(e);return 1===t?r("Row above"):r("%s Rows above",t.toString())},sequence:10,action:Mo,isVisible:e=>0===e.model.getters.getActiveCols().size}).addChild("insert_row_after",["insert"],{name:e=>{const t=co(e);return 1===t?r("Row below"):r("%s Rows below",t.toString())},sequence:20,action:No,isVisible:e=>0===e.model.getters.getActiveCols().size,separator:!0}).addChild("insert_column_before",["insert"],{name:e=>{const t=lo(e);return 1===t?r("Column left"):r("%s Columns left",t.toString())},sequence:30,action:Oo,isVisible:e=>0===e.model.getters.getActiveRows().size}).addChild("insert_column_after",["insert"],{name:e=>{const t=lo(e);return 1===t?r("Column right"):r("%s Columns right",t.toString())},sequence:40,action:_o,isVisible:e=>0===e.model.getters.getActiveRows().size,separator:!0}).addChild("insert_insert_cell_shift_down",["insert"],{name:r("Insert cells and shift down"),sequence:43,action:Ro}).addChild("insert_insert_cell_shift_right",["insert"],{name:r("Insert cells and shift right"),sequence:47,action:Io,separator:!0}).addChild("insert_chart",["insert"],{name:r("Chart"),sequence:50,action:e=>{const t=e.model.getters,i=t.getSelectedZone();let n=i;const o=e.model.uuidGenerator.uuidv4();let r;i.left!==i.right&&(n={...i,left:i.left+1});const s=[Ni(n)],a=t.getActiveSheetId(),l={width:536,height:335},{x:c,y:h}=t.getMainViewportCoordinates(),{scrollX:d,scrollY:u}=t.getActiveSheetScrollInfo(),{width:g,height:p}=t.getVisibleRect(t.getActiveMainViewport()),m={x:c+d+Math.max(0,(g-l.width)/2),y:h+u+Math.max(0,(p-l.height)/2)};let f="";const v=e.model.getters.getCellsInZone(a,{...n,bottom:n.top}),b=!!v.find((e=>e&&e.evaluated.type!==rn.number));if(b){const t=v.reduce(((t,i)=>{const n=i&&i.evaluated.type!==rn.error&&e.model.getters.getCellText(i);return n&&t.push(n),t}),[]),i=t.splice(-1)[0];f=t.join(", "),i&&(f+=(f?" "+e._t("and")+" ":"")+i)}i.left!==i.right&&(r=Ni({...i,right:i.left,top:b?i.top+1:i.top}));const S=n.right===n.left?"none":"top";e.model.dispatch("CREATE_CHART",{sheetId:a,id:o,position:m,size:l,definition:{title:f,dataSets:s,labelRange:r,type:"bar",stacked:!1,dataSetsHaveTitle:b,verticalAxisPosition:"left",legendPosition:S}}),e.model.dispatch("SELECT_FIGURE",{id:o}),e.openSidePanel("ChartPanel")}}).addChild("insert_link",["insert"],{name:r("Link"),separator:!0,sequence:60,action:Do}).addChild("insert_sheet",["insert"],{name:r("New sheet"),sequence:70,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSheetIds().indexOf(t)+1,n=e.model.uuidGenerator.uuidv4();e.model.dispatch("CREATE_SHEET",{sheetId:n,position:i}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:n})},separator:!0}).addChild("unfreeze_panes",["view"],{name:r("Unfreeze"),sequence:4,isVisible:e=>{const{xSplit:t,ySplit:i}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+i>0},action:e=>e.model.dispatch("UNFREEZE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId()})}).addChild("freeze_panes",["view"],{name:r("Freeze"),sequence:5,separator:!0}).addChild("unfreeze_rows",["view","freeze_panes"],{name:r("No rows"),action:e=>e.model.dispatch("UNFREEZE_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,sequence:5,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit}).addChild("freeze_first_row",["view","freeze_panes"],{name:r("1 row"),action:e=>Xo(e,"ROW",1),isReadonlyAllowed:!0,sequence:10}).addChild("freeze_second_row",["view","freeze_panes"],{name:r("2 rows"),action:e=>Xo(e,"ROW",2),isReadonlyAllowed:!0,sequence:15}).addChild("freeze_current_row",["view","freeze_panes"],{name:r("Up to current row"),action:e=>{const{bottom:t}=e.model.getters.getSelectedZone();Xo(e,"ROW",t+1)},isReadonlyAllowed:!0,sequence:20,separator:!0}).addChild("unfreeze_columns",["view","freeze_panes"],{name:r("No columns"),action:e=>e.model.dispatch("UNFREEZE_COLUMNS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,sequence:25,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit}).addChild("freeze_first_col",["view","freeze_panes"],{name:r("1 column"),action:e=>Xo(e,"COL",1),isReadonlyAllowed:!0,sequence:30}).addChild("freeze_second_col",["view","freeze_panes"],{name:r("2 columns"),action:e=>Xo(e,"COL",2),isReadonlyAllowed:!0,sequence:35}).addChild("freeze_current_col",["view","freeze_panes"],{name:r("Up to current column"),action:e=>{const{right:t}=e.model.getters.getSelectedZone();Xo(e,"COL",t+1)},isReadonlyAllowed:!0,sequence:40}).addChild("view_gridlines",["view"],{name:e=>e.model.getters.getGridLinesVisibility(e.model.getters.getActiveSheetId())?r("Hide gridlines"):r("Show gridlines"),action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("SET_GRID_LINES_VISIBILITY",{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},sequence:10}).addChild("view_formulas",["view"],{name:e=>e.model.getters.shouldShowFormulas()?r("Hide formulas"):r("Show formulas"),action:e=>e.model.dispatch("SET_FORMULA_VISIBILITY",{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0,sequence:15}).addChild("format_number",["format"],{name:r("Numbers"),sequence:10,separator:!0}).addChild("format_number_automatic",["format","format_number"],{name:Zo.Automatic,sequence:10,separator:!0,action:e=>ho(e,"")}).addChild("format_number_number",["format","format_number"],{name:Zo.Number,description:"1,000.12",sequence:20,action:e=>ho(e,"#,##0.00")}).addChild("format_number_percent",["format","format_number"],{name:Zo.Percent,description:"10.12%",sequence:30,separator:!0,action:e=>ho(e,"0.00%")}).addChild("format_number_currency",["format","format_number"],{name:Zo.Currency,description:"$1,000.12",sequence:37,action:e=>ho(e,"[$$]#,##0.00")}).addChild("format_number_currency_rounded",["format","format_number"],{name:Zo.CurrencyRounded,description:"$1,000",sequence:38,action:e=>ho(e,"[$$]#,##0")}).addChild("format_custom_currency",["format","format_number"],{name:Zo.CustomCurrency,sequence:39,separator:!0,action:e=>{e.openSidePanel("CustomCurrency",{})}}).addChild("format_number_date",["format","format_number"],{name:Zo.Date,description:"9/26/2008",sequence:40,action:e=>ho(e,"m/d/yyyy")}).addChild("format_number_time",["format","format_number"],{name:Zo.Time,description:"10:43:00 PM",sequence:50,action:e=>ho(e,"hh:mm:ss a")}).addChild("format_number_date_time",["format","format_number"],{name:Zo.DateTime,description:"9/26/2008 22:43:00",sequence:60,action:e=>ho(e,"m/d/yyyy hh:mm:ss")}).addChild("format_number_duration",["format","format_number"],{name:Zo.Duration,description:"27:51:38",sequence:70,separator:!0,action:e=>ho(e,"hhhh:mm:ss")}).addChild("format_bold",["format"],{name:r("Bold"),sequence:20,description:"Ctrl+B",action:e=>uo(e,{bold:!e.model.getters.getCurrentStyle().bold})}).addChild("format_italic",["format"],{name:r("Italic"),sequence:30,description:"Ctrl+I",action:e=>uo(e,{italic:!e.model.getters.getCurrentStyle().italic})}).addChild("format_underline",["format"],{name:r("Underline"),description:"Ctrl+U",sequence:40,action:e=>uo(e,{underline:!e.model.getters.getCurrentStyle().underline})}).addChild("format_strikethrough",["format"],{name:r("Strikethrough"),sequence:50,action:e=>uo(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),separator:!0}).addChild("format_font_size",["format"],{name:r("Font size"),sequence:60}).addChild("format_wrapping",["format"],{name:r("Wrapping"),sequence:70,separator:!0}).addChild("format_wrapping_overflow",["format","format_wrapping"],{name:r("Overflow"),sequence:10,action:e=>uo(e,{wrapping:"overflow"})}).addChild("format_wrapping_wrap",["format","format_wrapping"],{name:r("Wrap"),sequence:20,action:e=>uo(e,{wrapping:"wrap"})}).addChild("format_wrapping_clip",["format","format_wrapping"],{name:r("Clip"),sequence:30,action:e=>uo(e,{wrapping:"clip"})}).addChild("format_cf",["format"],{name:r("Conditional formatting"),sequence:80,action:Fo,separator:!0}).addChild("format_clearFormat",["format"],{name:r("Clear formatting"),sequence:90,action:e=>{e.model.dispatch("CLEAR_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},separator:!0}).addChild("add_data_filter",["data"],{name:r("Add Filter"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSelection().zones;no(e,t,i)},isVisible:e=>!ko(e),isEnabled:e=>(e=>Qi(...e.model.getters.getSelectedZones()))(e)}).addChild("remove_data_filter",["data"],{name:r("Remove Filter"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("REMOVE_FILTER_TABLE",{sheetId:t,target:e.model.getters.getSelectedZones()})},isVisible:ko});for(let e of re)Ko.addChild(`format_font_size_${e.pt}`,["format","format_font_size"],{name:e.pt.toString(),sequence:e.pt,action:t=>uo(t,{fontSize:e.pt})});const Qo=new class extends Ji{addTransformation(e,t,i){for(let n of t)this.content[n]||(this.content[n]=new Map),this.content[n].set(e,i);return this}getTransformation(e,t){return this.content[e]&&this.content[e].get(t)}},Jo=new Ii;bn`
272
+ `;class Wn extends t.Component{constructor(){super(...arguments),this.menuItems=Hn.getAll(),this.state=t.useState(this.defaultState),this.menu=t.useState({isOpen:!1}),this.linkEditorRef=t.useRef("linkEditor"),this.position=Dn(this.linkEditorRef),this.urlInput=t.useRef("urlInput")}setup(){t.onMounted((()=>{var e;return null===(e=this.urlInput.el)||void 0===e?void 0:e.focus()}))}get defaultState(){const{col:e,row:t}=this.props.cellPosition,i=this.env.model.getters.getActiveSheetId(),n=this.env.model.getters.getCell(i,e,t);return(null==n?void 0:n.isLink())?{link:{url:n.link.url,label:n.formattedValue},urlRepresentation:n.urlRepresentation,isUrlEditable:n.isUrlEditable}:{link:{url:"",label:(null==n?void 0:n.formattedValue)||""},isUrlEditable:!0,urlRepresentation:""}}get menuPosition(){return{x:this.position.x+320-12-2,y:this.position.y+100}}onSpecialLink(e){const{detail:t}=e;this.state.link.url=t.link.url,this.state.link.label=t.link.label,this.state.isUrlEditable=t.isUrlEditable,this.state.urlRepresentation=t.urlRepresentation}openMenu(){this.menu.isOpen=!0}removeLink(){this.state.link.url="",this.state.urlRepresentation="",this.state.isUrlEditable=!0}save(){var e,t;const{col:i,row:n}=this.props.cellPosition,o=this.state.link.label||this.state.link.url;this.env.model.dispatch("UPDATE_CELL",{col:i,row:n,sheetId:this.env.model.getters.getActiveSheetId(),content:We(o,this.state.link.url)}),null===(t=(e=this.props).onClosed)||void 0===t||t.call(e)}cancel(){var e,t;null===(t=(e=this.props).onClosed)||void 0===t||t.call(e)}onKeyDown(e){switch(e.key){case"Enter":this.state.link.url&&this.save();break;case"Escape":this.cancel()}}}Wn.template="o-spreadsheet-LinkEditor",Wn.size={width:340,height:180},Wn.components={Menu:$n};const Gn={onOpen:(e,t)=>({isOpen:!0,props:{cellPosition:e},Component:Wn,cellCorner:"BottomLeft"})},qn=new Ji;qn.add("ErrorToolTip",wn).add("LinkCell",Pn).add("LinkEditor",Gn).add("FilterMenu",In);const Zn=new Ji,jn=new Ji,Yn=new Ji,Xn=(new Ji).add("ADD_COLUMNS_ROWS",(function(e){const t=[];let i=e.base;"after"===e.position&&i++;for(let n=0;n<e.quantity;n++)t.push(n+i);return[{type:"REMOVE_COLUMNS_ROWS",dimension:e.dimension,elements:t,sheetId:e.sheetId}]})).add("REMOVE_COLUMNS_ROWS",(function(e){const t=[],i=[...e.elements].sort(((e,t)=>e-t));for(let n of Le(i)){const i=0===n[0]?0:n[0]-1,o=0===n[0]?"before":"after";t.push({type:"ADD_COLUMNS_ROWS",dimension:e.dimension,quantity:n.length,base:i,sheetId:e.sheetId,position:o})}return t})).add("ADD_MERGE",(function(e){return[{type:"REMOVE_MERGE",sheetId:e.sheetId,target:e.target}]})).add("REMOVE_MERGE",(function(e){return[{type:"ADD_MERGE",sheetId:e.sheetId,target:e.target}]})).add("CREATE_SHEET",(function(e){return[{type:"DELETE_SHEET",sheetId:e.sheetId}]})).add("DELETE_SHEET",(function(e){return[{type:"CREATE_SHEET",sheetId:e.sheetId,position:1}]})).add("DUPLICATE_SHEET",(function(e){return[{type:"DELETE_SHEET",sheetId:e.sheetIdTo}]})).add("CREATE_FIGURE",(function(e){return[{type:"DELETE_FIGURE",id:e.figure.id,sheetId:e.sheetId}]})).add("CREATE_CHART",(function(e){return[{type:"DELETE_FIGURE",id:e.id,sheetId:e.sheetId}]})).add("HIDE_COLUMNS_ROWS",(function(e){return[{type:"UNHIDE_COLUMNS_ROWS",sheetId:e.sheetId,dimension:e.dimension,elements:e.elements}]})).add("UNHIDE_COLUMNS_ROWS",(function(e){return[{type:"HIDE_COLUMNS_ROWS",sheetId:e.sheetId,dimension:e.dimension,elements:e.elements}]}));for(const e of cn.values())Xn.contains(e)||Xn.add(e,Kn);function Kn(e){return[e]}const Qn=[rn.number,rn.error,rn.text,rn.boolean];function Jn(e,t){return{index:t,type:e?e.evaluated.type:rn.empty,value:e?e.evaluated.value:""}}function eo(e,t,i,n,o){let s=dn.Success,a=n.right>n.left;if(e.model.getters.doesIntersectMerge(t,n)){let i;a=!1;for(let o=n.top;o<=n.bottom;o++){i=[];for(let r=n.left;r<=n.right;r++){let n=e.model.getters.getMerge(t,r,o);n&&!i.includes(n.id.toString())&&i.push(n.id.toString())}if(i.length>=2){a=!0;break}}}const{col:l,row:c}=i;if(a)s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o});else{const i=e.model.getters.getContiguousZone(t,n);Li(i,n)?s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o}):e.askConfirmation(r("We found data next to your selection. Since this data was not selected, it will not be sorted. Do you want to extend your selection?"),(()=>{n=i,s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o})}),(()=>{s=e.model.dispatch("SORT_CELLS",{sheetId:t,col:l,row:c,zone:n,sortDirection:o})}))}if(s.isCancelledBecause(63)){const{col:t,row:o}=i;e.model.selection.selectZone({cell:{col:t,row:o},zone:n}),e.raiseError(r("Cannot sort. To sort, select only cells or only merges that have the same size."))}}function to(e){const t=e.model.dispatch("CUT");t.isSuccessful||t.isCancelledBecause(19)&&e.raiseError(r("This operation is not allowed with multiple selections."))}const io={filterOverlap:r("You cannot create overlapping filters."),nonContinuousTargets:r("A filter can only be created on a continuous selection."),mergeInFilter:r("You can't create a filter over a range that contains a merge.")};function no(e,t,i){const n=e.model.dispatch("CREATE_FILTER_TABLE",{target:i,sheetId:t});n.isCancelledBecause(78)?e.raiseError(io.filterOverlap):n.isCancelledBecause(80)?e.raiseError(io.mergeInFilter):n.isCancelledBecause(81)&&e.raiseError(io.nonContinuousTargets)}const oo={wrongPasteSelection:r("This operation is not allowed with multiple selections."),willRemoveExistingMerge:r("This operation is not possible due to a merge. Please remove the merges first than try again."),wrongFigurePasteOption:r("Cannot do a special paste of a figure."),frozenPaneOverlap:r("Cannot paste merged cells over a frozen pane.")};function ro(e,t){t.isSuccessful||(t.reasons.includes(20)?e.raiseError(oo.wrongPasteSelection):t.reasons.includes(2)?e.raiseError(oo.willRemoveExistingMerge):t.reasons.includes(22)?e.raiseError(oo.wrongFigurePasteOption):t.reasons.includes(75)&&e.raiseError(oo.frozenPaneOverlap))}function so(e,t,i){const n=e.model.dispatch("PASTE",{target:t,pasteOption:i});ro(e,n)}function ao(e,t,i){const n=e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:t,text:i});ro(e,n)}function lo(e){const t=e.model.getters.getActiveCols();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.right-t.left+1}}function co(e){const t=e.model.getters.getActiveRows();if(t.size)return t.size;{const t=e.model.getters.getSelectedZones()[0];return t.bottom-t.top+1}}function ho(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),format:t})}function uo(e,t){e.model.dispatch("SET_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones(),style:t})}async function go(e){try{return await e.clipboard.readText()}catch(e){return console.warn("The OS clipboard could not be read."),void console.error(e)}}const po=async e=>{e.model.dispatch("COPY"),await e.clipboard.writeText(e.model.getters.getClipboardContent())},mo=async e=>{to(e),await e.clipboard.writeText(e.model.getters.getClipboardContent())},fo=async e=>{const t=e.model.getters.getClipboardContent(),i=await go(e),n=e.model.getters.getSelectedZones();i&&i!==t?ao(e,n,i):so(e,n)},vo=async e=>{const t=e.model.getters.getClipboardContent(),i=await go(e),n=e.model.getters.getSelectedZones();i&&i!==t?e.model.dispatch("PASTE_FROM_OS_CLIPBOARD",{target:n,text:i}):e.model.dispatch("PASTE",{target:e.model.getters.getSelectedZones(),pasteOption:"onlyValue"})},bo=e=>so(e,e.model.getters.getSelectedZones(),"onlyFormat"),So=e=>!e.model.getters.isCutOperation(),Co=e=>{if(e.model.getters.getSelectedZones().length>1)return r("Delete rows");let t,i;const n=e.model.getters.getActiveRows();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.top,i=n.bottom}return t===i?r("Delete row %s",(t+1).toString()):r("Delete rows %s - %s",(t+1).toString(),(i+1).toString())},Eo=e=>{let t=[...e.model.getters.getActiveRows()];if(!t.length){const i=e.model.getters.getSelectedZones()[0];for(let e=i.top;e<=i.bottom;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},wo=(e,t)=>{const i=t.model.getters.getActiveSheetId(),n=t.model.getters.getElementsFromSelection(e),o=t.model.getters.checkElementsIncludeAllVisibleHeaders(i,e,n),r=t.model.getters.checkElementsIncludeAllNonFrozenHeaders(i,e,n);return!o&&!r},yo=e=>{if(e.model.getters.getSelectedZones().length>1)return r("Delete columns");let t,i;const n=e.model.getters.getActiveCols();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.left,i=n.right}return t===i?r("Delete column %s",kt(t)):r("Delete columns %s - %s",kt(t),kt(i))},xo=e=>{let t=[...e.model.getters.getActiveCols()];if(!t.length){const i=e.model.getters.getSelectedZones()[0];for(let e=i.left;e<=i.right;e++)t.push(e)}e.model.dispatch("REMOVE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},Ro=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"ROW"});ro(e,i)},Io=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("INSERT_CELL",{zone:t,shiftDimension:"COL"});ro(e,i)},To=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"ROW"});ro(e,i)},Ao=e=>{const t=e.model.getters.getSelectedZone(),i=e.model.dispatch("DELETE_CELL",{zone:t,shiftDimension:"COL"});ro(e,i)},Mo=e=>{const t=e.model.getters.getActiveRows();let i,n;if(t.size)i=Math.min(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.top,n=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",base:i,quantity:n,dimension:"ROW"})},No=e=>{const t=e.model.getters.getActiveRows();let i,n;if(t.size)i=Math.max(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.bottom,n=t.bottom-t.top+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",base:i,quantity:n,dimension:"ROW"})},Oo=e=>{const t=e.model.getters.getActiveCols();let i,n;if(t.size)i=Math.min(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.left,n=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"before",dimension:"COL",base:i,quantity:n})},_o=e=>{const t=e.model.getters.getActiveCols();let i,n;if(t.size)i=Math.max(...t),n=t.size;else{const t=e.model.getters.getSelectedZones()[0];i=t.right,n=t.right-t.left+1}e.model.dispatch("ADD_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),position:"after",dimension:"COL",base:i,quantity:n})},Fo=e=>{e.openSidePanel("ConditionalFormatting",{selection:e.model.getters.getSelectedZones()})},Do=e=>{let{col:t,row:i}=e.model.getters.getPosition();e.model.dispatch("OPEN_CELL_POPOVER",{col:t,row:i,popoverType:"LinkEditor"})},ko=e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSelectedZones();return e.model.getters.doesZonesContainFilter(t,i)},$o=e=>{const{anchor:t,zones:i}=e.model.getters.getSelection(),n=e.model.getters.getActiveSheetId();eo(e,n,t.cell,i[0],"ascending")},Lo=e=>{const{anchor:t,zones:i}=e.model.getters.getSelection(),n=e.model.getters.getActiveSheetId();eo(e,n,t.cell,i[0],"descending")},Po=e=>1===e.model.getters.getSelectedZones().length,Uo=new Bn;Uo.add("cut",{name:r("Cut"),description:"Ctrl+X",sequence:10,action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste values only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("add_row_before",{name:e=>{const t=co(e);return 1===t?r("Insert row"):r("Insert %s rows",t.toString())},sequence:70,action:Mo,isVisible:Po}).add("add_column_before",{name:e=>{const t=lo(e);return 1===t?r("Insert column"):r("Insert %s columns",t.toString())},sequence:90,action:Oo,isVisible:Po}).add("insert_cell",{name:r("Insert cells"),sequence:100,isVisible:Po,separator:!0}).addChild("insert_cell_down",["insert_cell"],{name:r("Shift down"),sequence:10,action:Ro}).addChild("insert_cell_right",["insert_cell"],{name:r("Shift right"),sequence:20,action:Io}).add("delete_row",{name:Co,sequence:110,action:Eo,isVisible:Po}).add("delete_column",{name:yo,sequence:120,action:xo,isVisible:Po}).add("delete_cell",{name:r("Delete cells"),sequence:130,isVisible:Po}).addChild("delete_cell_up",["delete_cell"],{name:r("Shift up"),sequence:10,action:To}).addChild("delete_cell_down",["delete_cell"],{name:r("Shift left"),sequence:20,action:Ao}).add("insert_link",{name:e=>{const t=e.model.getters.getActiveSheetId(),{col:i,row:n}=e.model.getters.getPosition(),o=e.model.getters.getCell(t,i,n);return o&&o.isLink()?r("Edit link"):r("Insert link")},separator:!0,sequence:150,action:Do});const Vo=new Bn;Vo.add("cut",{name:r("Cut"),description:"Ctrl+X",sequence:10,action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("sort_columns",{name:e=>e.model.getters.getActiveCols().size>1?r("Sort columns"):r("Sort column"),sequence:50,isVisible:Po,separator:!0}).addChild("sort_ascending",["sort_columns"],{name:r("Ascending (A ⟶ Z)"),sequence:10,action:$o}).addChild("sort_descending",["sort_columns"],{name:r("Descending (Z ⟶ A)"),sequence:20,action:Lo}).add("add_column_before",{name:e=>{const t=lo(e);return 1===t?r("Insert column left"):r("Insert %s columns left",t.toString())},sequence:70,action:Oo}).add("add_column_after",{name:e=>{const t=lo(e);return 1===t?r("Insert column right"):r("Insert %s columns right",t.toString())},sequence:80,action:_o}).add("delete_column",{name:yo,sequence:90,action:xo,isVisible:e=>wo("COL",e)}).add("clear_column",{name:e=>{if(e.model.getters.getSelectedZones().length>1)return r("Clear columns");let t,i;const n=e.model.getters.getActiveCols();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.left,i=n.right}return t===i?r("Clear column %s",kt(t)):r("Clear columns %s - %s",kt(t),kt(i))},sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId(),i=[...e.model.getters.getActiveCols()].map((i=>e.model.getters.getColsZone(t,i,i)));e.model.dispatch("DELETE_CONTENT",{target:i,sheetId:e.model.getters.getActiveSheetId()})}}).add("hide_columns",{name:e=>{const t=e.model.getters.getElementsFromSelection("COL");let i=t[0],n=t[t.length-1];return 1===t.length?r("Hide column %s",kt(i).toString()):n-i+1===t.length?r("Hide columns %s - %s",kt(i).toString(),kt(n).toString()):r("Hide columns")},sequence:85,action:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getElementsFromSelection("COL");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"COL",i)},separator:!0}).add("unhide_columns",{name:r("Unhide columns"),sequence:86,action:e=>{const t=e.model.getters.getElementsFromSelection("COL");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"COL",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("COL").some((e=>t.includes(e)))},separator:!0}).add("conditional_formatting",{name:r("Conditional formatting"),sequence:110,action:Fo});const zo=new Bn;function Bo(e,t,i){if(e.model.getters.isReadonly())return;const n=e.model.getters.getSheetName(t),o=r("Rename Sheet");e.editText(o,(i=>{if(null===i||i===n)return;const o=e.model.dispatch("RENAME_SHEET",{sheetId:t,name:i});o.isSuccessful||(o.reasons.includes(10)&&Bo(e,t,r("The sheet name cannot be empty.")),o.reasons.includes(11)&&Bo(e,t,r("A sheet with the name %s already exists. Please select another name.",i)),o.reasons.includes(13)&&Bo(e,t,r("Some used characters are not allowed in a sheet name (Forbidden characters are %s).",ee.join(" "))))}),{placeholder:n,error:i})}zo.add("cut",{name:r("Cut"),sequence:10,description:"Ctrl+X",action:mo}).add("copy",{name:r("Copy"),description:"Ctrl+C",sequence:20,isReadonlyAllowed:!0,action:po}).add("paste",{name:r("Paste"),description:"Ctrl+V",sequence:30,action:fo}).add("paste_special",{name:r("Paste special"),sequence:40,separator:!0,isVisible:So}).addChild("paste_value_only",["paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_format_only",["paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).add("add_row_before",{name:e=>{const t=co(e);return 1===t?r("Insert row above"):r("Insert %s rows above",t.toString())},sequence:50,action:Mo}).add("add_row_after",{name:e=>{const t=co(e);return 1===t?r("Insert row below"):r("Insert %s rows below",t.toString())},sequence:60,action:No}).add("delete_row",{name:Co,sequence:70,action:Eo,isVisible:e=>wo("ROW",e)}).add("clear_row",{name:e=>{if(e.model.getters.getSelectedZones().length>1)return r("Clear rows");let t,i;const n=e.model.getters.getActiveRows();if(0!==n.size)t=Math.min(...n),i=Math.max(...n);else{const n=e.model.getters.getSelectedZones()[0];t=n.top,i=n.bottom}return t===i?r("Clear row %s",(t+1).toString()):r("Clear rows %s - %s",(t+1).toString(),(i+1).toString())},sequence:80,action:e=>{const t=e.model.getters.getActiveSheetId(),i=[...e.model.getters.getActiveRows()].map((i=>e.model.getters.getRowsZone(t,i,i)));e.model.dispatch("DELETE_CONTENT",{target:i,sheetId:e.model.getters.getActiveSheetId()})}}).add("hide_rows",{name:e=>{const t=e.model.getters.getElementsFromSelection("ROW");let i=t[0],n=t[t.length-1];return 1===t.length?r("Hide row %s",(i+1).toString()):n-i+1===t.length?r("Hide rows %s - %s",(i+1).toString(),(n+1).toString()):r("Hide rows")},sequence:85,action:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("HIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getElementsFromSelection("ROW");return!e.model.getters.checkElementsIncludeAllVisibleHeaders(t,"ROW",i)},separator:!0}).add("unhide_rows",{name:r("Unhide rows"),sequence:86,action:e=>{const t=e.model.getters.getElementsFromSelection("ROW");e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId(),dimension:"ROW",elements:t})},isVisible:e=>{const t=e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).flat();return e.model.getters.getElementsFromSelection("ROW").some((e=>t.includes(e)))},separator:!0}).add("conditional_formatting",{name:r("Conditional formatting"),sequence:90,action:Fo});const Ho=new Bn;Ho.add("delete",{name:r("Delete"),sequence:10,isVisible:e=>e.model.getters.getSheetIds().length>1,action:e=>e.askConfirmation(r("Are you sure you want to delete this sheet ?"),(()=>{e.model.dispatch("DELETE_SHEET",{sheetId:e.model.getters.getActiveSheetId()})}))}).add("duplicate",{name:r("Duplicate"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.uuidGenerator.uuidv4();e.model.dispatch("DUPLICATE_SHEET",{sheetId:t,sheetIdTo:i}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:i})}}).add("rename",{name:r("Rename"),sequence:30,action:e=>Bo(e,e.model.getters.getActiveSheetId())}).add("move_right",{name:r("Move right"),sequence:40,isVisible:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getVisibleSheetIds();return i.indexOf(t)!==i.length-1},action:e=>e.model.dispatch("MOVE_SHEET",{sheetId:e.model.getters.getActiveSheetId(),direction:"right"})}).add("move_left",{name:r("Move left"),sequence:50,isVisible:e=>{const t=e.model.getters.getActiveSheetId();return e.model.getters.getVisibleSheetIds()[0]!==t},action:e=>e.model.dispatch("MOVE_SHEET",{sheetId:e.model.getters.getActiveSheetId(),direction:"left"})}).add("hide_sheet",{name:r("Hide sheet"),sequence:60,isVisible:e=>1!==e.model.getters.getVisibleSheetIds().length,action:e=>e.model.dispatch("HIDE_SHEET",{sheetId:e.model.getters.getActiveSheetId()})});const Wo={Errors:{25:r("The range is invalid"),51:r("The argument is missing. Please provide a value"),52:r("The second argument is missing. Please provide a value"),53:r("The minpoint must be a number"),54:r("The midpoint must be a number"),55:r("The maxpoint must be a number"),56:r("The first value must be a number"),57:r("The second value must be a number"),47:r("Minimum must be smaller then Maximum"),50:r("Minimum must be smaller then Midpoint"),49:r("Midpoint must be smaller then Maximum"),48:r("Lower inflection point must be smaller than upper inflection point"),58:r("Invalid Minpoint formula"),60:r("Invalid Maxpoint formula"),59:r("Invalid Midpoint formula"),61:r("Invalid upper inflection point formula"),62:r("Invalid lower inflection point formula"),24:r("A range needs to be defined"),Unexpected:r("The rule is invalid for an unknown reason")},ColorScale:r("Color scale"),IconSet:r("Icon set")},Go={IsEmpty:r("Is empty"),IsNotEmpty:r("Is not empty"),ContainsText:r("Contains"),NotContains:r("Does not contain"),BeginsWith:r("Starts with"),EndsWith:r("Ends with"),Equal:r("Is equal to"),NotEqual:r("Is not equal to"),GreaterThan:r("Is greater than"),GreaterThanOrEqual:r("Is greater than or equal to"),LessThan:r("Is less than"),LessThanOrEqual:r("Is less than or equal to"),Between:r("Is between"),NotBetween:r("Is not between")},qo={Series:r("Series"),Errors:{Unexpected:r("The chart definition is invalid for an unknown reason"),32:r("The dataset is invalid"),33:r("Labels are invalid"),34:r("The key value is invalid"),35:r("The baseline value is invalid"),36:r("The data range is invalid"),37:r("A minimum range limit value is needed"),38:r("The minimum range limit value must be a number"),39:r("A maximum range limit value is needed"),40:r("The maximum range limit value must be a number"),41:r("Minimum range limit must be smaller than maximum range limit"),42:r("The lower inflection point value must be a number"),43:r("The upper inflection point value must be a number")}},Zo={Automatic:r("Automatic"),Number:r("Number"),Percent:r("Percent"),Currency:r("Currency"),CurrencyRounded:r("Currency rounded"),Date:r("Date"),Time:r("Time"),DateTime:r("Date time"),Duration:r("Duration"),CustomCurrency:r("Custom currency")},jo={Custom:r("Custom")},Yo=r("Merged cells are preventing this operation. Unmerge those cells and try again.");function Xo(e,t,i){const n=e.model.getters.getActiveSheetId(),o="COL"===t?"FREEZE_COLUMNS":"FREEZE_ROWS";e.model.dispatch(o,{sheetId:n,quantity:i}).isCancelledBecause(65)&&e.raiseError(Yo)}const Ko=new Bn;Ko.add("file",{name:r("File"),sequence:10}).add("edit",{name:r("Edit"),sequence:20}).add("view",{name:r("View"),sequence:30}).add("insert",{name:r("Insert"),sequence:40}).add("format",{name:r("Format"),sequence:50}).add("data",{name:r("Data"),sequence:60}).addChild("save",["file"],{name:r("Save"),description:"Ctrl+S",sequence:10,action:()=>console.log("Not implemented")}).addChild("undo",["edit"],{name:r("Undo"),description:"Ctrl+Z",sequence:10,action:e=>e.model.dispatch("REQUEST_UNDO")}).addChild("redo",["edit"],{name:r("Redo"),description:"Ctrl+Y",sequence:20,action:e=>e.model.dispatch("REQUEST_REDO"),separator:!0}).addChild("copy",["edit"],{name:r("Copy"),description:"Ctrl+C",sequence:30,isReadonlyAllowed:!0,action:po}).addChild("cut",["edit"],{name:r("Cut"),description:"Ctrl+X",sequence:40,action:mo}).addChild("paste",["edit"],{name:r("Paste"),description:"Ctrl+V",sequence:50,action:fo}).addChild("paste_special",["edit"],{name:r("Paste special"),sequence:60,separator:!0,isVisible:So}).addChild("paste_special_value",["edit","paste_special"],{name:r("Paste value only"),sequence:10,action:vo}).addChild("paste_special_format",["edit","paste_special"],{name:r("Paste format only"),sequence:20,action:bo}).addChild("sort_range",["data"],{name:r("Sort range"),sequence:62,isVisible:Po,separator:!0}).addChild("sort_ascending",["data","sort_range"],{name:r("Ascending (A ⟶ Z)"),sequence:10,action:$o}).addChild("sort_descending",["data","sort_range"],{name:r("Descending (Z ⟶ A)"),sequence:20,action:Lo}).addChild("find_and_replace",["edit"],{name:r("Find and replace"),description:"Ctrl+H",sequence:65,isReadonlyAllowed:!0,action:e=>{e.openSidePanel("FindAndReplace",{})},separator:!0}).addChild("edit_delete_cell_values",["edit"],{name:r("Delete values"),sequence:70,action:e=>e.model.dispatch("DELETE_CONTENT",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})}).addChild("edit_delete_row",["edit"],{name:Co,sequence:80,action:Eo,isVisible:e=>wo("ROW",e)}).addChild("edit_delete_column",["edit"],{name:yo,sequence:90,action:xo,isVisible:e=>wo("COL",e)}).addChild("edit_delete_cell_shift_up",["edit"],{name:r("Delete cell and shift up"),sequence:93,action:To}).addChild("edit_delete_cell_shift_left",["edit"],{name:r("Delete cell and shift left"),sequence:97,action:Ao}).addChild("edit_unhide_columns",["edit"],{name:r("Unhide all columns"),sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"COL",elements:Array.from(Array(e.model.getters.getNumberCols(t)).keys())})},isVisible:e=>e.model.getters.getHiddenColsGroups(e.model.getters.getActiveSheetId()).length>0}).addChild("edit_unhide_rows",["edit"],{name:r("Unhide all rows"),sequence:100,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("UNHIDE_COLUMNS_ROWS",{sheetId:t,dimension:"ROW",elements:Array.from(Array(e.model.getters.getNumberRows(t)).keys())})},isVisible:e=>e.model.getters.getHiddenRowsGroups(e.model.getters.getActiveSheetId()).length>0}).addChild("insert_row_before",["insert"],{name:e=>{const t=co(e);return 1===t?r("Row above"):r("%s Rows above",t.toString())},sequence:10,action:Mo,isVisible:e=>0===e.model.getters.getActiveCols().size}).addChild("insert_row_after",["insert"],{name:e=>{const t=co(e);return 1===t?r("Row below"):r("%s Rows below",t.toString())},sequence:20,action:No,isVisible:e=>0===e.model.getters.getActiveCols().size,separator:!0}).addChild("insert_column_before",["insert"],{name:e=>{const t=lo(e);return 1===t?r("Column left"):r("%s Columns left",t.toString())},sequence:30,action:Oo,isVisible:e=>0===e.model.getters.getActiveRows().size}).addChild("insert_column_after",["insert"],{name:e=>{const t=lo(e);return 1===t?r("Column right"):r("%s Columns right",t.toString())},sequence:40,action:_o,isVisible:e=>0===e.model.getters.getActiveRows().size,separator:!0}).addChild("insert_insert_cell_shift_down",["insert"],{name:r("Insert cells and shift down"),sequence:43,action:Ro}).addChild("insert_insert_cell_shift_right",["insert"],{name:r("Insert cells and shift right"),sequence:47,action:Io,separator:!0}).addChild("insert_chart",["insert"],{name:r("Chart"),sequence:50,action:e=>{const t=e.model.getters,i=t.getSelectedZone();let n=i;const o=e.model.uuidGenerator.uuidv4();let r;i.left!==i.right&&(n={...i,left:i.left+1});const s=[Ni(n)],a=t.getActiveSheetId(),l={width:536,height:335},{x:c,y:h}=t.getMainViewportCoordinates(),{scrollX:d,scrollY:u}=t.getActiveSheetScrollInfo(),{width:g,height:p}=t.getVisibleRect(t.getActiveMainViewport()),m={x:c+d+Math.max(0,(g-l.width)/2),y:h+u+Math.max(0,(p-l.height)/2)};let f="";const v=e.model.getters.getCellsInZone(a,{...n,bottom:n.top}),b=!!v.find((e=>e&&e.evaluated.type!==rn.number));if(b){const t=v.reduce(((t,i)=>{const n=i&&i.evaluated.type!==rn.error&&e.model.getters.getCellText(i);return n&&t.push(n),t}),[]),i=t.splice(-1)[0];f=t.join(", "),i&&(f+=(f?" "+e._t("and")+" ":"")+i)}i.left!==i.right&&(r=Ni({...i,right:i.left,top:b?i.top+1:i.top}));const S=n.right===n.left?"none":"top";e.model.dispatch("CREATE_CHART",{sheetId:a,id:o,position:m,size:l,definition:{title:f,dataSets:s,labelRange:r,type:"bar",stacked:!1,dataSetsHaveTitle:b,verticalAxisPosition:"left",legendPosition:S}}),e.model.dispatch("SELECT_FIGURE",{id:o}),e.openSidePanel("ChartPanel")}}).addChild("insert_link",["insert"],{name:r("Link"),separator:!0,sequence:60,action:Do}).addChild("insert_sheet",["insert"],{name:r("New sheet"),sequence:70,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSheetIds().indexOf(t)+1,n=e.model.uuidGenerator.uuidv4();e.model.dispatch("CREATE_SHEET",{sheetId:n,position:i}),e.model.dispatch("ACTIVATE_SHEET",{sheetIdFrom:t,sheetIdTo:n})},separator:!0}).addChild("unfreeze_panes",["view"],{name:r("Unfreeze"),sequence:4,isVisible:e=>{const{xSplit:t,ySplit:i}=e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId());return t+i>0},action:e=>e.model.dispatch("UNFREEZE_COLUMNS_ROWS",{sheetId:e.model.getters.getActiveSheetId()})}).addChild("freeze_panes",["view"],{name:r("Freeze"),sequence:5,separator:!0}).addChild("unfreeze_rows",["view","freeze_panes"],{name:r("No rows"),action:e=>e.model.dispatch("UNFREEZE_ROWS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,sequence:5,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).ySplit}).addChild("freeze_first_row",["view","freeze_panes"],{name:r("1 row"),action:e=>Xo(e,"ROW",1),isReadonlyAllowed:!0,sequence:10}).addChild("freeze_second_row",["view","freeze_panes"],{name:r("2 rows"),action:e=>Xo(e,"ROW",2),isReadonlyAllowed:!0,sequence:15}).addChild("freeze_current_row",["view","freeze_panes"],{name:r("Up to current row"),action:e=>{const{bottom:t}=e.model.getters.getSelectedZone();Xo(e,"ROW",t+1)},isReadonlyAllowed:!0,sequence:20,separator:!0}).addChild("unfreeze_columns",["view","freeze_panes"],{name:r("No columns"),action:e=>e.model.dispatch("UNFREEZE_COLUMNS",{sheetId:e.model.getters.getActiveSheetId()}),isReadonlyAllowed:!0,sequence:25,isVisible:e=>!!e.model.getters.getPaneDivisions(e.model.getters.getActiveSheetId()).xSplit}).addChild("freeze_first_col",["view","freeze_panes"],{name:r("1 column"),action:e=>Xo(e,"COL",1),isReadonlyAllowed:!0,sequence:30}).addChild("freeze_second_col",["view","freeze_panes"],{name:r("2 columns"),action:e=>Xo(e,"COL",2),isReadonlyAllowed:!0,sequence:35}).addChild("freeze_current_col",["view","freeze_panes"],{name:r("Up to current column"),action:e=>{const{right:t}=e.model.getters.getSelectedZone();Xo(e,"COL",t+1)},isReadonlyAllowed:!0,sequence:40}).addChild("view_gridlines",["view"],{name:e=>e.model.getters.getGridLinesVisibility(e.model.getters.getActiveSheetId())?r("Hide gridlines"):r("Show gridlines"),action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("SET_GRID_LINES_VISIBILITY",{sheetId:t,areGridLinesVisible:!e.model.getters.getGridLinesVisibility(t)})},sequence:10}).addChild("view_formulas",["view"],{name:e=>e.model.getters.shouldShowFormulas()?r("Hide formulas"):r("Show formulas"),action:e=>e.model.dispatch("SET_FORMULA_VISIBILITY",{show:!e.model.getters.shouldShowFormulas()}),isReadonlyAllowed:!0,sequence:15}).addChild("format_number",["format"],{name:r("Numbers"),sequence:10,separator:!0}).addChild("format_number_automatic",["format","format_number"],{name:Zo.Automatic,sequence:10,separator:!0,action:e=>ho(e,"")}).addChild("format_number_number",["format","format_number"],{name:Zo.Number,description:"1,000.12",sequence:20,action:e=>ho(e,"#,##0.00")}).addChild("format_number_percent",["format","format_number"],{name:Zo.Percent,description:"10.12%",sequence:30,separator:!0,action:e=>ho(e,"0.00%")}).addChild("format_number_currency",["format","format_number"],{name:Zo.Currency,description:"$1,000.12",sequence:37,action:e=>ho(e,"[$$]#,##0.00")}).addChild("format_number_currency_rounded",["format","format_number"],{name:Zo.CurrencyRounded,description:"$1,000",sequence:38,action:e=>ho(e,"[$$]#,##0")}).addChild("format_custom_currency",["format","format_number"],{name:Zo.CustomCurrency,sequence:39,separator:!0,action:e=>{e.openSidePanel("CustomCurrency",{})}}).addChild("format_number_date",["format","format_number"],{name:Zo.Date,description:"9/26/2008",sequence:40,action:e=>ho(e,"m/d/yyyy")}).addChild("format_number_time",["format","format_number"],{name:Zo.Time,description:"10:43:00 PM",sequence:50,action:e=>ho(e,"hh:mm:ss a")}).addChild("format_number_date_time",["format","format_number"],{name:Zo.DateTime,description:"9/26/2008 22:43:00",sequence:60,action:e=>ho(e,"m/d/yyyy hh:mm:ss")}).addChild("format_number_duration",["format","format_number"],{name:Zo.Duration,description:"27:51:38",sequence:70,separator:!0,action:e=>ho(e,"hhhh:mm:ss")}).addChild("format_bold",["format"],{name:r("Bold"),sequence:20,description:"Ctrl+B",action:e=>uo(e,{bold:!e.model.getters.getCurrentStyle().bold})}).addChild("format_italic",["format"],{name:r("Italic"),sequence:30,description:"Ctrl+I",action:e=>uo(e,{italic:!e.model.getters.getCurrentStyle().italic})}).addChild("format_underline",["format"],{name:r("Underline"),description:"Ctrl+U",sequence:40,action:e=>uo(e,{underline:!e.model.getters.getCurrentStyle().underline})}).addChild("format_strikethrough",["format"],{name:r("Strikethrough"),sequence:50,action:e=>uo(e,{strikethrough:!e.model.getters.getCurrentStyle().strikethrough}),separator:!0}).addChild("format_font_size",["format"],{name:r("Font size"),sequence:60}).addChild("format_wrapping",["format"],{name:r("Wrapping"),sequence:70,separator:!0}).addChild("format_wrapping_overflow",["format","format_wrapping"],{name:r("Overflow"),sequence:10,action:e=>uo(e,{wrapping:"overflow"})}).addChild("format_wrapping_wrap",["format","format_wrapping"],{name:r("Wrap"),sequence:20,action:e=>uo(e,{wrapping:"wrap"})}).addChild("format_wrapping_clip",["format","format_wrapping"],{name:r("Clip"),sequence:30,action:e=>uo(e,{wrapping:"clip"})}).addChild("format_cf",["format"],{name:r("Conditional formatting"),sequence:80,action:Fo,separator:!0}).addChild("format_clearFormat",["format"],{name:r("Clear formatting"),sequence:90,action:e=>{e.model.dispatch("CLEAR_FORMATTING",{sheetId:e.model.getters.getActiveSheetId(),target:e.model.getters.getSelectedZones()})},separator:!0}).addChild("add_data_filter",["data"],{name:r("Add Filter"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId(),i=e.model.getters.getSelection().zones;no(e,t,i)},isVisible:e=>!ko(e),isEnabled:e=>(e=>Qi(...e.model.getters.getSelectedZones()))(e)}).addChild("remove_data_filter",["data"],{name:r("Remove Filter"),sequence:20,action:e=>{const t=e.model.getters.getActiveSheetId();e.model.dispatch("REMOVE_FILTER_TABLE",{sheetId:t,target:e.model.getters.getSelectedZones()})},isVisible:ko});for(let e of re)Ko.addChild(`format_font_size_${e.pt}`,["format","format_font_size"],{name:e.pt.toString(),sequence:e.pt,action:t=>uo(t,{fontSize:e.pt})});const Qo=new class extends Ji{addTransformation(e,t,i){for(let n of t)this.content[n]||(this.content[n]=new Map),this.content[n].set(e,i);return this}getTransformation(e,t){return this.content[e]&&this.content[e].get(t)}},Jo=new Ii;bn`
273
273
  .o-selection {
274
274
  .o-selection-input {
275
275
  display: flex;
@@ -2432,4 +2432,4 @@
2432
2432
  <tableParts count="${e.filterTables.length}">
2433
2433
  ${Ef(a)}
2434
2434
  </tableParts>
2435
- `}var gS;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(gS||(gS={}));const pS={},mS={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:N,HEADER_WIDTH:O,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:_,DEFAULT_CELL_HEIGHT:F,SCROLLBAR_WIDTH:D},fS={autofillModifiersRegistry:on,autofillRulesRegistry:mn,cellMenuRegistry:Uo,colMenuRegistry:Vo,linkMenuRegistry:Hn,functionRegistry:Pu,uiPluginRegistry:ib,corePluginRegistry:tb,rowMenuRegistry:zo,sidePanelRegistry:fs,figureRegistry:Yn,sheetMenuRegistry:Ho,chartSidePanelComponentRegistry:as,chartComponentRegistry:tn,chartRegistry:en,topbarMenuRegistry:Ko,topbarComponentRegistry:vs,clickableCellRegistry:nb,otRegistry:Qo,inverseCommandRegistry:Xn,cellRegistry:Zn,cellPopoverRegistry:qn},vS={LinkCell:Ip},bS={args:Ns,toBoolean:Bs,toJsDate:Hs,toNumber:$s,toString:Ps,toXC:Pt,toZone:Ai,toCartesian:Lt,numberToLetters:kt,createFullMenuItem:Vn,UuidGenerator:Ii,formatValue:Xt,computeTextWidth:_e,isMarkdownLink:He,parseMarkdownLink:Ge,markdownLink:We,createEmptyWorkbookData:Zf,createEmptySheet:qf,createEmptyExcelSheet:jf,getDefaultChartJsRuntime:Rr,chartFontColor:fr,getMenuChildren:Tn,ChartColors:mr,EvaluationError:c,CellErrorLevel:l,getFillingMode:Ar,rgbaToHex:bt,colorToRGBA:St,positionToZone:Yi},SS={ChartPanel:ls,ChartFigure:ws,ChartJsComponent:nn,Grid:Sp,GridOverlay:np,ScorecardChart:Ss,LineConfigPanel:ns,LineBarPieDesignPanel:Jr,BarConfigPanel:ir,LineBarPieConfigPanel:tr,GaugeChartConfigPanel:ts,GaugeChartDesignPanel:is,ScorecardChartConfigPanel:rs,ScorecardChartDesignPanel:ss};e.AbstractChart=nr,e.CorePlugin=Yf,e.DATETIME_FORMAT=Y,e.DispatchResult=dn,e.EvaluationError=c,e.Model=class extends Pv{constructor(e={},i={},n=[],o=new Ii,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,!ln.has(o.type)))return new dn(67);var o;if(!this.session.canApplyOptimisticUpdate())return new dn(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((()=>{hn(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(hn(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(hn(i))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,i)}return dn.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,dn.Success},n=Wf(e,n);const s=Bf(e,r);this.state=new Ab,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 xb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new Rb(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 Tb(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range);for(let e of tb.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of ib.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 Zv(wb(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 gb;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 dn(t.flat()):dn.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=Zf();for(let t of this.handlers)t instanceof Yf&&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={...Zf(),sheets:[jf(zf,"Sheet1")]};for(let t of this.handlers)t instanceof _g&&t.exportForExcel(e);return e=Ae(e),dS(e)}},e.Registry=Ji,e.Revision=Gv,e.SPREADSHEET_DIMENSIONS=mS,e.Spreadsheet=ub,e.UIPlugin=Fg,e.__info__=pS,e.addFunction=function(e,t){Pu.add(e,t)},e.astToFormula=gg,e.cellTypes=vS,e.compile=Tg,e.components=SS,e.convertAstNodes=ug,e.coreTypes=cn,e.findCellInNewZone=Zi,e.functionCache=Ig,e.helpers=bS,e.invalidateEvaluationCommands=sn,e.load=Bf,e.parse=hg,e.readonlyAllowedCommands=ln,e.registries=fS,e.setTranslationMethod=function(e){i=e},e.tokenize=Bu,Object.defineProperty(e,"__esModule",{value:!0}),pS.version="16.0.33",pS.date="2024-02-16T14:49:10.674Z",pS.hash="c0cefe8"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
2435
+ `}var gS;!function(e){e[e.Ready=0]="Ready",e[e.Running=1]="Running",e[e.RunningCore=2]="RunningCore",e[e.Finalizing=3]="Finalizing"}(gS||(gS={}));const pS={},mS={MIN_ROW_HEIGHT:10,MIN_COL_WIDTH:5,HEADER_HEIGHT:N,HEADER_WIDTH:O,TOPBAR_HEIGHT:63,BOTTOMBAR_HEIGHT:36,DEFAULT_CELL_WIDTH:_,DEFAULT_CELL_HEIGHT:F,SCROLLBAR_WIDTH:D},fS={autofillModifiersRegistry:on,autofillRulesRegistry:mn,cellMenuRegistry:Uo,colMenuRegistry:Vo,linkMenuRegistry:Hn,functionRegistry:Pu,uiPluginRegistry:ib,corePluginRegistry:tb,rowMenuRegistry:zo,sidePanelRegistry:fs,figureRegistry:Yn,sheetMenuRegistry:Ho,chartSidePanelComponentRegistry:as,chartComponentRegistry:tn,chartRegistry:en,topbarMenuRegistry:Ko,topbarComponentRegistry:vs,clickableCellRegistry:nb,otRegistry:Qo,inverseCommandRegistry:Xn,cellRegistry:Zn,cellPopoverRegistry:qn},vS={LinkCell:Ip},bS={args:Ns,toBoolean:Bs,toJsDate:Hs,toNumber:$s,toString:Ps,toXC:Pt,toZone:Ai,toCartesian:Lt,numberToLetters:kt,createFullMenuItem:Vn,UuidGenerator:Ii,formatValue:Xt,computeTextWidth:_e,isMarkdownLink:He,parseMarkdownLink:Ge,markdownLink:We,createEmptyWorkbookData:Zf,createEmptySheet:qf,createEmptyExcelSheet:jf,getDefaultChartJsRuntime:Rr,chartFontColor:fr,getMenuChildren:Tn,ChartColors:mr,EvaluationError:c,CellErrorLevel:l,getFillingMode:Ar,rgbaToHex:bt,colorToRGBA:St,positionToZone:Yi},SS={ChartPanel:ls,ChartFigure:ws,ChartJsComponent:nn,Grid:Sp,GridOverlay:np,ScorecardChart:Ss,LineConfigPanel:ns,LineBarPieDesignPanel:Jr,BarConfigPanel:ir,LineBarPieConfigPanel:tr,GaugeChartConfigPanel:ts,GaugeChartDesignPanel:is,ScorecardChartConfigPanel:rs,ScorecardChartDesignPanel:ss};e.AbstractChart=nr,e.CorePlugin=Yf,e.DATETIME_FORMAT=Y,e.DispatchResult=dn,e.EvaluationError=c,e.Model=class extends Pv{constructor(e={},i={},n=[],o=new Ii,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,!ln.has(o.type)))return new dn(67);var o;if(!this.session.canApplyOptimisticUpdate())return new dn(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((()=>{hn(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(hn(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(hn(i))throw new Error(`A UI plugin cannot dispatch ${e} while handling a core command`);this.dispatchToHandlers(this.handlers,i)}return dn.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,dn.Success},n=Wf(e,n);const s=Bf(e,r);this.state=new Ab,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 xb(this.dispatchFromCorePlugin,this.session),this.coreGetters={},this.range=new Rb(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 Tb(this.getters),this.coreHandlers.push(this.range),this.handlers.push(this.range);for(let e of tb.getAll())this.setupCorePlugin(e,s);Object.assign(this.getters,this.coreGetters);for(let e of ib.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 Zv(wb(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 gb;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 dn(t.flat()):dn.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=Zf();for(let t of this.handlers)t instanceof Yf&&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={...Zf(),sheets:[jf(zf,"Sheet1")]};for(let t of this.handlers)t instanceof _g&&t.exportForExcel(e);return e=Ae(e),dS(e)}},e.Registry=Ji,e.Revision=Gv,e.SPREADSHEET_DIMENSIONS=mS,e.Spreadsheet=ub,e.UIPlugin=Fg,e.__info__=pS,e.addFunction=function(e,t){Pu.add(e,t)},e.astToFormula=gg,e.cellTypes=vS,e.compile=Tg,e.components=SS,e.convertAstNodes=ug,e.coreTypes=cn,e.findCellInNewZone=Zi,e.functionCache=Ig,e.helpers=bS,e.invalidateEvaluationCommands=sn,e.load=Bf,e.parse=hg,e.readonlyAllowedCommands=ln,e.registries=fS,e.setTranslationMethod=function(e){i=e},e.tokenize=Bu,Object.defineProperty(e,"__esModule",{value:!0}),pS.version="16.0.34",pS.date="2024-03-12T07:54:05.304Z",pS.hash="e923ddd"}(this.o_spreadsheet=this.o_spreadsheet||{},owl);
@@ -3238,7 +3238,7 @@ https://fontawesome.com/license -->
3238
3238
  </t>
3239
3239
  </odoo>
3240
3240
  <!--
3241
- __info__.version = '16.0.33';
3242
- __info__.date = '2024-02-16T14:49:33.975Z';
3243
- __info__.hash = 'c0cefe8';
3241
+ __info__.version = '16.0.34';
3242
+ __info__.date = '2024-03-12T07:54:27.992Z';
3243
+ __info__.hash = 'e923ddd';
3244
3244
  -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odoo/o-spreadsheet",
3
- "version": "16.0.33",
3
+ "version": "16.0.34",
4
4
  "description": "A spreadsheet component",
5
5
  "main": "dist/o-spreadsheet.cjs.js",
6
6
  "browser": "dist/o-spreadsheet.iife.js",