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