@odoo/o-spreadsheet 19.0.4 → 19.0.5
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.js +93 -87
- package/dist/o-spreadsheet.d.ts +208 -152
- package/dist/o-spreadsheet.esm.js +93 -87
- package/dist/o-spreadsheet.iife.js +93 -87
- package/dist/o-spreadsheet.iife.min.js +216 -224
- package/dist/o_spreadsheet.xml +56 -16
- 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.0.
|
|
6
|
-
* @date 2025-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.0.5
|
|
6
|
+
* @date 2025-10-07T10:04:06.400Z
|
|
7
|
+
* @hash 86fc442
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -1384,9 +1384,7 @@ function removeIndexesFromArray(array, indexes) {
|
|
|
1384
1384
|
return newArray;
|
|
1385
1385
|
}
|
|
1386
1386
|
function insertItemsAtIndex(array, items, index) {
|
|
1387
|
-
|
|
1388
|
-
newArray.splice(index, 0, ...items);
|
|
1389
|
-
return newArray;
|
|
1387
|
+
return array.slice(0, index).concat(items).concat(array.slice(index));
|
|
1390
1388
|
}
|
|
1391
1389
|
function replaceItemAtIndex(array, newItem, index) {
|
|
1392
1390
|
const newArray = [...array];
|
|
@@ -5636,7 +5634,7 @@ function tokensToTextInternalFormat(tokens) {
|
|
|
5636
5634
|
* Replace in place tokens "mm" and "m" that denote minutes in date format with "MM" to avoid confusion with months.
|
|
5637
5635
|
*
|
|
5638
5636
|
* As per OpenXML specification, in date formats if a date token "m" or "mm" is followed by a date token "s" or
|
|
5639
|
-
* preceded by a data token "h", then it's not a month but
|
|
5637
|
+
* preceded by a data token "h", then it's not a month but a minute.
|
|
5640
5638
|
*/
|
|
5641
5639
|
function convertTokensToMinutesInDateFormat(tokens) {
|
|
5642
5640
|
const dateParts = tokens.filter((token) => token.type === "DATE_PART");
|
|
@@ -5679,6 +5677,9 @@ function internalFormatPartToFormat(internalFormat) {
|
|
|
5679
5677
|
case "REPEATED_CHAR":
|
|
5680
5678
|
format += "*" + token.value;
|
|
5681
5679
|
break;
|
|
5680
|
+
case "DATE_PART":
|
|
5681
|
+
format += token.value === "MM" ? "mm" : token.value; // Convert "MM" back to "mm" for minutes
|
|
5682
|
+
break;
|
|
5682
5683
|
default:
|
|
5683
5684
|
format += token.value;
|
|
5684
5685
|
}
|
|
@@ -24854,6 +24855,7 @@ class ScorecardChart extends owl.Component {
|
|
|
24854
24855
|
static template = "o-spreadsheet-ScorecardChart";
|
|
24855
24856
|
static props = {
|
|
24856
24857
|
chartId: String,
|
|
24858
|
+
isFullScreen: { type: Boolean, optional: true },
|
|
24857
24859
|
};
|
|
24858
24860
|
canvas = owl.useRef("chartContainer");
|
|
24859
24861
|
get runtime() {
|
|
@@ -27617,26 +27619,6 @@ function createBarChartRuntime(chart, getters) {
|
|
|
27617
27619
|
return { chartJsConfig: config, background: chart.background || BACKGROUND_CHART_COLOR };
|
|
27618
27620
|
}
|
|
27619
27621
|
|
|
27620
|
-
class FullScreenChartStore extends SpreadsheetStore {
|
|
27621
|
-
mutators = ["toggleFullScreenChart"];
|
|
27622
|
-
fullScreenFigure = undefined;
|
|
27623
|
-
toggleFullScreenChart(figureId) {
|
|
27624
|
-
if (this.fullScreenFigure?.id === figureId) {
|
|
27625
|
-
this.fullScreenFigure = undefined;
|
|
27626
|
-
}
|
|
27627
|
-
else {
|
|
27628
|
-
this.makeFullScreen(figureId);
|
|
27629
|
-
}
|
|
27630
|
-
}
|
|
27631
|
-
makeFullScreen(figureId) {
|
|
27632
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
27633
|
-
const figure = this.getters.getFigure(sheetId, figureId);
|
|
27634
|
-
if (figure) {
|
|
27635
|
-
this.fullScreenFigure = { ...figure, x: 0, y: 0, width: 0, height: 0 };
|
|
27636
|
-
}
|
|
27637
|
-
}
|
|
27638
|
-
}
|
|
27639
|
-
|
|
27640
27622
|
const TREND_LINE_AXES_IDS = [TREND_LINE_XAXIS_ID, MOVING_AVERAGE_TREND_LINE_XAXIS_ID];
|
|
27641
27623
|
const ZOOMABLE_AXIS_IDS = ["x", ...TREND_LINE_AXES_IDS];
|
|
27642
27624
|
class ZoomableChartStore extends SpreadsheetStore {
|
|
@@ -27808,7 +27790,6 @@ chartJsExtensionRegistry.add("zoomWindowPlugin", {
|
|
|
27808
27790
|
class ZoomableChartJsComponent extends ChartJsComponent {
|
|
27809
27791
|
static template = "o-spreadsheet-ZoomableChartJsComponent";
|
|
27810
27792
|
store;
|
|
27811
|
-
fullScreenChartStore;
|
|
27812
27793
|
masterChartCanvas = owl.useRef("masterChartCanvas");
|
|
27813
27794
|
masterChart;
|
|
27814
27795
|
mode;
|
|
@@ -27819,7 +27800,6 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
27819
27800
|
removeEventListeners = () => { };
|
|
27820
27801
|
setup() {
|
|
27821
27802
|
this.store = useStore(ZoomableChartStore);
|
|
27822
|
-
this.fullScreenChartStore = useStore(FullScreenChartStore);
|
|
27823
27803
|
super.setup();
|
|
27824
27804
|
}
|
|
27825
27805
|
unmount() {
|
|
@@ -27834,12 +27814,8 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
27834
27814
|
`;
|
|
27835
27815
|
}
|
|
27836
27816
|
get sliceable() {
|
|
27837
|
-
if (this.
|
|
27838
|
-
|
|
27839
|
-
const chartFigureId = this.env.model.getters.getFigureIdFromChartId(this.props.chartId);
|
|
27840
|
-
if (fullScreenFigureId === chartFigureId) {
|
|
27841
|
-
return true;
|
|
27842
|
-
}
|
|
27817
|
+
if (this.props.isFullScreen) {
|
|
27818
|
+
return true;
|
|
27843
27819
|
}
|
|
27844
27820
|
const definition = this.env.model.getters.getChartDefinition(this.props.chartId);
|
|
27845
27821
|
return ("zoomable" in definition && definition?.zoomable) ?? false;
|
|
@@ -27902,9 +27878,6 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
27902
27878
|
const xMax = Math.max(...xValues);
|
|
27903
27879
|
return { xMin, xMax };
|
|
27904
27880
|
}
|
|
27905
|
-
get shouldAnimate() {
|
|
27906
|
-
return this.env.model.getters.isDashboard() && !this.sliceable;
|
|
27907
|
-
}
|
|
27908
27881
|
createChart(chartRuntime) {
|
|
27909
27882
|
const chartData = chartRuntime.chartJsConfig;
|
|
27910
27883
|
this.isBarChart = chartData.type === "bar";
|
|
@@ -27923,6 +27896,9 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
27923
27896
|
const masterChartCtx = this.masterChartCanvas.el.getContext("2d");
|
|
27924
27897
|
this.masterChart = new window.Chart(masterChartCtx, this.getMasterChartConfiguration(chartRuntime["masterChartConfig"]));
|
|
27925
27898
|
this.resetAxesLimits();
|
|
27899
|
+
if (this.chart?.options) {
|
|
27900
|
+
this.chart.options.animation = false;
|
|
27901
|
+
}
|
|
27926
27902
|
}
|
|
27927
27903
|
updateChartJs(chartRuntime) {
|
|
27928
27904
|
const chartData = chartRuntime.chartJsConfig;
|
|
@@ -27956,6 +27932,9 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
27956
27932
|
}
|
|
27957
27933
|
}
|
|
27958
27934
|
this.resetAxesLimits();
|
|
27935
|
+
if (this.chart?.options) {
|
|
27936
|
+
this.chart.options.animation = false;
|
|
27937
|
+
}
|
|
27959
27938
|
}
|
|
27960
27939
|
resetAxesLimits() {
|
|
27961
27940
|
if (!this.chart) {
|
|
@@ -28053,7 +28032,7 @@ class ZoomableChartJsComponent extends ChartJsComponent {
|
|
|
28053
28032
|
onPointerDownInMasterChart(ev) {
|
|
28054
28033
|
this.removeEventListeners();
|
|
28055
28034
|
const position = ev.offsetX;
|
|
28056
|
-
if (!this.masterChart?.chartArea || !this.chart?.scales
|
|
28035
|
+
if (!this.masterChart?.chartArea || !this.chart?.scales?.x) {
|
|
28057
28036
|
return;
|
|
28058
28037
|
}
|
|
28059
28038
|
const { left, right, top, bottom } = this.masterChart.chartArea;
|
|
@@ -31611,6 +31590,26 @@ function getCarouselItemTitle(getters, item) {
|
|
|
31611
31590
|
return matchedChart.displayName;
|
|
31612
31591
|
}
|
|
31613
31592
|
|
|
31593
|
+
class FullScreenFigureStore extends SpreadsheetStore {
|
|
31594
|
+
mutators = ["toggleFullScreenFigure"];
|
|
31595
|
+
fullScreenFigure = undefined;
|
|
31596
|
+
toggleFullScreenFigure(figureId) {
|
|
31597
|
+
if (this.fullScreenFigure?.id === figureId) {
|
|
31598
|
+
this.fullScreenFigure = undefined;
|
|
31599
|
+
}
|
|
31600
|
+
else {
|
|
31601
|
+
this.makeFullScreen(figureId);
|
|
31602
|
+
}
|
|
31603
|
+
}
|
|
31604
|
+
makeFullScreen(figureId) {
|
|
31605
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
31606
|
+
const figure = this.getters.getFigure(sheetId, figureId);
|
|
31607
|
+
if (figure) {
|
|
31608
|
+
this.fullScreenFigure = { ...figure, x: 0, y: 0, width: 0, height: 0 };
|
|
31609
|
+
}
|
|
31610
|
+
}
|
|
31611
|
+
}
|
|
31612
|
+
|
|
31614
31613
|
/**
|
|
31615
31614
|
* Repeatedly calls a callback function with a time delay between calls.
|
|
31616
31615
|
*/
|
|
@@ -32348,12 +32347,13 @@ class MenuPopover extends owl.Component {
|
|
|
32348
32347
|
class ChartDashboardMenu extends owl.Component {
|
|
32349
32348
|
static template = "o-spreadsheet-ChartDashboardMenu";
|
|
32350
32349
|
static components = { MenuPopover };
|
|
32351
|
-
static props = { chartId: String };
|
|
32350
|
+
static props = { chartId: String, hasFullScreenButton: { type: Boolean, optional: true } };
|
|
32351
|
+
static defaultProps = { hasFullScreenButton: true };
|
|
32352
32352
|
fullScreenFigureStore;
|
|
32353
32353
|
menuState = owl.useState({ isOpen: false, anchorRect: null, menuItems: [] });
|
|
32354
32354
|
setup() {
|
|
32355
32355
|
super.setup();
|
|
32356
|
-
this.fullScreenFigureStore = useStore(
|
|
32356
|
+
this.fullScreenFigureStore = useStore(FullScreenFigureStore);
|
|
32357
32357
|
}
|
|
32358
32358
|
getMenuItems() {
|
|
32359
32359
|
return [this.fullScreenMenuItem].filter(isDefined);
|
|
@@ -32369,6 +32369,9 @@ class ChartDashboardMenu extends owl.Component {
|
|
|
32369
32369
|
this.menuState.menuItems = getChartMenuActions(figureId, () => { }, this.env);
|
|
32370
32370
|
}
|
|
32371
32371
|
get fullScreenMenuItem() {
|
|
32372
|
+
if (!this.props.hasFullScreenButton) {
|
|
32373
|
+
return undefined;
|
|
32374
|
+
}
|
|
32372
32375
|
const definition = this.env.model.getters.getChartDefinition(this.props.chartId);
|
|
32373
32376
|
const figureId = this.env.model.getters.getFigureIdFromChartId(this.props.chartId);
|
|
32374
32377
|
if (definition.type === "scorecard") {
|
|
@@ -32380,7 +32383,7 @@ class ChartDashboardMenu extends owl.Component {
|
|
|
32380
32383
|
label: isFullScreen ? _t("Exit Full Screen") : _t("Full Screen"),
|
|
32381
32384
|
class: `text-muted fa ${isFullScreen ? "fa-compress" : "fa-expand"}`,
|
|
32382
32385
|
onClick: () => {
|
|
32383
|
-
this.fullScreenFigureStore.
|
|
32386
|
+
this.fullScreenFigureStore.toggleFullScreenFigure(figureId);
|
|
32384
32387
|
},
|
|
32385
32388
|
};
|
|
32386
32389
|
}
|
|
@@ -32392,6 +32395,7 @@ class CarouselFigure extends owl.Component {
|
|
|
32392
32395
|
figureUI: Object,
|
|
32393
32396
|
onFigureDeleted: Function,
|
|
32394
32397
|
editFigureStyle: { type: Function, optional: true },
|
|
32398
|
+
isFullScreen: { type: Boolean, optional: true },
|
|
32395
32399
|
};
|
|
32396
32400
|
static components = { ChartDashboardMenu, MenuPopover };
|
|
32397
32401
|
carouselTabsRef = owl.useRef("carouselTabs");
|
|
@@ -32399,8 +32403,10 @@ class CarouselFigure extends owl.Component {
|
|
|
32399
32403
|
menuState = owl.useState({ isOpen: false, anchorRect: null, menuItems: [] });
|
|
32400
32404
|
hiddenItems = [];
|
|
32401
32405
|
animationStore;
|
|
32406
|
+
fullScreenFigureStore;
|
|
32402
32407
|
setup() {
|
|
32403
32408
|
this.animationStore = useStore(ChartAnimationStore);
|
|
32409
|
+
this.fullScreenFigureStore = useStore(FullScreenFigureStore);
|
|
32404
32410
|
owl.useEffect(() => {
|
|
32405
32411
|
if (this.selectedCarouselItem?.type === "carouselDataView") {
|
|
32406
32412
|
this.props.editFigureStyle?.({ "pointer-events": "none" });
|
|
@@ -32447,7 +32453,8 @@ class CarouselFigure extends owl.Component {
|
|
|
32447
32453
|
item,
|
|
32448
32454
|
});
|
|
32449
32455
|
if (item.type === "chart") {
|
|
32450
|
-
|
|
32456
|
+
const animationChartId = item.chartId + (this.props.isFullScreen ? "-fullscreen" : "");
|
|
32457
|
+
this.animationStore?.enableAnimationForChart(animationChartId);
|
|
32451
32458
|
}
|
|
32452
32459
|
}
|
|
32453
32460
|
get headerStyle() {
|
|
@@ -32511,6 +32518,17 @@ class CarouselFigure extends owl.Component {
|
|
|
32511
32518
|
this.menuState.anchorRect = rect;
|
|
32512
32519
|
this.menuState.menuItems = createActions(menuItems);
|
|
32513
32520
|
}
|
|
32521
|
+
toggleFullScreen() {
|
|
32522
|
+
if (this.selectedCarouselItem?.type === "chart") {
|
|
32523
|
+
this.fullScreenFigureStore.toggleFullScreenFigure(this.props.figureUI.id);
|
|
32524
|
+
}
|
|
32525
|
+
}
|
|
32526
|
+
get fullScreenButtonTitle() {
|
|
32527
|
+
return this.props.isFullScreen ? _t("Exit Full Screen") : _t("Full Screen");
|
|
32528
|
+
}
|
|
32529
|
+
get visibleCarouselItems() {
|
|
32530
|
+
return this.carousel.items.filter((item) => item.type === "carouselDataView" && this.props.isFullScreen ? false : true);
|
|
32531
|
+
}
|
|
32514
32532
|
}
|
|
32515
32533
|
|
|
32516
32534
|
class ChartFigure extends owl.Component {
|
|
@@ -32519,6 +32537,7 @@ class ChartFigure extends owl.Component {
|
|
|
32519
32537
|
figureUI: Object,
|
|
32520
32538
|
onFigureDeleted: Function,
|
|
32521
32539
|
editFigureStyle: { type: Function, optional: true },
|
|
32540
|
+
isFullScreen: { type: Boolean, optional: true },
|
|
32522
32541
|
};
|
|
32523
32542
|
static components = { ChartDashboardMenu };
|
|
32524
32543
|
onDoubleClick() {
|
|
@@ -58660,7 +58679,7 @@ class PivotMeasureEditor extends owl.Component {
|
|
|
58660
58679
|
return undefined;
|
|
58661
58680
|
}
|
|
58662
58681
|
get isCalculatedMeasureInvalid() {
|
|
58663
|
-
return
|
|
58682
|
+
return compile(this.props.measure.computedBy?.formula ?? "").isBadExpression;
|
|
58664
58683
|
}
|
|
58665
58684
|
}
|
|
58666
58685
|
|
|
@@ -61538,16 +61557,16 @@ class ClickableCellSortIcon extends owl.Component {
|
|
|
61538
61557
|
}
|
|
61539
61558
|
}
|
|
61540
61559
|
|
|
61541
|
-
class
|
|
61542
|
-
static template = "o-spreadsheet-
|
|
61560
|
+
class FullScreenFigure extends owl.Component {
|
|
61561
|
+
static template = "o-spreadsheet-FullScreenFigure";
|
|
61543
61562
|
static props = {};
|
|
61544
|
-
static components = {
|
|
61545
|
-
|
|
61546
|
-
ref = owl.useRef("
|
|
61563
|
+
static components = { ChartFigure };
|
|
61564
|
+
fullScreenFigureStore;
|
|
61565
|
+
ref = owl.useRef("fullScreenFigure");
|
|
61547
61566
|
spreadsheetRect = useSpreadsheetRect();
|
|
61548
61567
|
figureRegistry = figureRegistry;
|
|
61549
61568
|
setup() {
|
|
61550
|
-
this.
|
|
61569
|
+
this.fullScreenFigureStore = useStore(FullScreenFigureStore);
|
|
61551
61570
|
const animationStore = useStore(ChartAnimationStore);
|
|
61552
61571
|
let lastFigureId = undefined;
|
|
61553
61572
|
owl.onWillUpdateProps(() => {
|
|
@@ -61559,7 +61578,7 @@ class FullScreenChart extends owl.Component {
|
|
|
61559
61578
|
owl.useEffect((el) => el?.focus(), () => [this.ref.el]);
|
|
61560
61579
|
}
|
|
61561
61580
|
get figureUI() {
|
|
61562
|
-
return this.
|
|
61581
|
+
return this.fullScreenFigureStore.fullScreenFigure;
|
|
61563
61582
|
}
|
|
61564
61583
|
get chartId() {
|
|
61565
61584
|
if (!this.figureUI)
|
|
@@ -61568,7 +61587,7 @@ class FullScreenChart extends owl.Component {
|
|
|
61568
61587
|
}
|
|
61569
61588
|
exitFullScreen() {
|
|
61570
61589
|
if (this.figureUI) {
|
|
61571
|
-
this.
|
|
61590
|
+
this.fullScreenFigureStore.toggleFullScreenFigure(this.figureUI.id);
|
|
61572
61591
|
}
|
|
61573
61592
|
}
|
|
61574
61593
|
onKeyDown(ev) {
|
|
@@ -61576,15 +61595,10 @@ class FullScreenChart extends owl.Component {
|
|
|
61576
61595
|
this.exitFullScreen();
|
|
61577
61596
|
}
|
|
61578
61597
|
}
|
|
61579
|
-
get
|
|
61580
|
-
if (!this.
|
|
61598
|
+
get figureComponent() {
|
|
61599
|
+
if (!this.figureUI)
|
|
61581
61600
|
return undefined;
|
|
61582
|
-
|
|
61583
|
-
const component = chartComponentRegistry.get(type);
|
|
61584
|
-
if (!component) {
|
|
61585
|
-
throw new Error(`Component is not defined for type ${type}`);
|
|
61586
|
-
}
|
|
61587
|
-
return component;
|
|
61601
|
+
return figureRegistry.get(this.figureUI.tag).Component;
|
|
61588
61602
|
}
|
|
61589
61603
|
}
|
|
61590
61604
|
|
|
@@ -64324,11 +64338,11 @@ class HeaderSizePlugin extends CorePlugin {
|
|
|
64324
64338
|
break;
|
|
64325
64339
|
}
|
|
64326
64340
|
case "ADD_COLUMNS_ROWS": {
|
|
64327
|
-
const sizes =
|
|
64341
|
+
const sizes = this.sizes[cmd.sheetId][cmd.dimension];
|
|
64328
64342
|
const addIndex = getAddHeaderStartIndex(cmd.position, cmd.base);
|
|
64329
64343
|
const baseSize = sizes[cmd.base];
|
|
64330
|
-
sizes
|
|
64331
|
-
this.history.update("sizes", cmd.sheetId, cmd.dimension,
|
|
64344
|
+
const newSizes = insertItemsAtIndex(sizes, Array(cmd.quantity).fill(baseSize), addIndex);
|
|
64345
|
+
this.history.update("sizes", cmd.sheetId, cmd.dimension, newSizes);
|
|
64332
64346
|
break;
|
|
64333
64347
|
}
|
|
64334
64348
|
case "RESIZE_COLUMNS_ROWS":
|
|
@@ -64479,9 +64493,8 @@ class HeaderVisibilityPlugin extends CorePlugin {
|
|
|
64479
64493
|
break;
|
|
64480
64494
|
}
|
|
64481
64495
|
case "ADD_COLUMNS_ROWS": {
|
|
64482
|
-
const hiddenHeaders = [...this.hiddenHeaders[cmd.sheetId][cmd.dimension]];
|
|
64483
64496
|
const addIndex = getAddHeaderStartIndex(cmd.position, cmd.base);
|
|
64484
|
-
hiddenHeaders.
|
|
64497
|
+
const hiddenHeaders = insertItemsAtIndex([...this.hiddenHeaders[cmd.sheetId][cmd.dimension]], Array(cmd.quantity).fill(false), addIndex);
|
|
64485
64498
|
this.history.update("hiddenHeaders", cmd.sheetId, cmd.dimension, hiddenHeaders);
|
|
64486
64499
|
break;
|
|
64487
64500
|
}
|
|
@@ -68665,12 +68678,12 @@ class SpreadsheetRTree {
|
|
|
68665
68678
|
this.rTrees[sheetId].remove(item, this.rtreeItemComparer);
|
|
68666
68679
|
}
|
|
68667
68680
|
rtreeItemComparer(left, right) {
|
|
68668
|
-
return (left.
|
|
68669
|
-
left.boundingBox.sheetId === right.boundingBox.sheetId &&
|
|
68681
|
+
return (left.boundingBox.sheetId === right.boundingBox.sheetId &&
|
|
68670
68682
|
left.boundingBox?.zone.left === right.boundingBox.zone.left &&
|
|
68671
68683
|
left.boundingBox?.zone.top === right.boundingBox.zone.top &&
|
|
68672
68684
|
left.boundingBox?.zone.right === right.boundingBox.zone.right &&
|
|
68673
|
-
left.boundingBox?.zone.bottom === right.boundingBox.zone.bottom
|
|
68685
|
+
left.boundingBox?.zone.bottom === right.boundingBox.zone.bottom &&
|
|
68686
|
+
deepEquals(left.data, right.data));
|
|
68674
68687
|
}
|
|
68675
68688
|
}
|
|
68676
68689
|
/**
|
|
@@ -82220,6 +82233,9 @@ class SmallBottomBar extends owl.Component {
|
|
|
82220
82233
|
? this.composerFocusStore.focusMode
|
|
82221
82234
|
: "inactive";
|
|
82222
82235
|
}
|
|
82236
|
+
get showFxIcon() {
|
|
82237
|
+
return this.focus === "inactive" && !this.composerStore.currentContent;
|
|
82238
|
+
}
|
|
82223
82239
|
get rect() {
|
|
82224
82240
|
return this.composerRef.el
|
|
82225
82241
|
? getBoundingRectAsPOJO(this.composerRef.el)
|
|
@@ -82262,12 +82278,6 @@ class SmallBottomBar extends owl.Component {
|
|
|
82262
82278
|
}
|
|
82263
82279
|
|
|
82264
82280
|
const COMPOSER_MAX_HEIGHT = 300;
|
|
82265
|
-
/* svg free of use from https://uxwing.com/formula-fx-icon/ */
|
|
82266
|
-
const FX_SVG = /*xml*/ `
|
|
82267
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'>
|
|
82268
|
-
<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'/>
|
|
82269
|
-
</svg>
|
|
82270
|
-
`;
|
|
82271
82281
|
css /* scss */ `
|
|
82272
82282
|
.o-topbar-composer-container {
|
|
82273
82283
|
height: ${DESKTOP_TOPBAR_TOOLBAR_HEIGHT}px;
|
|
@@ -82279,14 +82289,6 @@ css /* scss */ `
|
|
|
82279
82289
|
margin-bottom: -1px;
|
|
82280
82290
|
border: 1px solid;
|
|
82281
82291
|
font-family: ${DEFAULT_FONT};
|
|
82282
|
-
|
|
82283
|
-
/* In readonly we always show the fx icon if the composer is empty, not matter the focus */
|
|
82284
|
-
.o-composer:empty:not(:focus):not(.active)::before,
|
|
82285
|
-
&.o-topbar-composer-readonly .o-composer:empty::before {
|
|
82286
|
-
content: url("data:image/svg+xml,${encodeURIComponent(FX_SVG)}");
|
|
82287
|
-
position: relative;
|
|
82288
|
-
top: 20%;
|
|
82289
|
-
}
|
|
82290
82292
|
}
|
|
82291
82293
|
|
|
82292
82294
|
.user-select-text {
|
|
@@ -82319,6 +82321,9 @@ class TopBarComposer extends owl.Component {
|
|
|
82319
82321
|
? this.composerFocusStore.focusMode
|
|
82320
82322
|
: "inactive";
|
|
82321
82323
|
}
|
|
82324
|
+
get showFxIcon() {
|
|
82325
|
+
return this.focus === "inactive" && !this.composerStore.currentContent;
|
|
82326
|
+
}
|
|
82322
82327
|
get composerStyle() {
|
|
82323
82328
|
const style = {
|
|
82324
82329
|
padding: "5px 0px 5px 8px",
|
|
@@ -83670,7 +83675,7 @@ class Spreadsheet extends owl.Component {
|
|
|
83670
83675
|
SidePanels,
|
|
83671
83676
|
SpreadsheetDashboard,
|
|
83672
83677
|
HeaderGroupContainer,
|
|
83673
|
-
|
|
83678
|
+
FullScreenFigure,
|
|
83674
83679
|
};
|
|
83675
83680
|
sidePanel;
|
|
83676
83681
|
spreadsheetRef = owl.useRef("spreadsheet");
|
|
@@ -88394,6 +88399,7 @@ const components = {
|
|
|
88394
88399
|
Grid,
|
|
88395
88400
|
GridOverlay,
|
|
88396
88401
|
ScorecardChart,
|
|
88402
|
+
GaugeChartComponent,
|
|
88397
88403
|
LineConfigPanel,
|
|
88398
88404
|
BarConfigPanel,
|
|
88399
88405
|
PieChartDesignPanel,
|
|
@@ -88432,7 +88438,7 @@ const components = {
|
|
|
88432
88438
|
RadioSelection,
|
|
88433
88439
|
GeoChartRegionSelectSection,
|
|
88434
88440
|
ChartDashboardMenu,
|
|
88435
|
-
|
|
88441
|
+
FullScreenFigure,
|
|
88436
88442
|
};
|
|
88437
88443
|
const hooks = {
|
|
88438
88444
|
useDragAndDropListItems,
|
|
@@ -88532,6 +88538,6 @@ exports.tokenColors = tokenColors;
|
|
|
88532
88538
|
exports.tokenize = tokenize;
|
|
88533
88539
|
|
|
88534
88540
|
|
|
88535
|
-
__info__.version = "19.0.
|
|
88536
|
-
__info__.date = "2025-
|
|
88537
|
-
__info__.hash = "
|
|
88541
|
+
__info__.version = "19.0.5";
|
|
88542
|
+
__info__.date = "2025-10-07T10:04:06.400Z";
|
|
88543
|
+
__info__.hash = "86fc442";
|