@odoo/o-spreadsheet 19.5.0-alpha.7 → 19.5.0-alpha.8
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.
- package/dist/o_spreadsheet.cjs +27312 -26508
- package/dist/o_spreadsheet.css +47 -17
- package/dist/o_spreadsheet.esm.js +27312 -26508
- package/dist/o_spreadsheet.iife.js +27302 -26498
- package/dist/o_spreadsheet.min.iife.js +396 -396
- package/dist/o_spreadsheet.xml +120 -52
- package/dist/types/collaborative/ot/ot_helpers.d.ts +3 -1
- package/dist/types/components/clickable_cells_overlay/clickable_cells_overlay.d.ts +20 -0
- package/dist/types/components/dashboard/dashboard.d.ts +5 -12
- package/dist/types/components/error_tooltip/error_tooltip.d.ts +2 -0
- package/dist/types/components/figures/figure/figure.d.ts +3 -6
- package/dist/types/components/figures/figure_carousel/figure_carousel.d.ts +9 -2
- package/dist/types/components/figures/figure_chart/figure_chart.d.ts +1 -2
- package/dist/types/components/figures/figure_image/figure_image.d.ts +1 -2
- package/dist/types/components/filters/filter_menu/filter_menu.d.ts +1 -0
- package/dist/types/components/grid/grid.d.ts +2 -0
- package/dist/types/components/grid_overlay/grid_overlay.d.ts +6 -5
- package/dist/types/components/helpers/wheel_hook.d.ts +1 -1
- package/dist/types/components/link/link_display/link_display.d.ts +1 -0
- package/dist/types/components/link/link_editor/link_editor.d.ts +1 -0
- package/dist/types/components/scrollbar/scrollbar_vertical.d.ts +2 -1
- package/dist/types/components/side_panel/carousel_panel/carousel_panel.d.ts +6 -1
- package/dist/types/components/standalone_viewport/standalone_viewport.d.ts +55 -0
- package/dist/types/components/standalone_viewport/standalone_viewport_store.d.ts +28 -0
- package/dist/types/components/tables/hovered_table_store.d.ts +3 -6
- package/dist/types/helpers/internal_viewport.d.ts +19 -10
- package/dist/types/helpers/misc.d.ts +1 -0
- package/dist/types/helpers/viewport_collection.d.ts +40 -9
- package/dist/types/helpers/zones.d.ts +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/plugins/core/carousel.d.ts +8 -4
- package/dist/types/plugins/ui_feature/ui_sheet.d.ts +2 -1
- package/dist/types/plugins/ui_stateful/header_positions.d.ts +2 -1
- package/dist/types/store_engine/dependency_container.d.ts +5 -0
- package/dist/types/store_engine/store_hooks.d.ts +6 -0
- package/dist/types/stores/main_viewport_store.d.ts +11 -0
- package/dist/types/stores/viewports_store.d.ts +18 -3
- package/dist/types/types/commands.d.ts +3 -3
- package/dist/types/types/figure.d.ts +26 -3
- package/dist/types/types/getters.d.ts +22 -0
- package/dist/types/types/misc.d.ts +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Component } from "../../owl3_compatibility_layer";
|
|
2
|
+
import { RendererStore } from "../../stores/renderer_store";
|
|
3
|
+
import { ViewportsStore } from "../../stores/viewports_store";
|
|
4
|
+
import { HeaderIndex } from "../../types/misc";
|
|
5
|
+
import { Rect } from "../../types/rendering";
|
|
6
|
+
import { SpreadsheetChildEnv } from "../../types/spreadsheet_env";
|
|
7
|
+
import { Store } from "../../types/store_engine";
|
|
8
|
+
import { ClickableCellsOverlay } from "../clickable_cells_overlay/clickable_cells_overlay";
|
|
9
|
+
import { GridOverlay } from "../grid_overlay/grid_overlay";
|
|
10
|
+
import { GridPopover } from "../grid_popover/grid_popover";
|
|
11
|
+
import { CellPopoverStore } from "../popover/cell_popover_store";
|
|
12
|
+
import { VerticalScrollBar } from "../scrollbar/scrollbar_vertical";
|
|
13
|
+
interface ColResizer {
|
|
14
|
+
col: HeaderIndex;
|
|
15
|
+
style: string;
|
|
16
|
+
}
|
|
17
|
+
interface DnDResizeState {
|
|
18
|
+
col: HeaderIndex | undefined;
|
|
19
|
+
}
|
|
20
|
+
export declare class StandaloneViewport extends Component<SpreadsheetChildEnv> {
|
|
21
|
+
static template: string;
|
|
22
|
+
static components: {
|
|
23
|
+
VerticalScrollBar: typeof VerticalScrollBar;
|
|
24
|
+
GridOverlay: typeof GridOverlay;
|
|
25
|
+
ClickableCellsOverlay: typeof ClickableCellsOverlay;
|
|
26
|
+
GridPopover: typeof GridPopover;
|
|
27
|
+
};
|
|
28
|
+
protected props: import("@odoo/owl").PropsWithDefaults<{
|
|
29
|
+
range: import("../..").Range;
|
|
30
|
+
canResizeColumns: boolean;
|
|
31
|
+
zoomLevel: number;
|
|
32
|
+
onResizeColumns?: ((columnWeights: number[] | undefined) => void) | undefined;
|
|
33
|
+
columnWeights?: number[] | undefined;
|
|
34
|
+
}, "canResizeColumns">;
|
|
35
|
+
private canvasRef;
|
|
36
|
+
private containerRef;
|
|
37
|
+
private store;
|
|
38
|
+
dndState: DnDResizeState;
|
|
39
|
+
onMouseWheel: (ev: WheelEvent) => void;
|
|
40
|
+
rendererStore: Store<RendererStore>;
|
|
41
|
+
viewStore: Store<ViewportsStore>;
|
|
42
|
+
cellPopoverStore: Store<CellPopoverStore>;
|
|
43
|
+
setup(): void;
|
|
44
|
+
get containerWidth(): number;
|
|
45
|
+
get containerHeight(): number;
|
|
46
|
+
get hasVerticalScrollBar(): boolean | 0;
|
|
47
|
+
get scrollBarContainerStyle(): string;
|
|
48
|
+
onCellDoubleClicked(col: HeaderIndex, row: HeaderIndex, ev: MouseEvent): void;
|
|
49
|
+
get gridOverlayDimensions(): string;
|
|
50
|
+
get colResizers(): ColResizer[];
|
|
51
|
+
onResizerPointerDown(ev: MouseEvent, resizer: ColResizer): void;
|
|
52
|
+
onResizerDoubleClick(): void;
|
|
53
|
+
getGridRect(): Rect;
|
|
54
|
+
}
|
|
55
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SpreadsheetStore } from "../../stores/spreadsheet_store";
|
|
2
|
+
import { Command } from "../../types/commands";
|
|
3
|
+
import { HeaderDimensions, HeaderIndex, UID } from "../../types/misc";
|
|
4
|
+
import { Range } from "../../types/range";
|
|
5
|
+
import { GridRenderingContext } from "../../types/rendering";
|
|
6
|
+
import { Get } from "../../types/store_engine";
|
|
7
|
+
export declare class StandaloneViewportStore extends SpreadsheetStore {
|
|
8
|
+
mutators: readonly ["setContainerSize", "setRange", "resizeColumn", "setCustomColWeights"];
|
|
9
|
+
cachedColDimensions: Record<HeaderIndex, HeaderDimensions> | undefined;
|
|
10
|
+
private containerWidth;
|
|
11
|
+
private containerHeight;
|
|
12
|
+
private range;
|
|
13
|
+
private customColWeights;
|
|
14
|
+
private viewStore;
|
|
15
|
+
constructor(get: Get, range: Range, customColWeights?: number[]);
|
|
16
|
+
handle(cmd: Command): void;
|
|
17
|
+
setContainerSize(width: number, height: number): "noStateChange" | undefined;
|
|
18
|
+
setRange(range: Range): "noStateChange" | undefined;
|
|
19
|
+
setCustomColWeights(weights: number[] | undefined): "noStateChange" | undefined;
|
|
20
|
+
resizeColumn(resizedCol: HeaderIndex, weightDelta: number, weightsAtStartOfDrag: number[]): void;
|
|
21
|
+
private changeColumnWeights;
|
|
22
|
+
get renderingContext(): Omit<GridRenderingContext, "ctx" | "thinLineWidth">;
|
|
23
|
+
get headerDimensionsCallback(): (sheetId: UID, dimension: "COL" | "ROW", index: number) => HeaderDimensions;
|
|
24
|
+
getHeaderDimensions(sheetId: UID, dimension: "COL" | "ROW", index: number): HeaderDimensions;
|
|
25
|
+
get columnWeights(): number[];
|
|
26
|
+
private computeColDimensions;
|
|
27
|
+
private normalizeWeights;
|
|
28
|
+
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { PositionMap } from "../../helpers/cells/position_map";
|
|
2
2
|
import { SpreadsheetStore } from "../../stores/spreadsheet_store";
|
|
3
|
-
import {
|
|
4
|
-
import { Color, Position } from "../../types/misc";
|
|
3
|
+
import { CellPosition, Color } from "../../types/misc";
|
|
5
4
|
export declare class HoveredTableStore extends SpreadsheetStore {
|
|
6
5
|
mutators: readonly ["clear", "hover"];
|
|
7
|
-
|
|
8
|
-
row: number | undefined;
|
|
6
|
+
position: CellPosition | undefined;
|
|
9
7
|
overlayColors: PositionMap<Color>;
|
|
10
|
-
|
|
11
|
-
hover(position: Partial<Position>): "noStateChange" | undefined;
|
|
8
|
+
hover(position: CellPosition | undefined): "noStateChange" | undefined;
|
|
12
9
|
clear(): void;
|
|
13
10
|
private computeOverlay;
|
|
14
11
|
}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ViewportsGetters } from "../types/getters";
|
|
2
2
|
import { Dimension, HeaderIndex, Pixel, Position, UID, Zone } from "../types/misc";
|
|
3
3
|
import { DOMCoordinates, DOMDimension, Rect } from "../types/rendering";
|
|
4
|
+
interface InternalViewportArgs {
|
|
5
|
+
getters: ViewportsGetters;
|
|
6
|
+
sheetId: UID;
|
|
7
|
+
boundaries: Zone;
|
|
8
|
+
sizeInGrid: DOMDimension;
|
|
9
|
+
canScrollVertically: boolean;
|
|
10
|
+
canScrollHorizontally: boolean;
|
|
11
|
+
offsets: DOMCoordinates;
|
|
12
|
+
getFooterSize: () => number;
|
|
13
|
+
}
|
|
4
14
|
export declare class InternalViewport {
|
|
5
|
-
private getters;
|
|
6
|
-
private sheetId;
|
|
7
|
-
private boundaries;
|
|
8
15
|
top: HeaderIndex;
|
|
9
16
|
bottom: HeaderIndex;
|
|
10
17
|
left: HeaderIndex;
|
|
@@ -15,12 +22,13 @@ export declare class InternalViewport {
|
|
|
15
22
|
canScrollHorizontally: boolean;
|
|
16
23
|
viewportWidth: Pixel;
|
|
17
24
|
viewportHeight: Pixel;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
boundaryLeftX: Pixel;
|
|
26
|
+
boundaryTopY: Pixel;
|
|
27
|
+
private getters;
|
|
28
|
+
private sheetId;
|
|
29
|
+
private boundaries;
|
|
30
|
+
private getFooterSize;
|
|
31
|
+
constructor(args: InternalViewportArgs);
|
|
24
32
|
/** Returns the maximum size (in Pixels) of the viewport relative to its allocated client size
|
|
25
33
|
* When the viewport grid size is smaller than its client width (resp. height), it will return
|
|
26
34
|
* the client width (resp. height).
|
|
@@ -85,3 +93,4 @@ export declare class InternalViewport {
|
|
|
85
93
|
* */
|
|
86
94
|
private get snapCorrection();
|
|
87
95
|
}
|
|
96
|
+
export {};
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import { AnchorOffset, Figure, FigureUI } from "../types/figure";
|
|
2
|
-
import {
|
|
2
|
+
import { ViewportsGetters } from "../types/getters";
|
|
3
3
|
import { CellPosition, Dimension, HeaderDimensions, HeaderIndex, PaneDivision, Pixel, PixelPosition, Position, SheetViewDimensions, UID, Zone } from "../types/misc";
|
|
4
4
|
import { DOMCoordinates, DOMDimension, EdgeScrollInfo, Rect, SheetDOMScrollInfo, Viewport } from "../types/rendering";
|
|
5
5
|
import { InternalViewport } from "./internal_viewport";
|
|
6
6
|
type SheetViewports = {
|
|
7
|
-
topLeft
|
|
8
|
-
bottomLeft
|
|
9
|
-
topRight
|
|
7
|
+
topLeft?: InternalViewport;
|
|
8
|
+
bottomLeft?: InternalViewport;
|
|
9
|
+
topRight?: InternalViewport;
|
|
10
10
|
bottomRight: InternalViewport;
|
|
11
11
|
};
|
|
12
|
+
interface PositionedViewport {
|
|
13
|
+
viewport: InternalViewport;
|
|
14
|
+
viewportX: Pixel;
|
|
15
|
+
viewportY: Pixel;
|
|
16
|
+
}
|
|
17
|
+
interface ViewportCollectionArgs {
|
|
18
|
+
getters: ViewportsGetters;
|
|
19
|
+
paneDivision: Record<UID, PaneDivision>;
|
|
20
|
+
sheetViewWidth: Pixel;
|
|
21
|
+
sheetViewHeight: Pixel;
|
|
22
|
+
zoomLevel: number;
|
|
23
|
+
getFooterSize: () => number;
|
|
24
|
+
zoneToDisplay?: Zone;
|
|
25
|
+
}
|
|
12
26
|
/**
|
|
13
27
|
* EdgeScrollCases Schema
|
|
14
28
|
*
|
|
@@ -45,15 +59,18 @@ type SheetViewports = {
|
|
|
45
59
|
* ↓ ↓
|
|
46
60
|
*/
|
|
47
61
|
export declare class ViewportCollection {
|
|
62
|
+
getters: ViewportsGetters;
|
|
63
|
+
viewports: Record<UID, SheetViewports | undefined>;
|
|
64
|
+
private gridOffsetX;
|
|
65
|
+
private gridOffsetY;
|
|
48
66
|
private paneDivision;
|
|
49
67
|
private sheetViewWidth;
|
|
50
68
|
private sheetViewHeight;
|
|
51
69
|
private zoomLevel;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
constructor(getters: RenderingGetters, paneDivision: Record<UID, PaneDivision>, sheetViewWidth?: Pixel, sheetViewHeight?: Pixel, zoomLevel?: number);
|
|
70
|
+
private getFooterSize;
|
|
71
|
+
private zoneToDisplay?;
|
|
72
|
+
constructor(args: ViewportCollectionArgs);
|
|
73
|
+
changeViewportArgs(args: Partial<ViewportCollectionArgs>): void;
|
|
57
74
|
/**
|
|
58
75
|
* Return the index of a column given an offset x, based on the viewport left
|
|
59
76
|
* visible cell.
|
|
@@ -141,6 +158,11 @@ export declare class ViewportCollection {
|
|
|
141
158
|
}[];
|
|
142
159
|
getViewportZoomLevel(): number;
|
|
143
160
|
ensureMainViewportExist(sheetId: UID): void;
|
|
161
|
+
getPanesDimensions(sheetId: UID): {
|
|
162
|
+
paneWidth: number;
|
|
163
|
+
paneHeight: number;
|
|
164
|
+
};
|
|
165
|
+
getPositionedViewports(sheetId: UID): PositionedViewport[];
|
|
144
166
|
getSubViewports(sheetId: UID): InternalViewport[];
|
|
145
167
|
checkPositiveDimension(dims: SheetViewDimensions): boolean;
|
|
146
168
|
checkValuesAreDifferent(dims: SheetViewDimensions): boolean;
|
|
@@ -164,6 +186,15 @@ export declare class ViewportCollection {
|
|
|
164
186
|
y: number | Pixel;
|
|
165
187
|
};
|
|
166
188
|
resetViewports(sheetId: UID): void;
|
|
189
|
+
/**
|
|
190
|
+
* Depending on how `this.zoneToDisplay` intersects the viewports, we may need to reorganize the viewports to ensure that
|
|
191
|
+
* `viewports.bottomRight` is always defined.
|
|
192
|
+
*
|
|
193
|
+
* For example if `this.zoneToDisplay` is only intersecting the bottom-left viewport, we need to treat the bottom-left
|
|
194
|
+
* viewport as the bottom-right viewport.
|
|
195
|
+
*/
|
|
196
|
+
private reorganizeViewportZones;
|
|
197
|
+
private getViewportZones;
|
|
167
198
|
/**
|
|
168
199
|
* Adjust the viewport such that the anchor position is visible
|
|
169
200
|
*/
|
package/dist/types/index.d.ts
CHANGED
|
@@ -233,9 +233,11 @@ import { AutofillStore } from "./components/autofill/autofill_store";
|
|
|
233
233
|
import { TableAutofillStore } from "./components/autofill/table_autofill_store";
|
|
234
234
|
import { Composer } from "./components/composer/composer/composer";
|
|
235
235
|
import { StandaloneComposer } from "./components/composer/standalone_composer/standalone_composer";
|
|
236
|
+
import { isMobileOS } from "./components/helpers/dom_helpers";
|
|
236
237
|
import { Select } from "./components/select/select";
|
|
237
238
|
import { ChartRangeDataSourceComponent } from "./components/side_panel/chart/building_blocks/range_data_source/range_data_source";
|
|
238
239
|
import { CalendarButton } from "./components/side_panel/criterion_form/calendar_button/calendar_button";
|
|
240
|
+
import { Spreadsheet } from "./components/spreadsheet/spreadsheet";
|
|
239
241
|
import { TopBar } from "./components/top_bar/top_bar";
|
|
240
242
|
import { createComputeFunction } from "./functions/create_compute_function";
|
|
241
243
|
import { PositionMap } from "./helpers/cells/position_map";
|
|
@@ -324,6 +326,7 @@ export declare const helpers: {
|
|
|
324
326
|
isSingleCellReference: typeof isSingleCellReference;
|
|
325
327
|
computeCachedTextDimension: typeof computeCachedTextDimension;
|
|
326
328
|
createComputeFunction: typeof createComputeFunction;
|
|
329
|
+
isMobileOS: typeof isMobileOS;
|
|
327
330
|
};
|
|
328
331
|
export declare const links: {
|
|
329
332
|
isMarkdownLink: typeof isMarkdownLink;
|
|
@@ -395,6 +398,7 @@ export declare const components: {
|
|
|
395
398
|
TopBar: typeof TopBar;
|
|
396
399
|
Composer: typeof Composer;
|
|
397
400
|
CalendarButton: typeof CalendarButton;
|
|
401
|
+
Spreadsheet: typeof Spreadsheet;
|
|
398
402
|
};
|
|
399
403
|
export declare const hooks: {
|
|
400
404
|
useDragAndDropListItems: typeof useDragAndDropListItems;
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { CommandResult, CoreCommand } from "../../types/commands";
|
|
2
|
-
import { Carousel } from "../../types/figure";
|
|
3
|
-
import { UID } from "../../types/misc";
|
|
2
|
+
import { Carousel, CarouselData } from "../../types/figure";
|
|
3
|
+
import { RangeAdapterFunctions, UID } from "../../types/misc";
|
|
4
4
|
import { WorkbookData } from "../../types/workbook_data";
|
|
5
5
|
import { CorePlugin } from "../core_plugin";
|
|
6
6
|
interface CarouselState {
|
|
7
7
|
readonly carousels: Record<UID, Record<UID, Carousel | undefined> | undefined>;
|
|
8
8
|
}
|
|
9
9
|
export declare class CarouselPlugin extends CorePlugin<CarouselState> implements CarouselState {
|
|
10
|
-
static getters: readonly ["getCarousel", "doesCarouselExist"];
|
|
10
|
+
static getters: readonly ["getCarousel", "doesCarouselExist", "carouselToCarouselData"];
|
|
11
11
|
readonly carousels: Record<UID, Record<UID, Carousel | undefined> | undefined>;
|
|
12
|
-
|
|
12
|
+
adaptRanges(rangeAdapterFunctions: RangeAdapterFunctions): void;
|
|
13
|
+
allowDispatch(cmd: CoreCommand): CommandResult.Success | CommandResult.InvalidRange | CommandResult.InvalidFigureId | CommandResult.DuplicatedFigureId;
|
|
13
14
|
handle(cmd: CoreCommand): void;
|
|
14
15
|
doesCarouselExist(figureId: UID): boolean;
|
|
15
16
|
getCarousel(figureId: UID): Carousel;
|
|
16
17
|
private removeDeletedCharts;
|
|
18
|
+
private carouselDataToCarousel;
|
|
19
|
+
carouselToCarouselData(carousel: Carousel): CarouselData;
|
|
20
|
+
private areDataViewRangesValid;
|
|
17
21
|
import(data: WorkbookData): void;
|
|
18
22
|
export(data: WorkbookData): void;
|
|
19
23
|
}
|
|
@@ -3,7 +3,7 @@ import { CellPosition, Pixel, Style, UID, VerticalAlign, Zone } from "../../type
|
|
|
3
3
|
import { Rect } from "../../types/rendering";
|
|
4
4
|
import { UIPlugin } from "../ui_plugin";
|
|
5
5
|
export declare class SheetUIPlugin extends UIPlugin {
|
|
6
|
-
static getters: readonly ["getCellWidth", "getTextWidth", "getCellText", "getCellMultiLineText", "getMultilineTextSize", "getContiguousZone", "computeTextYCoordinate"];
|
|
6
|
+
static getters: readonly ["getCellWidth", "getTextWidth", "getCellText", "getCellMultiLineText", "getMultilineTextSize", "getContiguousZone", "computeTextYCoordinate", "getZoneMaxWidth"];
|
|
7
7
|
private ctx;
|
|
8
8
|
allowDispatch(cmd: LocalCommand): CommandResult | CommandResult[];
|
|
9
9
|
handle(cmd: Command): void;
|
|
@@ -40,6 +40,7 @@ export declare class SheetUIPlugin extends UIPlugin {
|
|
|
40
40
|
* If the cell is part of a merge, the check applies to the main cell of the merge.
|
|
41
41
|
*/
|
|
42
42
|
private isCellEmpty;
|
|
43
|
+
getZoneMaxWidth(sheetId: UID, zone: Zone): number;
|
|
43
44
|
private getColMaxWidth;
|
|
44
45
|
/**
|
|
45
46
|
* Check that any "sheetId" in the command matches an existing
|
|
@@ -2,7 +2,7 @@ import { Command } from "../../types/commands";
|
|
|
2
2
|
import { Dimension, HeaderDimensions, HeaderIndex, Pixel, UID } from "../../types/misc";
|
|
3
3
|
import { UIPlugin } from "../ui_plugin";
|
|
4
4
|
export declare class HeaderPositionsUIPlugin extends UIPlugin {
|
|
5
|
-
static getters: readonly ["getColDimensions", "getRowDimensions", "getColRowOffset"];
|
|
5
|
+
static getters: readonly ["getColDimensions", "getRowDimensions", "getHeaderDimensions", "getColRowOffset"];
|
|
6
6
|
private headerPositions;
|
|
7
7
|
private isDirty;
|
|
8
8
|
handle(cmd: Command): void;
|
|
@@ -15,6 +15,7 @@ export declare class HeaderPositionsUIPlugin extends UIPlugin {
|
|
|
15
15
|
* Returns the size, start and end coordinates of a row an unfolded sheet
|
|
16
16
|
*/
|
|
17
17
|
getRowDimensions(sheetId: UID, row: HeaderIndex): HeaderDimensions;
|
|
18
|
+
getHeaderDimensions(sheetId: UID, dimension: "COL" | "ROW", index: number): HeaderDimensions;
|
|
18
19
|
/**
|
|
19
20
|
* Returns the offset of a header (determined by the dimension) at the given index
|
|
20
21
|
* based on the referenceIndex given. If start === 0, this method will return
|
|
@@ -9,6 +9,10 @@ interface StoreUpdateEvent {
|
|
|
9
9
|
export declare class DependencyContainer extends EventBus<StoreUpdateEvent> {
|
|
10
10
|
private dependencies;
|
|
11
11
|
private factory;
|
|
12
|
+
private parent?;
|
|
13
|
+
/** If the dependency container has a parent, those are the store that will be owned by this container instead of its parent */
|
|
14
|
+
private ownStores;
|
|
15
|
+
constructor(parent?: DependencyContainer, extendedStores?: StoreConstructor[]);
|
|
12
16
|
/**
|
|
13
17
|
* Injects a store instance in the dependency container.
|
|
14
18
|
* Useful for injecting an external store that is not created by the container.
|
|
@@ -22,5 +26,6 @@ export declare class DependencyContainer extends EventBus<StoreUpdateEvent> {
|
|
|
22
26
|
instantiate<T>(Store: StoreConstructor<T>, ...args: StoreParams<StoreConstructor<T>>): T;
|
|
23
27
|
resetStores(): void;
|
|
24
28
|
dispose(): void;
|
|
29
|
+
trigger(type: StoreUpdateEvent["type"], payload?: Omit<StoreUpdateEvent, "type">): void;
|
|
25
30
|
}
|
|
26
31
|
export {};
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { LocalStoreConstructor, Store, StoreConstructor, StoreParams } from "../types/store_engine";
|
|
2
|
+
import { DependencyContainer } from "./dependency_container";
|
|
2
3
|
/**
|
|
3
4
|
* This hook should be used at the root of your app to provide the store container.
|
|
4
5
|
*/
|
|
5
6
|
export declare function useStoreProvider(): any;
|
|
7
|
+
/**
|
|
8
|
+
* This create a new store dependency container. The store given in the extended store array will be owned by this
|
|
9
|
+
* new container, the other stores will be owned by the parent container.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useChildStoreProvider(extendedStores: StoreConstructor[]): DependencyContainer;
|
|
6
12
|
/**
|
|
7
13
|
* Get the instance of a store.
|
|
8
14
|
*/
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Command } from "../types/commands";
|
|
2
|
+
import { SpreadsheetStore } from "./spreadsheet_store";
|
|
3
|
+
/**
|
|
4
|
+
* The goal of this store is to make its attached viewport store follow the active sheet
|
|
5
|
+
*/
|
|
6
|
+
export declare class MainViewportStore extends SpreadsheetStore {
|
|
7
|
+
private viewStore;
|
|
8
|
+
private sheetIdAtFinalize;
|
|
9
|
+
protected handle(cmd: Command): void;
|
|
10
|
+
protected finalize(): void;
|
|
11
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CellPosition, FigureUI, HeaderIndex, Pixel, SheetViewDimensions } from "..";
|
|
1
|
+
import { CellPosition, FigureUI, HeaderDimensions, HeaderIndex, Pixel, SheetViewDimensions, UID, ViewportsGetters, Zone } from "..";
|
|
2
2
|
import { ViewportCollection } from "../helpers/viewport_collection";
|
|
3
3
|
import { Command } from "../types/commands";
|
|
4
4
|
import { DOMCoordinates, DOMDimension, Rect, SheetDOMScrollInfo, Viewport } from "../types/rendering";
|
|
5
5
|
import { Get } from "../types/store_engine";
|
|
6
6
|
import { SpreadsheetStore } from "./spreadsheet_store";
|
|
7
|
+
type getHeaderDimensionsCallback = (sheetId: UID, dimension: "COL" | "ROW", index: number) => HeaderDimensions;
|
|
7
8
|
/**
|
|
8
9
|
* Viewport store.
|
|
9
10
|
*
|
|
@@ -11,16 +12,21 @@ import { SpreadsheetStore } from "./spreadsheet_store";
|
|
|
11
12
|
*
|
|
12
13
|
*/
|
|
13
14
|
export declare class ViewportsStore extends SpreadsheetStore {
|
|
14
|
-
mutators: readonly ["setViewportOffset", "resizeSheetView", "setZoom", "shiftViewportDown", "shiftViewportUp", "scrollToCell"];
|
|
15
|
+
mutators: readonly ["setViewportOffset", "resizeSheetView", "setZoom", "shiftViewportDown", "shiftViewportUp", "scrollToCell", "setDisplayedSheetId", "setViewportArgs", "rebuildViewports"];
|
|
16
|
+
private getHeaderDimensionsCallback;
|
|
17
|
+
private getFooterSizeCallback;
|
|
18
|
+
private zoneToDisplay;
|
|
15
19
|
viewports: ViewportCollection;
|
|
16
20
|
private sheetsWithDirtyViewports;
|
|
17
21
|
private shouldRepositionViewports;
|
|
22
|
+
displayedSheetId: UID;
|
|
18
23
|
constructor(get: Get);
|
|
19
24
|
private handleEvent;
|
|
20
25
|
handle(cmd: Command): void;
|
|
21
26
|
finalize(): void;
|
|
22
27
|
private setViewports;
|
|
23
28
|
private syncPaneDivision;
|
|
29
|
+
setDisplayedSheetId(sheetId: UID): void;
|
|
24
30
|
setViewportOffset(offset: {
|
|
25
31
|
offsetX: Pixel;
|
|
26
32
|
offsetY: Pixel;
|
|
@@ -29,7 +35,7 @@ export declare class ViewportsStore extends SpreadsheetStore {
|
|
|
29
35
|
setZoom(zoom: number): "noStateChange" | undefined;
|
|
30
36
|
shiftViewportDown(): void;
|
|
31
37
|
shiftViewportUp(): void;
|
|
32
|
-
scrollToCell(col: HeaderIndex, row: HeaderIndex): void;
|
|
38
|
+
scrollToCell(sheetId: UID, col: HeaderIndex, row: HeaderIndex): void;
|
|
33
39
|
get sheetViewDimensionWithHeaders(): DOMDimension;
|
|
34
40
|
get sheetViewDimension(): DOMDimension;
|
|
35
41
|
get gridOffset(): DOMCoordinates;
|
|
@@ -70,4 +76,13 @@ export declare class ViewportsStore extends SpreadsheetStore {
|
|
|
70
76
|
*/
|
|
71
77
|
private shiftVertically;
|
|
72
78
|
private getPaneDivisions;
|
|
79
|
+
private getFooterSize;
|
|
80
|
+
setViewportArgs(args: {
|
|
81
|
+
getHeaderDimensions?: getHeaderDimensionsCallback;
|
|
82
|
+
getFooterSize?: () => Pixel;
|
|
83
|
+
zoneToDisplay?: Zone;
|
|
84
|
+
}): void;
|
|
85
|
+
rebuildViewports(): void;
|
|
86
|
+
buildViewportGetters(getHeaderDimensions: (sheetId: UID, dimension: "COL" | "ROW", index: number) => HeaderDimensions): ViewportsGetters;
|
|
73
87
|
}
|
|
88
|
+
export {};
|
|
@@ -4,7 +4,7 @@ import { ChartDefinition } from "./chart/chart";
|
|
|
4
4
|
import { ConditionalFormat } from "./conditional_formatting";
|
|
5
5
|
import { ClipboardPasteOptions, ParsedOsClipboardContentWithImageData } from "./clipboard";
|
|
6
6
|
import { DataValidationRule } from "./data_validation";
|
|
7
|
-
import { AnchorOffset,
|
|
7
|
+
import { AnchorOffset, CarouselData, CarouselItem, Figure, FigureSize } from "./figure";
|
|
8
8
|
import { SearchOptions } from "./find_and_replace";
|
|
9
9
|
import { Image } from "./image";
|
|
10
10
|
import { Locale } from "./locale";
|
|
@@ -284,12 +284,12 @@ export interface UpdateChartRegionCommand {
|
|
|
284
284
|
}
|
|
285
285
|
export interface CreateCarouselCommand extends BaseFigureCommand {
|
|
286
286
|
type: "CREATE_CAROUSEL";
|
|
287
|
-
definition:
|
|
287
|
+
definition: CarouselData;
|
|
288
288
|
}
|
|
289
289
|
export interface UpdateCarouselCommand extends SheetDependentCommand {
|
|
290
290
|
type: "UPDATE_CAROUSEL";
|
|
291
291
|
figureId: UID;
|
|
292
|
-
definition:
|
|
292
|
+
definition: CarouselData;
|
|
293
293
|
}
|
|
294
294
|
export interface AddNewChartToCarouselCommand extends SheetDependentCommand {
|
|
295
295
|
type: "ADD_NEW_CHART_TO_CAROUSEL";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { TitleDesign } from "./chart/chart";
|
|
2
2
|
import { HeaderIndex, Pixel, PixelPosition, UID } from "./misc";
|
|
3
|
+
import { Range, RangeData } from "./range";
|
|
3
4
|
import { DOMCoordinates } from "./rendering";
|
|
4
5
|
export interface FigureInfo {
|
|
5
6
|
id: UID;
|
|
@@ -29,11 +30,33 @@ export interface Carousel {
|
|
|
29
30
|
readonly items: CarouselItem[];
|
|
30
31
|
readonly title?: TitleDesign;
|
|
31
32
|
}
|
|
33
|
+
export interface CarouselDataViewItem {
|
|
34
|
+
type: "carouselDataView";
|
|
35
|
+
title?: string;
|
|
36
|
+
range?: Range;
|
|
37
|
+
rangeData?: never;
|
|
38
|
+
/**
|
|
39
|
+
* The weights of the columns define the ratio of the width of each column relative to the other columns and the figure width.
|
|
40
|
+
*
|
|
41
|
+
* For example if the carousel data view is 500px wide, and the weights are [250, 250, 500], the first two columns
|
|
42
|
+
* will be 125px wide and the last column will be 250px wide.
|
|
43
|
+
*/
|
|
44
|
+
columnWeights?: number[];
|
|
45
|
+
}
|
|
32
46
|
export type CarouselItem = {
|
|
33
47
|
type: "chart";
|
|
34
48
|
chartId: UID;
|
|
35
49
|
title?: string;
|
|
36
|
-
} |
|
|
37
|
-
|
|
50
|
+
} | CarouselDataViewItem;
|
|
51
|
+
export interface CarouselData extends Omit<Carousel, "items"> {
|
|
52
|
+
readonly items: CarouselItemData[];
|
|
53
|
+
}
|
|
54
|
+
export interface CarouselDataViewItemData extends Omit<CarouselDataViewItem, "range" | "rangeData"> {
|
|
55
|
+
rangeData?: RangeData;
|
|
56
|
+
range?: never;
|
|
57
|
+
}
|
|
58
|
+
export type CarouselItemData = {
|
|
59
|
+
type: "chart";
|
|
60
|
+
chartId: UID;
|
|
38
61
|
title?: string;
|
|
39
|
-
};
|
|
62
|
+
} | CarouselDataViewItemData;
|
|
@@ -40,3 +40,25 @@ export type RenderingGetters = {
|
|
|
40
40
|
isDashboard: () => boolean;
|
|
41
41
|
} & CoreGetters & PluginGetters<typeof HistoryPlugin> & PluginGetters<typeof ClipboardPlugin> & PluginGetters<typeof EvaluationPlugin> & PluginGetters<typeof EvaluationChartPlugin> & PluginGetters<typeof EvaluationConditionalFormatPlugin> & PluginGetters<typeof HeaderVisibilityUIPlugin> & PluginGetters<typeof CustomColorsPlugin> & PluginGetters<typeof CollaborativePlugin> & PluginGetters<typeof SortPlugin> & PluginGetters<typeof UIOptionsPlugin> & PluginGetters<typeof SheetUIPlugin> & PluginGetters<typeof FilterEvaluationPlugin> & PluginGetters<typeof FingerprintPlugin> & PluginGetters<typeof SubtotalEvaluationPlugin> & PluginGetters<typeof HeaderSizeUIPlugin> & PluginGetters<typeof EvaluationDataValidationPlugin> & PluginGetters<typeof HeaderPositionsUIPlugin> & PluginGetters<typeof TableStylePlugin> & PluginGetters<typeof CellComputedStylePlugin> & PluginGetters<typeof DynamicTablesPlugin> & PluginGetters<typeof PivotUIPlugin> & PluginGetters<typeof TableComputedStylePlugin> & PluginGetters<typeof GeoFeaturePlugin> & PluginGetters<typeof PivotPresencePlugin> & PluginGetters<typeof TableComputedStylePlugin> & PluginGetters<typeof CellIconPlugin> & PluginGetters<typeof DynamicTranslate> & PluginGetters<typeof FormulaTrackerPlugin> & PluginGetters<typeof LockSheetPlugin> & PluginGetters<typeof CarouselUIPlugin> & PluginGetters<typeof ColorThemeUIPlugin> & PluginGetters<typeof FigureUIPlugin>;
|
|
42
42
|
export type Getters = RenderingGetters & PluginGetters<typeof GridSelectionPlugin>;
|
|
43
|
+
export interface ViewportsGetters {
|
|
44
|
+
getColDimensions: Getters["getColDimensions"];
|
|
45
|
+
getRowDimensions: Getters["getRowDimensions"];
|
|
46
|
+
findLastVisibleColRowIndex: Getters["findLastVisibleColRowIndex"];
|
|
47
|
+
isReadonly: Getters["isReadonly"];
|
|
48
|
+
getMainCellPosition: Getters["getMainCellPosition"];
|
|
49
|
+
getNextVisibleCellPosition: Getters["getNextVisibleCellPosition"];
|
|
50
|
+
getColRowOffset: Getters["getColRowOffset"];
|
|
51
|
+
isColHidden: Getters["isColHidden"];
|
|
52
|
+
isRowHidden: Getters["isRowHidden"];
|
|
53
|
+
isHeaderHidden: Getters["isHeaderHidden"];
|
|
54
|
+
getNumberHeaders: Getters["getNumberHeaders"];
|
|
55
|
+
getHeaderSize: Getters["getHeaderSize"];
|
|
56
|
+
getColSize: Getters["getColSize"];
|
|
57
|
+
getRowSize: Getters["getRowSize"];
|
|
58
|
+
getSheetIds: Getters["getSheetIds"];
|
|
59
|
+
tryGetSheet: Getters["tryGetSheet"];
|
|
60
|
+
getNumberCols: Getters["getNumberCols"];
|
|
61
|
+
getNumberRows: Getters["getNumberRows"];
|
|
62
|
+
getSheetZone: Getters["getSheetZone"];
|
|
63
|
+
getFigures: Getters["getFigures"];
|
|
64
|
+
}
|
|
@@ -332,6 +332,10 @@ export interface Offset {
|
|
|
332
332
|
col: number;
|
|
333
333
|
row: number;
|
|
334
334
|
}
|
|
335
|
+
export interface PixelOffset {
|
|
336
|
+
offsetX: Pixel;
|
|
337
|
+
offsetY: Pixel;
|
|
338
|
+
}
|
|
335
339
|
export type DebouncedFunction<T> = T & {
|
|
336
340
|
stopDebounce: () => void;
|
|
337
341
|
isDebouncePending: () => boolean;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@odoo/o-spreadsheet",
|
|
3
|
-
"version": "19.5.0-alpha.
|
|
3
|
+
"version": "19.5.0-alpha.8",
|
|
4
4
|
"description": "A spreadsheet component",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/o_spreadsheet.cjs",
|
|
@@ -141,7 +141,7 @@
|
|
|
141
141
|
"xmlSelfClosingSpace": false
|
|
142
142
|
},
|
|
143
143
|
"dependencies": {
|
|
144
|
-
"@odoo/owl": "3.0.0-alpha.
|
|
144
|
+
"@odoo/owl": "3.0.0-alpha.45",
|
|
145
145
|
"bootstrap": "5.3.3",
|
|
146
146
|
"font-awesome": "^4.7.0",
|
|
147
147
|
"rbush": "^3.0.1"
|