@odoo/o-spreadsheet 17.4.21 → 17.4.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 17.4.21
6
- * @date 2025-02-05T06:46:54.366Z
7
- * @hash 0c55e18
5
+ * @version 17.4.22
6
+ * @date 2025-02-10T09:14:48.889Z
7
+ * @hash 667f2b1
8
8
  */
9
9
 
10
10
  'use strict';
@@ -748,9 +748,16 @@ function deepEqualsArray(arr1, arr2) {
748
748
  }
749
749
  return true;
750
750
  }
751
- /** Check if the given array contains all the values of the other array. */
751
+ /**
752
+ * Check if the given array contains all the values of the other array.
753
+ * It makes the assumption that both array do not contain duplicates.
754
+ */
752
755
  function includesAll(arr, values) {
753
- return values.every((value) => arr.includes(value));
756
+ if (arr.length < values.length) {
757
+ return false;
758
+ }
759
+ const set = new Set(arr);
760
+ return values.every((value) => set.has(value));
754
761
  }
755
762
  /**
756
763
  * Return an object with all the keys in the object that have a falsy value removed.
@@ -33547,8 +33554,8 @@ function useDragAndDropListItems() {
33547
33554
  document.body.style.cursor = "move";
33548
33555
  state.draggedItemId = args.draggedItemId;
33549
33556
  const container = direction === "horizontal"
33550
- ? new HorizontalContainer(args.containerEl)
33551
- : new VerticalContainer(args.containerEl);
33557
+ ? new HorizontalContainer(args.scrollableContainerEl)
33558
+ : new VerticalContainer(args.scrollableContainerEl);
33552
33559
  dndHelper = new DOMDndHelper({
33553
33560
  ...args,
33554
33561
  container,
@@ -33559,8 +33566,8 @@ function useDragAndDropListItems() {
33559
33566
  const stopListening = startDnd(dndHelper.onMouseMove.bind(dndHelper), dndHelper.onMouseUp.bind(dndHelper));
33560
33567
  cleanupFns.push(stopListening);
33561
33568
  const onScroll = dndHelper.onScroll.bind(dndHelper);
33562
- args.containerEl.addEventListener("scroll", onScroll);
33563
- cleanupFns.push(() => args.containerEl.removeEventListener("scroll", onScroll));
33569
+ args.scrollableContainerEl.addEventListener("scroll", onScroll);
33570
+ cleanupFns.push(() => args.scrollableContainerEl.removeEventListener("scroll", onScroll));
33564
33571
  cleanupFns.push(dndHelper.destroy.bind(dndHelper));
33565
33572
  };
33566
33573
  owl.onWillUnmount(() => {
@@ -34008,7 +34015,7 @@ class ConditionalFormatPreviewList extends owl.Component {
34008
34015
  draggedItemId: cf.id,
34009
34016
  initialMousePosition: event.clientY,
34010
34017
  items: items,
34011
- containerEl: this.cfListRef.el,
34018
+ scrollableContainerEl: this.cfListRef.el,
34012
34019
  onDragEnd: (cfId, finalIndex) => this.onDragEnd(cfId, finalIndex),
34013
34020
  });
34014
34021
  }
@@ -36020,6 +36027,7 @@ class PivotLayoutConfigurator extends owl.Component {
36020
36027
  unusedMeasureFields: Array,
36021
36028
  unusedDateTimeGranularities: Object,
36022
36029
  allGranularities: Array,
36030
+ getScrollableContainerEl: { type: Function, optional: true },
36023
36031
  };
36024
36032
  dimensionsRef = owl.useRef("pivot-dimensions");
36025
36033
  dragAndDrop = useDragAndDropListItems();
@@ -36048,7 +36056,7 @@ class PivotLayoutConfigurator extends owl.Component {
36048
36056
  draggedItemId: dimension.nameWithGranularity,
36049
36057
  initialMousePosition: event.clientY,
36050
36058
  items: draggableItems,
36051
- containerEl: this.dimensionsRef.el,
36059
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36052
36060
  onDragEnd: (dimensionName, finalIndex) => {
36053
36061
  const originalIndex = draggableIds.findIndex((id) => id === dimensionName);
36054
36062
  if (originalIndex === finalIndex) {
@@ -36088,7 +36096,7 @@ class PivotLayoutConfigurator extends owl.Component {
36088
36096
  draggedItemId: measure.name,
36089
36097
  initialMousePosition: event.clientY,
36090
36098
  items: draggableItems,
36091
- containerEl: this.dimensionsRef.el,
36099
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36092
36100
  onDragEnd: (measureName, finalIndex) => {
36093
36101
  const originalIndex = draggableIds.findIndex((id) => id === measureName);
36094
36102
  if (originalIndex === finalIndex) {
@@ -37527,6 +37535,7 @@ class PivotSpreadsheetSidePanel extends owl.Component {
37527
37535
  };
37528
37536
  store;
37529
37537
  state;
37538
+ pivotSidePanelRef = owl.useRef("pivotSidePanel");
37530
37539
  setup() {
37531
37540
  this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId);
37532
37541
  this.state = owl.useState({
@@ -37555,6 +37564,9 @@ class PivotSpreadsheetSidePanel extends owl.Component {
37555
37564
  get definition() {
37556
37565
  return this.store.definition;
37557
37566
  }
37567
+ getScrollableContainerEl() {
37568
+ return this.pivotSidePanelRef.el;
37569
+ }
37558
37570
  onSelectionChanged(ranges) {
37559
37571
  this.state.rangeHasChanged = true;
37560
37572
  this.state.range = ranges[0];
@@ -62948,7 +62960,7 @@ class BottomBar extends owl.Component {
62948
62960
  draggedItemId: sheetId,
62949
62961
  initialMousePosition: event.clientX,
62950
62962
  items: sheets,
62951
- containerEl: this.sheetListRef.el,
62963
+ scrollableContainerEl: this.sheetListRef.el,
62952
62964
  onDragEnd: (sheetId, finalIndex) => this.onDragEnd(sheetId, finalIndex),
62953
62965
  });
62954
62966
  }
@@ -68910,6 +68922,6 @@ exports.tokenColors = tokenColors;
68910
68922
  exports.tokenize = tokenize;
68911
68923
 
68912
68924
 
68913
- __info__.version = "17.4.21";
68914
- __info__.date = "2025-02-05T06:46:54.366Z";
68915
- __info__.hash = "0c55e18";
68925
+ __info__.version = "17.4.22";
68926
+ __info__.date = "2025-02-10T09:14:48.889Z";
68927
+ __info__.hash = "667f2b1";
@@ -8977,7 +8977,7 @@ interface DndPartialArgs {
8977
8977
  draggedItemId: UID;
8978
8978
  initialMousePosition: Pixel;
8979
8979
  items: DragAndDropItemsPartial[];
8980
- containerEl: HTMLElement;
8980
+ scrollableContainerEl: HTMLElement;
8981
8981
  onChange?: () => void;
8982
8982
  onCancel?: () => void;
8983
8983
  onDragEnd?: (itemId: UID, indexAtEnd: Pixel) => void;
@@ -9367,6 +9367,7 @@ interface Props$d {
9367
9367
  unusedMeasureFields: PivotField[];
9368
9368
  unusedDateTimeGranularities: Record<string, Set<string>>;
9369
9369
  allGranularities: string[];
9370
+ getScrollableContainerEl?: () => HTMLElement;
9370
9371
  }
9371
9372
  declare class PivotLayoutConfigurator extends Component<Props$d, SpreadsheetChildEnv> {
9372
9373
  static template: string;
@@ -9383,6 +9384,10 @@ declare class PivotLayoutConfigurator extends Component<Props$d, SpreadsheetChil
9383
9384
  unusedMeasureFields: ArrayConstructor;
9384
9385
  unusedDateTimeGranularities: ObjectConstructor;
9385
9386
  allGranularities: ArrayConstructor;
9387
+ getScrollableContainerEl: {
9388
+ type: FunctionConstructor;
9389
+ optional: boolean;
9390
+ };
9386
9391
  };
9387
9392
  private dimensionsRef;
9388
9393
  private dragAndDrop;
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 17.4.21
6
- * @date 2025-02-05T06:46:54.366Z
7
- * @hash 0c55e18
5
+ * @version 17.4.22
6
+ * @date 2025-02-10T09:14:48.889Z
7
+ * @hash 667f2b1
8
8
  */
9
9
 
10
10
  import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
@@ -746,9 +746,16 @@ function deepEqualsArray(arr1, arr2) {
746
746
  }
747
747
  return true;
748
748
  }
749
- /** Check if the given array contains all the values of the other array. */
749
+ /**
750
+ * Check if the given array contains all the values of the other array.
751
+ * It makes the assumption that both array do not contain duplicates.
752
+ */
750
753
  function includesAll(arr, values) {
751
- return values.every((value) => arr.includes(value));
754
+ if (arr.length < values.length) {
755
+ return false;
756
+ }
757
+ const set = new Set(arr);
758
+ return values.every((value) => set.has(value));
752
759
  }
753
760
  /**
754
761
  * Return an object with all the keys in the object that have a falsy value removed.
@@ -33545,8 +33552,8 @@ function useDragAndDropListItems() {
33545
33552
  document.body.style.cursor = "move";
33546
33553
  state.draggedItemId = args.draggedItemId;
33547
33554
  const container = direction === "horizontal"
33548
- ? new HorizontalContainer(args.containerEl)
33549
- : new VerticalContainer(args.containerEl);
33555
+ ? new HorizontalContainer(args.scrollableContainerEl)
33556
+ : new VerticalContainer(args.scrollableContainerEl);
33550
33557
  dndHelper = new DOMDndHelper({
33551
33558
  ...args,
33552
33559
  container,
@@ -33557,8 +33564,8 @@ function useDragAndDropListItems() {
33557
33564
  const stopListening = startDnd(dndHelper.onMouseMove.bind(dndHelper), dndHelper.onMouseUp.bind(dndHelper));
33558
33565
  cleanupFns.push(stopListening);
33559
33566
  const onScroll = dndHelper.onScroll.bind(dndHelper);
33560
- args.containerEl.addEventListener("scroll", onScroll);
33561
- cleanupFns.push(() => args.containerEl.removeEventListener("scroll", onScroll));
33567
+ args.scrollableContainerEl.addEventListener("scroll", onScroll);
33568
+ cleanupFns.push(() => args.scrollableContainerEl.removeEventListener("scroll", onScroll));
33562
33569
  cleanupFns.push(dndHelper.destroy.bind(dndHelper));
33563
33570
  };
33564
33571
  onWillUnmount(() => {
@@ -34006,7 +34013,7 @@ class ConditionalFormatPreviewList extends Component {
34006
34013
  draggedItemId: cf.id,
34007
34014
  initialMousePosition: event.clientY,
34008
34015
  items: items,
34009
- containerEl: this.cfListRef.el,
34016
+ scrollableContainerEl: this.cfListRef.el,
34010
34017
  onDragEnd: (cfId, finalIndex) => this.onDragEnd(cfId, finalIndex),
34011
34018
  });
34012
34019
  }
@@ -36018,6 +36025,7 @@ class PivotLayoutConfigurator extends Component {
36018
36025
  unusedMeasureFields: Array,
36019
36026
  unusedDateTimeGranularities: Object,
36020
36027
  allGranularities: Array,
36028
+ getScrollableContainerEl: { type: Function, optional: true },
36021
36029
  };
36022
36030
  dimensionsRef = useRef("pivot-dimensions");
36023
36031
  dragAndDrop = useDragAndDropListItems();
@@ -36046,7 +36054,7 @@ class PivotLayoutConfigurator extends Component {
36046
36054
  draggedItemId: dimension.nameWithGranularity,
36047
36055
  initialMousePosition: event.clientY,
36048
36056
  items: draggableItems,
36049
- containerEl: this.dimensionsRef.el,
36057
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36050
36058
  onDragEnd: (dimensionName, finalIndex) => {
36051
36059
  const originalIndex = draggableIds.findIndex((id) => id === dimensionName);
36052
36060
  if (originalIndex === finalIndex) {
@@ -36086,7 +36094,7 @@ class PivotLayoutConfigurator extends Component {
36086
36094
  draggedItemId: measure.name,
36087
36095
  initialMousePosition: event.clientY,
36088
36096
  items: draggableItems,
36089
- containerEl: this.dimensionsRef.el,
36097
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36090
36098
  onDragEnd: (measureName, finalIndex) => {
36091
36099
  const originalIndex = draggableIds.findIndex((id) => id === measureName);
36092
36100
  if (originalIndex === finalIndex) {
@@ -37525,6 +37533,7 @@ class PivotSpreadsheetSidePanel extends Component {
37525
37533
  };
37526
37534
  store;
37527
37535
  state;
37536
+ pivotSidePanelRef = useRef("pivotSidePanel");
37528
37537
  setup() {
37529
37538
  this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId);
37530
37539
  this.state = useState({
@@ -37553,6 +37562,9 @@ class PivotSpreadsheetSidePanel extends Component {
37553
37562
  get definition() {
37554
37563
  return this.store.definition;
37555
37564
  }
37565
+ getScrollableContainerEl() {
37566
+ return this.pivotSidePanelRef.el;
37567
+ }
37556
37568
  onSelectionChanged(ranges) {
37557
37569
  this.state.rangeHasChanged = true;
37558
37570
  this.state.range = ranges[0];
@@ -62946,7 +62958,7 @@ class BottomBar extends Component {
62946
62958
  draggedItemId: sheetId,
62947
62959
  initialMousePosition: event.clientX,
62948
62960
  items: sheets,
62949
- containerEl: this.sheetListRef.el,
62961
+ scrollableContainerEl: this.sheetListRef.el,
62950
62962
  onDragEnd: (sheetId, finalIndex) => this.onDragEnd(sheetId, finalIndex),
62951
62963
  });
62952
62964
  }
@@ -68865,6 +68877,6 @@ const constants = {
68865
68877
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
68866
68878
 
68867
68879
 
68868
- __info__.version = "17.4.21";
68869
- __info__.date = "2025-02-05T06:46:54.366Z";
68870
- __info__.hash = "0c55e18";
68880
+ __info__.version = "17.4.22";
68881
+ __info__.date = "2025-02-10T09:14:48.889Z";
68882
+ __info__.hash = "667f2b1";
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 17.4.21
6
- * @date 2025-02-05T06:46:54.366Z
7
- * @hash 0c55e18
5
+ * @version 17.4.22
6
+ * @date 2025-02-10T09:14:48.889Z
7
+ * @hash 667f2b1
8
8
  */
9
9
 
10
10
  (function (exports, owl) {
@@ -747,9 +747,16 @@
747
747
  }
748
748
  return true;
749
749
  }
750
- /** Check if the given array contains all the values of the other array. */
750
+ /**
751
+ * Check if the given array contains all the values of the other array.
752
+ * It makes the assumption that both array do not contain duplicates.
753
+ */
751
754
  function includesAll(arr, values) {
752
- return values.every((value) => arr.includes(value));
755
+ if (arr.length < values.length) {
756
+ return false;
757
+ }
758
+ const set = new Set(arr);
759
+ return values.every((value) => set.has(value));
753
760
  }
754
761
  /**
755
762
  * Return an object with all the keys in the object that have a falsy value removed.
@@ -33546,8 +33553,8 @@ stores.inject(MyMetaStore, storeInstance);
33546
33553
  document.body.style.cursor = "move";
33547
33554
  state.draggedItemId = args.draggedItemId;
33548
33555
  const container = direction === "horizontal"
33549
- ? new HorizontalContainer(args.containerEl)
33550
- : new VerticalContainer(args.containerEl);
33556
+ ? new HorizontalContainer(args.scrollableContainerEl)
33557
+ : new VerticalContainer(args.scrollableContainerEl);
33551
33558
  dndHelper = new DOMDndHelper({
33552
33559
  ...args,
33553
33560
  container,
@@ -33558,8 +33565,8 @@ stores.inject(MyMetaStore, storeInstance);
33558
33565
  const stopListening = startDnd(dndHelper.onMouseMove.bind(dndHelper), dndHelper.onMouseUp.bind(dndHelper));
33559
33566
  cleanupFns.push(stopListening);
33560
33567
  const onScroll = dndHelper.onScroll.bind(dndHelper);
33561
- args.containerEl.addEventListener("scroll", onScroll);
33562
- cleanupFns.push(() => args.containerEl.removeEventListener("scroll", onScroll));
33568
+ args.scrollableContainerEl.addEventListener("scroll", onScroll);
33569
+ cleanupFns.push(() => args.scrollableContainerEl.removeEventListener("scroll", onScroll));
33563
33570
  cleanupFns.push(dndHelper.destroy.bind(dndHelper));
33564
33571
  };
33565
33572
  owl.onWillUnmount(() => {
@@ -34007,7 +34014,7 @@ stores.inject(MyMetaStore, storeInstance);
34007
34014
  draggedItemId: cf.id,
34008
34015
  initialMousePosition: event.clientY,
34009
34016
  items: items,
34010
- containerEl: this.cfListRef.el,
34017
+ scrollableContainerEl: this.cfListRef.el,
34011
34018
  onDragEnd: (cfId, finalIndex) => this.onDragEnd(cfId, finalIndex),
34012
34019
  });
34013
34020
  }
@@ -36019,6 +36026,7 @@ stores.inject(MyMetaStore, storeInstance);
36019
36026
  unusedMeasureFields: Array,
36020
36027
  unusedDateTimeGranularities: Object,
36021
36028
  allGranularities: Array,
36029
+ getScrollableContainerEl: { type: Function, optional: true },
36022
36030
  };
36023
36031
  dimensionsRef = owl.useRef("pivot-dimensions");
36024
36032
  dragAndDrop = useDragAndDropListItems();
@@ -36047,7 +36055,7 @@ stores.inject(MyMetaStore, storeInstance);
36047
36055
  draggedItemId: dimension.nameWithGranularity,
36048
36056
  initialMousePosition: event.clientY,
36049
36057
  items: draggableItems,
36050
- containerEl: this.dimensionsRef.el,
36058
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36051
36059
  onDragEnd: (dimensionName, finalIndex) => {
36052
36060
  const originalIndex = draggableIds.findIndex((id) => id === dimensionName);
36053
36061
  if (originalIndex === finalIndex) {
@@ -36087,7 +36095,7 @@ stores.inject(MyMetaStore, storeInstance);
36087
36095
  draggedItemId: measure.name,
36088
36096
  initialMousePosition: event.clientY,
36089
36097
  items: draggableItems,
36090
- containerEl: this.dimensionsRef.el,
36098
+ scrollableContainerEl: this.props.getScrollableContainerEl?.() || this.dimensionsRef.el,
36091
36099
  onDragEnd: (measureName, finalIndex) => {
36092
36100
  const originalIndex = draggableIds.findIndex((id) => id === measureName);
36093
36101
  if (originalIndex === finalIndex) {
@@ -37526,6 +37534,7 @@ stores.inject(MyMetaStore, storeInstance);
37526
37534
  };
37527
37535
  store;
37528
37536
  state;
37537
+ pivotSidePanelRef = owl.useRef("pivotSidePanel");
37529
37538
  setup() {
37530
37539
  this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId);
37531
37540
  this.state = owl.useState({
@@ -37554,6 +37563,9 @@ stores.inject(MyMetaStore, storeInstance);
37554
37563
  get definition() {
37555
37564
  return this.store.definition;
37556
37565
  }
37566
+ getScrollableContainerEl() {
37567
+ return this.pivotSidePanelRef.el;
37568
+ }
37557
37569
  onSelectionChanged(ranges) {
37558
37570
  this.state.rangeHasChanged = true;
37559
37571
  this.state.range = ranges[0];
@@ -62947,7 +62959,7 @@ stores.inject(MyMetaStore, storeInstance);
62947
62959
  draggedItemId: sheetId,
62948
62960
  initialMousePosition: event.clientX,
62949
62961
  items: sheets,
62950
- containerEl: this.sheetListRef.el,
62962
+ scrollableContainerEl: this.sheetListRef.el,
62951
62963
  onDragEnd: (sheetId, finalIndex) => this.onDragEnd(sheetId, finalIndex),
62952
62964
  });
62953
62965
  }
@@ -68909,9 +68921,9 @@ stores.inject(MyMetaStore, storeInstance);
68909
68921
  exports.tokenize = tokenize;
68910
68922
 
68911
68923
 
68912
- __info__.version = "17.4.21";
68913
- __info__.date = "2025-02-05T06:46:54.366Z";
68914
- __info__.hash = "0c55e18";
68924
+ __info__.version = "17.4.22";
68925
+ __info__.date = "2025-02-10T09:14:48.889Z";
68926
+ __info__.hash = "667f2b1";
68915
68927
 
68916
68928
 
68917
68929
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);