@odoo/o-spreadsheet 16.3.0-alpha.1 → 16.3.0-alpha.3

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.
@@ -294,10 +294,10 @@ declare function toZone(xc: string): Zone;
294
294
  */
295
295
  declare function findCellInNewZone(oldZone: Zone, currentZone: Zone): Position$1;
296
296
  declare function positionToZone(position: Position$1): {
297
- left: number;
298
- right: number;
299
- top: number;
300
- bottom: number;
297
+ left: HeaderIndex;
298
+ right: HeaderIndex;
299
+ top: HeaderIndex;
300
+ bottom: HeaderIndex;
301
301
  };
302
302
 
303
303
  interface SelectionEventPayload {
@@ -406,9 +406,9 @@ interface SectionRule {
406
406
  readonly upperInflectionPoint: SectionThreshold;
407
407
  }
408
408
  interface ColorSet {
409
- readonly lowerColor: string;
410
- readonly middleColor: string;
411
- readonly upperColor: string;
409
+ readonly lowerColor: Color;
410
+ readonly middleColor: Color;
411
+ readonly upperColor: Color;
412
412
  }
413
413
  interface SectionThreshold {
414
414
  readonly type: "number" | "percentage";
@@ -435,13 +435,13 @@ interface GaugeChartOptions extends ChartOptions {
435
435
  radiusPercentage: number;
436
436
  widthPercentage: number;
437
437
  lengthPercentage: number;
438
- color: string;
438
+ color: Color;
439
439
  };
440
440
  valueLabel?: {
441
441
  formatter: (() => string) | null;
442
442
  display: boolean;
443
- color: string;
444
- backgroundColor: string;
443
+ color: Color;
444
+ backgroundColor: Color;
445
445
  borderRadius: number;
446
446
  fontSize: number;
447
447
  padding: {
@@ -986,6 +986,7 @@ declare class Model extends EventBus<any> implements CommandDispatcher {
986
986
  uuidGenerator: UuidGenerator;
987
987
  constructor(data?: any, config?: Partial<ModelConfig>, stateUpdateMessages?: StateUpdateMessage[], uuidGenerator?: UuidGenerator, verboseImport?: boolean);
988
988
  get handlers(): CommandHandler<Command>[];
989
+ get coreHandlers(): CommandHandler<Command>[];
989
990
  get allUIPlugins(): UIPlugin[];
990
991
  joinSession(): void;
991
992
  leaveSession(): void;
@@ -1007,7 +1008,14 @@ declare class Model extends EventBus<any> implements CommandDispatcher {
1007
1008
  * Check if the given command is allowed by all the plugins and the history.
1008
1009
  */
1009
1010
  private checkDispatchAllowed;
1011
+ private checkDispatchAllowedCoreCommand;
1012
+ private checkDispatchAllowedLocalCommand;
1010
1013
  private finalize;
1014
+ /**
1015
+ * Check if a command can be dispatched, and returns a DispatchResult object with the possible
1016
+ * reasons the dispatch failed.
1017
+ */
1018
+ canDispatch: CommandDispatcher["canDispatch"];
1011
1019
  /**
1012
1020
  * The dispatch method is the only entry point to manipulate data in the model.
1013
1021
  * This is through this method that commands are dispatched most of the time
@@ -1260,7 +1268,7 @@ interface ComposerSelection {
1260
1268
  end: number;
1261
1269
  }
1262
1270
  declare class EditionPlugin extends UIPlugin {
1263
- static getters: readonly ["getEditionMode", "isSelectingForComposer", "showSelectionIndicator", "getCurrentContent", "getEditionSheet", "getComposerSelection", "getCurrentTokens", "getTokenAtCursor", "getComposerHighlights", "getCurrentEditedCell"];
1271
+ static getters: readonly ["getEditionMode", "isSelectingForComposer", "showSelectionIndicator", "getCurrentContent", "getComposerSelection", "getCurrentTokens", "getTokenAtCursor", "getComposerHighlights", "getCurrentEditedCell"];
1264
1272
  private col;
1265
1273
  private row;
1266
1274
  private mode;
@@ -1274,12 +1282,11 @@ declare class EditionPlugin extends UIPlugin {
1274
1282
  private previousRef;
1275
1283
  private previousRange;
1276
1284
  private colorIndexByRange;
1277
- allowDispatch(cmd: Command): CommandResult;
1285
+ allowDispatch(cmd: LocalCommand): CommandResult;
1278
1286
  private handleEvent;
1279
1287
  handle(cmd: Command): void;
1280
1288
  getEditionMode(): EditionMode;
1281
1289
  getCurrentContent(): string;
1282
- getEditionSheet(): string;
1283
1290
  getComposerSelection(): ComposerSelection;
1284
1291
  getCurrentEditedCell(): CellPosition;
1285
1292
  isSelectingForComposer(): boolean;
@@ -1622,8 +1629,8 @@ interface CreateChartCommand extends SheetDependentCommand {
1622
1629
  type: "CREATE_CHART";
1623
1630
  id: UID;
1624
1631
  position?: {
1625
- x: number;
1626
- y: number;
1632
+ x: Pixel;
1633
+ y: Pixel;
1627
1634
  };
1628
1635
  size?: FigureSize;
1629
1636
  definition: ChartDefinition;
@@ -1637,8 +1644,8 @@ interface CreateImageOverCommand extends SheetDependentCommand {
1637
1644
  type: "CREATE_IMAGE";
1638
1645
  figureId: UID;
1639
1646
  position: {
1640
- x: number;
1641
- y: number;
1647
+ x: Pixel;
1648
+ y: Pixel;
1642
1649
  };
1643
1650
  size: FigureSize;
1644
1651
  definition: Image;
@@ -1742,7 +1749,7 @@ interface StopSelectionCommand {
1742
1749
  */
1743
1750
  interface SetColorCommand {
1744
1751
  type: "SET_HIGHLIGHT_COLOR";
1745
- color: string;
1752
+ color: Color;
1746
1753
  }
1747
1754
  interface EvaluateCellsCommand {
1748
1755
  type: "EVALUATE_CELLS";
@@ -2150,6 +2157,9 @@ interface CommandDispatcher {
2150
2157
  dispatch<T extends CommandTypes, C extends Extract<Command, {
2151
2158
  type: T;
2152
2159
  }>>(type: T, r: Omit<C, "type">): DispatchResult;
2160
+ canDispatch<T extends CommandTypes, C extends Extract<Command, {
2161
+ type: T;
2162
+ }>>(type: T, r: Omit<C, "type">): DispatchResult;
2153
2163
  }
2154
2164
  interface CoreCommandDispatcher {
2155
2165
  dispatch<T extends CoreCommandTypes, C extends Extract<CoreCommand, {
@@ -2158,6 +2168,9 @@ interface CoreCommandDispatcher {
2158
2168
  dispatch<T extends CoreCommandTypes, C extends Extract<CoreCommand, {
2159
2169
  type: T;
2160
2170
  }>>(type: T, r: Omit<C, "type">): DispatchResult;
2171
+ canDispatch<T extends CoreCommandTypes, C extends Extract<CoreCommand, {
2172
+ type: T;
2173
+ }>>(type: T, r: Omit<C, "type">): DispatchResult;
2161
2174
  }
2162
2175
  declare type CommandTypes = Command["type"];
2163
2176
  declare type CoreCommandTypes = CoreCommand["type"];
@@ -2167,7 +2180,7 @@ declare type CoreCommandTypes = CoreCommand["type"];
2167
2180
  * Intellisense from resolving it.
2168
2181
  * See https://github.com/microsoft/TypeScript/issues/31940#issuecomment-841712377
2169
2182
  */
2170
- declare type Alias = {};
2183
+ declare type Alias = {} & {};
2171
2184
  declare type HeaderIndex = number & Alias;
2172
2185
  declare type Pixel = number & Alias;
2173
2186
  declare type UID = string & Alias;
@@ -2231,8 +2244,8 @@ interface Style {
2231
2244
  align?: Align;
2232
2245
  wrapping?: Wrapping;
2233
2246
  verticalAlign?: VerticalAlign;
2234
- fillColor?: string;
2235
- textColor?: string;
2247
+ fillColor?: Color;
2248
+ textColor?: Color;
2236
2249
  fontSize?: number;
2237
2250
  }
2238
2251
  interface UpdateCellData {
@@ -2304,6 +2317,10 @@ interface Position$1 {
2304
2317
  col: HeaderIndex;
2305
2318
  row: HeaderIndex;
2306
2319
  }
2320
+ interface PixelPosition {
2321
+ x: Pixel;
2322
+ y: Pixel;
2323
+ }
2307
2324
  interface Merge extends Zone {
2308
2325
  id: number;
2309
2326
  topLeft: Position$1;
@@ -2311,7 +2328,7 @@ interface Merge extends Zone {
2311
2328
  interface Highlight$1 {
2312
2329
  zone: Zone;
2313
2330
  sheetId: UID;
2314
- color: string | null;
2331
+ color: Color | null;
2315
2332
  }
2316
2333
  interface PaneDivision {
2317
2334
  /** Represents the number of frozen columns */
@@ -2868,6 +2885,7 @@ declare class RangeAdapter implements CommandHandler<CoreCommand> {
2868
2885
  * Get a Xc string that represent a part of a range
2869
2886
  */
2870
2887
  private getRangePartString;
2888
+ private getInvalidRange;
2871
2889
  }
2872
2890
 
2873
2891
  interface CorePluginConfig {
@@ -3272,6 +3290,9 @@ declare class FigurePlugin extends CorePlugin<FigureState> implements FigureStat
3272
3290
  };
3273
3291
  allowDispatch(cmd: CoreCommand): CommandResult;
3274
3292
  handle(cmd: CoreCommand): void;
3293
+ private onRowColDelete;
3294
+ private onRowDeletion;
3295
+ private onColDeletion;
3275
3296
  private updateFigure;
3276
3297
  private addFigure;
3277
3298
  private deleteSheet;
@@ -3300,7 +3321,7 @@ declare class Filter {
3300
3321
  readonly id: UID;
3301
3322
  readonly zoneWithHeaders: Zone;
3302
3323
  constructor(id: UID, zone: Zone);
3303
- get col(): number;
3324
+ get col(): HeaderIndex;
3304
3325
  /** Filtered zone, ie. zone of the filter without the header */
3305
3326
  get filteredZone(): Zone | undefined;
3306
3327
  }
@@ -3771,7 +3792,7 @@ declare class FilterEvaluationPlugin extends UIPlugin {
3771
3792
  private filterValues;
3772
3793
  hiddenRows: Set<number>;
3773
3794
  isEvaluationDirty: boolean;
3774
- allowDispatch(cmd: Command): CommandResult.Success | CommandResult.FilterNotFound;
3795
+ allowDispatch(cmd: LocalCommand): CommandResult;
3775
3796
  handle(cmd: Command): void;
3776
3797
  finalize(): void;
3777
3798
  isRowFiltered(sheetId: UID, row: number): boolean;
@@ -3806,8 +3827,8 @@ declare class InternalViewport {
3806
3827
  offsetScrollbarY: Pixel;
3807
3828
  canScrollVertically: boolean;
3808
3829
  canScrollHorizontally: boolean;
3809
- width: Pixel;
3810
- height: Pixel;
3830
+ viewportWidth: Pixel;
3831
+ viewportHeight: Pixel;
3811
3832
  offsetCorrectionX: Pixel;
3812
3833
  offsetCorrectionY: Pixel;
3813
3834
  constructor(getters: Getters, sheetId: UID, boundaries: Zone, sizeInGrid: {
@@ -3820,6 +3841,10 @@ declare class InternalViewport {
3820
3841
  x: Pixel;
3821
3842
  y: Pixel;
3822
3843
  });
3844
+ /** Returns the maximum size (in Pixels) of the viewport relative to its allocated client size
3845
+ * When the viewport grid size is smaller than its client width (resp. height), it will return
3846
+ * the client width (resp. height).
3847
+ */
3823
3848
  getMaxSize(): DOMDimension;
3824
3849
  /**
3825
3850
  * Return the index of a column given an offset x, based on the pane left
@@ -3918,7 +3943,7 @@ declare type SheetViewports = {
3918
3943
  *
3919
3944
  */
3920
3945
  declare class SheetViewPlugin extends UIPlugin {
3921
- static getters: readonly ["getColIndex", "getRowIndex", "getActiveMainViewport", "getSheetViewDimension", "getSheetViewDimensionWithHeaders", "getMainViewportRect", "isVisibleInViewport", "getEdgeScrollCol", "getEdgeScrollRow", "getVisibleFigures", "getVisibleRect", "getColRowOffsetInViewport", "getMainViewportCoordinates", "getActiveSheetScrollInfo", "getActiveSheetDOMScrollInfo", "getSheetViewVisibleCols", "getSheetViewVisibleRows", "getFrozenSheetViewRatio"];
3946
+ static getters: readonly ["getColIndex", "getRowIndex", "getActiveMainViewport", "getSheetViewDimension", "getSheetViewDimensionWithHeaders", "getMainViewportRect", "isVisibleInViewport", "getEdgeScrollCol", "getEdgeScrollRow", "getVisibleFigures", "getVisibleRect", "getColRowOffsetInViewport", "getMainViewportCoordinates", "getActiveSheetScrollInfo", "getActiveSheetDOMScrollInfo", "getSheetViewVisibleCols", "getSheetViewVisibleRows", "getFrozenSheetViewRatio", "isPositionVisible"];
3922
3947
  readonly viewports: Record<UID, SheetViewports | undefined>;
3923
3948
  /**
3924
3949
  * The viewport dimensions are usually set by one of the components
@@ -3931,7 +3956,7 @@ declare class SheetViewPlugin extends UIPlugin {
3931
3956
  private gridOffsetX;
3932
3957
  private gridOffsetY;
3933
3958
  private sheetsWithDirtyViewports;
3934
- allowDispatch(cmd: Command): CommandResult | CommandResult[];
3959
+ allowDispatch(cmd: LocalCommand): CommandResult | CommandResult[];
3935
3960
  private handleEvent;
3936
3961
  handle(cmd: Command): void;
3937
3962
  finalize(): void;
@@ -3965,8 +3990,7 @@ declare class SheetViewPlugin extends UIPlugin {
3965
3990
  getSheetViewVisibleCols(): HeaderIndex[];
3966
3991
  getSheetViewVisibleRows(): HeaderIndex[];
3967
3992
  /**
3968
- * Return the main viewport maximum size. That is the zone dimension
3969
- * with some bottom and right padding.
3993
+ * Return the main viewport maximum size relative to the client size.
3970
3994
  */
3971
3995
  getMainViewportRect(): Rect;
3972
3996
  private getMaximumSheetOffset;
@@ -4018,6 +4042,7 @@ declare class SheetViewPlugin extends UIPlugin {
4018
4042
  */
4019
4043
  private shiftVertically;
4020
4044
  getVisibleFigures(): Figure[];
4045
+ isPositionVisible(position: PixelPosition): boolean;
4021
4046
  getFrozenSheetViewRatio(sheetId: UID): {
4022
4047
  xRatio: number;
4023
4048
  yRatio: number;
@@ -4036,7 +4061,7 @@ declare class AutofillPlugin extends UIPlugin {
4036
4061
  private lastCellSelected;
4037
4062
  private direction;
4038
4063
  private tooltip;
4039
- allowDispatch(cmd: Command): CommandResult;
4064
+ allowDispatch(cmd: LocalCommand): CommandResult;
4040
4065
  handle(cmd: Command): void;
4041
4066
  getAutofillTooltip(): Tooltip | undefined;
4042
4067
  /**
@@ -4181,7 +4206,7 @@ declare class AutomaticSumPlugin extends UIPlugin {
4181
4206
  declare class CellPopoverPlugin extends UIPlugin {
4182
4207
  static getters: readonly ["getCellPopover", "getPersistentPopoverTypeAtPosition", "hasOpenedPopover"];
4183
4208
  private persistentPopover?;
4184
- allowDispatch(cmd: Command): CommandResult.Success | CommandResult.InvalidCellPopover;
4209
+ allowDispatch(cmd: LocalCommand): CommandResult;
4185
4210
  handle(cmd: Command): void;
4186
4211
  getCellPopover({ col, row }: Partial<Position$1>): ClosedCellPopover | PositionedCellPopover;
4187
4212
  hasOpenedPopover(): boolean;
@@ -4260,7 +4285,7 @@ declare class RendererPlugin extends UIPlugin {
4260
4285
  interface RangeInputValue {
4261
4286
  id: number;
4262
4287
  xc: string;
4263
- color: string;
4288
+ color: Color;
4264
4289
  }
4265
4290
  /**
4266
4291
  * Selection input Plugin
@@ -4278,7 +4303,7 @@ declare class SelectionInputPlugin extends UIPlugin implements StreamCallbacks<S
4278
4303
  private activeSheet;
4279
4304
  private willAddNewRange;
4280
4305
  constructor(config: UIPluginConfig, initialRanges: string[], inputHasSingleRange: boolean);
4281
- allowDispatch(cmd: Command): CommandResult;
4306
+ allowDispatch(cmd: LocalCommand): CommandResult;
4282
4307
  handleEvent(event: SelectionEvent): void;
4283
4308
  handle(cmd: Command): void;
4284
4309
  getSelectionInputValue(): string[];
@@ -4339,7 +4364,7 @@ declare class SelectionInputsManagerPlugin extends UIPlugin {
4339
4364
  private focusedInputId;
4340
4365
  get currentInput(): SelectionInputPlugin | null;
4341
4366
  constructor(config: UIPluginConfig);
4342
- allowDispatch(cmd: Command): CommandResult;
4367
+ allowDispatch(cmd: LocalCommand): CommandResult;
4343
4368
  handle(cmd: Command): void;
4344
4369
  /**
4345
4370
  * Return a list of all valid XCs.
@@ -4356,7 +4381,7 @@ declare class SelectionInputsManagerPlugin extends UIPlugin {
4356
4381
  }
4357
4382
 
4358
4383
  interface ClientToDisplay extends Required<Client> {
4359
- color: string;
4384
+ color: Color;
4360
4385
  }
4361
4386
  declare class SelectionMultiUserPlugin extends UIPlugin {
4362
4387
  static getters: readonly ["getClientsToDisplay"];
@@ -4375,7 +4400,7 @@ declare class SelectionMultiUserPlugin extends UIPlugin {
4375
4400
 
4376
4401
  declare class SortPlugin extends UIPlugin {
4377
4402
  static getters: readonly ["getContiguousZone"];
4378
- allowDispatch(cmd: Command): CommandResult | CommandResult[];
4403
+ allowDispatch(cmd: LocalCommand): CommandResult | CommandResult[];
4379
4404
  handle(cmd: Command): void;
4380
4405
  private checkMerge;
4381
4406
  private checkMergeSizes;
@@ -4457,7 +4482,7 @@ declare class UIOptionsPlugin extends UIPlugin {
4457
4482
  declare class SheetUIPlugin extends UIPlugin {
4458
4483
  static getters: readonly ["getCellWidth", "getTextWidth", "getCellText", "getCellMultiLineText", "getColDimensions", "getRowDimensions", "getColRowOffset"];
4459
4484
  private ctx;
4460
- allowDispatch(cmd: Command): CommandResult;
4485
+ allowDispatch(cmd: LocalCommand): CommandResult;
4461
4486
  handle(cmd: Command): void;
4462
4487
  getCellWidth(position: CellPosition): number;
4463
4488
  getTextWidth(text: string, style: Style): Pixel;
@@ -4499,7 +4524,7 @@ declare class ClipboardPlugin extends UIPlugin {
4499
4524
  private status;
4500
4525
  private state?;
4501
4526
  private _isPaintingFormat;
4502
- allowDispatch(cmd: Command): CommandResult;
4527
+ allowDispatch(cmd: LocalCommand): CommandResult;
4503
4528
  handle(cmd: Command): void;
4504
4529
  /**
4505
4530
  * Format the current clipboard to a string suitable for being pasted in other
@@ -4538,7 +4563,7 @@ declare class GridSelectionPlugin extends UIPlugin {
4538
4563
  private moveClient;
4539
4564
  activeSheet: Sheet;
4540
4565
  constructor(config: UIPluginConfig);
4541
- allowDispatch(cmd: Command): CommandResult;
4566
+ allowDispatch(cmd: LocalCommand): CommandResult;
4542
4567
  private handleEvent;
4543
4568
  handle(cmd: Command): void;
4544
4569
  getActiveSheet(): Readonly<Sheet>;
@@ -4867,7 +4892,7 @@ interface Props$B {
4867
4892
  interface SelectionRange extends Omit<RangeInputValue, "color"> {
4868
4893
  isFocused: boolean;
4869
4894
  isValidRange: boolean;
4870
- color?: string;
4895
+ color?: Color;
4871
4896
  }
4872
4897
  /**
4873
4898
  * This component can be used when the user needs to input some
@@ -4933,6 +4958,7 @@ declare class LineBarPieConfigPanel extends Component<Props$A, SpreadsheetChildE
4933
4958
  onLabelRangeChanged(ranges: string[]): void;
4934
4959
  onLabelRangeConfirmed(): void;
4935
4960
  onUpdateAggregated(ev: any): void;
4961
+ calculateHeaderPosition(): number | undefined;
4936
4962
  }
4937
4963
 
4938
4964
  declare class BarConfigPanel extends LineBarPieConfigPanel {
@@ -4988,7 +5014,7 @@ declare class ColorPicker extends Component<ColorPickerProps, SpreadsheetChildEn
4988
5014
  static components: {
4989
5015
  Popover: typeof Popover;
4990
5016
  };
4991
- COLORS: string[];
5017
+ COLORS: Color[];
4992
5018
  private state;
4993
5019
  get colorPickerStyle(): string;
4994
5020
  get popoverProps(): PopoverProps;
@@ -5002,6 +5028,7 @@ declare class ColorPicker extends Component<ColorPickerProps, SpreadsheetChildEn
5002
5028
  showMagnifier(_ev: MouseEvent): void;
5003
5029
  moveMagnifier(ev: MouseEvent): void;
5004
5030
  get magnifyingGlassStyle(): string;
5031
+ isSameColor(color1: Color, color2: Color): boolean;
5005
5032
  }
5006
5033
 
5007
5034
  interface Props$z {
@@ -5041,7 +5068,7 @@ declare class LineBarPieDesignPanel extends Component<Props$y, SpreadsheetChildE
5041
5068
  onClick(ev: MouseEvent): void;
5042
5069
  setup(): void;
5043
5070
  toggleColorPicker(): void;
5044
- updateBackgroundColor(color: string): void;
5071
+ updateBackgroundColor(color: Color): void;
5045
5072
  updateTitle(ev: any): void;
5046
5073
  updateSelect(attr: string, ev: any): void;
5047
5074
  }
@@ -5078,7 +5105,7 @@ declare class GaugeChartDesignPanel extends Component<Props$w, SpreadsheetChildE
5078
5105
  private state;
5079
5106
  setup(): void;
5080
5107
  get designErrorMessages(): string[];
5081
- updateBackgroundColor(color: string): void;
5108
+ updateBackgroundColor(color: Color): void;
5082
5109
  updateTitle(ev: any): void;
5083
5110
  isRangeMinInvalid(): boolean;
5084
5111
  isRangeMaxInvalid(): boolean;
@@ -5086,7 +5113,7 @@ declare class GaugeChartDesignPanel extends Component<Props$w, SpreadsheetChildE
5086
5113
  get isUpperInflectionPointInvalid(): boolean;
5087
5114
  updateInflectionPointValue(attr: string, ev: any): void;
5088
5115
  updateInflectionPointType(attr: string, ev: any): void;
5089
- updateSectionColor(target: string, color: string): void;
5116
+ updateSectionColor(target: string, color: Color): void;
5090
5117
  updateRangeMin(ev: any): void;
5091
5118
  updateRangeMax(ev: any): void;
5092
5119
  toggleMenu(menu: GaugeMenu): void;
@@ -5141,7 +5168,7 @@ declare class ScorecardChartDesignPanel extends Component<Props$u, SpreadsheetCh
5141
5168
  updateTitle(ev: any): void;
5142
5169
  updateBaselineDescr(ev: any): void;
5143
5170
  toggleColorPicker(colorPickerId: ColorPickerId): void;
5144
- setColor(color: string, colorPickerId: ColorPickerId): void;
5171
+ setColor(color: Color, colorPickerId: ColorPickerId): void;
5145
5172
  private closeMenus;
5146
5173
  }
5147
5174
 
@@ -5181,7 +5208,7 @@ interface MenuItemSpec {
5181
5208
  children?: MenuChildren;
5182
5209
  separator?: boolean;
5183
5210
  icon?: string;
5184
- textColor?: string;
5211
+ textColor?: Color;
5185
5212
  }
5186
5213
  interface MenuItem {
5187
5214
  id: string;
@@ -5278,8 +5305,8 @@ declare class ScorecardChart extends Component<Props$s, SpreadsheetChildEnv> {
5278
5305
  get baseline(): string;
5279
5306
  get baselineDescr(): string;
5280
5307
  get baselineArrowDirection(): BaselineArrowDirection;
5281
- get backgroundColor(): string;
5282
- get primaryFontColor(): string;
5308
+ get backgroundColor(): Color;
5309
+ get primaryFontColor(): Color;
5283
5310
  get secondaryFontColor(): "#525252" | "#C8C8C8";
5284
5311
  get figure(): Figure;
5285
5312
  get chartStyle(): string;
@@ -5300,6 +5327,7 @@ declare class ScorecardChart extends Component<Props$s, SpreadsheetChildEnv> {
5300
5327
  private getWidestElement;
5301
5328
  }
5302
5329
 
5330
+ declare type MenuItemOrSeparator = MenuItem | "separator";
5303
5331
  interface Props$r {
5304
5332
  position: DOMCoordinates;
5305
5333
  menuItems: MenuItem[];
@@ -5329,20 +5357,13 @@ declare class Menu extends Component<Props$r, SpreadsheetChildEnv> {
5329
5357
  private menuRef;
5330
5358
  private position;
5331
5359
  setup(): void;
5332
- get visibleMenuItems(): MenuItem[];
5360
+ get menuItemsAndSeparators(): MenuItemOrSeparator[];
5333
5361
  get subMenuPosition(): DOMCoordinates;
5334
- get menuHeight(): Pixel;
5335
5362
  get popoverProps(): PopoverProps;
5336
5363
  getColor(menu: MenuItem): string | undefined;
5337
5364
  activateMenu(menu: MenuItem): Promise<void>;
5338
5365
  private close;
5339
- /**
5340
- * Return the number of pixels between the top of the menu
5341
- * and the menu item at a given index.
5342
- */
5343
- private subMenuVerticalPosition;
5344
5366
  private onExternalClick;
5345
- private getMenuItemsHeight;
5346
5367
  getName(menu: MenuItem): string;
5347
5368
  isRoot(menu: MenuItem): boolean;
5348
5369
  isEnabled(menu: MenuItem): boolean;
@@ -5351,11 +5372,11 @@ declare class Menu extends Component<Props$r, SpreadsheetChildEnv> {
5351
5372
  * If the given menu is not disabled, open it's submenu at the
5352
5373
  * correct position according to available surrounding space.
5353
5374
  */
5354
- openSubMenu(menu: MenuItem, menuIndex: number): void;
5375
+ openSubMenu(menu: MenuItem, menuIndex: number, ev: MouseEvent): void;
5355
5376
  isParentMenu(subMenu: MenuState, menuItem: MenuItem): boolean;
5356
5377
  closeSubMenu(): void;
5357
- onClickMenu(menu: MenuItem, menuIndex: number): void;
5358
- onMouseOver(menu: MenuItem, position: Pixel): void;
5378
+ onClickMenu(menu: MenuItem, menuIndex: number, ev: MouseEvent): void;
5379
+ onMouseOver(menu: MenuItem, position: Pixel, ev: MouseEvent): void;
5359
5380
  }
5360
5381
 
5361
5382
  declare type ResizeAnchor = "top left" | "top" | "top right" | "right" | "bottom right" | "bottom" | "bottom left" | "left";
@@ -5403,6 +5424,7 @@ interface Props$p {
5403
5424
  declare class ChartFigure extends Component<Props$p, SpreadsheetChildEnv> {
5404
5425
  static template: string;
5405
5426
  static components: {};
5427
+ onDoubleClick(): void;
5406
5428
  get chartType(): ChartType;
5407
5429
  get chartComponent(): new (...args: any) => Component;
5408
5430
  }
@@ -5433,7 +5455,7 @@ declare class Autofill extends Component<Props$o, SpreadsheetChildEnv> {
5433
5455
  interface ClientTagProps {
5434
5456
  active: boolean;
5435
5457
  name: string;
5436
- color: string;
5458
+ color: Color;
5437
5459
  col: HeaderIndex;
5438
5460
  row: HeaderIndex;
5439
5461
  }
@@ -5608,15 +5630,50 @@ declare class BottomBar extends Component<Props$l, SpreadsheetChildEnv> {
5608
5630
  get sheetListMaxScroll(): number;
5609
5631
  }
5610
5632
 
5611
- declare type ContainerType = "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "dnd";
5612
- interface DndState {
5613
- figId: string | undefined;
5614
- x: Pixel;
5615
- y: Pixel;
5616
- width: Pixel;
5617
- height: Pixel;
5618
- }
5619
5633
  interface Props$k {
5634
+ position: DOMCoordinates;
5635
+ isActive: boolean;
5636
+ onClick: () => void;
5637
+ }
5638
+ declare class FilterIcon extends Component<Props$k, SpreadsheetEnv> {
5639
+ static style: string;
5640
+ static template: string;
5641
+ get style(): string;
5642
+ }
5643
+
5644
+ interface Props$j {
5645
+ gridPosition: DOMCoordinates;
5646
+ }
5647
+ declare class FilterIconsOverlay extends Component<Props$j, SpreadsheetChildEnv> {
5648
+ static style: string;
5649
+ static template: string;
5650
+ static components: {
5651
+ FilterIcon: typeof FilterIcon;
5652
+ };
5653
+ static defaultProps: {
5654
+ gridPosition: {
5655
+ x: number;
5656
+ y: number;
5657
+ };
5658
+ };
5659
+ getVisibleFilterHeaders(): Position$1[];
5660
+ getFilterHeaderPosition(position: Position$1): DOMCoordinates;
5661
+ isFilterActive(position: Position$1): boolean;
5662
+ toggleFilterMenu(position: Position$1): void;
5663
+ private isPositionVisible;
5664
+ }
5665
+
5666
+ declare type HFigureAxisType = "top" | "bottom" | "vCenter";
5667
+ declare type VFigureAxisType = "right" | "left" | "hCenter";
5668
+ interface SnapLine<T extends HFigureAxisType | VFigureAxisType> {
5669
+ matchedFigIds: UID[];
5670
+ snapOffset: number;
5671
+ snappedAxisType: T;
5672
+ position: Pixel;
5673
+ }
5674
+
5675
+ declare type ContainerType = "topLeft" | "topRight" | "bottomLeft" | "bottomRight" | "dnd";
5676
+ interface Props$i {
5620
5677
  onFigureDeleted: () => void;
5621
5678
  }
5622
5679
  interface Container {
@@ -5625,6 +5682,16 @@ interface Container {
5625
5682
  style: string;
5626
5683
  inverseViewportStyle: string;
5627
5684
  }
5685
+ interface Snap<T extends HFigureAxisType | VFigureAxisType> {
5686
+ line: SnapLine<T>;
5687
+ lineStyle: string;
5688
+ containerStyle: string;
5689
+ }
5690
+ interface DndState {
5691
+ draggedFigure?: Figure;
5692
+ horizontalSnap?: Snap<HFigureAxisType>;
5693
+ verticalSnap?: Snap<VFigureAxisType>;
5694
+ }
5628
5695
  /**
5629
5696
  * Each figure ⭐ is positioned inside a container `div` placed and sized
5630
5697
  * according to the split pane the figure is part of, or a separate container for the figure
@@ -5685,7 +5752,7 @@ interface Container {
5685
5752
  * that occurred during the drag & drop, and to position the figure on the correct pane.
5686
5753
  *
5687
5754
  */
5688
- declare class FiguresContainer extends Component<Props$k, SpreadsheetChildEnv> {
5755
+ declare class FiguresContainer extends Component<Props$i, SpreadsheetChildEnv> {
5689
5756
  static template: string;
5690
5757
  static components: {
5691
5758
  FigureComponent: typeof FigureComponent;
@@ -5695,17 +5762,29 @@ declare class FiguresContainer extends Component<Props$k, SpreadsheetChildEnv> {
5695
5762
  private getVisibleFigures;
5696
5763
  get containers(): Container[];
5697
5764
  private getContainerStyle;
5765
+ private rectToCss;
5766
+ private getContainerRect;
5698
5767
  private getInverseViewportPositionStyle;
5699
5768
  private getFigureContainer;
5700
5769
  startDraggingFigure(figure: Figure, ev: MouseEvent): void;
5770
+ /**
5771
+ * Initialize the resize of a figure with mouse movements
5772
+ *
5773
+ * @param dirX X direction of the resize. -1 : resize from the left border of the figure, 0 : no resize in X, 1 :
5774
+ * resize from the right border of the figure
5775
+ * @param dirY Y direction of the resize. -1 : resize from the top border of the figure, 0 : no resize in Y, 1 :
5776
+ * resize from the bottom border of the figure
5777
+ * @param ev Mouse Event
5778
+ */
5701
5779
  startResize(figure: Figure, dirX: ResizeDirection, dirY: ResizeDirection, ev: MouseEvent): void;
5780
+ private getOtherFigures;
5702
5781
  private getDndFigure;
5703
5782
  getFigureStyle(figure: Figure): string;
5704
- private internalToScreenCoordinates;
5705
- private screenCoordinatesToInternal;
5783
+ private getSnap;
5784
+ private getSnapLineStyle;
5706
5785
  }
5707
5786
 
5708
- interface Props$j {
5787
+ interface Props$h {
5709
5788
  onCellHovered: (position: Partial<Position$1>) => void;
5710
5789
  onCellDoubleClicked: (col: HeaderIndex, row: HeaderIndex) => void;
5711
5790
  onCellClicked: (col: HeaderIndex, row: HeaderIndex, modifiers: {
@@ -5718,7 +5797,7 @@ interface Props$j {
5718
5797
  gridOverlayDimensions: string;
5719
5798
  onFigureDeleted: () => void;
5720
5799
  }
5721
- declare class GridOverlay extends Component<Props$j, SpreadsheetChildEnv> {
5800
+ declare class GridOverlay extends Component<Props$h, SpreadsheetChildEnv> {
5722
5801
  static template: string;
5723
5802
  static components: {
5724
5803
  FiguresContainer: typeof FiguresContainer;
@@ -5740,13 +5819,13 @@ declare class GridOverlay extends Component<Props$j, SpreadsheetChildEnv> {
5740
5819
  private getCartesianCoordinates;
5741
5820
  }
5742
5821
 
5743
- interface Props$i {
5822
+ interface Props$g {
5744
5823
  hoveredCell: Partial<Position$1>;
5745
5824
  gridRect: Rect;
5746
5825
  onClosePopover: () => void;
5747
5826
  onMouseWheel: (ev: WheelEvent) => void;
5748
5827
  }
5749
- declare class GridPopover extends Component<Props$i, SpreadsheetChildEnv> {
5828
+ declare class GridPopover extends Component<Props$g, SpreadsheetChildEnv> {
5750
5829
  static template: string;
5751
5830
  static components: {
5752
5831
  Popover: typeof Popover;
@@ -5756,7 +5835,7 @@ declare class GridPopover extends Component<Props$i, SpreadsheetChildEnv> {
5756
5835
 
5757
5836
  declare type ScrollDirection = "horizontal" | "vertical";
5758
5837
 
5759
- interface Props$h {
5838
+ interface Props$f {
5760
5839
  width: Pixel;
5761
5840
  height: Pixel;
5762
5841
  direction: ScrollDirection;
@@ -5764,7 +5843,7 @@ interface Props$h {
5764
5843
  offset: Pixel;
5765
5844
  onScroll: (offset: Pixel) => void;
5766
5845
  }
5767
- declare class ScrollBar extends Component<Props$h> {
5846
+ declare class ScrollBar extends Component<Props$f> {
5768
5847
  static template: string;
5769
5848
  static defaultProps: {
5770
5849
  width: number;
@@ -5778,10 +5857,10 @@ declare class ScrollBar extends Component<Props$h> {
5778
5857
  onScroll(ev: any): void;
5779
5858
  }
5780
5859
 
5781
- interface Props$g {
5860
+ interface Props$e {
5782
5861
  leftOffset: number;
5783
5862
  }
5784
- declare class HorizontalScrollBar extends Component<Props$g, SpreadsheetChildEnv> {
5863
+ declare class HorizontalScrollBar extends Component<Props$e, SpreadsheetChildEnv> {
5785
5864
  static components: {
5786
5865
  ScrollBar: typeof ScrollBar;
5787
5866
  };
@@ -5789,8 +5868,8 @@ declare class HorizontalScrollBar extends Component<Props$g, SpreadsheetChildEnv
5789
5868
  static defaultProps: {
5790
5869
  leftOffset: number;
5791
5870
  };
5792
- get offset(): number;
5793
- get width(): number;
5871
+ get offset(): Pixel;
5872
+ get width(): Pixel;
5794
5873
  get isDisplayed(): boolean;
5795
5874
  get position(): {
5796
5875
  left: string;
@@ -5801,10 +5880,10 @@ declare class HorizontalScrollBar extends Component<Props$g, SpreadsheetChildEnv
5801
5880
  onScroll(offset: any): void;
5802
5881
  }
5803
5882
 
5804
- interface Props$f {
5883
+ interface Props$d {
5805
5884
  topOffset: number;
5806
5885
  }
5807
- declare class VerticalScrollBar extends Component<Props$f, SpreadsheetChildEnv> {
5886
+ declare class VerticalScrollBar extends Component<Props$d, SpreadsheetChildEnv> {
5808
5887
  static components: {
5809
5888
  ScrollBar: typeof ScrollBar;
5810
5889
  };
@@ -5812,8 +5891,8 @@ declare class VerticalScrollBar extends Component<Props$f, SpreadsheetChildEnv>
5812
5891
  static defaultProps: {
5813
5892
  topOffset: number;
5814
5893
  };
5815
- get offset(): number;
5816
- get height(): number;
5894
+ get offset(): Pixel;
5895
+ get height(): Pixel;
5817
5896
  get isDisplayed(): boolean;
5818
5897
  get position(): {
5819
5898
  top: string;
@@ -5824,39 +5903,6 @@ declare class VerticalScrollBar extends Component<Props$f, SpreadsheetChildEnv>
5824
5903
  onScroll(offset: any): void;
5825
5904
  }
5826
5905
 
5827
- interface Props$e {
5828
- position: DOMCoordinates;
5829
- isActive: boolean;
5830
- onClick: () => void;
5831
- }
5832
- declare class FilterIcon extends Component<Props$e, SpreadsheetEnv> {
5833
- static style: string;
5834
- static template: string;
5835
- get style(): string;
5836
- }
5837
-
5838
- interface Props$d {
5839
- gridPosition: DOMCoordinates;
5840
- }
5841
- declare class FilterIconsOverlay extends Component<Props$d, SpreadsheetChildEnv> {
5842
- static style: string;
5843
- static template: string;
5844
- static components: {
5845
- FilterIcon: typeof FilterIcon;
5846
- };
5847
- static defaultProps: {
5848
- gridPosition: {
5849
- x: number;
5850
- y: number;
5851
- };
5852
- };
5853
- getVisibleFilterHeaders(): Position$1[];
5854
- getFilterHeaderPosition(position: Position$1): DOMCoordinates;
5855
- isFilterActive(position: Position$1): boolean;
5856
- toggleFilterMenu(position: Position$1): void;
5857
- private isPositionVisible;
5858
- }
5859
-
5860
5906
  interface Props$c {
5861
5907
  }
5862
5908
  interface ClickableCell {
@@ -5981,7 +6027,7 @@ declare class FunctionDescriptionProvider extends Component<Props$9> {
5981
6027
 
5982
6028
  declare type HtmlContent = {
5983
6029
  value: string;
5984
- color?: string;
6030
+ color?: Color;
5985
6031
  class?: string;
5986
6032
  };
5987
6033
  interface AutocompleteValue {
@@ -6158,8 +6204,8 @@ declare class TopBar extends Component<Props$6, SpreadsheetChildEnv> {
6158
6204
  undoTool: boolean;
6159
6205
  redoTool: boolean;
6160
6206
  paintFormatTool: boolean;
6161
- fillColor: string;
6162
- textColor: string;
6207
+ fillColor: Color;
6208
+ textColor: Color;
6163
6209
  menus: MenuItem[];
6164
6210
  setup(): void;
6165
6211
  get topbarComponents(): TopbarComponent[];
@@ -6178,7 +6224,7 @@ declare class TopBar extends Component<Props$6, SpreadsheetChildEnv> {
6178
6224
  updateCellState(): void;
6179
6225
  getMenuName(menu: MenuItem): string;
6180
6226
  toggleMerge(): void;
6181
- setColor(target: string, color: string): void;
6227
+ setColor(target: string, color: Color): void;
6182
6228
  setBorder(command: BorderCommand): void;
6183
6229
  setFormat(format: Format, custom: boolean): void;
6184
6230
  openCustomFormatSidePanel(custom: string): void;
@@ -6401,7 +6447,7 @@ declare class Border extends Component<Props$4, SpreadsheetChildEnv> {
6401
6447
  declare type Orientation = "nw" | "ne" | "sw" | "se";
6402
6448
  interface Props$3 {
6403
6449
  zone: Zone;
6404
- color: string;
6450
+ color: Color;
6405
6451
  orientation: Orientation;
6406
6452
  isResizing: boolean;
6407
6453
  onResizeHighlight: (isLeft: boolean, isRight: boolean) => void;
@@ -6416,7 +6462,7 @@ declare class Corner extends Component<Props$3, SpreadsheetChildEnv> {
6416
6462
 
6417
6463
  interface Props$2 {
6418
6464
  zone: Zone;
6419
- color: string;
6465
+ color: Color;
6420
6466
  }
6421
6467
  interface HighlightState {
6422
6468
  shiftingMode: "isMoving" | "isResizing" | "none";