@odoo/o-spreadsheet 18.0.79 → 18.0.81
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.
|
@@ -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 18.0.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.0.81
|
|
6
|
+
* @date 2026-09-04T07:02:59.688Z
|
|
7
|
+
* @hash a952c0c
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { Component, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, xml } from "@odoo/owl";
|
|
@@ -31699,12 +31699,48 @@ var TopBarComponentRegistry = class extends Registry {
|
|
|
31699
31699
|
const topbarComponentRegistry = new TopBarComponentRegistry();
|
|
31700
31700
|
|
|
31701
31701
|
//#endregion
|
|
31702
|
-
//#region src/components/
|
|
31702
|
+
//#region src/components/icons/raw_svgs.ts
|
|
31703
|
+
/**
|
|
31704
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
31705
|
+
*
|
|
31706
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
31707
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
31708
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
31709
|
+
* because it relies on regular expressions.
|
|
31710
|
+
*
|
|
31711
|
+
* Do not inline these constants.
|
|
31712
|
+
*/
|
|
31703
31713
|
const CHECK_SVG = `
|
|
31704
31714
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
31705
31715
|
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
31706
31716
|
</svg>
|
|
31707
31717
|
`;
|
|
31718
|
+
const CIRCLE_SVG = `
|
|
31719
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
31720
|
+
<circle r="2" fill="#FFF"/>
|
|
31721
|
+
</svg>
|
|
31722
|
+
`;
|
|
31723
|
+
const FX_SVG = `
|
|
31724
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
|
|
31725
|
+
<path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
|
|
31726
|
+
</svg>
|
|
31727
|
+
`;
|
|
31728
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
31729
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31730
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31731
|
+
</svg>
|
|
31732
|
+
`;
|
|
31733
|
+
const CURSOR_SVG = `
|
|
31734
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
31735
|
+
`;
|
|
31736
|
+
const CARET_DOWN_SVG = `
|
|
31737
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
31738
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
31739
|
+
</svg>
|
|
31740
|
+
`;
|
|
31741
|
+
|
|
31742
|
+
//#endregion
|
|
31743
|
+
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
31708
31744
|
const CHECKBOX_WIDTH = 14;
|
|
31709
31745
|
css`
|
|
31710
31746
|
label.o-checkbox {
|
|
@@ -32564,14 +32600,16 @@ css`
|
|
|
32564
32600
|
border-radius: 8px;
|
|
32565
32601
|
|
|
32566
32602
|
&:checked {
|
|
32567
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
32568
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
32569
|
-
<circle r="2" fill="#FFF"/>
|
|
32570
|
-
</svg>
|
|
32571
|
-
`)}");
|
|
32603
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
32572
32604
|
background-color: ${ACTION_COLOR};
|
|
32573
32605
|
border-color: ${ACTION_COLOR};
|
|
32574
32606
|
}
|
|
32607
|
+
|
|
32608
|
+
&:focus {
|
|
32609
|
+
outline: none;
|
|
32610
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
32611
|
+
border-color: ${ACTION_COLOR};
|
|
32612
|
+
}
|
|
32575
32613
|
}
|
|
32576
32614
|
}
|
|
32577
32615
|
`;
|
|
@@ -33162,11 +33200,7 @@ css`
|
|
|
33162
33200
|
cursor: pointer;
|
|
33163
33201
|
border: 1px solid ${GRAY_300};
|
|
33164
33202
|
background-position: 1px 1px;
|
|
33165
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
33166
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
33167
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
33168
|
-
</svg>
|
|
33169
|
-
`)}");
|
|
33203
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
33170
33204
|
}
|
|
33171
33205
|
`;
|
|
33172
33206
|
var RoundColorPicker = class extends Component {
|
|
@@ -40036,7 +40070,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
40036
40070
|
}
|
|
40037
40071
|
onSelectionChanged(ranges) {
|
|
40038
40072
|
this.state.rangeHasChanged = true;
|
|
40039
|
-
|
|
40073
|
+
if (ranges.length === 0) {
|
|
40074
|
+
this.state.range = void 0;
|
|
40075
|
+
return;
|
|
40076
|
+
}
|
|
40077
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
40078
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
40079
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
40040
40080
|
}
|
|
40041
40081
|
onSelectionConfirmed() {
|
|
40042
40082
|
if (this.state.range) {
|
|
@@ -43252,9 +43292,7 @@ var PaintFormatStore = class extends SpreadsheetStore {
|
|
|
43252
43292
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
43253
43293
|
css`
|
|
43254
43294
|
.o-paint-format-cursor {
|
|
43255
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
43256
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
43257
|
-
`)}"), auto;
|
|
43295
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
43258
43296
|
}
|
|
43259
43297
|
`;
|
|
43260
43298
|
function useCellHovered(env, gridRef, callback) {
|
|
@@ -51558,6 +51596,16 @@ var FormulaDependencyGraph = class {
|
|
|
51558
51596
|
getCellsDependingOn(ranges, ignore) {
|
|
51559
51597
|
const visited = this.createEmptyPositionSet();
|
|
51560
51598
|
const queue = Array.from(ranges).reverse();
|
|
51599
|
+
const initialPositionsToRemove = this.createEmptyPositionSet();
|
|
51600
|
+
for (const range of ranges) {
|
|
51601
|
+
const zone = range.zone;
|
|
51602
|
+
const sheetId = range.sheetId;
|
|
51603
|
+
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) initialPositionsToRemove.add({
|
|
51604
|
+
sheetId,
|
|
51605
|
+
col,
|
|
51606
|
+
row
|
|
51607
|
+
});
|
|
51608
|
+
}
|
|
51561
51609
|
while (queue.length > 0) {
|
|
51562
51610
|
const range = queue.pop();
|
|
51563
51611
|
const zone = range.zone;
|
|
@@ -51569,9 +51617,13 @@ var FormulaDependencyGraph = class {
|
|
|
51569
51617
|
});
|
|
51570
51618
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
51571
51619
|
const nextInQueue = {};
|
|
51572
|
-
for (const position of impactedPositions)
|
|
51573
|
-
if (
|
|
51574
|
-
|
|
51620
|
+
for (const position of impactedPositions) {
|
|
51621
|
+
if (ignore.has(position)) continue;
|
|
51622
|
+
initialPositionsToRemove.delete(position);
|
|
51623
|
+
if (!visited.has(position)) {
|
|
51624
|
+
if (!nextInQueue[position.sheetId]) nextInQueue[position.sheetId] = [];
|
|
51625
|
+
nextInQueue[position.sheetId].push(positionToZone(position));
|
|
51626
|
+
}
|
|
51575
51627
|
}
|
|
51576
51628
|
for (const sheetId in nextInQueue) {
|
|
51577
51629
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -51581,15 +51633,7 @@ var FormulaDependencyGraph = class {
|
|
|
51581
51633
|
})));
|
|
51582
51634
|
}
|
|
51583
51635
|
}
|
|
51584
|
-
for (const
|
|
51585
|
-
const zone = range.zone;
|
|
51586
|
-
const sheetId = range.sheetId;
|
|
51587
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
51588
|
-
sheetId,
|
|
51589
|
-
col,
|
|
51590
|
-
row
|
|
51591
|
-
});
|
|
51592
|
-
}
|
|
51636
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
51593
51637
|
return visited;
|
|
51594
51638
|
}
|
|
51595
51639
|
};
|
|
@@ -58687,8 +58731,8 @@ var InternalViewport = class {
|
|
|
58687
58731
|
const { end: lastRowEnd, size: lastRowSize } = this.getters.getRowDimensions(this.sheetId, lastRow);
|
|
58688
58732
|
const leftColIndex = this.searchHeaderIndex("COL", lastColEnd - this.viewportWidth, 0);
|
|
58689
58733
|
const leftColSize = this.getters.getColSize(this.sheetId, leftColIndex);
|
|
58690
|
-
const
|
|
58691
|
-
const topRowSize = this.getters.getRowSize(this.sheetId,
|
|
58734
|
+
const topRowIndex = this.searchHeaderIndex("ROW", lastRowEnd - this.viewportHeight, 0);
|
|
58735
|
+
const topRowSize = this.getters.getRowSize(this.sheetId, topRowIndex);
|
|
58692
58736
|
let width = lastColEnd - this.offsetCorrectionX;
|
|
58693
58737
|
if (this.canScrollHorizontally) {
|
|
58694
58738
|
width += Math.max(96, Math.min(leftColSize, this.viewportWidth - lastColSize));
|
|
@@ -58866,7 +58910,11 @@ var InternalViewport = class {
|
|
|
58866
58910
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
58867
58911
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
58868
58912
|
if (!this.viewportWidth) return;
|
|
58869
|
-
if (this.left === -1)
|
|
58913
|
+
if (this.left === -1) {
|
|
58914
|
+
const colsHeight = this.getters.getColRowOffset("COL", this.boundaries.left, this.boundaries.right);
|
|
58915
|
+
if (0 < colsHeight && colsHeight <= this.offsetScrollbarX) this.left = this.boundaries.right;
|
|
58916
|
+
else this.left = this.boundaries.left;
|
|
58917
|
+
}
|
|
58870
58918
|
if (this.right === -1) this.right = this.boundaries.right;
|
|
58871
58919
|
this.offsetX = this.getters.getColDimensions(sheetId, this.left).start - this.getters.getColDimensions(sheetId, this.boundaries.left).start;
|
|
58872
58920
|
}
|
|
@@ -58877,7 +58925,11 @@ var InternalViewport = class {
|
|
|
58877
58925
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
58878
58926
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
58879
58927
|
if (!this.viewportHeight) return;
|
|
58880
|
-
if (this.top === -1)
|
|
58928
|
+
if (this.top === -1) {
|
|
58929
|
+
const rowsHeight = this.getters.getColRowOffset("ROW", this.boundaries.top, this.boundaries.bottom);
|
|
58930
|
+
if (0 < rowsHeight && rowsHeight <= this.offsetScrollbarY) this.top = this.boundaries.bottom;
|
|
58931
|
+
else this.top = this.boundaries.top;
|
|
58932
|
+
}
|
|
58881
58933
|
if (this.bottom === -1) this.bottom = this.boundaries.bottom;
|
|
58882
58934
|
this.offsetY = this.getters.getRowDimensions(sheetId, this.top).start - this.getters.getRowDimensions(sheetId, this.boundaries.top).start;
|
|
58883
58935
|
}
|
|
@@ -60665,6 +60717,9 @@ css`
|
|
|
60665
60717
|
position: absolute;
|
|
60666
60718
|
cursor: pointer;
|
|
60667
60719
|
}
|
|
60720
|
+
.o-grid.o-dashboard-grid {
|
|
60721
|
+
background: #ffffff;
|
|
60722
|
+
}
|
|
60668
60723
|
`;
|
|
60669
60724
|
var SpreadsheetDashboard = class extends Component {
|
|
60670
60725
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -61500,11 +61555,7 @@ css`
|
|
|
61500
61555
|
/* In readonly we always show the fx icon if the composer is empty, not matter the focus */
|
|
61501
61556
|
.o-composer:empty:not(:focus):not(.active)::before,
|
|
61502
61557
|
&.o-topbar-composer-readonly .o-composer:empty::before {
|
|
61503
|
-
content: url("data:image/svg+xml,${encodeURIComponent(
|
|
61504
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
|
|
61505
|
-
<path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
|
|
61506
|
-
</svg>
|
|
61507
|
-
`)}");
|
|
61558
|
+
content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
|
|
61508
61559
|
position: relative;
|
|
61509
61560
|
top: 20%;
|
|
61510
61561
|
}
|
|
@@ -62096,11 +62147,7 @@ css`
|
|
|
62096
62147
|
appearance: none;
|
|
62097
62148
|
-webkit-appearance: none;
|
|
62098
62149
|
-moz-appearance: none;
|
|
62099
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
62100
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
62101
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
62102
|
-
</svg>
|
|
62103
|
-
`)}")
|
|
62150
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
62104
62151
|
no-repeat right center;
|
|
62105
62152
|
text-overflow: ellipsis;
|
|
62106
62153
|
|
|
@@ -66403,6 +66450,6 @@ const constants = {
|
|
|
66403
66450
|
//#endregion
|
|
66404
66451
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
66405
66452
|
|
|
66406
|
-
__info__.version = "18.0.
|
|
66407
|
-
__info__.date = "2026-
|
|
66408
|
-
__info__.hash = "
|
|
66453
|
+
__info__.version = "18.0.81";
|
|
66454
|
+
__info__.date = "2026-09-04T07:02:59.688Z";
|
|
66455
|
+
__info__.hash = "a952c0c";
|
|
@@ -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 18.0.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.0.81
|
|
6
|
+
* @date 2026-09-04T07:02:59.688Z
|
|
7
|
+
* @hash a952c0c
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -31701,12 +31701,48 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31701
31701
|
const topbarComponentRegistry = new TopBarComponentRegistry();
|
|
31702
31702
|
|
|
31703
31703
|
//#endregion
|
|
31704
|
-
//#region src/components/
|
|
31704
|
+
//#region src/components/icons/raw_svgs.ts
|
|
31705
|
+
/**
|
|
31706
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
31707
|
+
*
|
|
31708
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
31709
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
31710
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
31711
|
+
* because it relies on regular expressions.
|
|
31712
|
+
*
|
|
31713
|
+
* Do not inline these constants.
|
|
31714
|
+
*/
|
|
31705
31715
|
const CHECK_SVG = `
|
|
31706
31716
|
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
31707
31717
|
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
31708
31718
|
</svg>
|
|
31709
31719
|
`;
|
|
31720
|
+
const CIRCLE_SVG = `
|
|
31721
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
31722
|
+
<circle r="2" fill="#FFF"/>
|
|
31723
|
+
</svg>
|
|
31724
|
+
`;
|
|
31725
|
+
const FX_SVG = `
|
|
31726
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
|
|
31727
|
+
<path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
|
|
31728
|
+
</svg>
|
|
31729
|
+
`;
|
|
31730
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
31731
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31732
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31733
|
+
</svg>
|
|
31734
|
+
`;
|
|
31735
|
+
const CURSOR_SVG = `
|
|
31736
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
31737
|
+
`;
|
|
31738
|
+
const CARET_DOWN_SVG = `
|
|
31739
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
31740
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
31741
|
+
</svg>
|
|
31742
|
+
`;
|
|
31743
|
+
|
|
31744
|
+
//#endregion
|
|
31745
|
+
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
31710
31746
|
const CHECKBOX_WIDTH = 14;
|
|
31711
31747
|
css`
|
|
31712
31748
|
label.o-checkbox {
|
|
@@ -32566,14 +32602,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32566
32602
|
border-radius: 8px;
|
|
32567
32603
|
|
|
32568
32604
|
&:checked {
|
|
32569
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
32570
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
32571
|
-
<circle r="2" fill="#FFF"/>
|
|
32572
|
-
</svg>
|
|
32573
|
-
`)}");
|
|
32605
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
32574
32606
|
background-color: ${ACTION_COLOR};
|
|
32575
32607
|
border-color: ${ACTION_COLOR};
|
|
32576
32608
|
}
|
|
32609
|
+
|
|
32610
|
+
&:focus {
|
|
32611
|
+
outline: none;
|
|
32612
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
32613
|
+
border-color: ${ACTION_COLOR};
|
|
32614
|
+
}
|
|
32577
32615
|
}
|
|
32578
32616
|
}
|
|
32579
32617
|
`;
|
|
@@ -33164,11 +33202,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
33164
33202
|
cursor: pointer;
|
|
33165
33203
|
border: 1px solid ${GRAY_300};
|
|
33166
33204
|
background-position: 1px 1px;
|
|
33167
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
33168
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
33169
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
33170
|
-
</svg>
|
|
33171
|
-
`)}");
|
|
33205
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
33172
33206
|
}
|
|
33173
33207
|
`;
|
|
33174
33208
|
var RoundColorPicker = class extends _odoo_owl.Component {
|
|
@@ -40038,7 +40072,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
40038
40072
|
}
|
|
40039
40073
|
onSelectionChanged(ranges) {
|
|
40040
40074
|
this.state.rangeHasChanged = true;
|
|
40041
|
-
|
|
40075
|
+
if (ranges.length === 0) {
|
|
40076
|
+
this.state.range = void 0;
|
|
40077
|
+
return;
|
|
40078
|
+
}
|
|
40079
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
40080
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
40081
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
40042
40082
|
}
|
|
40043
40083
|
onSelectionConfirmed() {
|
|
40044
40084
|
if (this.state.range) {
|
|
@@ -43254,9 +43294,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
43254
43294
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
43255
43295
|
css`
|
|
43256
43296
|
.o-paint-format-cursor {
|
|
43257
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
43258
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
43259
|
-
`)}"), auto;
|
|
43297
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
43260
43298
|
}
|
|
43261
43299
|
`;
|
|
43262
43300
|
function useCellHovered(env, gridRef, callback) {
|
|
@@ -51560,6 +51598,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
51560
51598
|
getCellsDependingOn(ranges, ignore) {
|
|
51561
51599
|
const visited = this.createEmptyPositionSet();
|
|
51562
51600
|
const queue = Array.from(ranges).reverse();
|
|
51601
|
+
const initialPositionsToRemove = this.createEmptyPositionSet();
|
|
51602
|
+
for (const range of ranges) {
|
|
51603
|
+
const zone = range.zone;
|
|
51604
|
+
const sheetId = range.sheetId;
|
|
51605
|
+
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) initialPositionsToRemove.add({
|
|
51606
|
+
sheetId,
|
|
51607
|
+
col,
|
|
51608
|
+
row
|
|
51609
|
+
});
|
|
51610
|
+
}
|
|
51563
51611
|
while (queue.length > 0) {
|
|
51564
51612
|
const range = queue.pop();
|
|
51565
51613
|
const zone = range.zone;
|
|
@@ -51571,9 +51619,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
51571
51619
|
});
|
|
51572
51620
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
51573
51621
|
const nextInQueue = {};
|
|
51574
|
-
for (const position of impactedPositions)
|
|
51575
|
-
if (
|
|
51576
|
-
|
|
51622
|
+
for (const position of impactedPositions) {
|
|
51623
|
+
if (ignore.has(position)) continue;
|
|
51624
|
+
initialPositionsToRemove.delete(position);
|
|
51625
|
+
if (!visited.has(position)) {
|
|
51626
|
+
if (!nextInQueue[position.sheetId]) nextInQueue[position.sheetId] = [];
|
|
51627
|
+
nextInQueue[position.sheetId].push(positionToZone(position));
|
|
51628
|
+
}
|
|
51577
51629
|
}
|
|
51578
51630
|
for (const sheetId in nextInQueue) {
|
|
51579
51631
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -51583,15 +51635,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
51583
51635
|
})));
|
|
51584
51636
|
}
|
|
51585
51637
|
}
|
|
51586
|
-
for (const
|
|
51587
|
-
const zone = range.zone;
|
|
51588
|
-
const sheetId = range.sheetId;
|
|
51589
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
51590
|
-
sheetId,
|
|
51591
|
-
col,
|
|
51592
|
-
row
|
|
51593
|
-
});
|
|
51594
|
-
}
|
|
51638
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
51595
51639
|
return visited;
|
|
51596
51640
|
}
|
|
51597
51641
|
};
|
|
@@ -58689,8 +58733,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58689
58733
|
const { end: lastRowEnd, size: lastRowSize } = this.getters.getRowDimensions(this.sheetId, lastRow);
|
|
58690
58734
|
const leftColIndex = this.searchHeaderIndex("COL", lastColEnd - this.viewportWidth, 0);
|
|
58691
58735
|
const leftColSize = this.getters.getColSize(this.sheetId, leftColIndex);
|
|
58692
|
-
const
|
|
58693
|
-
const topRowSize = this.getters.getRowSize(this.sheetId,
|
|
58736
|
+
const topRowIndex = this.searchHeaderIndex("ROW", lastRowEnd - this.viewportHeight, 0);
|
|
58737
|
+
const topRowSize = this.getters.getRowSize(this.sheetId, topRowIndex);
|
|
58694
58738
|
let width = lastColEnd - this.offsetCorrectionX;
|
|
58695
58739
|
if (this.canScrollHorizontally) {
|
|
58696
58740
|
width += Math.max(96, Math.min(leftColSize, this.viewportWidth - lastColSize));
|
|
@@ -58868,7 +58912,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58868
58912
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
58869
58913
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
58870
58914
|
if (!this.viewportWidth) return;
|
|
58871
|
-
if (this.left === -1)
|
|
58915
|
+
if (this.left === -1) {
|
|
58916
|
+
const colsHeight = this.getters.getColRowOffset("COL", this.boundaries.left, this.boundaries.right);
|
|
58917
|
+
if (0 < colsHeight && colsHeight <= this.offsetScrollbarX) this.left = this.boundaries.right;
|
|
58918
|
+
else this.left = this.boundaries.left;
|
|
58919
|
+
}
|
|
58872
58920
|
if (this.right === -1) this.right = this.boundaries.right;
|
|
58873
58921
|
this.offsetX = this.getters.getColDimensions(sheetId, this.left).start - this.getters.getColDimensions(sheetId, this.boundaries.left).start;
|
|
58874
58922
|
}
|
|
@@ -58879,7 +58927,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58879
58927
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
58880
58928
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
58881
58929
|
if (!this.viewportHeight) return;
|
|
58882
|
-
if (this.top === -1)
|
|
58930
|
+
if (this.top === -1) {
|
|
58931
|
+
const rowsHeight = this.getters.getColRowOffset("ROW", this.boundaries.top, this.boundaries.bottom);
|
|
58932
|
+
if (0 < rowsHeight && rowsHeight <= this.offsetScrollbarY) this.top = this.boundaries.bottom;
|
|
58933
|
+
else this.top = this.boundaries.top;
|
|
58934
|
+
}
|
|
58883
58935
|
if (this.bottom === -1) this.bottom = this.boundaries.bottom;
|
|
58884
58936
|
this.offsetY = this.getters.getRowDimensions(sheetId, this.top).start - this.getters.getRowDimensions(sheetId, this.boundaries.top).start;
|
|
58885
58937
|
}
|
|
@@ -60667,6 +60719,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60667
60719
|
position: absolute;
|
|
60668
60720
|
cursor: pointer;
|
|
60669
60721
|
}
|
|
60722
|
+
.o-grid.o-dashboard-grid {
|
|
60723
|
+
background: #ffffff;
|
|
60724
|
+
}
|
|
60670
60725
|
`;
|
|
60671
60726
|
var SpreadsheetDashboard = class extends _odoo_owl.Component {
|
|
60672
60727
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -61502,11 +61557,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61502
61557
|
/* In readonly we always show the fx icon if the composer is empty, not matter the focus */
|
|
61503
61558
|
.o-composer:empty:not(:focus):not(.active)::before,
|
|
61504
61559
|
&.o-topbar-composer-readonly .o-composer:empty::before {
|
|
61505
|
-
content: url("data:image/svg+xml,${encodeURIComponent(
|
|
61506
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
|
|
61507
|
-
<path d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='#BDBDBD'/>
|
|
61508
|
-
</svg>
|
|
61509
|
-
`)}");
|
|
61560
|
+
content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
|
|
61510
61561
|
position: relative;
|
|
61511
61562
|
top: 20%;
|
|
61512
61563
|
}
|
|
@@ -62098,11 +62149,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62098
62149
|
appearance: none;
|
|
62099
62150
|
-webkit-appearance: none;
|
|
62100
62151
|
-moz-appearance: none;
|
|
62101
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
62102
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
62103
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
62104
|
-
</svg>
|
|
62105
|
-
`)}")
|
|
62152
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
62106
62153
|
no-repeat right center;
|
|
62107
62154
|
text-overflow: ellipsis;
|
|
62108
62155
|
|
|
@@ -66449,8 +66496,8 @@ exports.stores = stores;
|
|
|
66449
66496
|
exports.tokenColors = tokenColors;
|
|
66450
66497
|
exports.tokenize = tokenize;
|
|
66451
66498
|
|
|
66452
|
-
__info__.version = "18.0.
|
|
66453
|
-
__info__.date = "2026-
|
|
66454
|
-
__info__.hash = "
|
|
66499
|
+
__info__.version = "18.0.81";
|
|
66500
|
+
__info__.date = "2026-09-04T07:02:59.688Z";
|
|
66501
|
+
__info__.hash = "a952c0c";
|
|
66455
66502
|
|
|
66456
66503
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|