@odoo/o-spreadsheet 19.4.0-alpha.5 → 19.4.0-alpha.7

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.
Files changed (33) hide show
  1. package/dist/o_spreadsheet.cjs +2031 -1466
  2. package/dist/o_spreadsheet.css +8 -3
  3. package/dist/o_spreadsheet.esm.js +2031 -1466
  4. package/dist/o_spreadsheet.iife.js +2033 -1468
  5. package/dist/o_spreadsheet.min.iife.js +276 -277
  6. package/dist/o_spreadsheet.xml +9 -5
  7. package/dist/types/clipboard_handlers/abstract_figure_clipboard_handler.d.ts +2 -0
  8. package/dist/types/clipboard_handlers/carousel_clipboard.d.ts +7 -2
  9. package/dist/types/clipboard_handlers/chart_clipboard.d.ts +6 -1
  10. package/dist/types/clipboard_handlers/image_clipboard.d.ts +6 -1
  11. package/dist/types/components/figures/figure/figure.d.ts +1 -1
  12. package/dist/types/components/figures/figure_container/figure_container.d.ts +6 -1
  13. package/dist/types/components/helpers/figure_drag_helper.d.ts +2 -2
  14. package/dist/types/components/helpers/figure_snap_helper.d.ts +2 -2
  15. package/dist/types/components/menu/menu.d.ts +5 -0
  16. package/dist/types/components/side_panel/chart/chart_type_picker/chart_type_picker.d.ts +1 -0
  17. package/dist/types/formulas/code_builder.d.ts +19 -5
  18. package/dist/types/helpers/figures/chart.d.ts +1 -2
  19. package/dist/types/helpers/figures/charts/runtime/chart_highlight.d.ts +9 -0
  20. package/dist/types/helpers/figures/charts/runtime/chartjs_legend.d.ts +12 -10
  21. package/dist/types/helpers/figures/charts/runtime/chartjs_scales.d.ts +11 -12
  22. package/dist/types/helpers/figures/figure/figure.d.ts +10 -1
  23. package/dist/types/helpers/internal_viewport.d.ts +5 -5
  24. package/dist/types/helpers/pivot/pivot_composer_helpers.d.ts +4 -0
  25. package/dist/types/index.d.ts +1 -0
  26. package/dist/types/plugins/ui_core_views/pivot_ui.d.ts +17 -8
  27. package/dist/types/plugins/ui_feature/figure.d.ts +6 -0
  28. package/dist/types/plugins/ui_stateful/selection.d.ts +3 -3
  29. package/dist/types/plugins/ui_stateful/sheetview.d.ts +1 -1
  30. package/dist/types/types/clipboard.d.ts +3 -3
  31. package/dist/types/types/commands.d.ts +34 -12
  32. package/dist/types/types/getters.d.ts +2 -1
  33. package/package.json +17 -17
@@ -1,9 +1,9 @@
1
1
  <!--
2
2
  This file is generated by o-spreadsheet build tools. Do not edit it.
3
3
  @see https://github.com/odoo/o-spreadsheet
4
- @version 19.4.0-alpha.5
5
- @date 2026-05-12T12:20:58.318Z
6
- @hash 02a5f91
4
+ @version 19.4.0-alpha.7
5
+ @date 2026-05-20T14:40:28.259Z
6
+ @hash 7ee566f
7
7
  -->
8
8
  <odoo>
9
9
  <t t-name="o-spreadsheet-ValidationMessages">
@@ -5357,6 +5357,7 @@
5357
5357
  width="props.width"
5358
5358
  autoSelectFirstItem="subMenu.autoSelectFirstItem"
5359
5359
  onKeyboardNavigation.bind="this.onKeydown"
5360
+ disableKeyboardNavigation="this.props.disableKeyboardNavigation"
5360
5361
  />
5361
5362
  </Popover>
5362
5363
  </t>
@@ -7423,6 +7424,9 @@
7423
7424
  <div
7424
7425
  class="o-figure-viewport-inverse w-0 h-0 overflow-visible position-absolute"
7425
7426
  t-att-style="container.inverseViewportStyle">
7427
+ <t t-if="container.type == 'dnd' and dnd.selectedRect">
7428
+ <div t-att-style="selectedRectStyle" class="position-absolute o-selected-border"/>
7429
+ </t>
7426
7430
  <t t-foreach="container.figures" t-as="figureUI" t-key="figureUI.id">
7427
7431
  <FigureComponent
7428
7432
  figureUI="figureUI"
@@ -8070,7 +8074,7 @@
8070
8074
  t-on-pointermove="() => this.props.onValueHovered(proposal_index)">
8071
8075
  <div class="d-flex align-items-center gap-2">
8072
8076
  <div t-if="proposal.icon" t-call="{{proposal.icon}}"/>
8073
- <div class="o-autocomplete-value text-truncate">
8077
+ <div class="o-autocomplete-value text-truncate flex-grow-1">
8074
8078
  <t t-set="htmlContent" t-value="proposal.htmlContent || [{ value: proposal.text}]"/>
8075
8079
  <span
8076
8080
  t-foreach="htmlContent"
@@ -8159,7 +8163,7 @@
8159
8163
  class="o-color-picker-line-item os-theme-dependant"
8160
8164
  t-att-data-color="color"
8161
8165
  t-attf-style="background-color:{{color}};"
8162
- t-on-click="() => this.onColorClick(color)">
8166
+ t-on-click.stop="() => this.onColorClick(color)">
8163
8167
  <div
8164
8168
  t-if="isSameColor(props.currentColor, color)"
8165
8169
  align="center"
@@ -1,5 +1,7 @@
1
+ import { Rect } from "..";
1
2
  import { ClipboardFigureData } from "../types/clipboard";
2
3
  import { ClipboardHandler } from "./abstract_clipboard_handler";
3
4
  export declare class AbstractFigureClipboardHandler<T> extends ClipboardHandler<T> {
4
5
  copy(data: ClipboardFigureData): T | undefined;
6
+ getCopyRect(data: ClipboardFigureData): Rect;
5
7
  }
@@ -2,9 +2,13 @@ import { SpreadsheetChart } from "../helpers/figures/chart";
2
2
  import { ClipboardFigureData, ClipboardOptions, ClipboardPasteTarget } from "../types/clipboard";
3
3
  import { CommandResult } from "../types/commands";
4
4
  import { Carousel, Figure } from "../types/figure";
5
- import { UID, Zone } from "../types/misc";
5
+ import { PixelPosition, UID, Zone } from "../types/misc";
6
6
  import { AbstractFigureClipboardHandler } from "./abstract_figure_clipboard_handler";
7
7
  type ClipboardContent = {
8
+ figures: ClipboardCarousel[];
9
+ figureIds: UID[];
10
+ };
11
+ type ClipboardCarousel = {
8
12
  figureId: UID;
9
13
  copiedSheetId: UID;
10
14
  copiedFigure: Figure;
@@ -12,10 +16,11 @@ type ClipboardContent = {
12
16
  copiedCharts: {
13
17
  [chartId: UID]: SpreadsheetChart;
14
18
  };
19
+ offset: PixelPosition;
15
20
  };
16
21
  export declare class CarouselClipboardHandler extends AbstractFigureClipboardHandler<ClipboardContent> {
17
22
  copy(data: ClipboardFigureData): ClipboardContent | undefined;
18
- getPasteTarget(sheetId: UID): ClipboardPasteTarget;
23
+ getPasteTarget(sheetId: UID, target: Zone[], content: ClipboardContent, options?: ClipboardOptions): ClipboardPasteTarget;
19
24
  paste(target: ClipboardPasteTarget, clippedContent: ClipboardContent, options: ClipboardOptions): void;
20
25
  isPasteAllowed(sheetId: UID, target: Zone[], content: any, option?: ClipboardOptions): CommandResult.Success | CommandResult.WrongFigurePasteOption | CommandResult.EmptyTarget;
21
26
  }
@@ -2,12 +2,17 @@ import { SpreadsheetChart } from "../helpers/figures/chart";
2
2
  import { ClipboardFigureData, ClipboardOptions, ClipboardPasteTarget } from "../types/clipboard";
3
3
  import { CommandResult } from "../types/commands";
4
4
  import { Figure } from "../types/figure";
5
- import { UID, Zone } from "../types/misc";
5
+ import { PixelPosition, UID, Zone } from "../types/misc";
6
6
  import { AbstractFigureClipboardHandler } from "./abstract_figure_clipboard_handler";
7
7
  type ClipboardContent = {
8
+ figures: ClipboardCharts[];
9
+ figureIds: UID[];
10
+ };
11
+ type ClipboardCharts = {
8
12
  figureId: UID;
9
13
  copiedFigure: Figure;
10
14
  copiedChart: SpreadsheetChart;
15
+ offset: PixelPosition;
11
16
  };
12
17
  export declare class ChartClipboardHandler extends AbstractFigureClipboardHandler<ClipboardContent> {
13
18
  copy(data: ClipboardFigureData): ClipboardContent | undefined;
@@ -1,14 +1,19 @@
1
+ import { PixelPosition, UID, Zone } from "..";
1
2
  import { ClipboardFigureData, ClipboardOptions, ClipboardPasteTarget } from "../types/clipboard";
2
3
  import { CommandResult } from "../types/commands";
3
4
  import { Figure } from "../types/figure";
4
5
  import { Image } from "../types/image";
5
- import { UID, Zone } from "../types/misc";
6
6
  import { AbstractFigureClipboardHandler } from "./abstract_figure_clipboard_handler";
7
7
  type ClipboardContent = {
8
+ figures: ClipboardImages[];
9
+ figureIds: UID[];
10
+ };
11
+ type ClipboardImages = {
8
12
  figureId: UID;
9
13
  copiedFigure: Figure;
10
14
  copiedImage: Image;
11
15
  sheetId: UID;
16
+ offset: PixelPosition;
12
17
  };
13
18
  export declare class ImageClipboardHandler extends AbstractFigureClipboardHandler<ClipboardContent> {
14
19
  copy(data: ClipboardFigureData): ClipboardContent | undefined;
@@ -58,7 +58,7 @@ export declare class FigureComponent extends Component<Props, SpreadsheetChildEn
58
58
  onKeyDown(ev: KeyboardEvent): void;
59
59
  private postionInBoundary;
60
60
  onContextMenu(ev: MouseEvent): void;
61
- showMenu(): void;
61
+ showMenu(ev: MouseEvent): void;
62
62
  openContextMenu(anchorRect: Rect): void;
63
63
  editWrapperStyle(properties: CSSProperties): void;
64
64
  get isFigureResizable(): boolean;
@@ -1,5 +1,6 @@
1
1
  import { Component } from "@odoo/owl";
2
2
  import { FigureUI, ResizeDirection } from "../../../types/figure";
3
+ import { Rect } from "../../../types/rendering";
3
4
  import { SpreadsheetChildEnv } from "../../../types/spreadsheet_env";
4
5
  import { HFigureAxisType, SnapLine, VFigureAxisType } from "../../helpers/figure_snap_helper";
5
6
  import { FigureComponent } from "../figure/figure";
@@ -19,6 +20,8 @@ interface Snap<T extends HFigureAxisType | VFigureAxisType> {
19
20
  }
20
21
  interface DndState {
21
22
  draggedFigure?: FigureUI;
23
+ selectedFigures?: FigureUI[];
24
+ selectedRect?: Rect;
22
25
  horizontalSnap?: Snap<HFigureAxisType>;
23
26
  verticalSnap?: Snap<VFigureAxisType>;
24
27
  cancelDnd: (() => void) | undefined;
@@ -97,9 +100,12 @@ export declare class FiguresContainer extends Component<Props, SpreadsheetChildE
97
100
  private getContainerStyle;
98
101
  private rectToCss;
99
102
  private getContainerRect;
103
+ get selectedRectStyle(): string;
100
104
  private getInverseViewportPositionStyle;
101
105
  private getFigureContainer;
106
+ private getDndFigureRect;
102
107
  private toBottomRightViewport;
108
+ private isMenuClick;
103
109
  startDraggingFigure(figureUI: FigureUI, ev: MouseEvent): void;
104
110
  /**
105
111
  * Initialize the resize of a figure with mouse movements
@@ -112,7 +118,6 @@ export declare class FiguresContainer extends Component<Props, SpreadsheetChildE
112
118
  */
113
119
  startResize(figureUI: FigureUI, dirX: ResizeDirection, dirY: ResizeDirection, ev: MouseEvent): void;
114
120
  private getOtherFigures;
115
- private getDndFigure;
116
121
  getFigureStyle(figureUI: FigureUI): string;
117
122
  getFigureClass(figureUI: FigureUI): string;
118
123
  private getSnap;
@@ -1,10 +1,10 @@
1
1
  import { FigureUI } from "../../types/figure";
2
2
  import { PixelPosition } from "../../types/misc";
3
3
  import { SheetDOMScrollInfo } from "../../types/rendering";
4
- export declare function dragFigureForMove({ x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, initialFigure: FigureUI, { maxX, maxY }: {
4
+ export declare function dragFigureForMove({ x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, initialFigures: FigureUI[], { maxX, maxY }: {
5
5
  maxX: number;
6
6
  maxY: number;
7
- }, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo): FigureUI;
7
+ }, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo): FigureUI[];
8
8
  export declare function dragFigureForResize(initialFigure: FigureUI, dirX: -1 | 0 | 1, dirY: -1 | 0 | 1, { x: mouseX, y: mouseY }: PixelPosition, { x: mouseInitialX, y: mouseInitialY }: PixelPosition, keepRatio: boolean, minFigSize: number, { scrollX: initialScrollX, scrollY: initialScrollY }: SheetDOMScrollInfo, { scrollX, scrollY }: SheetDOMScrollInfo, { maxX, maxY }: {
9
9
  maxX: number;
10
10
  maxY: number;
@@ -10,7 +10,7 @@ export interface SnapLine<T extends HFigureAxisType | VFigureAxisType> {
10
10
  position: Pixel;
11
11
  }
12
12
  interface SnapReturn {
13
- snappedFigure: FigureUI;
13
+ snappedFigures: FigureUI[];
14
14
  verticalSnapLine?: SnapLine<VFigureAxisType>;
15
15
  horizontalSnapLine?: SnapLine<HFigureAxisType>;
16
16
  }
@@ -18,7 +18,7 @@ interface SnapReturn {
18
18
  * Try to snap the given figure to other figures when moving the figure, and return the snapped
19
19
  * figure and the possible snap lines, if any were found
20
20
  */
21
- export declare function snapForMove(getters: Getters, figureToSnap: FigureUI, otherFigures: FigureUI[]): SnapReturn;
21
+ export declare function snapForMove(getters: Getters, figuresToSnap: FigureUI[], otherFigures: FigureUI[]): SnapReturn;
22
22
  /**
23
23
  * Try to snap the given figure to the other figures when resizing the figure, and return the snapped
24
24
  * figure and the possible snap lines, if any were found
@@ -17,6 +17,7 @@ export interface MenuProps {
17
17
  isHoveredMenuFocused?: boolean;
18
18
  width?: number;
19
19
  onKeyDown?: (ev: KeyboardEvent) => void;
20
+ disableKeyboardNavigation?: boolean;
20
21
  }
21
22
  export interface MenuState {
22
23
  isOpen: boolean;
@@ -62,6 +63,10 @@ export declare class Menu extends Component<MenuProps, SpreadsheetChildEnv> {
62
63
  type: FunctionConstructor;
63
64
  optional: boolean;
64
65
  };
66
+ disableKeyboardNavigation: {
67
+ type: BooleanConstructor;
68
+ optional: boolean;
69
+ };
65
70
  };
66
71
  static components: {};
67
72
  static defaultProps: {};
@@ -42,6 +42,7 @@ export declare class ChartTypePicker extends Component<Props, SpreadsheetChildEn
42
42
  };
43
43
  state: ChartTypePickerState;
44
44
  setup(): void;
45
+ private getSupportedChartTypes;
45
46
  onExternalClick(ev: MouseEvent): void;
46
47
  onTypeChange(type: ChartType): void;
47
48
  private getChartDefinition;
@@ -2,23 +2,37 @@
2
2
  * Block of code that produces a value.
3
3
  */
4
4
  export interface FunctionCode {
5
- readonly returnExpression: string;
5
+ readonly returnExpression: JsString;
6
6
  /**
7
7
  * Return the same function code but with the return expression assigned to a variable.
8
8
  */
9
9
  assignResultToVariable(): FunctionCode;
10
10
  }
11
+ declare class JsString extends String {
12
+ private brand;
13
+ }
14
+ type SafeJsValue = JsString | number | boolean | (JsString | number | boolean)[];
15
+ /**
16
+ * Creates a JsString from a raw string, bypassing the template string interpolation checks.
17
+ * This can lead to security vulnerabilities if the string is not trusted!
18
+ */
19
+ export declare function dangerouslyCreateJsStr(trustedStr: string): JsString;
20
+ /**
21
+ * Creates a JsString from a template string, ensuring that all interpolated values are safe.
22
+ */
23
+ export declare function jsStr(strings: TemplateStringsArray, ...values: SafeJsValue[]): JsString;
11
24
  export declare class FunctionCodeBuilder {
12
25
  private scope;
13
26
  private code;
14
27
  constructor(scope?: Scope);
15
- append(...lines: (string | FunctionCode)[]): void;
16
- return(expression: string): FunctionCode;
28
+ append(...lines: (JsString | FunctionCode)[]): void;
29
+ return(expression: JsString): FunctionCode;
17
30
  toString(): string;
18
31
  }
19
32
  export declare class Scope {
20
33
  private nextId;
21
34
  private declaredVariables;
22
- nextVariableName(): string;
23
- isAlreadyDeclared(name: string): boolean;
35
+ nextVariableName(): JsString;
36
+ isAlreadyDeclared(name: JsString): boolean;
24
37
  }
38
+ export {};
@@ -1,4 +1,4 @@
1
- import { ChartCreationContext, ChartData, ChartDefinition, ChartType } from "../../types/chart/chart";
1
+ import { ChartCreationContext, ChartData, ChartDefinition } from "../../types/chart/chart";
2
2
  import { CoreGetters } from "../../types/core_getters";
3
3
  import { Getters } from "../../types/getters";
4
4
  import { RangeAdapterFunctions, UID } from "../../types/misc";
@@ -16,7 +16,6 @@ export declare class SpreadsheetChart {
16
16
  static fromDefinition(getters: CoreGetters, sheetId: UID, definition: ChartDefinition<Range>): SpreadsheetChart;
17
17
  static validate(validator: Validator, definition: ChartDefinition<string>): import("../..").CommandResult | import("../..").CommandResult[];
18
18
  static transformDefinition(chartSheetId: UID, definition: ChartDefinition<string>, rangeAdapters: RangeAdapterFunctions): import("../../types/chart/line_chart").LineChartDefinition<string> | import("../../types/chart/pie_chart").PieChartDefinition<string> | import("../../types/chart/bar_chart").BarChartDefinition<string> | import("../../types/chart/scatter_chart").ScatterChartDefinition<string> | import("../../types/chart/combo_chart").ComboChartDefinition<string> | import("../../types/chart/waterfall_chart").WaterfallChartDefinition<string> | import("../../types/chart/pyramid_chart").PyramidChartDefinition<string> | import("../../types/chart/radar_chart").RadarChartDefinition<string> | import("../../types/chart/geo_chart").GeoChartDefinition<string> | import("../../types/chart/funnel_chart").FunnelChartDefinition<string> | import("../../types/chart/sunburst_chart").SunburstChartDefinition<string> | import("../../types/chart/tree_map_chart").TreeMapChartDefinition<string> | import("../../types/chart/calendar_chart").CalendarChartDefinition<string> | import("../../types/chart/scorecard_chart").ScorecardChartDefinition<string> | import("../../types/chart/gauge_chart").GaugeChartDefinition<string> | import("../../types/chart/bubble_chart").BubbleChartDefinition<string>;
19
- getSupportedChartTypes(): Set<ChartType>;
20
19
  getRangeDefinition(): ChartDefinition<Range>;
21
20
  getDefinition(): ChartDefinition<string>;
22
21
  updateRanges(rangeAdapters: RangeAdapterFunctions): ChartDefinition<Range>;
@@ -0,0 +1,9 @@
1
+ import { Chart, ChartDataset, LegendItem } from "chart.js";
2
+ export declare function highlightComboChartItem(item: LegendItem, dataSets: ChartDataset<"bar" | "line">[]): void;
3
+ export declare function resetComboChartHighlights(dataSets: ChartDataset<"bar" | "line">[]): void;
4
+ export declare function highlightLineChartItem(item: LegendItem, dataSets: ChartDataset<"line" | "radar">[]): void;
5
+ export declare function resetLineChartHighlights(dataSets: ChartDataset<"line" | "radar">[]): void;
6
+ export declare function toggleLineBarDataVisibility(chart: Chart<"line" | "bar" | "radar">, item: LegendItem): void;
7
+ export declare function highlightPieChartItem(item: LegendItem, dataSets: ChartDataset<"pie">[]): void;
8
+ export declare function resetPieChartHighlights(dataSets: ChartDataset<"pie">[]): void;
9
+ export declare function togglePieDataVisibility(chart: Chart, item: LegendItem): void;
@@ -1,24 +1,26 @@
1
- import { LegendOptions } from "chart.js";
1
+ import type { ChartTypeRegistry, LegendOptions } from "chart.js";
2
2
  import { BarChartDefinition } from "../../../../types/chart/bar_chart";
3
3
  import { BubbleChartDefinition } from "../../../../types/chart/bubble_chart";
4
4
  import { ChartRuntimeGenerationArgs, GenericDefinition } from "../../../../types/chart/chart";
5
5
  import { ComboChartDefinition } from "../../../../types/chart/combo_chart";
6
6
  import { LineChartDefinition } from "../../../../types/chart/line_chart";
7
7
  import { PieChartDefinition } from "../../../../types/chart/pie_chart";
8
+ import { PyramidChartDefinition } from "../../../../types/chart/pyramid_chart";
8
9
  import { RadarChartDefinition } from "../../../../types/chart/radar_chart";
9
10
  import { SunburstChartDefinition } from "../../../../types/chart/sunburst_chart";
10
11
  import { WaterfallChartDefinition } from "../../../../types/chart/waterfall_chart";
11
12
  import { DeepPartial } from "../../../../types/misc";
12
13
  import { Range } from "../../../../types/range";
13
14
  import { BubbleChartData } from "../bubble_chart";
14
- type ChartLegend = DeepPartial<LegendOptions<any>>;
15
- export declare function getBarChartLegend(definition: GenericDefinition<BarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
16
- export declare function getLineChartLegend(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
17
- export declare function getPieChartLegend(definition: GenericDefinition<PieChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
18
- export declare function getScatterChartLegend(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
15
+ type ChartLegend<T extends keyof ChartTypeRegistry = any> = DeepPartial<LegendOptions<T>>;
16
+ export declare function getBarChartLegend(definition: GenericDefinition<BarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"bar">;
17
+ export declare function getPyramidChartLegend(definition: GenericDefinition<PyramidChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"bar">;
18
+ export declare function getLineChartLegend(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"line">;
19
+ export declare function getPieChartLegend(definition: GenericDefinition<PieChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"pie">;
20
+ export declare function getScatterChartLegend(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"line">;
19
21
  export declare function getBubbleChartLegend(definition: BubbleChartDefinition<Range>, args: BubbleChartData): ChartLegend;
20
- export declare function getComboChartLegend(definition: GenericDefinition<ComboChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
21
- export declare function getWaterfallChartLegend(definition: WaterfallChartDefinition, args: ChartRuntimeGenerationArgs): ChartLegend;
22
- export declare function getRadarChartLegend(definition: GenericDefinition<RadarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend;
23
- export declare function getSunburstChartLegend(definition: SunburstChartDefinition, args: ChartRuntimeGenerationArgs): ChartLegend;
22
+ export declare function getComboChartLegend(definition: GenericDefinition<ComboChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"bar" | "line">;
23
+ export declare function getWaterfallChartLegend(definition: WaterfallChartDefinition, args: ChartRuntimeGenerationArgs): ChartLegend<"bar">;
24
+ export declare function getRadarChartLegend(definition: GenericDefinition<RadarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartLegend<"radar">;
25
+ export declare function getSunburstChartLegend(definition: SunburstChartDefinition, args: ChartRuntimeGenerationArgs): ChartLegend<"doughnut">;
24
26
  export {};
@@ -1,4 +1,4 @@
1
- import { ChartDataset, ScaleChartOptions } from "chart.js";
1
+ import type { ChartDataset, ChartTypeRegistry, ScaleChartOptions } from "chart.js";
2
2
  import { ChartColorScalePluginOptions } from "../../../../components/figures/chart/chartJs/chartjs_colorscale_plugin";
3
3
  import { BarChartDefinition } from "../../../../types/chart/bar_chart";
4
4
  import { BubbleChartDefinition } from "../../../../types/chart/bubble_chart";
@@ -13,18 +13,17 @@ import { ScatterChartDefinition } from "../../../../types/chart/scatter_chart";
13
13
  import { WaterfallChartDefinition } from "../../../../types/chart/waterfall_chart";
14
14
  import { Color, DeepPartial } from "../../../../types/misc";
15
15
  import { Range } from "../../../../types/range";
16
- type ChartScales = DeepPartial<ScaleChartOptions<"line" | "bar" | "radar">["scales"]>;
17
- type GeoChartScales = DeepPartial<ScaleChartOptions<"choropleth">["scales"]>;
18
- export declare function getBarChartScales(definition: GenericDefinition<BarChartDefinition>, args: ChartRuntimeGenerationArgs): DeepPartial<ScaleChartOptions<"line" | "bar">["scales"]>;
19
- export declare function getCalendarChartScales(definition: GenericDefinition<BarChartDefinition>, datasets: ChartDataset[]): DeepPartial<ScaleChartOptions<"calendar">["scales"]>;
16
+ type ChartScales<T extends keyof ChartTypeRegistry = any> = DeepPartial<ScaleChartOptions<T>["scales"]>;
17
+ export declare function getBarChartScales(definition: GenericDefinition<BarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartScales<"line" | "bar">;
18
+ export declare function getCalendarChartScales(definition: GenericDefinition<BarChartDefinition>, datasets: ChartDataset[]): ChartScales<"calendar">;
20
19
  export declare function getCalendarColorScale(definition: CalendarChartDefinition, args: ChartRuntimeGenerationArgs): ChartColorScalePluginOptions | undefined;
21
- export declare function getLineChartScales(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): DeepPartial<ScaleChartOptions<"line">["scales"]>;
22
- export declare function getScatterChartScales(definition: GenericDefinition<ScatterChartDefinition>, args: ChartRuntimeGenerationArgs): DeepPartial<ScaleChartOptions<"line">["scales"]>;
20
+ export declare function getLineChartScales(definition: GenericDefinition<LineChartDefinition>, args: ChartRuntimeGenerationArgs): ChartScales<"line">;
21
+ export declare function getScatterChartScales(definition: GenericDefinition<ScatterChartDefinition>, args: ChartRuntimeGenerationArgs): ChartScales<"line">;
23
22
  export declare function getBubbleChartScales(definition: BubbleChartDefinition<string | Range>, args: ChartRuntimeGenerationArgs): DeepPartial<ScaleChartOptions<"line">["scales"]>;
24
- export declare function getWaterfallChartScales(definition: WaterfallChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales;
25
- export declare function getPyramidChartScales(definition: PyramidChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales;
26
- export declare function getRadarChartScales(definition: GenericDefinition<RadarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartScales;
27
- export declare function getGeoChartScales(definition: GeoChartDefinition, args: GeoChartRuntimeGenerationArgs): GeoChartScales;
28
- export declare function getFunnelChartScales(definition: FunnelChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales;
23
+ export declare function getWaterfallChartScales(definition: WaterfallChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales<"bar">;
24
+ export declare function getPyramidChartScales(definition: PyramidChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales<"bar">;
25
+ export declare function getRadarChartScales(definition: GenericDefinition<RadarChartDefinition>, args: ChartRuntimeGenerationArgs): ChartScales<"radar">;
26
+ export declare function getGeoChartScales(definition: GeoChartDefinition, args: GeoChartRuntimeGenerationArgs): ChartScales<"choropleth">;
27
+ export declare function getFunnelChartScales(definition: FunnelChartDefinition, args: ChartRuntimeGenerationArgs): ChartScales<"funnel">;
29
28
  export declare function getRuntimeColorScale(colorScale: ChartColorScale, minValue?: number, maxValue?: number): (value: number) => Color;
30
29
  export {};
@@ -1,4 +1,13 @@
1
- import { AnchorOffset, FigureSize } from "../../../types/figure";
1
+ import { Position, UID } from "../../..";
2
+ import { AnchorOffset, Figure, FigureSize } from "../../../types/figure";
2
3
  import { Getters } from "../../../types/getters";
3
4
  export declare function centerFigurePosition(getters: Getters, size: FigureSize): AnchorOffset;
4
5
  export declare function getMaxFigureSize(getters: Getters, figureSize: FigureSize): FigureSize;
6
+ export declare function boundColRowOffsetInSheet(getters: Getters, sheetId: UID, position: Position, figure: Figure): {
7
+ col: import("../../..").HeaderIndex;
8
+ row: import("../../..").HeaderIndex;
9
+ offset: {
10
+ x: import("../../..").Pixel;
11
+ y: import("../../..").Pixel;
12
+ };
13
+ };
@@ -1,5 +1,5 @@
1
1
  import { RenderingGetters } from "../types/getters";
2
- import { HeaderIndex, Pixel, Position, UID, Zone } from "../types/misc";
2
+ import { Dimension, HeaderIndex, Pixel, Position, UID, Zone } from "../types/misc";
3
3
  import { DOMCoordinates, DOMDimension, Rect } from "../types/rendering";
4
4
  export declare class InternalViewport {
5
5
  private getters;
@@ -43,9 +43,9 @@ export declare class InternalViewport {
43
43
  * the pane that is actually displayed on the client. We therefore adjust the offset of the pane
44
44
  * until it contains the cell completely.
45
45
  */
46
- adjustPosition(position: Position): void;
47
- private adjustPositionX;
48
- private adjustPositionY;
46
+ repositionViewport(position: Position): void;
47
+ private repositionViewportX;
48
+ private repositionViewportY;
49
49
  willNewOffsetScrollViewport(offsetX: Pixel, offsetY: Pixel): boolean;
50
50
  setViewportOffset(offsetX: Pixel, offsetY: Pixel): void;
51
51
  adjustViewportZone(): void;
@@ -62,7 +62,7 @@ export declare class InternalViewport {
62
62
  */
63
63
  getFullRect(zone: Zone): Rect | undefined;
64
64
  isVisible(col: HeaderIndex, row: HeaderIndex): boolean;
65
- private searchHeaderIndex;
65
+ searchHeaderIndex(dimension: Dimension, position: Pixel, startIndex?: HeaderIndex): HeaderIndex;
66
66
  private setViewportOffsetX;
67
67
  private setViewportOffsetY;
68
68
  /** Corrects the viewport's horizontal offset based on the current structure
@@ -11,6 +11,10 @@ export declare function getFirstPivotFunction(compiledFormula: CompiledFormula,
11
11
  functionName: string;
12
12
  args: import("../..").AST[];
13
13
  };
14
+ export declare function getPivotFunctions(compiledFormula: CompiledFormula, getters: CoreGetters): {
15
+ functionName: string;
16
+ args: import("../..").AST[];
17
+ }[];
14
18
  /**
15
19
  * Parse a spreadsheet formula and detect the number of PIVOT functions that are
16
20
  * present in the given formula.
@@ -421,6 +421,7 @@ export declare const constants: {
421
421
  GRID_ICON_EDGE_LENGTH: number;
422
422
  GRID_ICON_MARGIN: number;
423
423
  CHART_TYPES: readonly ["line", "bar", "pie", "scorecard", "gauge", "scatter", "bubble", "combo", "waterfall", "pyramid", "radar", "geo", "funnel", "sunburst", "treemap", "calendar"];
424
+ DARK_MODE_FILTER_STRING: string;
424
425
  };
425
426
  export declare const chartHelpers: typeof CHART_HELPERS & typeof CHART_RUNTIME_HELPERS;
426
427
  export { SpreadsheetPivotTable } from "./helpers/pivot/table_spreadsheet_pivot";
@@ -1,12 +1,17 @@
1
1
  import { CompiledFormula } from "../../formulas/compiler";
2
+ import { CellValue } from "../../types/cells";
2
3
  import { Command } from "../../types/commands";
3
- import { CellPosition, SortDirection, UID } from "../../types/misc";
4
+ import { CellPosition, Matrix, SortDirection, UID } from "../../types/misc";
4
5
  import { PivotCoreMeasure, PivotStyle, PivotTableCell } from "../../types/pivot";
5
6
  import { Pivot } from "../../types/pivot_runtime";
6
7
  import { CoreViewPlugin, CoreViewPluginConfig } from "../core_view_plugin";
7
8
  export declare const UNDO_REDO_PIVOT_COMMANDS: string[];
9
+ interface PivotEvaluatedArgs {
10
+ functionName: string;
11
+ args: (CellValue | Matrix<CellValue> | undefined)[];
12
+ }
8
13
  export declare class PivotUIPlugin extends CoreViewPlugin {
9
- static getters: readonly ["getPivot", "getFirstPivotFunction", "getPivotCellSortDirection", "getPivotIdFromPosition", "getPivotCellFromPosition", "generateNewCalculatedMeasureName", "isPivotUnused", "isSpillPivotFormula", "getAllPivotArrayFormulas", "getPivotStyleAtPosition"];
14
+ static getters: readonly ["getPivot", "getFirstPivotFunction", "getPivotCellSortDirection", "getPivotIdFromPosition", "getPivotIdsFromPosition", "getPivotCellFromPosition", "generateNewCalculatedMeasureName", "isPivotUnused", "isSpillPivotFormula", "getAllPivotArrayFormulas", "getPivotStyleAtPosition"];
10
15
  private pivots;
11
16
  private unusedPivotsInFormulas?;
12
17
  private custom;
@@ -14,15 +19,18 @@ export declare class PivotUIPlugin extends CoreViewPlugin {
14
19
  beforeHandle(cmd: Command): void;
15
20
  handle(cmd: Command): void;
16
21
  /**
17
- * Get the id of the pivot at the given position. Returns undefined if there
22
+ * Get the id of the first pivot in the formula at the given position. Returns undefined if there
18
23
  * is no pivot at this position
19
24
  */
20
- getPivotIdFromPosition(position: CellPosition): "" | UID | undefined;
25
+ getPivotIdFromPosition(position: CellPosition): UID | undefined;
26
+ /**
27
+ * Get all of the ids of the pivot present in the formula at the given position.
28
+ */
29
+ getPivotIdsFromPosition(position: CellPosition): UID[];
30
+ private getPivotIdsFromFormula;
21
31
  isSpillPivotFormula(position: CellPosition): boolean;
22
- getFirstPivotFunction(sheetId: UID, compiledFormula: CompiledFormula): {
23
- functionName: string;
24
- args: (import("../..").CellValue | import("../..").Matrix<import("../..").CellValue> | undefined)[];
25
- } | undefined;
32
+ private getPivotFunctions;
33
+ getFirstPivotFunction(sheetId: UID, formula: CompiledFormula): PivotEvaluatedArgs | undefined;
26
34
  /**
27
35
  * Returns the domain args of a pivot formula from a position.
28
36
  * For all those formulas:
@@ -60,3 +68,4 @@ export declare class PivotUIPlugin extends CoreViewPlugin {
60
68
  } | undefined;
61
69
  private isMainFunctionPivotSpreadFunction;
62
70
  }
71
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Command, CommandResult } from "../../types/commands";
2
+ import { UIPlugin } from "../ui_plugin";
3
+ export declare class FigureUIPlugin extends UIPlugin {
4
+ allowDispatch(cmd: Command): CommandResult | CommandResult[];
5
+ handle(cmd: Command): void;
6
+ }
@@ -16,9 +16,9 @@ export interface SelectionState {
16
16
  */
17
17
  export declare class GridSelectionPlugin extends UIPlugin {
18
18
  static layers: readonly ["Selection"];
19
- static getters: readonly ["getActiveSheet", "getActiveSheetId", "getActiveSheetName", "getActiveCell", "getActiveCols", "getActiveRows", "getCurrentStyle", "getSelectedZones", "getSelectedZone", "getSelectedCells", "getSelectedFigureId", "getSelection", "getActivePosition", "getSheetPosition", "isSingleColSelected", "getElementsFromSelection", "tryGetActiveSheetId", "isGridSelectionActive", "getSelectecUnboundedZone", "getSelectionRangeString", "getSelectionState"];
19
+ static getters: readonly ["getActiveSheet", "getActiveSheetId", "getActiveSheetName", "getActiveCell", "getActiveCols", "getActiveRows", "getCurrentStyle", "getSelectedZones", "getSelectedZone", "getSelectedCells", "getSelectedFigureIds", "getSelection", "getActivePosition", "getSheetPosition", "isSingleColSelected", "getElementsFromSelection", "tryGetActiveSheetId", "isGridSelectionActive", "getSelectecUnboundedZone", "getSelectionRangeString", "getSelectionState"];
20
20
  private gridSelection;
21
- private selectedFigureId;
21
+ private selectedFiguresIds;
22
22
  private sheetsData;
23
23
  private moveClient;
24
24
  private isUnbounded;
@@ -42,7 +42,7 @@ export declare class GridSelectionPlugin extends UIPlugin {
42
42
  getSelectecUnboundedZone(): UnboundedZone;
43
43
  getSelection(): Selection;
44
44
  getSelectedCells(): EvaluatedCell[];
45
- getSelectedFigureId(): UID | null;
45
+ getSelectedFigureIds(): UID[];
46
46
  getActivePosition(): CellPosition;
47
47
  getSheetPosition(sheetId: UID): CellPosition;
48
48
  isSingleColSelected(): boolean;
@@ -14,7 +14,7 @@ export declare class SheetViewPlugin extends UIPlugin {
14
14
  static getters: readonly ["getColIndex", "getRowIndex", "getActiveMainViewport", "getSheetViewDimension", "getSheetViewDimensionWithHeaders", "getMainViewportRect", "isVisibleInViewport", "getEdgeScrollCol", "getEdgeScrollRow", "getVisibleFigures", "getVisibleRect", "getVisibleRectWithoutHeaders", "getVisibleRectWithZoom", "getVisibleCellPositions", "getColRowOffsetInViewport", "getMainViewportCoordinates", "getActiveSheetScrollInfo", "getSheetViewVisibleCols", "getSheetViewVisibleRows", "getFrozenSheetViewRatio", "isPixelPositionVisible", "getColDimensionsInViewport", "getRowDimensionsInViewport", "getRect", "getFigureUI", "getPositionAnchorOffset", "getGridOffset", "getViewportZoomLevel", "getScrollBarWidth", "getMaximumSheetOffset", "getViewportCollection"];
15
15
  private viewports;
16
16
  private sheetsWithDirtyViewports;
17
- private shouldAdjustViewports;
17
+ private shouldRepositionViewports;
18
18
  allowDispatch(cmd: LocalCommand): CommandResult | CommandResult[];
19
19
  private handleEvent;
20
20
  handle(cmd: Command): void;
@@ -40,18 +40,18 @@ export type ClipboardCellData = {
40
40
  };
41
41
  export type ClipboardFigureData = {
42
42
  sheetId: UID;
43
- figureId: UID;
43
+ figureIds: UID[];
44
44
  };
45
45
  export type ClipboardData = ClipboardCellData | ClipboardFigureData;
46
46
  export type ClipboardPasteTarget = {
47
47
  sheetId: UID;
48
48
  zones: Zone[];
49
- figureId?: UID;
49
+ figureIds?: Record<UID, UID>;
50
50
  };
51
51
  export type MinimalClipboardData = {
52
52
  sheetId?: UID;
53
53
  cells?: ClipboardCell[][];
54
54
  zones?: Zone[];
55
- figureId?: UID;
55
+ figureIds?: UID[];
56
56
  [key: string]: unknown;
57
57
  };