@odoo/o-spreadsheet 19.5.0-alpha.16 → 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 +45 -22
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +46 -23
- package/dist/o_spreadsheet.iife.js +45 -22
- package/dist/o_spreadsheet.min.iife.js +281 -281
- 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/package.json +1 -1
package/dist/o_spreadsheet.cjs
CHANGED
|
@@ -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
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -2657,7 +2657,7 @@ function unregisterChartJsExtensions() {
|
|
|
2657
2657
|
*
|
|
2658
2658
|
* The end goal is to eliminate all compatibility shims.
|
|
2659
2659
|
*/
|
|
2660
|
-
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;
|
|
2660
|
+
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;
|
|
2661
2661
|
const isOdooCompatLoaded = __ODOO_COMPATIBILITY_LAYER_ADDED__ === true;
|
|
2662
2662
|
var _Component = class extends OwlComponent {
|
|
2663
2663
|
env;
|
|
@@ -2702,17 +2702,17 @@ function _useLayoutEffect(effect, computeDependencies = () => [NaN]) {
|
|
|
2702
2702
|
});
|
|
2703
2703
|
onWillUnmount$20(() => cleanup && cleanup());
|
|
2704
2704
|
}
|
|
2705
|
-
var _EnvPlugin = class extends Plugin {
|
|
2705
|
+
var _EnvPlugin = class extends Plugin$1 {
|
|
2706
2706
|
static id = "__ENV__";
|
|
2707
2707
|
env = config("env") ?? {};
|
|
2708
2708
|
};
|
|
2709
2709
|
function _useEnv() {
|
|
2710
|
-
return usePlugin(_EnvPlugin).env;
|
|
2710
|
+
return usePlugin$1(_EnvPlugin).env;
|
|
2711
2711
|
}
|
|
2712
2712
|
function _useSubEnv(extension) {
|
|
2713
2713
|
const subEnv = Object.create(_useEnv());
|
|
2714
2714
|
Object.defineProperties(subEnv, Object.getOwnPropertyDescriptors(extension));
|
|
2715
|
-
providePlugins([_EnvPlugin], { env: subEnv });
|
|
2715
|
+
providePlugins$3([_EnvPlugin], { env: subEnv });
|
|
2716
2716
|
const component = _useComponent();
|
|
2717
2717
|
component.env = subEnv;
|
|
2718
2718
|
}
|
|
@@ -2849,7 +2849,7 @@ var _App = class extends OwlApp {
|
|
|
2849
2849
|
createRoot(component, config = {}) {
|
|
2850
2850
|
if (config.env) component = { [component.name]: class extends component {
|
|
2851
2851
|
constructor(node) {
|
|
2852
|
-
providePlugins([_EnvPlugin], { env: config.env });
|
|
2852
|
+
providePlugins$3([_EnvPlugin], { env: config.env });
|
|
2853
2853
|
super(node);
|
|
2854
2854
|
}
|
|
2855
2855
|
} }[component.name];
|
|
@@ -16209,6 +16209,12 @@ var Menu = class extends Component {
|
|
|
16209
16209
|
}
|
|
16210
16210
|
};
|
|
16211
16211
|
|
|
16212
|
+
//#endregion
|
|
16213
|
+
//#region src/components/popover/popover_container_owl_plugin.ts
|
|
16214
|
+
var PopoverContainerPlugin = class extends _odoo_owl.Plugin {
|
|
16215
|
+
getContainerRect = (0, _odoo_owl.useConfig)("getPopoverContainerRect");
|
|
16216
|
+
};
|
|
16217
|
+
|
|
16212
16218
|
//#endregion
|
|
16213
16219
|
//#region src/components/helpers/position_hook.ts
|
|
16214
16220
|
/**
|
|
@@ -16251,11 +16257,9 @@ function usePopoverContainer() {
|
|
|
16251
16257
|
width: 0,
|
|
16252
16258
|
height: 0
|
|
16253
16259
|
});
|
|
16254
|
-
const
|
|
16255
|
-
const spreadsheetRect = useSpreadsheetRect();
|
|
16260
|
+
const popoverContainerPlugin = (0, _odoo_owl.usePlugin)(PopoverContainerPlugin);
|
|
16256
16261
|
function updateRect() {
|
|
16257
|
-
const
|
|
16258
|
-
const newRect = "getPopoverContainerRect" in env && env.getPopoverContainerRect ? env.getPopoverContainerRect() : spreadsheetRect;
|
|
16262
|
+
const newRect = popoverContainerPlugin.getContainerRect();
|
|
16259
16263
|
container.x = newRect.x;
|
|
16260
16264
|
container.y = newRect.y;
|
|
16261
16265
|
container.width = newRect.width;
|
|
@@ -16273,7 +16277,6 @@ var Popover = class extends Component {
|
|
|
16273
16277
|
static template = "o-spreadsheet-Popover";
|
|
16274
16278
|
props = (0, _odoo_owl.useProps)({
|
|
16275
16279
|
anchorRect: types.Rect(),
|
|
16276
|
-
containerRect: types.object({}).optional(),
|
|
16277
16280
|
positioning: types.or([types.literal("top-right"), types.literal("bottom-left")]).optional("bottom-left"),
|
|
16278
16281
|
maxWidth: types.Pixel().optional(),
|
|
16279
16282
|
maxHeight: types.Pixel().optional(),
|
|
@@ -55514,7 +55517,7 @@ var Grid = class extends Component {
|
|
|
55514
55517
|
this.checkboxToggleStore = useStore(CheckboxToggleStore);
|
|
55515
55518
|
useStore(ArrayFormulaHighlight);
|
|
55516
55519
|
this.automaticSumStore = useLocalStore(AutomaticSumStore);
|
|
55517
|
-
|
|
55520
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.getGridRect() });
|
|
55518
55521
|
(0, _odoo_owl.useListener)(document.body, "cut", this.copy.bind(this, true));
|
|
55519
55522
|
(0, _odoo_owl.useListener)(document.body, "copy", this.copy.bind(this, false));
|
|
55520
55523
|
(0, _odoo_owl.useListener)(document.body, "paste", this.paste.bind(this));
|
|
@@ -63442,7 +63445,7 @@ var CompilationParametersBuilder = class {
|
|
|
63442
63445
|
if (rangeError) return [[rangeError]];
|
|
63443
63446
|
const sheetId = range.sheetId;
|
|
63444
63447
|
const zone = range.zone;
|
|
63445
|
-
const _zone =
|
|
63448
|
+
const _zone = this.getters.clipRangeToSheet(range)?.zone;
|
|
63446
63449
|
if (!_zone) return [[]];
|
|
63447
63450
|
const { top, left, bottom, right } = zone;
|
|
63448
63451
|
const cacheKey = `${sheetId}-${top}-${left}-${bottom}-${right}`;
|
|
@@ -64616,10 +64619,10 @@ var Evaluator = class {
|
|
|
64616
64619
|
updateDependencies(position) {
|
|
64617
64620
|
this.formulaDependencies().removeAllDependencies(position);
|
|
64618
64621
|
const dependencies = this.getDirectDependencies(position);
|
|
64619
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64622
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64620
64623
|
}
|
|
64621
64624
|
addDependencies(position, dependencies) {
|
|
64622
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64625
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64623
64626
|
this.computeDependencies(dependencies);
|
|
64624
64627
|
}
|
|
64625
64628
|
computeDependencies(dependencies) {
|
|
@@ -64692,7 +64695,8 @@ var Evaluator = class {
|
|
|
64692
64695
|
const graph = new FormulaDependencyGraph();
|
|
64693
64696
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) if (cell.isFormula) {
|
|
64694
64697
|
const cellPosition = this.getters.getCellPosition(cell.id);
|
|
64695
|
-
|
|
64698
|
+
const dependencies = this.getters.clipRangesToSheet(cell.compiledFormula.rangeDependencies);
|
|
64699
|
+
graph.addDependencies(cellPosition, dependencies);
|
|
64696
64700
|
}
|
|
64697
64701
|
return graph;
|
|
64698
64702
|
});
|
|
@@ -72838,7 +72842,7 @@ var SpreadsheetDashboard = class extends Component {
|
|
|
72838
72842
|
this.zoomStore = useStore(ZoomStore);
|
|
72839
72843
|
useLocalStore(HoveredTableStore);
|
|
72840
72844
|
const rendererStore = useLocalStore(RendererStore, OrderedLayers().filter((layer) => layer !== "Headers"));
|
|
72841
|
-
|
|
72845
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.zoomStore.getZoomedRect(this.getGridRect()) });
|
|
72842
72846
|
useGridDrawing({
|
|
72843
72847
|
canvasRef: this.canvasRef,
|
|
72844
72848
|
rendererStore,
|
|
@@ -75213,6 +75217,7 @@ var Spreadsheet = class extends Component {
|
|
|
75213
75217
|
stores.inject(ModelStore, this.model);
|
|
75214
75218
|
this.viewStore = useStore(ViewportsStore);
|
|
75215
75219
|
this.zoomStore = useStore(ZoomStore);
|
|
75220
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => getElBoundingRect(this.spreadsheetRef()) });
|
|
75216
75221
|
const env = this.env;
|
|
75217
75222
|
stores.get(ScreenWidthStore).setSmallThreshhold(() => {
|
|
75218
75223
|
return env.isSmall;
|
|
@@ -76255,6 +76260,8 @@ var RangeAdapterPlugin = class {
|
|
|
76255
76260
|
"extendRange",
|
|
76256
76261
|
"getRangeString",
|
|
76257
76262
|
"getRangeFromSheetXC",
|
|
76263
|
+
"clipRangesToSheet",
|
|
76264
|
+
"clipRangeToSheet",
|
|
76258
76265
|
"createAdaptedRanges",
|
|
76259
76266
|
"getRangeData",
|
|
76260
76267
|
"getRangeDataFromXc",
|
|
@@ -76293,6 +76300,22 @@ var RangeAdapterPlugin = class {
|
|
|
76293
76300
|
addRangeProvider(provider) {
|
|
76294
76301
|
this.providers.push(provider);
|
|
76295
76302
|
}
|
|
76303
|
+
clipRangeToSheet(range) {
|
|
76304
|
+
if (range.invalidXc) return range;
|
|
76305
|
+
const sheetZone = this.getters.getSheetZone(range.sheetId);
|
|
76306
|
+
if (isZoneInside(range.zone, sheetZone)) return range;
|
|
76307
|
+
const newZone = intersection(range.zone, sheetZone);
|
|
76308
|
+
if (!newZone) return;
|
|
76309
|
+
return this.getters.getRangeFromZone(range.sheetId, newZone);
|
|
76310
|
+
}
|
|
76311
|
+
clipRangesToSheet(ranges) {
|
|
76312
|
+
const clippedRanges = [];
|
|
76313
|
+
for (const range of ranges) {
|
|
76314
|
+
const clippedRange = this.clipRangeToSheet(range);
|
|
76315
|
+
if (clippedRange) clippedRanges.push(clippedRange);
|
|
76316
|
+
}
|
|
76317
|
+
return clippedRanges;
|
|
76318
|
+
}
|
|
76296
76319
|
createAdaptedRanges(ranges, offsetX, offsetY, sheetId) {
|
|
76297
76320
|
return ranges.map((range) => {
|
|
76298
76321
|
if (!isZoneValid(range.zone)) return range;
|
|
@@ -91428,6 +91451,6 @@ exports.stores = stores;
|
|
|
91428
91451
|
exports.tokenColors = tokenColors;
|
|
91429
91452
|
exports.tokenize = tokenize;
|
|
91430
91453
|
|
|
91431
|
-
__info__.version = "19.5.0-alpha.
|
|
91432
|
-
__info__.date = "2026-09-
|
|
91433
|
-
__info__.hash = "
|
|
91454
|
+
__info__.version = "19.5.0-alpha.17";
|
|
91455
|
+
__info__.date = "2026-09-07T05:58:42.129Z";
|
|
91456
|
+
__info__.hash = "532243c";
|
package/dist/o_spreadsheet.css
CHANGED
|
@@ -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:43.972Z
|
|
7
|
+
* @hash 532243c
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f8f9fa, #1c1c20);
|
|
@@ -2,13 +2,13 @@
|
|
|
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
|
import * as owl from "@odoo/owl";
|
|
11
|
-
import { App, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, proxy, signal, status, toRaw, types, useEffect, useListener, useProps, whenReady, xml } from "@odoo/owl";
|
|
11
|
+
import { App, Plugin, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, providePlugins, proxy, signal, status, toRaw, types, useConfig, useEffect, useListener, usePlugin, useProps, whenReady, xml } from "@odoo/owl";
|
|
12
12
|
|
|
13
13
|
//#region \0rolldown/runtime.js
|
|
14
14
|
var __create = Object.create;
|
|
@@ -2656,7 +2656,7 @@ function unregisterChartJsExtensions() {
|
|
|
2656
2656
|
*
|
|
2657
2657
|
* The end goal is to eliminate all compatibility shims.
|
|
2658
2658
|
*/
|
|
2659
|
-
const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$1, onPatched: onPatched$1, onWillUnmount: onWillUnmount$1, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin, usePlugin, useProps: useProps$1, providePlugins, useScope, xml: xml$1 } = owl;
|
|
2659
|
+
const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$1, onPatched: onPatched$1, onWillUnmount: onWillUnmount$1, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin: Plugin$1, usePlugin: usePlugin$1, useProps: useProps$1, providePlugins: providePlugins$1, useScope, xml: xml$1 } = owl;
|
|
2660
2660
|
const isOdooCompatLoaded = __ODOO_COMPATIBILITY_LAYER_ADDED__ === true;
|
|
2661
2661
|
var _Component = class extends OwlComponent {
|
|
2662
2662
|
env;
|
|
@@ -2701,17 +2701,17 @@ function _useLayoutEffect(effect, computeDependencies = () => [NaN]) {
|
|
|
2701
2701
|
});
|
|
2702
2702
|
onWillUnmount$1(() => cleanup && cleanup());
|
|
2703
2703
|
}
|
|
2704
|
-
var _EnvPlugin = class extends Plugin {
|
|
2704
|
+
var _EnvPlugin = class extends Plugin$1 {
|
|
2705
2705
|
static id = "__ENV__";
|
|
2706
2706
|
env = config("env") ?? {};
|
|
2707
2707
|
};
|
|
2708
2708
|
function _useEnv() {
|
|
2709
|
-
return usePlugin(_EnvPlugin).env;
|
|
2709
|
+
return usePlugin$1(_EnvPlugin).env;
|
|
2710
2710
|
}
|
|
2711
2711
|
function _useSubEnv(extension) {
|
|
2712
2712
|
const subEnv = Object.create(_useEnv());
|
|
2713
2713
|
Object.defineProperties(subEnv, Object.getOwnPropertyDescriptors(extension));
|
|
2714
|
-
providePlugins([_EnvPlugin], { env: subEnv });
|
|
2714
|
+
providePlugins$1([_EnvPlugin], { env: subEnv });
|
|
2715
2715
|
const component = _useComponent();
|
|
2716
2716
|
component.env = subEnv;
|
|
2717
2717
|
}
|
|
@@ -2848,7 +2848,7 @@ var _App = class extends OwlApp {
|
|
|
2848
2848
|
createRoot(component, config = {}) {
|
|
2849
2849
|
if (config.env) component = { [component.name]: class extends component {
|
|
2850
2850
|
constructor(node) {
|
|
2851
|
-
providePlugins([_EnvPlugin], { env: config.env });
|
|
2851
|
+
providePlugins$1([_EnvPlugin], { env: config.env });
|
|
2852
2852
|
super(node);
|
|
2853
2853
|
}
|
|
2854
2854
|
} }[component.name];
|
|
@@ -16208,6 +16208,12 @@ var Menu = class extends Component {
|
|
|
16208
16208
|
}
|
|
16209
16209
|
};
|
|
16210
16210
|
|
|
16211
|
+
//#endregion
|
|
16212
|
+
//#region src/components/popover/popover_container_owl_plugin.ts
|
|
16213
|
+
var PopoverContainerPlugin = class extends Plugin {
|
|
16214
|
+
getContainerRect = useConfig("getPopoverContainerRect");
|
|
16215
|
+
};
|
|
16216
|
+
|
|
16211
16217
|
//#endregion
|
|
16212
16218
|
//#region src/components/helpers/position_hook.ts
|
|
16213
16219
|
/**
|
|
@@ -16250,11 +16256,9 @@ function usePopoverContainer() {
|
|
|
16250
16256
|
width: 0,
|
|
16251
16257
|
height: 0
|
|
16252
16258
|
});
|
|
16253
|
-
const
|
|
16254
|
-
const spreadsheetRect = useSpreadsheetRect();
|
|
16259
|
+
const popoverContainerPlugin = usePlugin(PopoverContainerPlugin);
|
|
16255
16260
|
function updateRect() {
|
|
16256
|
-
const
|
|
16257
|
-
const newRect = "getPopoverContainerRect" in env && env.getPopoverContainerRect ? env.getPopoverContainerRect() : spreadsheetRect;
|
|
16261
|
+
const newRect = popoverContainerPlugin.getContainerRect();
|
|
16258
16262
|
container.x = newRect.x;
|
|
16259
16263
|
container.y = newRect.y;
|
|
16260
16264
|
container.width = newRect.width;
|
|
@@ -16272,7 +16276,6 @@ var Popover = class extends Component {
|
|
|
16272
16276
|
static template = "o-spreadsheet-Popover";
|
|
16273
16277
|
props = useProps({
|
|
16274
16278
|
anchorRect: types$1.Rect(),
|
|
16275
|
-
containerRect: types$1.object({}).optional(),
|
|
16276
16279
|
positioning: types$1.or([types$1.literal("top-right"), types$1.literal("bottom-left")]).optional("bottom-left"),
|
|
16277
16280
|
maxWidth: types$1.Pixel().optional(),
|
|
16278
16281
|
maxHeight: types$1.Pixel().optional(),
|
|
@@ -55513,7 +55516,7 @@ var Grid = class extends Component {
|
|
|
55513
55516
|
this.checkboxToggleStore = useStore(CheckboxToggleStore);
|
|
55514
55517
|
useStore(ArrayFormulaHighlight);
|
|
55515
55518
|
this.automaticSumStore = useLocalStore(AutomaticSumStore);
|
|
55516
|
-
|
|
55519
|
+
providePlugins([PopoverContainerPlugin], { getPopoverContainerRect: () => this.getGridRect() });
|
|
55517
55520
|
useListener(document.body, "cut", this.copy.bind(this, true));
|
|
55518
55521
|
useListener(document.body, "copy", this.copy.bind(this, false));
|
|
55519
55522
|
useListener(document.body, "paste", this.paste.bind(this));
|
|
@@ -63441,7 +63444,7 @@ var CompilationParametersBuilder = class {
|
|
|
63441
63444
|
if (rangeError) return [[rangeError]];
|
|
63442
63445
|
const sheetId = range.sheetId;
|
|
63443
63446
|
const zone = range.zone;
|
|
63444
|
-
const _zone =
|
|
63447
|
+
const _zone = this.getters.clipRangeToSheet(range)?.zone;
|
|
63445
63448
|
if (!_zone) return [[]];
|
|
63446
63449
|
const { top, left, bottom, right } = zone;
|
|
63447
63450
|
const cacheKey = `${sheetId}-${top}-${left}-${bottom}-${right}`;
|
|
@@ -64431,10 +64434,10 @@ var Evaluator = class {
|
|
|
64431
64434
|
updateDependencies(position) {
|
|
64432
64435
|
this.formulaDependencies().removeAllDependencies(position);
|
|
64433
64436
|
const dependencies = this.getDirectDependencies(position);
|
|
64434
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64437
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64435
64438
|
}
|
|
64436
64439
|
addDependencies(position, dependencies) {
|
|
64437
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64440
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64438
64441
|
this.computeDependencies(dependencies);
|
|
64439
64442
|
}
|
|
64440
64443
|
computeDependencies(dependencies) {
|
|
@@ -64507,7 +64510,8 @@ var Evaluator = class {
|
|
|
64507
64510
|
const graph = new FormulaDependencyGraph();
|
|
64508
64511
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) if (cell.isFormula) {
|
|
64509
64512
|
const cellPosition = this.getters.getCellPosition(cell.id);
|
|
64510
|
-
|
|
64513
|
+
const dependencies = this.getters.clipRangesToSheet(cell.compiledFormula.rangeDependencies);
|
|
64514
|
+
graph.addDependencies(cellPosition, dependencies);
|
|
64511
64515
|
}
|
|
64512
64516
|
return graph;
|
|
64513
64517
|
});
|
|
@@ -72653,7 +72657,7 @@ var SpreadsheetDashboard = class extends Component {
|
|
|
72653
72657
|
this.zoomStore = useStore(ZoomStore);
|
|
72654
72658
|
useLocalStore(HoveredTableStore);
|
|
72655
72659
|
const rendererStore = useLocalStore(RendererStore, OrderedLayers().filter((layer) => layer !== "Headers"));
|
|
72656
|
-
|
|
72660
|
+
providePlugins([PopoverContainerPlugin], { getPopoverContainerRect: () => this.zoomStore.getZoomedRect(this.getGridRect()) });
|
|
72657
72661
|
useGridDrawing({
|
|
72658
72662
|
canvasRef: this.canvasRef,
|
|
72659
72663
|
rendererStore,
|
|
@@ -75028,6 +75032,7 @@ var Spreadsheet = class extends Component {
|
|
|
75028
75032
|
stores.inject(ModelStore, this.model);
|
|
75029
75033
|
this.viewStore = useStore(ViewportsStore);
|
|
75030
75034
|
this.zoomStore = useStore(ZoomStore);
|
|
75035
|
+
providePlugins([PopoverContainerPlugin], { getPopoverContainerRect: () => getElBoundingRect(this.spreadsheetRef()) });
|
|
75031
75036
|
const env = this.env;
|
|
75032
75037
|
stores.get(ScreenWidthStore).setSmallThreshhold(() => {
|
|
75033
75038
|
return env.isSmall;
|
|
@@ -76070,6 +76075,8 @@ var RangeAdapterPlugin = class {
|
|
|
76070
76075
|
"extendRange",
|
|
76071
76076
|
"getRangeString",
|
|
76072
76077
|
"getRangeFromSheetXC",
|
|
76078
|
+
"clipRangesToSheet",
|
|
76079
|
+
"clipRangeToSheet",
|
|
76073
76080
|
"createAdaptedRanges",
|
|
76074
76081
|
"getRangeData",
|
|
76075
76082
|
"getRangeDataFromXc",
|
|
@@ -76108,6 +76115,22 @@ var RangeAdapterPlugin = class {
|
|
|
76108
76115
|
addRangeProvider(provider) {
|
|
76109
76116
|
this.providers.push(provider);
|
|
76110
76117
|
}
|
|
76118
|
+
clipRangeToSheet(range) {
|
|
76119
|
+
if (range.invalidXc) return range;
|
|
76120
|
+
const sheetZone = this.getters.getSheetZone(range.sheetId);
|
|
76121
|
+
if (isZoneInside(range.zone, sheetZone)) return range;
|
|
76122
|
+
const newZone = intersection(range.zone, sheetZone);
|
|
76123
|
+
if (!newZone) return;
|
|
76124
|
+
return this.getters.getRangeFromZone(range.sheetId, newZone);
|
|
76125
|
+
}
|
|
76126
|
+
clipRangesToSheet(ranges) {
|
|
76127
|
+
const clippedRanges = [];
|
|
76128
|
+
for (const range of ranges) {
|
|
76129
|
+
const clippedRange = this.clipRangeToSheet(range);
|
|
76130
|
+
if (clippedRange) clippedRanges.push(clippedRange);
|
|
76131
|
+
}
|
|
76132
|
+
return clippedRanges;
|
|
76133
|
+
}
|
|
76111
76134
|
createAdaptedRanges(ranges, offsetX, offsetY, sheetId) {
|
|
76112
76135
|
return ranges.map((range) => {
|
|
76113
76136
|
if (!isZoneValid(range.zone)) return range;
|
|
@@ -91145,6 +91168,6 @@ const chartHelpers = {
|
|
|
91145
91168
|
//#endregion
|
|
91146
91169
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, BadExpressionError, CHART_TYPES, CellErrorType, CellValueType, CircularDependencyError, ClientDisconnectedError, ClipboardMIMEType, CommandResult, CompiledFormula, CorePlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DEFAULT_LOCALE_DIGIT_GROUPING, DIRECTION, DispatchResult, DivisionByZeroError, EvaluationError, EvaluationPlugin, InvalidReferenceError, LocalTransportService, Model, NEXT_VALUE, NotAvailableError, NumberTooLargeError, OrderedLayers, PREVIOUS_VALUE, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, SplillBlockedError, Spreadsheet, SpreadsheetPivotTable, UIPlugin, UnknownFunctionError, __info__, addFunction, addRenderingLayer, astToFormula, availableConditionalFormatOperators, availableDataValidationOperators, availableFiltersOperators, borderPositions, borderStyles, canExecuteInReadonly, categories, chartHelpers, compatibility, components, composerFocusTypes, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, dispatcheableEvaluationCommandTypes, errorTypes, evaluationCommandTypes, filterDateCriterionOperators, filterNumberCriterionOperators, filterTextCriterionOperators, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidSubtotalFormulasCommands, invalidateBordersCommands, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isDispatcheableEvaluationCommand, isEvaluationCommand, isHeadersDependant, isMatrix, isPositionDependent, isRangeDependant, isSheetDependent, isTargetDependent, isZoneDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, schemeToColorScale, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
91147
91170
|
|
|
91148
|
-
__info__.version = "19.5.0-alpha.
|
|
91149
|
-
__info__.date = "2026-09-
|
|
91150
|
-
__info__.hash = "
|
|
91171
|
+
__info__.version = "19.5.0-alpha.17";
|
|
91172
|
+
__info__.date = "2026-09-07T05:58:42.129Z";
|
|
91173
|
+
__info__.hash = "532243c";
|
|
@@ -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];
|
|
@@ -16210,6 +16210,12 @@ set(value) {
|
|
|
16210
16210
|
}
|
|
16211
16211
|
};
|
|
16212
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
|
+
|
|
16213
16219
|
//#endregion
|
|
16214
16220
|
//#region src/components/helpers/position_hook.ts
|
|
16215
16221
|
/**
|
|
@@ -16252,11 +16258,9 @@ set(value) {
|
|
|
16252
16258
|
width: 0,
|
|
16253
16259
|
height: 0
|
|
16254
16260
|
});
|
|
16255
|
-
const
|
|
16256
|
-
const spreadsheetRect = useSpreadsheetRect();
|
|
16261
|
+
const popoverContainerPlugin = (0, _odoo_owl.usePlugin)(PopoverContainerPlugin);
|
|
16257
16262
|
function updateRect() {
|
|
16258
|
-
const
|
|
16259
|
-
const newRect = "getPopoverContainerRect" in env && env.getPopoverContainerRect ? env.getPopoverContainerRect() : spreadsheetRect;
|
|
16263
|
+
const newRect = popoverContainerPlugin.getContainerRect();
|
|
16260
16264
|
container.x = newRect.x;
|
|
16261
16265
|
container.y = newRect.y;
|
|
16262
16266
|
container.width = newRect.width;
|
|
@@ -16274,7 +16278,6 @@ set(value) {
|
|
|
16274
16278
|
static template = "o-spreadsheet-Popover";
|
|
16275
16279
|
props = (0, _odoo_owl.useProps)({
|
|
16276
16280
|
anchorRect: types.Rect(),
|
|
16277
|
-
containerRect: types.object({}).optional(),
|
|
16278
16281
|
positioning: types.or([types.literal("top-right"), types.literal("bottom-left")]).optional("bottom-left"),
|
|
16279
16282
|
maxWidth: types.Pixel().optional(),
|
|
16280
16283
|
maxHeight: types.Pixel().optional(),
|
|
@@ -55515,7 +55518,7 @@ set(value) {
|
|
|
55515
55518
|
this.checkboxToggleStore = useStore(CheckboxToggleStore);
|
|
55516
55519
|
useStore(ArrayFormulaHighlight);
|
|
55517
55520
|
this.automaticSumStore = useLocalStore(AutomaticSumStore);
|
|
55518
|
-
|
|
55521
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.getGridRect() });
|
|
55519
55522
|
(0, _odoo_owl.useListener)(document.body, "cut", this.copy.bind(this, true));
|
|
55520
55523
|
(0, _odoo_owl.useListener)(document.body, "copy", this.copy.bind(this, false));
|
|
55521
55524
|
(0, _odoo_owl.useListener)(document.body, "paste", this.paste.bind(this));
|
|
@@ -63443,7 +63446,7 @@ set(value) {
|
|
|
63443
63446
|
if (rangeError) return [[rangeError]];
|
|
63444
63447
|
const sheetId = range.sheetId;
|
|
63445
63448
|
const zone = range.zone;
|
|
63446
|
-
const _zone =
|
|
63449
|
+
const _zone = this.getters.clipRangeToSheet(range)?.zone;
|
|
63447
63450
|
if (!_zone) return [[]];
|
|
63448
63451
|
const { top, left, bottom, right } = zone;
|
|
63449
63452
|
const cacheKey = `${sheetId}-${top}-${left}-${bottom}-${right}`;
|
|
@@ -64433,10 +64436,10 @@ set(value) {
|
|
|
64433
64436
|
updateDependencies(position) {
|
|
64434
64437
|
this.formulaDependencies().removeAllDependencies(position);
|
|
64435
64438
|
const dependencies = this.getDirectDependencies(position);
|
|
64436
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64439
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64437
64440
|
}
|
|
64438
64441
|
addDependencies(position, dependencies) {
|
|
64439
|
-
this.formulaDependencies().addDependencies(position, dependencies);
|
|
64442
|
+
this.formulaDependencies().addDependencies(position, this.getters.clipRangesToSheet(dependencies));
|
|
64440
64443
|
this.computeDependencies(dependencies);
|
|
64441
64444
|
}
|
|
64442
64445
|
computeDependencies(dependencies) {
|
|
@@ -64509,7 +64512,8 @@ set(value) {
|
|
|
64509
64512
|
const graph = new FormulaDependencyGraph();
|
|
64510
64513
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) if (cell.isFormula) {
|
|
64511
64514
|
const cellPosition = this.getters.getCellPosition(cell.id);
|
|
64512
|
-
|
|
64515
|
+
const dependencies = this.getters.clipRangesToSheet(cell.compiledFormula.rangeDependencies);
|
|
64516
|
+
graph.addDependencies(cellPosition, dependencies);
|
|
64513
64517
|
}
|
|
64514
64518
|
return graph;
|
|
64515
64519
|
});
|
|
@@ -72655,7 +72659,7 @@ set(value) {
|
|
|
72655
72659
|
this.zoomStore = useStore(ZoomStore);
|
|
72656
72660
|
useLocalStore(HoveredTableStore);
|
|
72657
72661
|
const rendererStore = useLocalStore(RendererStore, OrderedLayers().filter((layer) => layer !== "Headers"));
|
|
72658
|
-
|
|
72662
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => this.zoomStore.getZoomedRect(this.getGridRect()) });
|
|
72659
72663
|
useGridDrawing({
|
|
72660
72664
|
canvasRef: this.canvasRef,
|
|
72661
72665
|
rendererStore,
|
|
@@ -75030,6 +75034,7 @@ set(value) {
|
|
|
75030
75034
|
stores.inject(ModelStore, this.model);
|
|
75031
75035
|
this.viewStore = useStore(ViewportsStore);
|
|
75032
75036
|
this.zoomStore = useStore(ZoomStore);
|
|
75037
|
+
(0, _odoo_owl.providePlugins)([PopoverContainerPlugin], { getPopoverContainerRect: () => getElBoundingRect(this.spreadsheetRef()) });
|
|
75033
75038
|
const env = this.env;
|
|
75034
75039
|
stores.get(ScreenWidthStore).setSmallThreshhold(() => {
|
|
75035
75040
|
return env.isSmall;
|
|
@@ -76072,6 +76077,8 @@ set(value) {
|
|
|
76072
76077
|
"extendRange",
|
|
76073
76078
|
"getRangeString",
|
|
76074
76079
|
"getRangeFromSheetXC",
|
|
76080
|
+
"clipRangesToSheet",
|
|
76081
|
+
"clipRangeToSheet",
|
|
76075
76082
|
"createAdaptedRanges",
|
|
76076
76083
|
"getRangeData",
|
|
76077
76084
|
"getRangeDataFromXc",
|
|
@@ -76110,6 +76117,22 @@ set(value) {
|
|
|
76110
76117
|
addRangeProvider(provider) {
|
|
76111
76118
|
this.providers.push(provider);
|
|
76112
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
|
+
}
|
|
76113
76136
|
createAdaptedRanges(ranges, offsetX, offsetY, sheetId) {
|
|
76114
76137
|
return ranges.map((range) => {
|
|
76115
76138
|
if (!isZoneValid(range.zone)) return range;
|
|
@@ -91245,8 +91268,8 @@ exports.stores = stores;
|
|
|
91245
91268
|
exports.tokenColors = tokenColors;
|
|
91246
91269
|
exports.tokenize = tokenize;
|
|
91247
91270
|
|
|
91248
|
-
__info__.version = "19.5.0-alpha.
|
|
91249
|
-
__info__.date = "2026-09-
|
|
91250
|
-
__info__.hash = "
|
|
91271
|
+
__info__.version = "19.5.0-alpha.17";
|
|
91272
|
+
__info__.date = "2026-09-07T05:58:42.129Z";
|
|
91273
|
+
__info__.hash = "532243c";
|
|
91251
91274
|
|
|
91252
91275
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|