@odoo/o-spreadsheet 16.3.34 → 16.3.36

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.
@@ -21088,7 +21088,7 @@ class Composer extends owl.Component {
21088
21088
  Enter: this.processEnterKey,
21089
21089
  Escape: this.processEscapeKey,
21090
21090
  F2: () => console.warn("Not implemented"),
21091
- F4: this.processF4Key,
21091
+ F4: (ev) => this.processF4Key(ev),
21092
21092
  Tab: (ev) => this.processTabKey(ev),
21093
21093
  };
21094
21094
  setup() {
@@ -21205,9 +21205,10 @@ class Composer extends owl.Component {
21205
21205
  processEscapeKey() {
21206
21206
  this.env.model.dispatch("STOP_EDITION", { cancel: true });
21207
21207
  }
21208
- processF4Key() {
21208
+ processF4Key(ev) {
21209
21209
  this.env.model.dispatch("CYCLE_EDITION_REFERENCES");
21210
21210
  this.processContent();
21211
+ ev.stopPropagation();
21211
21212
  }
21212
21213
  onCompositionStart() {
21213
21214
  this.compositionActive = true;
@@ -25962,7 +25963,7 @@ const machine = {
25962
25963
  function matchReference(tokens) {
25963
25964
  let head = 0;
25964
25965
  let transitions = machine[State.LeftRef];
25965
- const matchedTokens = [];
25966
+ let matchedTokens = "";
25966
25967
  while (transitions !== undefined) {
25967
25968
  const token = tokens[head++];
25968
25969
  if (!token) {
@@ -25974,15 +25975,15 @@ function matchReference(tokens) {
25974
25975
  case undefined:
25975
25976
  return null;
25976
25977
  case State.Found:
25977
- matchedTokens.push(token);
25978
+ matchedTokens += token.value;
25978
25979
  tokens.splice(0, head);
25979
25980
  return {
25980
25981
  type: "REFERENCE",
25981
- value: concat(matchedTokens.map((token) => token.value)),
25982
+ value: matchedTokens,
25982
25983
  };
25983
25984
  default:
25984
25985
  transitions = machine[nextState];
25985
- matchedTokens.push(token);
25986
+ matchedTokens += token.value;
25986
25987
  break;
25987
25988
  }
25988
25989
  }
@@ -31898,7 +31899,12 @@ class MergePlugin extends CorePlugin {
31898
31899
  * if they have at least a common cell
31899
31900
  */
31900
31901
  doesIntersectMerge(sheetId, zone) {
31901
- return positions(zone).some(({ col, row }) => this.getMerge({ sheetId, col, row }) !== undefined);
31902
+ for (const merge of this.getMerges(sheetId)) {
31903
+ if (overlap(zone, merge)) {
31904
+ return true;
31905
+ }
31906
+ }
31907
+ return false;
31902
31908
  }
31903
31909
  /**
31904
31910
  * Returns true if two columns have at least one merge in common
@@ -40608,7 +40614,7 @@ class ClipboardPlugin extends UIPlugin {
40608
40614
  case "ADD_COLUMNS_ROWS": {
40609
40615
  this.status = "invisible";
40610
40616
  // If we add a col/row inside or before the cut area, we invalidate the clipboard
40611
- if (this.state?.operation !== "CUT") {
40617
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40612
40618
  return;
40613
40619
  }
40614
40620
  const isClipboardDirty = this.state.isColRowDirtyingClipboard(cmd.position === "before" ? cmd.base : cmd.base + 1, cmd.dimension);
@@ -40620,7 +40626,7 @@ class ClipboardPlugin extends UIPlugin {
40620
40626
  case "REMOVE_COLUMNS_ROWS": {
40621
40627
  this.status = "invisible";
40622
40628
  // If we remove a col/row inside or before the cut area, we invalidate the clipboard
40623
- if (this.state?.operation !== "CUT") {
40629
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40624
40630
  return;
40625
40631
  }
40626
40632
  for (let el of cmd.elements) {
@@ -44270,6 +44276,10 @@ class Spreadsheet extends owl.Component {
44270
44276
  });
44271
44277
  owl.useExternalListener(window, "resize", () => this.render(true));
44272
44278
  owl.useExternalListener(window, "beforeunload", this.unbindModelEvents.bind(this));
44279
+ // For some reason, the wheel event is not properly registered inside templates
44280
+ // in Chromium-based browsers based on chromium 125
44281
+ // This hack ensures the event declared in the template is properly registered/working
44282
+ owl.useExternalListener(document.body, "wheel", () => { });
44273
44283
  this.bindModelEvents();
44274
44284
  owl.onMounted(() => {
44275
44285
  this.checkViewportSize();
@@ -48093,6 +48103,6 @@ exports.setTranslationMethod = setTranslationMethod;
48093
48103
  exports.tokenize = tokenize;
48094
48104
 
48095
48105
 
48096
- __info__.version = '16.3.34';
48097
- __info__.date = '2024-04-26T07:37:12.329Z';
48098
- __info__.hash = '196324c';
48106
+ __info__.version = '16.3.36';
48107
+ __info__.date = '2024-05-24T11:25:00.243Z';
48108
+ __info__.hash = 'b038fad';
@@ -21084,7 +21084,7 @@ class Composer extends Component {
21084
21084
  Enter: this.processEnterKey,
21085
21085
  Escape: this.processEscapeKey,
21086
21086
  F2: () => console.warn("Not implemented"),
21087
- F4: this.processF4Key,
21087
+ F4: (ev) => this.processF4Key(ev),
21088
21088
  Tab: (ev) => this.processTabKey(ev),
21089
21089
  };
21090
21090
  setup() {
@@ -21201,9 +21201,10 @@ class Composer extends Component {
21201
21201
  processEscapeKey() {
21202
21202
  this.env.model.dispatch("STOP_EDITION", { cancel: true });
21203
21203
  }
21204
- processF4Key() {
21204
+ processF4Key(ev) {
21205
21205
  this.env.model.dispatch("CYCLE_EDITION_REFERENCES");
21206
21206
  this.processContent();
21207
+ ev.stopPropagation();
21207
21208
  }
21208
21209
  onCompositionStart() {
21209
21210
  this.compositionActive = true;
@@ -25958,7 +25959,7 @@ const machine = {
25958
25959
  function matchReference(tokens) {
25959
25960
  let head = 0;
25960
25961
  let transitions = machine[State.LeftRef];
25961
- const matchedTokens = [];
25962
+ let matchedTokens = "";
25962
25963
  while (transitions !== undefined) {
25963
25964
  const token = tokens[head++];
25964
25965
  if (!token) {
@@ -25970,15 +25971,15 @@ function matchReference(tokens) {
25970
25971
  case undefined:
25971
25972
  return null;
25972
25973
  case State.Found:
25973
- matchedTokens.push(token);
25974
+ matchedTokens += token.value;
25974
25975
  tokens.splice(0, head);
25975
25976
  return {
25976
25977
  type: "REFERENCE",
25977
- value: concat(matchedTokens.map((token) => token.value)),
25978
+ value: matchedTokens,
25978
25979
  };
25979
25980
  default:
25980
25981
  transitions = machine[nextState];
25981
- matchedTokens.push(token);
25982
+ matchedTokens += token.value;
25982
25983
  break;
25983
25984
  }
25984
25985
  }
@@ -31894,7 +31895,12 @@ class MergePlugin extends CorePlugin {
31894
31895
  * if they have at least a common cell
31895
31896
  */
31896
31897
  doesIntersectMerge(sheetId, zone) {
31897
- return positions(zone).some(({ col, row }) => this.getMerge({ sheetId, col, row }) !== undefined);
31898
+ for (const merge of this.getMerges(sheetId)) {
31899
+ if (overlap(zone, merge)) {
31900
+ return true;
31901
+ }
31902
+ }
31903
+ return false;
31898
31904
  }
31899
31905
  /**
31900
31906
  * Returns true if two columns have at least one merge in common
@@ -40604,7 +40610,7 @@ class ClipboardPlugin extends UIPlugin {
40604
40610
  case "ADD_COLUMNS_ROWS": {
40605
40611
  this.status = "invisible";
40606
40612
  // If we add a col/row inside or before the cut area, we invalidate the clipboard
40607
- if (this.state?.operation !== "CUT") {
40613
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40608
40614
  return;
40609
40615
  }
40610
40616
  const isClipboardDirty = this.state.isColRowDirtyingClipboard(cmd.position === "before" ? cmd.base : cmd.base + 1, cmd.dimension);
@@ -40616,7 +40622,7 @@ class ClipboardPlugin extends UIPlugin {
40616
40622
  case "REMOVE_COLUMNS_ROWS": {
40617
40623
  this.status = "invisible";
40618
40624
  // If we remove a col/row inside or before the cut area, we invalidate the clipboard
40619
- if (this.state?.operation !== "CUT") {
40625
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40620
40626
  return;
40621
40627
  }
40622
40628
  for (let el of cmd.elements) {
@@ -44266,6 +44272,10 @@ class Spreadsheet extends Component {
44266
44272
  });
44267
44273
  useExternalListener(window, "resize", () => this.render(true));
44268
44274
  useExternalListener(window, "beforeunload", this.unbindModelEvents.bind(this));
44275
+ // For some reason, the wheel event is not properly registered inside templates
44276
+ // in Chromium-based browsers based on chromium 125
44277
+ // This hack ensures the event declared in the template is properly registered/working
44278
+ useExternalListener(document.body, "wheel", () => { });
44269
44279
  this.bindModelEvents();
44270
44280
  onMounted(() => {
44271
44281
  this.checkViewportSize();
@@ -48061,6 +48071,6 @@ function addFunction(functionName, functionDescription) {
48061
48071
  export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, links, load, parse, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
48062
48072
 
48063
48073
 
48064
- __info__.version = '16.3.34';
48065
- __info__.date = '2024-04-26T07:37:12.329Z';
48066
- __info__.hash = '196324c';
48074
+ __info__.version = '16.3.36';
48075
+ __info__.date = '2024-05-24T11:25:00.243Z';
48076
+ __info__.hash = 'b038fad';
@@ -21085,7 +21085,7 @@
21085
21085
  Enter: this.processEnterKey,
21086
21086
  Escape: this.processEscapeKey,
21087
21087
  F2: () => console.warn("Not implemented"),
21088
- F4: this.processF4Key,
21088
+ F4: (ev) => this.processF4Key(ev),
21089
21089
  Tab: (ev) => this.processTabKey(ev),
21090
21090
  };
21091
21091
  setup() {
@@ -21202,9 +21202,10 @@
21202
21202
  processEscapeKey() {
21203
21203
  this.env.model.dispatch("STOP_EDITION", { cancel: true });
21204
21204
  }
21205
- processF4Key() {
21205
+ processF4Key(ev) {
21206
21206
  this.env.model.dispatch("CYCLE_EDITION_REFERENCES");
21207
21207
  this.processContent();
21208
+ ev.stopPropagation();
21208
21209
  }
21209
21210
  onCompositionStart() {
21210
21211
  this.compositionActive = true;
@@ -25959,7 +25960,7 @@
25959
25960
  function matchReference(tokens) {
25960
25961
  let head = 0;
25961
25962
  let transitions = machine[State.LeftRef];
25962
- const matchedTokens = [];
25963
+ let matchedTokens = "";
25963
25964
  while (transitions !== undefined) {
25964
25965
  const token = tokens[head++];
25965
25966
  if (!token) {
@@ -25971,15 +25972,15 @@
25971
25972
  case undefined:
25972
25973
  return null;
25973
25974
  case State.Found:
25974
- matchedTokens.push(token);
25975
+ matchedTokens += token.value;
25975
25976
  tokens.splice(0, head);
25976
25977
  return {
25977
25978
  type: "REFERENCE",
25978
- value: concat(matchedTokens.map((token) => token.value)),
25979
+ value: matchedTokens,
25979
25980
  };
25980
25981
  default:
25981
25982
  transitions = machine[nextState];
25982
- matchedTokens.push(token);
25983
+ matchedTokens += token.value;
25983
25984
  break;
25984
25985
  }
25985
25986
  }
@@ -31895,7 +31896,12 @@
31895
31896
  * if they have at least a common cell
31896
31897
  */
31897
31898
  doesIntersectMerge(sheetId, zone) {
31898
- return positions(zone).some(({ col, row }) => this.getMerge({ sheetId, col, row }) !== undefined);
31899
+ for (const merge of this.getMerges(sheetId)) {
31900
+ if (overlap(zone, merge)) {
31901
+ return true;
31902
+ }
31903
+ }
31904
+ return false;
31899
31905
  }
31900
31906
  /**
31901
31907
  * Returns true if two columns have at least one merge in common
@@ -40605,7 +40611,7 @@
40605
40611
  case "ADD_COLUMNS_ROWS": {
40606
40612
  this.status = "invisible";
40607
40613
  // If we add a col/row inside or before the cut area, we invalidate the clipboard
40608
- if (this.state?.operation !== "CUT") {
40614
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40609
40615
  return;
40610
40616
  }
40611
40617
  const isClipboardDirty = this.state.isColRowDirtyingClipboard(cmd.position === "before" ? cmd.base : cmd.base + 1, cmd.dimension);
@@ -40617,7 +40623,7 @@
40617
40623
  case "REMOVE_COLUMNS_ROWS": {
40618
40624
  this.status = "invisible";
40619
40625
  // If we remove a col/row inside or before the cut area, we invalidate the clipboard
40620
- if (this.state?.operation !== "CUT") {
40626
+ if (this.state?.operation !== "CUT" || cmd.sheetId !== this.state?.sheetId) {
40621
40627
  return;
40622
40628
  }
40623
40629
  for (let el of cmd.elements) {
@@ -44267,6 +44273,10 @@
44267
44273
  });
44268
44274
  owl.useExternalListener(window, "resize", () => this.render(true));
44269
44275
  owl.useExternalListener(window, "beforeunload", this.unbindModelEvents.bind(this));
44276
+ // For some reason, the wheel event is not properly registered inside templates
44277
+ // in Chromium-based browsers based on chromium 125
44278
+ // This hack ensures the event declared in the template is properly registered/working
44279
+ owl.useExternalListener(document.body, "wheel", () => { });
44270
44280
  this.bindModelEvents();
44271
44281
  owl.onMounted(() => {
44272
44282
  this.checkViewportSize();
@@ -48092,9 +48102,9 @@
48092
48102
  Object.defineProperty(exports, '__esModule', { value: true });
48093
48103
 
48094
48104
 
48095
- __info__.version = '16.3.34';
48096
- __info__.date = '2024-04-26T07:37:12.329Z';
48097
- __info__.hash = '196324c';
48105
+ __info__.version = '16.3.36';
48106
+ __info__.date = '2024-05-24T11:25:00.243Z';
48107
+ __info__.hash = 'b038fad';
48098
48108
 
48099
48109
 
48100
48110
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);