@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.
@@ -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.4
6
- * @date 2025-09-23T12:37:28.362Z
7
- * @hash 87b774d
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
- const newArray = [...array];
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 an minute.
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.env.isDashboard()) {
27838
- const fullScreenFigureId = this.fullScreenChartStore.fullScreenFigure?.id;
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.x) {
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(FullScreenChartStore);
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.toggleFullScreenChart(figureId);
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
- this.animationStore?.enableAnimationForChart(item.chartId);
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 this.env.model.getters.getMeasureCompiledFormula(this.props.measure).isBadExpression;
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 FullScreenChart extends owl.Component {
61542
- static template = "o-spreadsheet-FullScreenChart";
61560
+ class FullScreenFigure extends owl.Component {
61561
+ static template = "o-spreadsheet-FullScreenFigure";
61543
61562
  static props = {};
61544
- static components = { ChartDashboardMenu };
61545
- fullScreenChartStore;
61546
- ref = owl.useRef("fullScreenChart");
61563
+ static components = { ChartFigure };
61564
+ fullScreenFigureStore;
61565
+ ref = owl.useRef("fullScreenFigure");
61547
61566
  spreadsheetRect = useSpreadsheetRect();
61548
61567
  figureRegistry = figureRegistry;
61549
61568
  setup() {
61550
- this.fullScreenChartStore = useStore(FullScreenChartStore);
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.fullScreenChartStore.fullScreenFigure;
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.fullScreenChartStore.toggleFullScreenChart(this.figureUI.id);
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 chartComponent() {
61580
- if (!this.chartId)
61598
+ get figureComponent() {
61599
+ if (!this.figureUI)
61581
61600
  return undefined;
61582
- const type = this.env.model.getters.getChartType(this.chartId);
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 = [...this.sizes[cmd.sheetId][cmd.dimension]];
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.splice(addIndex, 0, ...Array(cmd.quantity).fill(baseSize));
64331
- this.history.update("sizes", cmd.sheetId, cmd.dimension, sizes);
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.splice(addIndex, 0, ...Array(cmd.quantity).fill(false));
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.data === right.data &&
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
- FullScreenChart,
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
- FullScreenChart,
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.4";
88536
- __info__.date = "2025-09-23T12:37:28.362Z";
88537
- __info__.hash = "87b774d";
88541
+ __info__.version = "19.0.5";
88542
+ __info__.date = "2025-10-07T10:04:06.400Z";
88543
+ __info__.hash = "86fc442";