@odoo/o-spreadsheet 19.5.0-alpha.15 → 19.5.0-alpha.17
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 +50 -37
- package/dist/o_spreadsheet.css +14 -13
- package/dist/o_spreadsheet.esm.js +51 -38
- package/dist/o_spreadsheet.iife.js +50 -37
- package/dist/o_spreadsheet.min.iife.js +282 -282
- package/dist/o_spreadsheet.xml +3 -4
- package/dist/types/components/popover/popover.d.ts +0 -1
- package/dist/types/components/popover/popover_container_owl_plugin.d.ts +5 -0
- package/dist/types/components/side_panel/chart/chart_type_picker_popover/chart_type_picker_popover.d.ts +0 -1
- package/dist/types/components/tables/table_styles_popover/table_styles_popover.d.ts +0 -1
- package/dist/types/plugins/core/range.d.ts +3 -1
- package/dist/types/stores/viewports_store.d.ts +0 -1
- package/package.json +1 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 19.5.0-alpha.
|
|
6
|
-
* @date 2026-09-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.5.0-alpha.17
|
|
6
|
+
* @date 2026-09-07T05:58:42.129Z
|
|
7
|
+
* @hash 532243c
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -2658,7 +2658,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
2658
2658
|
*
|
|
2659
2659
|
* The end goal is to eliminate all compatibility shims.
|
|
2660
2660
|
*/
|
|
2661
|
-
const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$26, onPatched: onPatched$5, onWillUnmount: onWillUnmount$20, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin, usePlugin, useProps: useProps$171, providePlugins, useScope, xml: xml$5 } = _odoo_owl;
|
|
2661
|
+
const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$26, onPatched: onPatched$5, onWillUnmount: onWillUnmount$20, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin: Plugin$1, usePlugin: usePlugin$1, useProps: useProps$171, providePlugins: providePlugins$3, useScope, xml: xml$5 } = _odoo_owl;
|
|
2662
2662
|
const isOdooCompatLoaded = __ODOO_COMPATIBILITY_LAYER_ADDED__ === true;
|
|
2663
2663
|
var _Component = class extends OwlComponent {
|
|
2664
2664
|
env;
|
|
@@ -2703,17 +2703,17 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
2703
2703
|
});
|
|
2704
2704
|
onWillUnmount$20(() => cleanup && cleanup());
|
|
2705
2705
|
}
|
|
2706
|
-
var _EnvPlugin = class extends Plugin {
|
|
2706
|
+
var _EnvPlugin = class extends Plugin$1 {
|
|
2707
2707
|
static id = "__ENV__";
|
|
2708
2708
|
env = config("env") ?? {};
|
|
2709
2709
|
};
|
|
2710
2710
|
function _useEnv() {
|
|
2711
|
-
return usePlugin(_EnvPlugin).env;
|
|
2711
|
+
return usePlugin$1(_EnvPlugin).env;
|
|
2712
2712
|
}
|
|
2713
2713
|
function _useSubEnv(extension) {
|
|
2714
2714
|
const subEnv = Object.create(_useEnv());
|
|
2715
2715
|
Object.defineProperties(subEnv, Object.getOwnPropertyDescriptors(extension));
|
|
2716
|
-
providePlugins([_EnvPlugin], { env: subEnv });
|
|
2716
|
+
providePlugins$3([_EnvPlugin], { env: subEnv });
|
|
2717
2717
|
const component = _useComponent();
|
|
2718
2718
|
component.env = subEnv;
|
|
2719
2719
|
}
|
|
@@ -2850,7 +2850,7 @@ set(value) {
|
|
|
2850
2850
|
createRoot(component, config = {}) {
|
|
2851
2851
|
if (config.env) component = { [component.name]: class extends component {
|
|
2852
2852
|
constructor(node) {
|
|
2853
|
-
providePlugins([_EnvPlugin], { env: config.env });
|
|
2853
|
+
providePlugins$3([_EnvPlugin], { env: config.env });
|
|
2854
2854
|
super(node);
|
|
2855
2855
|
}
|
|
2856
2856
|
} }[component.name];
|
|
@@ -13903,7 +13903,6 @@ set(value) {
|
|
|
13903
13903
|
getFooterSize: this.getFooterSizeCallback
|
|
13904
13904
|
});
|
|
13905
13905
|
sheetsWithDirtyViewports = /* @__PURE__ */ new Set();
|
|
13906
|
-
shouldRepositionViewports = false;
|
|
13907
13906
|
displayedSheetId = this.model.getters.getActiveSheetId();
|
|
13908
13907
|
constructor(get) {
|
|
13909
13908
|
super(get);
|
|
@@ -13919,7 +13918,6 @@ set(value) {
|
|
|
13919
13918
|
this.sheetsWithDirtyViewports.add(sheetId);
|
|
13920
13919
|
this.syncPaneDivision(sheetId);
|
|
13921
13920
|
}
|
|
13922
|
-
this.shouldRepositionViewports = !this.getters.getSelectedFigureIds().length;
|
|
13923
13921
|
break;
|
|
13924
13922
|
case "UNFREEZE_ROWS":
|
|
13925
13923
|
case "UNFREEZE_COLUMNS":
|
|
@@ -13962,17 +13960,8 @@ set(value) {
|
|
|
13962
13960
|
}
|
|
13963
13961
|
}
|
|
13964
13962
|
finalize() {
|
|
13965
|
-
for (const sheetId of this.sheetsWithDirtyViewports)
|
|
13966
|
-
this.viewports.resetViewports(sheetId);
|
|
13967
|
-
if (this.shouldRepositionViewports) {
|
|
13968
|
-
const position = this.getters.getSheetPosition(sheetId);
|
|
13969
|
-
this.viewports.getSubViewports(sheetId).forEach((viewport) => {
|
|
13970
|
-
viewport.repositionViewport(position);
|
|
13971
|
-
});
|
|
13972
|
-
}
|
|
13973
|
-
}
|
|
13963
|
+
for (const sheetId of this.sheetsWithDirtyViewports) this.viewports.resetViewports(sheetId);
|
|
13974
13964
|
this.sheetsWithDirtyViewports = /* @__PURE__ */ new Set();
|
|
13975
|
-
this.shouldRepositionViewports = false;
|
|
13976
13965
|
this.setViewports();
|
|
13977
13966
|
}
|
|
13978
13967
|
setViewports() {
|
|
@@ -16221,6 +16210,12 @@ set(value) {
|
|
|
16221
16210
|
}
|
|
16222
16211
|
};
|
|
16223
16212
|
|
|
16213
|
+
//#endregion
|
|
16214
|
+
//#region src/components/popover/popover_container_owl_plugin.ts
|
|
16215
|
+
var PopoverContainerPlugin = class extends _odoo_owl.Plugin {
|
|
16216
|
+
getContainerRect = (0, _odoo_owl.useConfig)("getPopoverContainerRect");
|
|
16217
|
+
};
|
|
16218
|
+
|
|
16224
16219
|
//#endregion
|
|
16225
16220
|
//#region src/components/helpers/position_hook.ts
|
|
16226
16221
|
/**
|
|
@@ -16263,11 +16258,9 @@ set(value) {
|
|
|
16263
16258
|
width: 0,
|
|
16264
16259
|
height: 0
|
|
16265
16260
|
});
|
|
16266
|
-
const
|
|
16267
|
-
const spreadsheetRect = useSpreadsheetRect();
|
|
16261
|
+
const popoverContainerPlugin = (0, _odoo_owl.usePlugin)(PopoverContainerPlugin);
|
|
16268
16262
|
function updateRect() {
|
|
16269
|
-
const
|
|
16270
|
-
const newRect = "getPopoverContainerRect" in env && env.getPopoverContainerRect ? env.getPopoverContainerRect() : spreadsheetRect;
|
|
16263
|
+
const newRect = popoverContainerPlugin.getContainerRect();
|
|
16271
16264
|
container.x = newRect.x;
|
|
16272
16265
|
container.y = newRect.y;
|
|
16273
16266
|
container.width = newRect.width;
|
|
@@ -16285,7 +16278,6 @@ set(value) {
|
|
|
16285
16278
|
static template = "o-spreadsheet-Popover";
|
|
16286
16279
|
props = (0, _odoo_owl.useProps)({
|
|
16287
16280
|
anchorRect: types.Rect(),
|
|
16288
|
-
containerRect: types.object({}).optional(),
|
|
16289
16281
|
positioning: types.or([types.literal("top-right"), types.literal("bottom-left")]).optional("bottom-left"),
|
|
16290
16282
|
maxWidth: types.Pixel().optional(),
|
|
16291
16283
|
maxHeight: types.Pixel().optional(),
|
|
@@ -34194,7 +34186,8 @@ set(value) {
|
|
|
34194
34186
|
format,
|
|
34195
34187
|
locale: getters.getLocale()
|
|
34196
34188
|
}));
|
|
34197
|
-
|
|
34189
|
+
const invalidDataValue = definition.fillArea ? ZERO : EMPTY$1;
|
|
34190
|
+
({labels, dataSetsValues} = filterInvalidDataPoints(labels, dataSetsValues, invalidDataValue));
|
|
34198
34191
|
if (axisType === "time") ({labels, dataSetsValues} = fixEmptyLabelsForDateCharts(labels, dataSetsValues));
|
|
34199
34192
|
if (definition.aggregated) ({labels, dataSetsValues} = aggregateDataForLabels(labels, dataSetsValues));
|
|
34200
34193
|
if (definition.cumulative) dataSetsValues = makeDatasetsCumulative(dataSetsValues, "asc");
|
|
@@ -34571,7 +34564,7 @@ set(value) {
|
|
|
34571
34564
|
* - have neither a label nor a value
|
|
34572
34565
|
* - have no label and a non-numeric value
|
|
34573
34566
|
*/
|
|
34574
|
-
function filterInvalidDataPoints(labels, datasets) {
|
|
34567
|
+
function filterInvalidDataPoints(labels, datasets, invalidDataValue = EMPTY$1) {
|
|
34575
34568
|
const dataPointsIndexes = range(0, Math.max(labels.length, ...datasets.map((dataset) => dataset.data?.length || 0))).filter((dataPointIndex) => {
|
|
34576
34569
|
const label = labels[dataPointIndex];
|
|
34577
34570
|
const values = datasets.map((dataset) => dataset.data?.[dataPointIndex]);
|
|
@@ -34581,7 +34574,7 @@ set(value) {
|
|
|
34581
34574
|
labels: dataPointsIndexes.map((i) => labels[i] || ""),
|
|
34582
34575
|
dataSetsValues: datasets.map((dataset) => ({
|
|
34583
34576
|
...dataset,
|
|
34584
|
-
data: dataPointsIndexes.map((i) => isNumberResult(dataset.data[i]) ? dataset.data[i] :
|
|
34577
|
+
data: dataPointsIndexes.map((i) => isNumberResult(dataset.data[i]) ? dataset.data[i] : invalidDataValue)
|
|
34585
34578
|
}))
|
|
34586
34579
|
};
|
|
34587
34580
|
}
|
|
@@ -55525,7 +55518,7 @@ set(value) {
|
|
|
55525
55518
|
this.checkboxToggleStore = useStore(CheckboxToggleStore);
|
|
55526
55519
|
useStore(ArrayFormulaHighlight);
|
|
55527
55520
|
this.automaticSumStore = useLocalStore(AutomaticSumStore);
|
|
55528
|
-
|
|
55521
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.getGridRect() });
|
|
55529
55522
|
(0, _odoo_owl.useListener)(document.body, "cut", this.copy.bind(this, true));
|
|
55530
55523
|
(0, _odoo_owl.useListener)(document.body, "copy", this.copy.bind(this, false));
|
|
55531
55524
|
(0, _odoo_owl.useListener)(document.body, "paste", this.paste.bind(this));
|
|
@@ -63453,7 +63446,7 @@ set(value) {
|
|
|
63453
63446
|
if (rangeError) return [[rangeError]];
|
|
63454
63447
|
const sheetId = range.sheetId;
|
|
63455
63448
|
const zone = range.zone;
|
|
63456
|
-
const _zone =
|
|
63449
|
+
const _zone = this.getters.clipRangeToSheet(range)?.zone;
|
|
63457
63450
|
if (!_zone) return [[]];
|
|
63458
63451
|
const { top, left, bottom, right } = zone;
|
|
63459
63452
|
const cacheKey = `${sheetId}-${top}-${left}-${bottom}-${right}`;
|
|
@@ -64443,10 +64436,10 @@ set(value) {
|
|
|
64443
64436
|
updateDependencies(position) {
|
|
64444
64437
|
this.formulaDependencies().removeAllDependencies(position);
|
|
64445
64438
|
const dependencies = this.getDirectDependencies(position);
|
|
64446
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64439
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64447
64440
|
}
|
|
64448
64441
|
addDependencies(position, dependencies) {
|
|
64449
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64442
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64450
64443
|
this.computeDependencies(dependencies);
|
|
64451
64444
|
}
|
|
64452
64445
|
computeDependencies(dependencies) {
|
|
@@ -64519,7 +64512,8 @@ set(value) {
|
|
|
64519
64512
|
const graph = new FormulaDependencyGraph();
|
|
64520
64513
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) if (cell.isFormula) {
|
|
64521
64514
|
const cellPosition = this.getters.getCellPosition(cell.id);
|
|
64522
|
-
|
|
64515
|
+
const dependencies = this.getters.clipRangesToSheet(cell.compiledFormula.rangeDependencies);
|
|
64516
|
+
graph.addDependencies(cellPosition, dependencies);
|
|
64523
64517
|
}
|
|
64524
64518
|
return graph;
|
|
64525
64519
|
});
|
|
@@ -72665,7 +72659,7 @@ set(value) {
|
|
|
72665
72659
|
this.zoomStore = useStore(ZoomStore);
|
|
72666
72660
|
useLocalStore(HoveredTableStore);
|
|
72667
72661
|
const rendererStore = useLocalStore(RendererStore, OrderedLayers().filter((layer) => layer !== "Headers"));
|
|
72668
|
-
|
|
72662
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.zoomStore.getZoomedRect(this.getGridRect()) });
|
|
72669
72663
|
useGridDrawing({
|
|
72670
72664
|
canvasRef: this.canvasRef,
|
|
72671
72665
|
rendererStore,
|
|
@@ -75040,6 +75034,7 @@ set(value) {
|
|
|
75040
75034
|
stores.inject(ModelStore, this.model);
|
|
75041
75035
|
this.viewStore = useStore(ViewportsStore);
|
|
75042
75036
|
this.zoomStore = useStore(ZoomStore);
|
|
75037
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => getElBoundingRect(this.spreadsheetRef()) });
|
|
75043
75038
|
const env = this.env;
|
|
75044
75039
|
stores.get(ScreenWidthStore).setSmallThreshhold(() => {
|
|
75045
75040
|
return env.isSmall;
|
|
@@ -76082,6 +76077,8 @@ set(value) {
|
|
|
76082
76077
|
"extendRange",
|
|
76083
76078
|
"getRangeString",
|
|
76084
76079
|
"getRangeFromSheetXC",
|
|
76080
|
+
"clipRangesToSheet",
|
|
76081
|
+
"clipRangeToSheet",
|
|
76085
76082
|
"createAdaptedRanges",
|
|
76086
76083
|
"getRangeData",
|
|
76087
76084
|
"getRangeDataFromXc",
|
|
@@ -76120,6 +76117,22 @@ set(value) {
|
|
|
76120
76117
|
addRangeProvider(provider) {
|
|
76121
76118
|
this.providers.push(provider);
|
|
76122
76119
|
}
|
|
76120
|
+
clipRangeToSheet(range) {
|
|
76121
|
+
if (range.invalidXc) return range;
|
|
76122
|
+
const sheetZone = this.getters.getSheetZone(range.sheetId);
|
|
76123
|
+
if (isZoneInside(range.zone, sheetZone)) return range;
|
|
76124
|
+
const newZone = intersection(range.zone, sheetZone);
|
|
76125
|
+
if (!newZone) return;
|
|
76126
|
+
return this.getters.getRangeFromZone(range.sheetId, newZone);
|
|
76127
|
+
}
|
|
76128
|
+
clipRangesToSheet(ranges) {
|
|
76129
|
+
const clippedRanges = [];
|
|
76130
|
+
for (const range of ranges) {
|
|
76131
|
+
const clippedRange = this.clipRangeToSheet(range);
|
|
76132
|
+
if (clippedRange) clippedRanges.push(clippedRange);
|
|
76133
|
+
}
|
|
76134
|
+
return clippedRanges;
|
|
76135
|
+
}
|
|
76123
76136
|
createAdaptedRanges(ranges, offsetX, offsetY, sheetId) {
|
|
76124
76137
|
return ranges.map((range) => {
|
|
76125
76138
|
if (!isZoneValid(range.zone)) return range;
|
|
@@ -91255,8 +91268,8 @@ exports.stores = stores;
|
|
|
91255
91268
|
exports.tokenColors = tokenColors;
|
|
91256
91269
|
exports.tokenize = tokenize;
|
|
91257
91270
|
|
|
91258
|
-
__info__.version = "19.5.0-alpha.
|
|
91259
|
-
__info__.date = "2026-09-
|
|
91260
|
-
__info__.hash = "
|
|
91271
|
+
__info__.version = "19.5.0-alpha.17";
|
|
91272
|
+
__info__.date = "2026-09-07T05:58:42.129Z";
|
|
91273
|
+
__info__.hash = "532243c";
|
|
91261
91274
|
|
|
91262
91275
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|