@odoo/o-spreadsheet 19.4.2 → 19.4.4

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,13 +2,13 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.4.2
6
- * @date 2026-07-13T06:26:39.071Z
7
- * @hash c83d4aa
5
+ * @version 19.4.4
6
+ * @date 2026-07-23T07:49:22.265Z
7
+ * @hash 6b3c312
8
8
  */
9
9
 
10
10
  import * as owl from "@odoo/owl";
11
- import { App, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, props, proxy, signal, status, toRaw, types, useEffect, useListener, whenReady, xml } from "@odoo/owl";
11
+ import { App, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, proxy, signal, status, toRaw, types, useEffect, useListener, useProps, whenReady, xml } from "@odoo/owl";
12
12
 
13
13
  //#region \0rolldown/runtime.js
14
14
  var __create = Object.create;
@@ -1246,6 +1246,12 @@ function defaultDict(def) {
1246
1246
  }
1247
1247
  };
1248
1248
  }
1249
+ function repeat(array, times) {
1250
+ const len = array.length;
1251
+ const result = new Array(len * times);
1252
+ for (let t = 0; t < times; t++) for (let i = 0; i < len; i++) result[t * len + i] = array[i];
1253
+ return result;
1254
+ }
1249
1255
 
1250
1256
  //#endregion
1251
1257
  //#region src/helpers/coordinates.ts
@@ -2599,7 +2605,7 @@ function unregisterChartJsExtensions() {
2599
2605
  *
2600
2606
  * The end goal is to eliminate all compatibility shims.
2601
2607
  */
2602
- const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$1, onPatched: onPatched$1, onWillUnmount: onWillUnmount$1, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useChildEnv: OwlUseChildEnv, useChildSubEnv: OwlUseChildSubEnv, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useExternalListener: OwlUseExternalListener, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin, plugin, props: props$1, providePlugins, useScope, xml: xml$1 } = owl;
2608
+ const { __ODOO_COMPATIBILITY_LAYER_ADDED__, blockDom: blockDom$1, config, onMounted: onMounted$1, onPatched: onPatched$1, onWillUnmount: onWillUnmount$1, App: OwlApp, Component: OwlComponent, EnvPlugin: OwlEnvPlugin, useChildEnv: OwlUseChildEnv, useChildSubEnv: OwlUseChildSubEnv, useComponent: OwlUseComponent, useEnv: OwlUseEnv, useExternalListener: OwlUseExternalListener, useLayoutEffect: OwlUseLayoutEffect, useSubEnv: OwlUseSubEnv, Plugin, usePlugin, useProps: useProps$1, providePlugins, useScope, xml: xml$1 } = owl;
2603
2609
  const isOdooCompatLoaded = __ODOO_COMPATIBILITY_LAYER_ADDED__ === true;
2604
2610
  var _Component = class extends OwlComponent {
2605
2611
  static template = "";
@@ -2680,7 +2686,7 @@ function _useChildSubEnv(extension) {
2680
2686
  extendEnv(extension);
2681
2687
  }
2682
2688
  function _useChildEnv() {
2683
- return plugin(_EnvPlugin).env;
2689
+ return usePlugin(_EnvPlugin).env;
2684
2690
  }
2685
2691
  var VPortal = class extends blockDom$1.text("").constructor {
2686
2692
  /**
@@ -2729,7 +2735,7 @@ var Portal = class extends OwlComponent {
2729
2735
  static template = xml$1`<t t-call-slot="default"/>`;
2730
2736
  constructor(node) {
2731
2737
  super(node);
2732
- this.props = props$1();
2738
+ this.props = useProps$1();
2733
2739
  this.__owl__ = node;
2734
2740
  }
2735
2741
  setup() {
@@ -6765,7 +6771,7 @@ function getRangeString(range, forSheetId, getSheetName, options = {
6765
6771
  if (prefixSheet && !sheetName) return CellErrorType.InvalidReference;
6766
6772
  let rangeString = getRangePartString(range, 0, options);
6767
6773
  if (range.parts && range.parts.length === 2) {
6768
- if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed) {
6774
+ if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed || options.doNotSimplifyRange) {
6769
6775
  rangeString += ":";
6770
6776
  rangeString += getRangePartString(range, 1, options);
6771
6777
  }
@@ -7517,6 +7523,11 @@ var CompiledFormula = class CompiledFormula {
7517
7523
  const params = compileTokens(rangeTokenize(formula));
7518
7524
  return new CompiledFormula(sheetId, params.tokens, params.literalValues, params.symbols, params.dependencies.map((xc) => getters.getRangeFromSheetXC(sheetId, xc)), params.isBadExpression, params.normalizedFormula, params.execute);
7519
7525
  }
7526
+ areRangeShapesInLineWithNormalizedFormula() {
7527
+ return Array.from(this.normalizedFormula.matchAll(/\|C\||\|R\|/g)).every((value, index) => {
7528
+ return this.rangeDependencies[index].parts.length === 1 && value[0] === "|C|" || this.rangeDependencies[index].parts.length === 2 && value[0] === "|R|" || this.rangeDependencies[index].invalidXc || this.rangeDependencies[index].invalidSheetName;
7529
+ });
7530
+ }
7520
7531
  };
7521
7532
  function compileTokens(tokens) {
7522
7533
  try {
@@ -11712,7 +11723,7 @@ chartJsExtensionRegistry.add("chartBackgroundPlugin", {
11712
11723
  });
11713
11724
  var ChartJsComponent = class extends Component {
11714
11725
  static template = "o-spreadsheet-ChartJsComponent";
11715
- props = props({
11726
+ props = useProps({
11716
11727
  chartId: types$1.string(),
11717
11728
  isFullScreen: types$1.boolean().optional()
11718
11729
  });
@@ -12415,7 +12426,7 @@ function getZoomTargetPosition(ev, zoom) {
12415
12426
  //#region src/components/figures/chart/scorecard/chart_scorecard.ts
12416
12427
  var ScorecardChart = class extends Component {
12417
12428
  static template = "o-spreadsheet-ScorecardChart";
12418
- props = props({
12429
+ props = useProps({
12419
12430
  chartId: types$1.string(),
12420
12431
  isFullScreen: types$1.boolean().optional()
12421
12432
  });
@@ -14155,7 +14166,7 @@ function hasIconLayoutChange(newBox, oldBox) {
14155
14166
  const ANIMATION_DURATION = 1e3;
14156
14167
  var GaugeChartComponent = class extends Component {
14157
14168
  static template = "o-spreadsheet-GaugeChartComponent";
14158
- props = props({
14169
+ props = useProps({
14159
14170
  chartId: types$1.string(),
14160
14171
  isFullScreen: types$1.boolean().optional()
14161
14172
  });
@@ -14381,7 +14392,7 @@ function useTimeOut() {
14381
14392
  var Menu = class extends Component {
14382
14393
  static template = "o-spreadsheet-Menu";
14383
14394
  static components = {};
14384
- props = props({
14395
+ props = useProps({
14385
14396
  menuItems: types$1.ArrayOf(),
14386
14397
  onClose: types$1.function(),
14387
14398
  onClickMenu: types$1.function().optional(),
@@ -14534,7 +14545,7 @@ function usePopoverContainer() {
14534
14545
  //#region src/components/popover/popover.ts
14535
14546
  var Popover = class extends Component {
14536
14547
  static template = "o-spreadsheet-Popover";
14537
- props = props({
14548
+ props = useProps({
14538
14549
  anchorRect: types$1.Rect(),
14539
14550
  containerRect: types$1.object({}).optional(),
14540
14551
  positioning: types$1.or([types$1.literal("top-right"), types$1.literal("bottom-left")]).optional("bottom-left"),
@@ -14713,7 +14724,7 @@ var MenuPopover = class MenuPopover extends Component {
14713
14724
  Menu,
14714
14725
  Popover
14715
14726
  };
14716
- props = props({
14727
+ props = useProps({
14717
14728
  anchorRect: types$1.Rect(),
14718
14729
  popoverPositioning: types$1.or([types$1.literal("top-right"), types$1.literal("bottom-left")]).optional("top-right"),
14719
14730
  menuItems: types$1.ArrayOf(),
@@ -14968,7 +14979,7 @@ var MenuPopover = class MenuPopover extends Component {
14968
14979
  var Select = class extends Component {
14969
14980
  static template = "o-spreadsheet-Select";
14970
14981
  static components = { Popover };
14971
- props = props({
14982
+ props = useProps({
14972
14983
  onChange: types$1.function(),
14973
14984
  values: types$1.array(),
14974
14985
  selectedValue: types$1.string().optional(),
@@ -15078,7 +15089,7 @@ var Select = class extends Component {
15078
15089
  //#region src/components/info_popover/info_popover.ts
15079
15090
  var InfoPopover = class extends Component {
15080
15091
  static template = "o-spreadsheet-Info-Popover";
15081
- props = props({
15092
+ props = useProps({
15082
15093
  anchorRect: types$1.Rect(),
15083
15094
  onClose: types$1.function(),
15084
15095
  annotationText: types$1.string().optional(),
@@ -15118,7 +15129,7 @@ var ChartMenu = class extends Component {
15118
15129
  InfoPopover,
15119
15130
  Select
15120
15131
  };
15121
- props = props({
15132
+ props = useProps({
15122
15133
  chartId: types$1.UID(),
15123
15134
  hasFullScreenButton: types$1.boolean().optional(true),
15124
15135
  displayEllipsisButton: types$1.boolean().optional(true)
@@ -15226,7 +15237,7 @@ var CarouselFigure = class extends Component {
15226
15237
  ChartMenu,
15227
15238
  MenuPopover
15228
15239
  };
15229
- props = props({
15240
+ props = useProps({
15230
15241
  figureUI: types$1.FigureUI(),
15231
15242
  editFigureStyle: types$1.function().optional(),
15232
15243
  isFullScreen: types$1.boolean().optional(),
@@ -15372,7 +15383,7 @@ var CarouselFigure = class extends Component {
15372
15383
  var ChartFigure = class extends Component {
15373
15384
  static template = "o-spreadsheet-ChartFigure";
15374
15385
  static components = { ChartMenu };
15375
- props = props({
15386
+ props = useProps({
15376
15387
  figureUI: types$1.FigureUI(),
15377
15388
  editFigureStyle: types$1.function().optional(),
15378
15389
  isFullScreen: types$1.boolean().optional(),
@@ -15402,7 +15413,7 @@ var ChartFigure = class extends Component {
15402
15413
  //#region src/components/figures/figure_image/figure_image.ts
15403
15414
  var ImageFigure = class extends Component {
15404
15415
  static template = "o-spreadsheet-ImageFigure";
15405
- props = props({
15416
+ props = useProps({
15406
15417
  figureUI: types$1.FigureUI(),
15407
15418
  editFigureStyle: types$1.function().optional(),
15408
15419
  openContextMenu: types$1.function()
@@ -15454,7 +15465,7 @@ const ACTIVE_BORDER_WIDTH = 2;
15454
15465
  var FigureComponent = class extends Component {
15455
15466
  static template = "o-spreadsheet-FigureComponent";
15456
15467
  static components = { MenuPopover };
15457
- props = props({
15468
+ props = useProps({
15458
15469
  figureUI: types$1.FigureUI(),
15459
15470
  style: types$1.string(),
15460
15471
  class: types$1.string(),
@@ -24592,7 +24603,7 @@ const genericInputPropsDefinition = {
24592
24603
  resetOnBlur: types$1.boolean().optional()
24593
24604
  };
24594
24605
  var GenericInput = class extends Component {
24595
- props = props(genericInputPropsDefinition);
24606
+ props = useProps(genericInputPropsDefinition);
24596
24607
  genericInputRef = signal.ref(HTMLInputElement);
24597
24608
  lastOnChangeValue = this.props.value.toString();
24598
24609
  setup() {
@@ -24675,7 +24686,7 @@ var GenericInput = class extends Component {
24675
24686
  var TextInput = class extends GenericInput {
24676
24687
  static template = "o-spreadsheet-TextInput";
24677
24688
  static components = {};
24678
- props = props({
24689
+ props = useProps({
24679
24690
  ...genericInputPropsDefinition,
24680
24691
  value: types$1.string(),
24681
24692
  errorMessage: types$1.string().optional(),
@@ -24695,7 +24706,7 @@ var TextInput = class extends GenericInput {
24695
24706
  //#region src/components/action_button/action_button.ts
24696
24707
  var ActionButton = class extends Component {
24697
24708
  static template = "o-spreadsheet-ActionButton";
24698
- props = props({
24709
+ props = useProps({
24699
24710
  action: types$1.ActionSpec(),
24700
24711
  hasTriangleDownIcon: types$1.boolean().optional(),
24701
24712
  selectedColor: types$1.string().optional(),
@@ -24751,7 +24762,7 @@ const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
24751
24762
  var ColorPicker = class extends Component {
24752
24763
  static template = "o-spreadsheet-ColorPicker";
24753
24764
  static components = { Popover };
24754
- props = props({
24765
+ props = useProps({
24755
24766
  onColorPicked: types$1.function(),
24756
24767
  currentColor: types$1.string().optional(""),
24757
24768
  maxHeight: types$1.Pixel().optional(),
@@ -24914,7 +24925,7 @@ var ColorPicker = class extends Component {
24914
24925
  var ColorPickerWidget = class extends Component {
24915
24926
  static template = "o-spreadsheet-ColorPickerWidget";
24916
24927
  static components = { ColorPicker };
24917
- props = props({
24928
+ props = useProps({
24918
24929
  currentColor: types$1.string().optional(),
24919
24930
  toggleColorPicker: types$1.function(),
24920
24931
  showColorPicker: types$1.boolean(),
@@ -24939,7 +24950,7 @@ var ColorPickerWidget = class extends Component {
24939
24950
  var NumberEditor = class extends Component {
24940
24951
  static template = "o-spreadsheet-NumberEditor";
24941
24952
  static components = { Popover };
24942
- props = props({
24953
+ props = useProps({
24943
24954
  currentValue: types$1.number(),
24944
24955
  onValueChange: types$1.function(),
24945
24956
  onToggle: types$1.function().optional(),
@@ -25029,7 +25040,7 @@ var NumberEditor = class extends Component {
25029
25040
  var FontSizeEditor = class extends Component {
25030
25041
  static template = "o-spreadsheet-FontSizeEditor";
25031
25042
  static components = { NumberEditor };
25032
- props = props({
25043
+ props = useProps({
25033
25044
  currentFontSize: types$1.number(),
25034
25045
  onFontSizeChanged: types$1.function(),
25035
25046
  onToggle: types$1.function().optional(),
@@ -25048,7 +25059,7 @@ var TextStyler = class extends Component {
25048
25059
  ActionButton,
25049
25060
  FontSizeEditor
25050
25061
  };
25051
- props = props({
25062
+ props = useProps({
25052
25063
  style: types$1.ChartStyle(),
25053
25064
  updateStyle: types$1.function(),
25054
25065
  defaultStyle: types$1.object().optional(),
@@ -25238,7 +25249,7 @@ var TextStyler = class extends Component {
25238
25249
  var CogWheelMenu = class extends Component {
25239
25250
  static template = "o-spreadsheet-CogWheelMenu";
25240
25251
  static components = { MenuPopover };
25241
- props = props({ items: types$1.array(types$1.ActionSpec()) });
25252
+ props = useProps({ items: types$1.array(types$1.ActionSpec()) });
25242
25253
  buttonRef = signal(null);
25243
25254
  menuState = proxy({
25244
25255
  isOpen: false,
@@ -25258,7 +25269,7 @@ var CogWheelMenu = class extends Component {
25258
25269
  //#region src/components/side_panel/components/section/section.ts
25259
25270
  var Section = class extends Component {
25260
25271
  static template = "o_spreadsheet.Section";
25261
- props = props({
25272
+ props = useProps({
25262
25273
  class: types$1.string().optional(),
25263
25274
  title: types$1.string().optional(),
25264
25275
  slots: types$1.object()
@@ -25275,7 +25286,7 @@ var CarouselPanel = class extends Component {
25275
25286
  TextStyler,
25276
25287
  CogWheelMenu
25277
25288
  };
25278
- props = props({
25289
+ props = useProps({
25279
25290
  onCloseSidePanel: types$1.function(),
25280
25291
  figureId: types$1.UID()
25281
25292
  });
@@ -25485,7 +25496,7 @@ const chartDataSourceSidePanelComponentRegistry = new Registry();
25485
25496
  //#region src/components/side_panel/components/checkbox/checkbox.ts
25486
25497
  var Checkbox = class extends Component {
25487
25498
  static template = "o-spreadsheet.Checkbox";
25488
- props = props({
25499
+ props = useProps({
25489
25500
  label: types$1.string().optional(),
25490
25501
  value: types$1.boolean().optional(false),
25491
25502
  className: types$1.string().optional(),
@@ -25994,7 +26005,7 @@ var SelectionInputStore = class extends SpreadsheetStore {
25994
26005
  */
25995
26006
  var SelectionInput = class extends Component {
25996
26007
  static template = "o-spreadsheet-SelectionInput";
25997
- props = props({
26008
+ props = useProps({
25998
26009
  ranges: types$1.array(types$1.string()),
25999
26010
  hasSingleRange: types$1.boolean().optional(),
26000
26011
  required: types$1.boolean().optional(),
@@ -26173,7 +26184,7 @@ var ChartDataSeries = class extends Component {
26173
26184
  SelectionInput,
26174
26185
  Section
26175
26186
  };
26176
- props = props({
26187
+ props = useProps({
26177
26188
  ranges: types$1.ArrayOf(),
26178
26189
  dataSetStyles: types$1.DataSetStyle().optional(),
26179
26190
  hasSingleRange: types$1.boolean().optional(),
@@ -26214,7 +26225,7 @@ var ChartLabelRange = class extends Component {
26214
26225
  Checkbox,
26215
26226
  Section
26216
26227
  };
26217
- props = props({
26228
+ props = useProps({
26218
26229
  title: types$1.string().optional(_t("Categories / Labels")),
26219
26230
  range: types$1.string(),
26220
26231
  class: types$1.string().optional(),
@@ -26236,7 +26247,7 @@ var ChartDataSourceComponent = class extends Component {
26236
26247
  ChartDataSeries,
26237
26248
  ChartLabelRange
26238
26249
  };
26239
- props = props({
26250
+ props = useProps({
26240
26251
  chartId: types$1.UID(),
26241
26252
  definition: types$1.ChartDefinitionWithDataSource(),
26242
26253
  updateChart: types$1.function(),
@@ -26255,7 +26266,7 @@ var ChartDataSourceComponent = class extends Component {
26255
26266
  //#region src/components/validation_messages/validation_messages.ts
26256
26267
  var ValidationMessages = class extends Component {
26257
26268
  static template = "o-spreadsheet-ValidationMessages";
26258
- props = props({
26269
+ props = useProps({
26259
26270
  messages: types$1.array(types$1.string()).optional(),
26260
26271
  msgType: types$1.or([
26261
26272
  types$1.literal("warning"),
@@ -26279,7 +26290,7 @@ var ChartErrorSection = class extends Component {
26279
26290
  Section,
26280
26291
  ValidationMessages
26281
26292
  };
26282
- props = props({ messages: types$1.array(types$1.string()) });
26293
+ props = useProps({ messages: types$1.array(types$1.string()) });
26283
26294
  };
26284
26295
 
26285
26296
  //#endregion
@@ -26292,7 +26303,7 @@ var GenericChartConfigPanel = class extends Component {
26292
26303
  Checkbox,
26293
26304
  ChartErrorSection
26294
26305
  };
26295
- props = props(chartSidePanelPropsDefinition);
26306
+ props = useProps(chartSidePanelPropsDefinition);
26296
26307
  chartTerms = ChartTerms;
26297
26308
  state = proxy({ errorMessages: [] });
26298
26309
  onErrorMessagesChanged(errorMessages) {
@@ -26339,7 +26350,7 @@ var BarConfigPanel = class extends GenericChartConfigPanel {
26339
26350
  //#region src/components/side_panel/components/collapse/collapse.ts
26340
26351
  var Collapse = class extends Component {
26341
26352
  static template = "o-spreadsheet-Collapse";
26342
- props = props({ isCollapsed: types$1.boolean() });
26353
+ props = useProps({ isCollapsed: types$1.boolean() });
26343
26354
  contentRef = signal(null);
26344
26355
  setup() {
26345
26356
  onMounted(() => {
@@ -26372,7 +26383,7 @@ var Collapse = class extends Component {
26372
26383
  var SidePanelCollapsible = class extends Component {
26373
26384
  static template = "o-spreadsheet-SidePanelCollapsible";
26374
26385
  static components = { Collapse };
26375
- props = props({
26386
+ props = useProps({
26376
26387
  title: types$1.string().optional(),
26377
26388
  isInitiallyCollapsed: types$1.boolean().optional(),
26378
26389
  class: types$1.string().optional()
@@ -26392,7 +26403,7 @@ var ChartAnnotation = class extends Component {
26392
26403
  Section,
26393
26404
  TextInput
26394
26405
  };
26395
- props = props(chartSidePanelPropsDefinition);
26406
+ props = useProps(chartSidePanelPropsDefinition);
26396
26407
  editorRef = signal(null);
26397
26408
  state = proxy({
26398
26409
  annotationTextInput: this.props.definition.annotationText || "",
@@ -26449,7 +26460,7 @@ var ChartAnnotation = class extends Component {
26449
26460
  var NumberInput = class extends GenericInput {
26450
26461
  static template = "o-spreadsheet-NumberInput";
26451
26462
  static components = {};
26452
- props = props({
26463
+ props = useProps({
26453
26464
  ...genericInputPropsDefinition,
26454
26465
  min: types$1.number().optional(),
26455
26466
  max: types$1.number().optional()
@@ -26474,7 +26485,7 @@ var DateInput = class extends NumberInput {
26474
26485
  //#region src/components/side_panel/components/badge_selection/badge_selection.ts
26475
26486
  var BadgeSelection = class extends Component {
26476
26487
  static template = "o-spreadsheet.BadgeSelection";
26477
- props = props({
26488
+ props = useProps({
26478
26489
  choices: types$1.ArrayOf(),
26479
26490
  onChange: types$1.function(),
26480
26491
  selectedValue: types$1.string()
@@ -26490,7 +26501,7 @@ var ChartTitle = class extends Component {
26490
26501
  TextStyler,
26491
26502
  TextInput
26492
26503
  };
26493
- props = props({
26504
+ props = useProps({
26494
26505
  title: types$1.string().optional(""),
26495
26506
  placeholder: types$1.string().optional(""),
26496
26507
  updateTitle: types$1.function(),
@@ -26516,7 +26527,7 @@ var AxisDesignEditor = class extends Component {
26516
26527
  NumberInput,
26517
26528
  DateInput
26518
26529
  };
26519
- props = props({
26530
+ props = useProps({
26520
26531
  chartId: types$1.UID(),
26521
26532
  definition: types$1.ChartWithAxisDefinition(),
26522
26533
  updateChart: types$1.function(),
@@ -26691,7 +26702,7 @@ var AxisDesignEditor = class extends Component {
26691
26702
  //#region src/components/side_panel/components/radio_selection/radio_selection.ts
26692
26703
  var RadioSelection = class extends Component {
26693
26704
  static template = "o-spreadsheet.RadioSelection";
26694
- props = props({
26705
+ props = useProps({
26695
26706
  choices: types$1.ArrayOf(),
26696
26707
  onChange: types$1.function(),
26697
26708
  selectedValue: types$1.string(),
@@ -26708,7 +26719,7 @@ var RoundColorPicker = class extends Component {
26708
26719
  Section,
26709
26720
  ColorPicker
26710
26721
  };
26711
- props = props({
26722
+ props = useProps({
26712
26723
  currentColor: types$1.string().optional(),
26713
26724
  title: types$1.string().optional(),
26714
26725
  onColorPicked: types$1.function(),
@@ -26749,7 +26760,7 @@ var GeneralDesignEditor = class extends Component {
26749
26760
  SidePanelCollapsible,
26750
26761
  RadioSelection
26751
26762
  };
26752
- props = props({
26763
+ props = useProps({
26753
26764
  chartId: types$1.UID(),
26754
26765
  definition: types$1.ChartDefinition(),
26755
26766
  canUpdateChart: types$1.function(),
@@ -26792,7 +26803,7 @@ var GeneralDesignEditor = class extends Component {
26792
26803
  var ChartHumanizeNumbers = class extends Component {
26793
26804
  static template = "o-spreadsheet-ChartHumanizeNumbers";
26794
26805
  static components = { Checkbox };
26795
- props = props(chartSidePanelPropsDefinition);
26806
+ props = useProps(chartSidePanelPropsDefinition);
26796
26807
  get title() {
26797
26808
  const locale = this.env.model.getters.getLocale();
26798
26809
  return _t("E.g. 1234567 -> %(value)s", { value: formatValue(1234567, {
@@ -26810,7 +26821,7 @@ var ChartLegend = class extends Component {
26810
26821
  Section,
26811
26822
  Select
26812
26823
  };
26813
- props = props({
26824
+ props = useProps({
26814
26825
  chartId: types$1.string(),
26815
26826
  definition: types$1.ChartDefinitionWithDataSource(),
26816
26827
  canUpdateChart: types$1.function(),
@@ -26856,7 +26867,7 @@ var SeriesDesignEditor = class extends Component {
26856
26867
  RoundColorPicker,
26857
26868
  Select
26858
26869
  };
26859
- props = props({
26870
+ props = useProps({
26860
26871
  chartId: types$1.UID(),
26861
26872
  definition: types$1.ChartDefinitionWithDataSource(),
26862
26873
  updateChart: types$1.function(),
@@ -26921,7 +26932,7 @@ var SeriesWithAxisDesignEditor = class extends Component {
26921
26932
  NumberInput,
26922
26933
  Select
26923
26934
  };
26924
- props = props({
26935
+ props = useProps({
26925
26936
  chartId: types$1.UID(),
26926
26937
  definition: types$1.ChartDefinitionWithDataSource(),
26927
26938
  updateChart: types$1.function(),
@@ -27061,7 +27072,7 @@ var SeriesWithAxisDesignEditor = class extends Component {
27061
27072
  var ChartShowValues = class extends Component {
27062
27073
  static template = "o-spreadsheet-ChartShowValues";
27063
27074
  static components = { Checkbox };
27064
- props = props({
27075
+ props = useProps({
27065
27076
  chartId: types$1.UID(),
27066
27077
  definition: types$1.ChartDefinitionWithDataSource(),
27067
27078
  canUpdateChart: types$1.function(),
@@ -27085,7 +27096,7 @@ var ChartWithAxisDesignPanel = class extends Component {
27085
27096
  ChartShowValues,
27086
27097
  ChartHumanizeNumbers
27087
27098
  };
27088
- props = props(chartSidePanelPropsDefinition);
27099
+ props = useProps(chartSidePanelPropsDefinition);
27089
27100
  get axesList() {
27090
27101
  const { useLeftAxis, useRightAxis } = getDefinedAxis(this.props.definition);
27091
27102
  const axes = [{
@@ -27135,7 +27146,7 @@ var BubbleChartConfigPanel = class extends Component {
27135
27146
  ChartLabelRange,
27136
27147
  ChartErrorSection
27137
27148
  };
27138
- props = props(chartSidePanelPropsDefinition);
27149
+ props = useProps(chartSidePanelPropsDefinition);
27139
27150
  state = proxy({
27140
27151
  datasetDispatchResult: void 0,
27141
27152
  labelsDispatchResult: void 0,
@@ -27272,7 +27283,7 @@ var BubbleChartDesignPanel = class extends Component {
27272
27283
  Checkbox,
27273
27284
  ChartAnnotation
27274
27285
  };
27275
- props = props(chartSidePanelPropsDefinition);
27286
+ props = useProps(chartSidePanelPropsDefinition);
27276
27287
  get axesList() {
27277
27288
  return [{
27278
27289
  id: "x",
@@ -29727,7 +29738,7 @@ var ChartRangeDataSourceComponent = class extends Component {
29727
29738
  ChartDataSeries,
29728
29739
  ChartLabelRange
29729
29740
  };
29730
- props = props({
29741
+ props = useProps({
29731
29742
  chartId: types$1.UID(),
29732
29743
  definition: types$1.ChartDefinitionWithDataSource(),
29733
29744
  dataSource: types$1.ChartRangeDataSource(),
@@ -30590,7 +30601,7 @@ var ColorScalePicker = class extends Component {
30590
30601
  RoundColorPicker,
30591
30602
  Popover
30592
30603
  };
30593
- props = props({
30604
+ props = useProps({
30594
30605
  definition: types$1.object({ colorScale: types$1.ChartColorScale().optional() }),
30595
30606
  onUpdateColorScale: types$1.function()
30596
30607
  });
@@ -30685,7 +30696,7 @@ var CalendarChartDesignPanel = class extends Component {
30685
30696
  RoundColorPicker,
30686
30697
  Select
30687
30698
  };
30688
- props = props(chartSidePanelPropsDefinition);
30699
+ props = useProps(chartSidePanelPropsDefinition);
30689
30700
  get axesList() {
30690
30701
  return [{
30691
30702
  id: "x",
@@ -30730,7 +30741,7 @@ var CalendarChartDesignPanel = class extends Component {
30730
30741
  var ChartShowDataMarkers = class extends Component {
30731
30742
  static template = "o-spreadsheet-ChartShowDataMarkers";
30732
30743
  static components = { Checkbox };
30733
- props = props(chartSidePanelPropsDefinition);
30744
+ props = useProps(chartSidePanelPropsDefinition);
30734
30745
  };
30735
30746
 
30736
30747
  //#endregion
@@ -30795,7 +30806,7 @@ var FunnelChartDesignPanel = class extends Component {
30795
30806
  Section,
30796
30807
  ChartHumanizeNumbers
30797
30808
  };
30798
- props = props({
30809
+ props = useProps({
30799
30810
  ...chartSidePanelPropsDefinition,
30800
30811
  definition: types$1.FunnelChartDefinition()
30801
30812
  });
@@ -30821,7 +30832,7 @@ var GaugeChartConfigPanel = class extends Component {
30821
30832
  ChartErrorSection,
30822
30833
  ChartDataSeries
30823
30834
  };
30824
- props = props(chartSidePanelPropsDefinition);
30835
+ props = useProps(chartSidePanelPropsDefinition);
30825
30836
  state = proxy({ dataRangeDispatchResult: void 0 });
30826
30837
  dataRange = this.props.definition.dataRange;
30827
30838
  get configurationErrorMessages() {
@@ -30846,7 +30857,7 @@ var GaugeChartConfigPanel = class extends Component {
30846
30857
  //#region src/components/composer/autocomplete_dropdown/autocomplete_dropdown.ts
30847
30858
  var TextValueProvider = class extends Component {
30848
30859
  static template = "o-spreadsheet-TextValueProvider";
30849
- props = props({
30860
+ props = useProps({
30850
30861
  proposals: types$1.array(types$1.AutoCompleteProposal()),
30851
30862
  selectedIndex: types$1.number().optional(),
30852
30863
  onValueSelected: types$1.function(),
@@ -31069,7 +31080,7 @@ function isEmptyParagraph(node) {
31069
31080
  var FunctionDescriptionProvider = class extends Component {
31070
31081
  static template = "o-spreadsheet-FunctionDescriptionProvider";
31071
31082
  static components = { Collapse };
31072
- props = props({
31083
+ props = useProps({
31073
31084
  functionDescription: types$1.FunctionDescription(),
31074
31085
  argsToFocus: types$1.array(types$1.number()),
31075
31086
  repeatingArgGroupIndex: types$1.number().optional()
@@ -31138,7 +31149,7 @@ const BUBBLE_ARROW_SIZE = 7;
31138
31149
  var SpeechBubble = class extends Component {
31139
31150
  static template = "o-spreadsheet-SpeechBubble";
31140
31151
  static components = {};
31141
- props = props({
31152
+ props = useProps({
31142
31153
  content: types$1.string(),
31143
31154
  anchorRect: types$1.Rect()
31144
31155
  });
@@ -31173,7 +31184,7 @@ var Composer = class extends Component {
31173
31184
  FunctionDescriptionProvider,
31174
31185
  SpeechBubble
31175
31186
  };
31176
- props = props({
31187
+ props = useProps({
31177
31188
  focus: types$1.ComposerFocusType(),
31178
31189
  inputStyle: types$1.string().optional(""),
31179
31190
  rect: types$1.Rect().optional(),
@@ -32761,7 +32772,7 @@ var StandaloneComposerStore = class extends AbstractComposerStore {
32761
32772
  var StandaloneComposer = class extends Component {
32762
32773
  static template = "o-spreadsheet-StandaloneComposer";
32763
32774
  static components = { Composer };
32764
- props = props({
32775
+ props = useProps({
32765
32776
  onConfirm: types$1.function(),
32766
32777
  composerContent: types$1.string().optional(""),
32767
32778
  defaultRangeSheetId: types$1.UID(),
@@ -32838,7 +32849,7 @@ var GaugeChartDesignPanel = class extends Component {
32838
32849
  ChartHumanizeNumbers,
32839
32850
  Select
32840
32851
  };
32841
- props = props(chartSidePanelPropsDefinition);
32852
+ props = useProps(chartSidePanelPropsDefinition);
32842
32853
  state;
32843
32854
  setup() {
32844
32855
  this.state = proxy({
@@ -32969,7 +32980,7 @@ var GeoChartRegionSelectSection = class extends Component {
32969
32980
  Section,
32970
32981
  Select
32971
32982
  };
32972
- props = props({
32983
+ props = useProps({
32973
32984
  chartId: types$1.UID(),
32974
32985
  definition: types$1.GeoChartDefinition(),
32975
32986
  updateChart: types$1.function()
@@ -33123,7 +33134,7 @@ var PieHoleSize = class extends Component {
33123
33134
  Section,
33124
33135
  NumberInput
33125
33136
  };
33126
- props = props({
33137
+ props = useProps({
33127
33138
  onValueChange: types$1.function(),
33128
33139
  value: types$1.number()
33129
33140
  });
@@ -33149,7 +33160,7 @@ var PieChartDesignPanel = class extends Component {
33149
33160
  RoundColorPicker,
33150
33161
  Select
33151
33162
  };
33152
- props = props(chartSidePanelPropsDefinition);
33163
+ props = useProps(chartSidePanelPropsDefinition);
33153
33164
  state = proxy({ index: 0 });
33154
33165
  get runtime() {
33155
33166
  return this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -33210,7 +33221,7 @@ var RadarChartDesignPanel = class extends Component {
33210
33221
  Checkbox,
33211
33222
  ChartHumanizeNumbers
33212
33223
  };
33213
- props = props(chartSidePanelPropsDefinition);
33224
+ props = useProps(chartSidePanelPropsDefinition);
33214
33225
  };
33215
33226
 
33216
33227
  //#endregion
@@ -33260,7 +33271,7 @@ var ScorecardChartConfigPanel = class extends Component {
33260
33271
  Section,
33261
33272
  Select
33262
33273
  };
33263
- props = props(chartSidePanelPropsDefinition);
33274
+ props = useProps(chartSidePanelPropsDefinition);
33264
33275
  state = proxy({
33265
33276
  keyValueDispatchResult: void 0,
33266
33277
  baselineDispatchResult: void 0
@@ -33274,7 +33285,7 @@ var ScorecardChartConfigPanel = class extends Component {
33274
33285
  return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardKeyValue");
33275
33286
  }
33276
33287
  get isBaselineInvalid() {
33277
- return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
33288
+ return !!this.state.baselineDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
33278
33289
  }
33279
33290
  onKeyValueRangeChanged(ranges) {
33280
33291
  this.keyValue = ranges[0];
@@ -33335,7 +33346,7 @@ var ScorecardChartDesignPanel = class extends Component {
33335
33346
  ChartTitle,
33336
33347
  ChartHumanizeNumbers
33337
33348
  };
33338
- props = props(chartSidePanelPropsDefinition);
33349
+ props = useProps(chartSidePanelPropsDefinition);
33339
33350
  get colorsSectionTitle() {
33340
33351
  return this.props.definition.baselineMode === "progress" ? _t("Progress bar colors") : _t("Baseline colors");
33341
33352
  }
@@ -33417,7 +33428,7 @@ var SunburstChartDesignPanel = class extends Component {
33417
33428
  PieHoleSize,
33418
33429
  ChartHumanizeNumbers
33419
33430
  };
33420
- props = props(chartSidePanelPropsDefinition);
33431
+ props = useProps(chartSidePanelPropsDefinition);
33421
33432
  defaults = SunburstChartDefaults;
33422
33433
  get showValues() {
33423
33434
  return this.props.definition.showValues ?? SunburstChartDefaults.showValues;
@@ -33450,7 +33461,7 @@ var TreeMapCategoryColors = class extends Component {
33450
33461
  Checkbox,
33451
33462
  RoundColorPicker
33452
33463
  };
33453
- props = props({
33464
+ props = useProps({
33454
33465
  chartId: types$1.UID(),
33455
33466
  definition: types$1.TreeMapChartDefinition(),
33456
33467
  onColorChanged: types$1.function()
@@ -33482,7 +33493,7 @@ var TreeMapCategoryColors = class extends Component {
33482
33493
  var TreeMapColorScale = class extends Component {
33483
33494
  static template = "o-spreadsheet-TreeMapColorScale";
33484
33495
  static components = { RoundColorPicker };
33485
- props = props({
33496
+ props = useProps({
33486
33497
  chartId: types$1.UID(),
33487
33498
  definition: types$1.TreeMapChartDefinition(),
33488
33499
  onColorChanged: types$1.function()
@@ -33529,7 +33540,7 @@ var TreeMapChartDesignPanel = class extends Component {
33529
33540
  TreeMapColorScale,
33530
33541
  ChartHumanizeNumbers
33531
33542
  };
33532
- props = props(chartSidePanelPropsDefinition);
33543
+ props = useProps(chartSidePanelPropsDefinition);
33533
33544
  savedColors = {
33534
33545
  categoryColors: DEFAULT_SOLID_COLOR,
33535
33546
  colorScale: DEFAULT_COLOR_SCALE
@@ -33587,7 +33598,7 @@ var WaterfallChartDesignPanel = class extends Component {
33587
33598
  ChartLegend,
33588
33599
  ChartHumanizeNumbers
33589
33600
  };
33590
- props = props(chartSidePanelPropsDefinition);
33601
+ props = useProps(chartSidePanelPropsDefinition);
33591
33602
  axisChoices = CHART_AXIS_CHOICES;
33592
33603
  onUpdateShowSubTotals(showSubTotals) {
33593
33604
  this.props.updateChart(this.props.chartId, { showSubTotals });
@@ -33701,7 +33712,7 @@ var ChartTypePicker = class extends Component {
33701
33712
  Section,
33702
33713
  Popover
33703
33714
  };
33704
- props = props({
33715
+ props = useProps({
33705
33716
  chartId: types$1.UID(),
33706
33717
  chartPanelStore: types$1.Store()
33707
33718
  });
@@ -33879,7 +33890,7 @@ var ChartPanel = class extends Component {
33879
33890
  Section,
33880
33891
  ChartTypePicker
33881
33892
  };
33882
- props = props({
33893
+ props = useProps({
33883
33894
  onCloseSidePanel: types$1.function(),
33884
33895
  chartId: types$1.UID()
33885
33896
  });
@@ -34286,7 +34297,7 @@ var ColumnStatsPanel = class extends Component {
34286
34297
  BadgeSelection,
34287
34298
  Section
34288
34299
  };
34289
- props = props({ onCloseSidePanel: types$1.function() });
34300
+ props = useProps({ onCloseSidePanel: types$1.function() });
34290
34301
  state = proxy({
34291
34302
  currentChart: "count",
34292
34303
  currentFrequencyOrder: "descending",
@@ -34529,7 +34540,7 @@ var CellIsRuleEditor = class extends Component {
34529
34540
  ColorPickerWidget,
34530
34541
  Select
34531
34542
  };
34532
- props = props({ store: types$1.Store() });
34543
+ props = useProps({ store: types$1.Store() });
34533
34544
  getTextDecoration = getTextDecoration;
34534
34545
  get rule() {
34535
34546
  return this.props.store.state.rules.cellIs;
@@ -34539,7 +34550,7 @@ var CellIsRuleEditor = class extends Component {
34539
34550
  //#endregion
34540
34551
  //#region src/components/side_panel/criterion_form/criterion_form.ts
34541
34552
  var CriterionForm = class extends Component {
34542
- props = props({
34553
+ props = useProps({
34543
34554
  criterion: types$1.object(),
34544
34555
  onCriterionChanged: types$1.function(),
34545
34556
  disableFormulas: types$1.boolean().optional(),
@@ -35144,7 +35155,7 @@ function getOccurrencesInRanges(criterionRanges, getters) {
35144
35155
  var CriterionInput = class extends Component {
35145
35156
  static template = "o-spreadsheet-CriterionInput";
35146
35157
  static components = { StandaloneComposer };
35147
- props = props({
35158
+ props = useProps({
35148
35159
  value: types$1.string().optional(""),
35149
35160
  criterionType: types$1.DataValidationCriterionType(),
35150
35161
  onValueChanged: types$1.function(),
@@ -35992,7 +36003,7 @@ var ColorScaleRuleEditorThreshold = class extends Component {
35992
36003
  StandaloneComposer,
35993
36004
  Select
35994
36005
  };
35995
- props = props({
36006
+ props = useProps({
35996
36007
  store: types$1.Store(),
35997
36008
  thresholdType: types$1.or([
35998
36009
  types$1.literal("minimum"),
@@ -36074,7 +36085,7 @@ var ColorScaleRuleEditorThreshold = class extends Component {
36074
36085
  var ColorScaleRuleEditor = class extends Component {
36075
36086
  static template = "o-spreadsheet-ColorScaleRuleEditor";
36076
36087
  static components = { ColorScaleRuleEditorThreshold };
36077
- props = props({ store: types$1.Store() });
36088
+ props = useProps({ store: types$1.Store() });
36078
36089
  };
36079
36090
 
36080
36091
  //#endregion
@@ -36085,7 +36096,7 @@ var DataBarRuleEditor = class extends Component {
36085
36096
  SelectionInput,
36086
36097
  RoundColorPicker
36087
36098
  };
36088
- props = props({ store: types$1.Store() });
36099
+ props = useProps({ store: types$1.Store() });
36089
36100
  get rule() {
36090
36101
  return this.props.store.state.rules.dataBar;
36091
36102
  }
@@ -36096,7 +36107,7 @@ var DataBarRuleEditor = class extends Component {
36096
36107
  //#region src/components/icon_picker/icon_picker.ts
36097
36108
  var IconPicker = class extends Component {
36098
36109
  static template = "o-spreadsheet-IconPicker";
36099
- props = props({ onIconPicked: types$1.function() });
36110
+ props = useProps({ onIconPicked: types$1.function() });
36100
36111
  onIconClick(icon) {
36101
36112
  if (icon) this.props.onIconPicked(icon);
36102
36113
  }
@@ -36117,7 +36128,7 @@ var IconSetRuleEditor = class extends Component {
36117
36128
  StandaloneComposer,
36118
36129
  Select
36119
36130
  };
36120
- props = props({ store: types$1.Store() });
36131
+ props = useProps({ store: types$1.Store() });
36121
36132
  get rule() {
36122
36133
  return this.props.store.state.rules.iconSet;
36123
36134
  }
@@ -36200,7 +36211,7 @@ var ConditionalFormattingEditor = class extends Component {
36200
36211
  IconSetRuleEditor,
36201
36212
  DataBarRuleEditor
36202
36213
  };
36203
- props = props({
36214
+ props = useProps({
36204
36215
  cf: types$1.ConditionalFormat(),
36205
36216
  isNewCf: types$1.boolean(),
36206
36217
  onCloseSidePanel: types$1.function()
@@ -36260,7 +36271,7 @@ var ConditionalFormattingEditor = class extends Component {
36260
36271
  //#region src/components/side_panel/conditional_formatting/cf_preview/cf_preview.ts
36261
36272
  var ConditionalFormatPreview = class extends Component {
36262
36273
  static template = "o-spreadsheet-ConditionalFormatPreview";
36263
- props = props({
36274
+ props = useProps({
36264
36275
  conditionalFormat: types$1.ConditionalFormat(),
36265
36276
  onMouseDown: types$1.function(),
36266
36277
  class: types$1.string()
@@ -36321,7 +36332,7 @@ var ConditionalFormatPreview = class extends Component {
36321
36332
  var ConditionalFormatPreviewList = class extends Component {
36322
36333
  static template = "o-spreadsheet-ConditionalFormatPreviewList";
36323
36334
  static components = { ConditionalFormatPreview };
36324
- props = props({ onCloseSidePanel: types$1.function() });
36335
+ props = useProps({ onCloseSidePanel: types$1.function() });
36325
36336
  dragAndDrop = useDragAndDropListItems();
36326
36337
  cfListRef = signal(null);
36327
36338
  get conditionalFormats() {
@@ -36387,7 +36398,7 @@ var ConditionalFormatPreviewList = class extends Component {
36387
36398
  //#region src/components/side_panel/data_validation/dv_preview/dv_preview.ts
36388
36399
  var DataValidationPreview = class extends Component {
36389
36400
  static template = "o-spreadsheet-DataValidationPreview";
36390
- props = props({ rule: types$1.DataValidationRule() });
36401
+ props = useProps({ rule: types$1.DataValidationRule() });
36391
36402
  dvPreviewRef = signal(null);
36392
36403
  setup() {
36393
36404
  useHighlightsOnHover(this.dvPreviewRef, this);
@@ -36423,7 +36434,7 @@ var DataValidationPreview = class extends Component {
36423
36434
  var DataValidationPanel = class extends Component {
36424
36435
  static template = "o-spreadsheet-DataValidationPanel";
36425
36436
  static components = { DataValidationPreview };
36426
- props = props({ onCloseSidePanel: types$1.function() });
36437
+ props = useProps({ onCloseSidePanel: types$1.function() });
36427
36438
  addDataValidationRule() {
36428
36439
  this.env.replaceSidePanel("DataValidationEditor", "DataValidation", { ruleId: UuidGenerator.smallUuid() });
36429
36440
  }
@@ -36473,7 +36484,7 @@ var DataValidationEditor = class extends Component {
36473
36484
  Section,
36474
36485
  ValidationMessages
36475
36486
  };
36476
- props = props({
36487
+ props = useProps({
36477
36488
  ruleId: types$1.UID(),
36478
36489
  onCancel: types$1.function().optional(),
36479
36490
  onCloseSidePanel: types$1.function()
@@ -36962,7 +36973,7 @@ var FindAndReplacePanel = class extends Component {
36962
36973
  ValidationMessages,
36963
36974
  Select
36964
36975
  };
36965
- props = props({ onCloseSidePanel: types$1.function() });
36976
+ props = useProps({ onCloseSidePanel: types$1.function() });
36966
36977
  searchInputRef = signal.ref(HTMLInputElement);
36967
36978
  store;
36968
36979
  state;
@@ -37817,7 +37828,7 @@ var MoreFormatsPanel = class extends Component {
37817
37828
  Checkbox,
37818
37829
  Select
37819
37830
  };
37820
- props = props({
37831
+ props = useProps({
37821
37832
  onCloseSidePanel: types$1.function(),
37822
37833
  category: types$1.or([
37823
37834
  types$1.literal("number"),
@@ -37884,7 +37895,7 @@ var NamedRangePreview = class extends Component {
37884
37895
  SelectionInput,
37885
37896
  TextInput
37886
37897
  };
37887
- props = props({ namedRange: types$1.NamedRange() });
37898
+ props = useProps({ namedRange: types$1.NamedRange() });
37888
37899
  state = proxy({});
37889
37900
  namedRangePreviewRef = signal(null);
37890
37901
  setup() {
@@ -37941,7 +37952,7 @@ var NamedRangesPanel = class extends Component {
37941
37952
  SelectionInput,
37942
37953
  TextInput
37943
37954
  };
37944
- props = props({ onCloseSidePanel: types$1.function() });
37955
+ props = useProps({ onCloseSidePanel: types$1.function() });
37945
37956
  get namedRanges() {
37946
37957
  return this.env.model.getters.getNamedRanges();
37947
37958
  }
@@ -37962,7 +37973,7 @@ const HIGHLIGHT_COLOR = "#e28f08";
37962
37973
  var PerfProfilePanel = class extends Component {
37963
37974
  static template = "o-spreadsheet-PerfProfilePanel";
37964
37975
  static components = { Section };
37965
- props = props({ onCloseSidePanel: types$1.function() });
37976
+ props = useProps({ onCloseSidePanel: types$1.function() });
37966
37977
  state = proxy({
37967
37978
  selectedIndex: void 0,
37968
37979
  lastProfiledTime: 0
@@ -38178,7 +38189,7 @@ var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
38178
38189
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel.ts
38179
38190
  var PivotMeasureDisplayPanel = class extends Component {
38180
38191
  static template = "o-spreadsheet-PivotMeasureDisplayPanel";
38181
- props = props({
38192
+ props = useProps({
38182
38193
  onCloseSidePanel: types$1.function(),
38183
38194
  pivotId: types$1.UID(),
38184
38195
  measure: types$1.PivotCoreMeasure()
@@ -38244,7 +38255,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
38244
38255
  //#region src/components/side_panel/pivot/pivot_defer_update/pivot_defer_update.ts
38245
38256
  var PivotDeferUpdate = class extends Component {
38246
38257
  static template = "o-spreadsheet-PivotDeferUpdate";
38247
- props = props({
38258
+ props = useProps({
38248
38259
  deferUpdate: types$1.boolean(),
38249
38260
  isDirty: types$1.boolean(),
38250
38261
  toggleDeferUpdate: types$1.function(),
@@ -38473,7 +38484,7 @@ const filterDateCriterionOperators = [
38473
38484
  var FilterMenuCriterion = class extends Component {
38474
38485
  static template = "o-spreadsheet-FilterMenuCriterion";
38475
38486
  static components = { Select };
38476
- props = props({
38487
+ props = useProps({
38477
38488
  criterion: types$1.CriterionFilter(),
38478
38489
  criterionOperators: types$1.array(types$1.GenericCriterionType()),
38479
38490
  onCriterionChanged: types$1.function()
@@ -38510,7 +38521,7 @@ var FilterMenuCriterion = class extends Component {
38510
38521
  var FilterMenuValueItem = class extends Component {
38511
38522
  static template = "o-spreadsheet-FilterMenuValueItem";
38512
38523
  static components = { Checkbox };
38513
- props = props({
38524
+ props = useProps({
38514
38525
  value: types$1.string(),
38515
38526
  isChecked: types$1.boolean(),
38516
38527
  isSelected: types$1.boolean(),
@@ -38536,7 +38547,7 @@ var FilterMenuValueItem = class extends Component {
38536
38547
  var FilterMenuValueList = class extends Component {
38537
38548
  static template = "o-spreadsheet-FilterMenuValueList";
38538
38549
  static components = { FilterMenuValueItem };
38539
- props = props({
38550
+ props = useProps({
38540
38551
  values: types$1.array(types$1.object({
38541
38552
  checked: types$1.boolean(),
38542
38553
  string: types$1.string(),
@@ -38651,7 +38662,7 @@ var PivotFilterMenu = class extends Component {
38651
38662
  };
38652
38663
  criterionCategory = "char";
38653
38664
  updatedCriterionValue;
38654
- props = props({
38665
+ props = useProps({
38655
38666
  pivotId: types$1.UID(),
38656
38667
  definition: types$1.instanceOf(SpreadsheetPivotRuntimeDefinition),
38657
38668
  filter: types$1.PivotFilter(),
@@ -38714,7 +38725,7 @@ var PivotFilterMenu = class extends Component {
38714
38725
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension/pivot_dimension.ts
38715
38726
  var PivotDimension = class extends Component {
38716
38727
  static template = "o-spreadsheet-PivotDimension";
38717
- props = props({
38728
+ props = useProps({
38718
38729
  dimension: types$1.or([
38719
38730
  types$1.PivotDimension(),
38720
38731
  types$1.PivotMeasure(),
@@ -38751,7 +38762,7 @@ var PivotFilterEditor = class extends Component {
38751
38762
  Popover,
38752
38763
  PivotFilterMenu
38753
38764
  };
38754
- props = props({
38765
+ props = useProps({
38755
38766
  pivotId: types$1.UID(),
38756
38767
  definition: types$1.instanceOf(SpreadsheetPivotRuntimeDefinition),
38757
38768
  filter: types$1.PivotFilter(),
@@ -38883,7 +38894,7 @@ var AddDimensionButton = class extends Component {
38883
38894
  Popover,
38884
38895
  TextValueProvider
38885
38896
  };
38886
- props = props({
38897
+ props = useProps({
38887
38898
  onFieldPicked: types$1.function(),
38888
38899
  fields: types$1.array()
38889
38900
  });
@@ -38978,7 +38989,7 @@ var AddDimensionButton = class extends Component {
38978
38989
  //#region src/components/side_panel/pivot/pivot_custom_groups_collapsible/pivot_custom_groups_collapsible.ts
38979
38990
  var PivotCustomGroupsCollapsible = class extends Component {
38980
38991
  static template = "o-spreadsheet-PivotCustomGroupsCollapsible";
38981
- props = props({
38992
+ props = useProps({
38982
38993
  pivotId: types$1.UID(),
38983
38994
  customField: types$1.PivotCustomGroupedField(),
38984
38995
  onCustomFieldUpdated: types$1.function()
@@ -39042,7 +39053,7 @@ var PivotCustomGroupsCollapsible = class extends Component {
39042
39053
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_granularity/pivot_dimension_granularity.ts
39043
39054
  var PivotDimensionGranularity = class extends Component {
39044
39055
  static template = "o-spreadsheet-PivotDimensionGranularity";
39045
- props = props({
39056
+ props = useProps({
39046
39057
  dimension: types$1.PivotDimension(),
39047
39058
  onUpdated: types$1.function(),
39048
39059
  availableGranularities: types$1.SetOf(),
@@ -39063,7 +39074,7 @@ var PivotDimensionGranularity = class extends Component {
39063
39074
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_order/pivot_dimension_order.ts
39064
39075
  var PivotDimensionOrder = class extends Component {
39065
39076
  static template = "o-spreadsheet-PivotDimensionOrder";
39066
- props = props({
39077
+ props = useProps({
39067
39078
  dimension: types$1.PivotDimension(),
39068
39079
  onUpdated: types$1.function(),
39069
39080
  isMeasureSorted: types$1.boolean().optional()
@@ -39145,7 +39156,7 @@ var PivotMeasureEditor = class extends Component {
39145
39156
  StandaloneComposer,
39146
39157
  Select
39147
39158
  };
39148
- props = props({
39159
+ props = useProps({
39149
39160
  pivotId: types$1.string(),
39150
39161
  definition: types$1.PivotRuntimeDefinition(),
39151
39162
  measure: types$1.PivotMeasure(),
@@ -39233,7 +39244,7 @@ var PivotMeasureEditor = class extends Component {
39233
39244
  var PivotSortSection = class extends Component {
39234
39245
  static template = "o-spreadsheet-PivotSortSection";
39235
39246
  static components = { Section };
39236
- props = props({
39247
+ props = useProps({
39237
39248
  definition: types$1.PivotRuntimeDefinition(),
39238
39249
  pivotId: types$1.UID()
39239
39250
  });
@@ -39288,7 +39299,7 @@ var PivotLayoutConfigurator = class extends Component {
39288
39299
  PivotCustomGroupsCollapsible,
39289
39300
  SidePanelCollapsible
39290
39301
  };
39291
- props = props({
39302
+ props = useProps({
39292
39303
  definition: types$1.instanceOf(PivotRuntimeDefinition),
39293
39304
  onDimensionsUpdated: types$1.function(),
39294
39305
  onFiltersUpdated: types$1.function(),
@@ -39518,7 +39529,7 @@ var PivotTitleSection = class extends Component {
39518
39529
  Section,
39519
39530
  TextInput
39520
39531
  };
39521
- props = props({
39532
+ props = useProps({
39522
39533
  pivotId: types$1.UID(),
39523
39534
  flipAxis: types$1.function()
39524
39535
  });
@@ -41154,7 +41165,7 @@ var PivotSpreadsheetSidePanel = class extends Component {
41154
41165
  AddDimensionButton,
41155
41166
  PivotFilterEditor
41156
41167
  };
41157
- props = props({
41168
+ props = useProps({
41158
41169
  pivotId: types$1.UID(),
41159
41170
  onCloseSidePanel: types$1.function()
41160
41171
  });
@@ -42392,7 +42403,7 @@ function drawTexts(ctx, tableStyle, params) {
42392
42403
  var TableStylePreview = class extends Component {
42393
42404
  static template = "o-spreadsheet-TableStylePreview";
42394
42405
  static components = { MenuPopover };
42395
- props = props({
42406
+ props = useProps({
42396
42407
  tableConfig: types$1.TableConfig(),
42397
42408
  tableStyle: types$1.TableStyle(),
42398
42409
  type: types$1.or([types$1.literal("table"), types$1.literal("pivot")]),
@@ -42485,7 +42496,7 @@ var TableStylesPopover = class extends Component {
42485
42496
  Popover,
42486
42497
  TableStylePreview
42487
42498
  };
42488
- props = props({
42499
+ props = useProps({
42489
42500
  tableConfig: types$1.object(),
42490
42501
  popoverProps: types$1.object().optional(),
42491
42502
  closePopover: types$1.function(),
@@ -42533,7 +42544,7 @@ var TableStylePicker = class extends Component {
42533
42544
  TableStylesPopover,
42534
42545
  TableStylePreview
42535
42546
  };
42536
- props = props({
42547
+ props = useProps({
42537
42548
  tableConfig: types$1.TableConfig(),
42538
42549
  onStylePicked: types$1.function(),
42539
42550
  tableStyles: types$1.RecordOf(),
@@ -42585,7 +42596,7 @@ var PivotDesignPanel = class extends Component {
42585
42596
  NumberInput,
42586
42597
  TableStylePicker
42587
42598
  };
42588
- props = props({ pivotId: types$1.UID() });
42599
+ props = useProps({ pivotId: types$1.UID() });
42589
42600
  store;
42590
42601
  setup() {
42591
42602
  this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId, "neverDefer");
@@ -42639,7 +42650,7 @@ var PivotSidePanel = class extends Component {
42639
42650
  Section,
42640
42651
  PivotDesignPanel
42641
42652
  };
42642
- props = props({
42653
+ props = useProps({
42643
42654
  pivotId: types$1.UID(),
42644
42655
  onCloseSidePanel: types$1.function(),
42645
42656
  openTab: types$1.or([types$1.literal("configuration"), types$1.literal("design")]).optional("configuration")
@@ -42673,7 +42684,7 @@ var RemoveDuplicatesPanel = class extends Component {
42673
42684
  Section,
42674
42685
  Checkbox
42675
42686
  };
42676
- props = props({ onCloseSidePanel: types$1.function() });
42687
+ props = useProps({ onCloseSidePanel: types$1.function() });
42677
42688
  state = proxy({
42678
42689
  hasHeader: false,
42679
42690
  columns: {}
@@ -42757,7 +42768,7 @@ var SettingsPanel = class extends Component {
42757
42768
  BadgeSelection,
42758
42769
  Select
42759
42770
  };
42760
- props = props({ onCloseSidePanel: types$1.function() });
42771
+ props = useProps({ onCloseSidePanel: types$1.function() });
42761
42772
  loadedLocales = [];
42762
42773
  setup() {
42763
42774
  onWillStart(() => this.loadLocales());
@@ -42875,7 +42886,7 @@ var SplitIntoColumnsPanel = class extends Component {
42875
42886
  Checkbox,
42876
42887
  Select
42877
42888
  };
42878
- props = props({ onCloseSidePanel: types$1.function() });
42889
+ props = useProps({ onCloseSidePanel: types$1.function() });
42879
42890
  state = proxy({
42880
42891
  separatorValue: "auto",
42881
42892
  addNewColumns: false,
@@ -42951,7 +42962,7 @@ var TablePanel = class extends Component {
42951
42962
  Section,
42952
42963
  NumberInput
42953
42964
  };
42954
- props = props({
42965
+ props = useProps({
42955
42966
  onCloseSidePanel: types$1.function(),
42956
42967
  table: types$1.CoreTable()
42957
42968
  });
@@ -43111,7 +43122,7 @@ var TableStyleEditorPanel = class extends Component {
43111
43122
  RoundColorPicker,
43112
43123
  TableStylePreview
43113
43124
  };
43114
- props = props({
43125
+ props = useProps({
43115
43126
  onCloseSidePanel: types$1.function(),
43116
43127
  onStylePicked: types$1.function().optional(),
43117
43128
  styleId: types$1.string().optional()
@@ -45458,7 +45469,7 @@ function adjustIndexWithinBounds(index, position, max) {
45458
45469
  //#region src/components/autofill/autofill.ts
45459
45470
  var Autofill = class extends Component {
45460
45471
  static template = "o-spreadsheet-Autofill";
45461
- props = props({
45472
+ props = useProps({
45462
45473
  position: types$1.DOMCoordinates(),
45463
45474
  isVisible: types$1.boolean()
45464
45475
  });
@@ -45482,7 +45493,8 @@ var Autofill = class extends Component {
45482
45493
  const { x, y } = this.state.handler ? this.state.position : this.props.position;
45483
45494
  return cssPropertiesToCss({
45484
45495
  top: `${y}px`,
45485
- left: `${x}px`
45496
+ left: `${x}px`,
45497
+ visibility: this.props.isVisible ? "visible" : "hidden"
45486
45498
  });
45487
45499
  }
45488
45500
  get styleNextValue() {
@@ -45536,7 +45548,7 @@ var Autofill = class extends Component {
45536
45548
  }
45537
45549
  };
45538
45550
  var TooltipComponent = class extends Component {
45539
- props = props({ content: types$1.string() });
45551
+ props = useProps({ content: types$1.string() });
45540
45552
  static template = xml`
45541
45553
  <div t-out="this.props.content"/>
45542
45554
  `;
@@ -45546,7 +45558,7 @@ var TooltipComponent = class extends Component {
45546
45558
  //#region src/components/collaborative_client_tag/collaborative_client_tag.ts
45547
45559
  var ClientTag = class extends Component {
45548
45560
  static template = "o-spreadsheet-ClientTag";
45549
- props = props({
45561
+ props = useProps({
45550
45562
  active: types$1.boolean(),
45551
45563
  name: types$1.string(),
45552
45564
  color: types$1.Color(),
@@ -45903,7 +45915,7 @@ var CellComposerStore = class extends AbstractComposerStore {
45903
45915
  this._cancelEdition();
45904
45916
  this.resetContent();
45905
45917
  }
45906
- if (cmd.sheetIdFrom !== cmd.sheetIdTo) {
45918
+ if (this.model.selection.isListening(this) && cmd.sheetIdFrom !== cmd.sheetIdTo) {
45907
45919
  const activePosition = this.getters.getActivePosition();
45908
45920
  const { col, row } = this.getters.getNextVisibleCellPosition({
45909
45921
  sheetId: cmd.sheetIdTo,
@@ -46133,7 +46145,7 @@ const GRID_CELL_REFERENCE_TOP_OFFSET = 28;
46133
46145
  var GridComposer = class extends Component {
46134
46146
  static template = "o-spreadsheet-GridComposer";
46135
46147
  static components = { Composer };
46136
- props = props({
46148
+ props = useProps({
46137
46149
  gridDims: types$1.DOMDimension(),
46138
46150
  onInputContextMenu: types$1.function()
46139
46151
  });
@@ -47260,7 +47272,7 @@ var GridOverlay = class extends Component {
47260
47272
  FiguresContainer,
47261
47273
  GridAddRowsFooter
47262
47274
  };
47263
- props = props({
47275
+ props = useProps({
47264
47276
  onCellDoubleClicked: types$1.function().optional(() => () => {}),
47265
47277
  onCellClicked: types$1.function().optional(() => () => {}),
47266
47278
  onCellRightClicked: types$1.function().optional(() => () => {}),
@@ -47377,7 +47389,7 @@ var GridOverlay = class extends Component {
47377
47389
  var GridPopover = class extends Component {
47378
47390
  static template = "o-spreadsheet-GridPopover";
47379
47391
  static components = { Popover };
47380
- props = props({
47392
+ props = useProps({
47381
47393
  onClosePopover: types$1.function(),
47382
47394
  onMouseWheel: types$1.function(),
47383
47395
  gridRect: types$1.Rect()
@@ -47405,7 +47417,7 @@ var GridPopover = class extends Component {
47405
47417
  //#region src/components/headers_overlay/unhide_headers.ts
47406
47418
  var UnhideRowHeaders = class extends Component {
47407
47419
  static template = "o-spreadsheet-UnhideRowHeaders";
47408
- props = props({
47420
+ props = useProps({
47409
47421
  headersGroups: types$1.array(),
47410
47422
  headerRange: types$1.object({
47411
47423
  start: types$1.HeaderIndex(),
@@ -47448,7 +47460,7 @@ var UnhideRowHeaders = class extends Component {
47448
47460
  };
47449
47461
  var UnhideColumnHeaders = class extends Component {
47450
47462
  static template = "o-spreadsheet-UnhideColumnHeaders";
47451
- props = props({
47463
+ props = useProps({
47452
47464
  headersGroups: types$1.array(),
47453
47465
  headerRange: types$1.object({
47454
47466
  start: types$1.HeaderIndex(),
@@ -47488,7 +47500,7 @@ var UnhideColumnHeaders = class extends Component {
47488
47500
  //#region src/components/headers_overlay/headers_overlay.ts
47489
47501
  const resizerPropsDefinition = { onOpenContextMenu: types$1.function() };
47490
47502
  var AbstractResizer = class extends Component {
47491
- props = props(resizerPropsDefinition);
47503
+ props = useProps(resizerPropsDefinition);
47492
47504
  composerFocusStore;
47493
47505
  PADDING = 0;
47494
47506
  MAX_SIZE_MARGIN = 0;
@@ -47951,7 +47963,7 @@ var RowResizer = class extends AbstractResizer {
47951
47963
  };
47952
47964
  var HeadersOverlay = class extends Component {
47953
47965
  static template = "o-spreadsheet-HeadersOverlay";
47954
- props = props(resizerPropsDefinition);
47966
+ props = useProps(resizerPropsDefinition);
47955
47967
  static components = {
47956
47968
  ColResizer,
47957
47969
  RowResizer
@@ -48947,7 +48959,7 @@ function useWheelHandler(handler) {
48947
48959
  //#region src/components/highlight/border/border.ts
48948
48960
  var Border = class extends Component {
48949
48961
  static template = "o-spreadsheet-Border";
48950
- props = props({
48962
+ props = useProps({
48951
48963
  zone: types$1.Zone(),
48952
48964
  orientation: types$1.or([
48953
48965
  types$1.literal("n"),
@@ -49000,7 +49012,7 @@ var Border = class extends Component {
49000
49012
  const MOBILE_HANDLER_WIDTH = 40;
49001
49013
  var Corner = class extends Component {
49002
49014
  static template = "o-spreadsheet-Corner";
49003
- props = props({
49015
+ props = useProps({
49004
49016
  zone: types$1.Zone(),
49005
49017
  color: types$1.Color(),
49006
49018
  orientation: types$1.or([
@@ -49074,7 +49086,7 @@ var Highlight = class extends Component {
49074
49086
  Corner,
49075
49087
  Border
49076
49088
  };
49077
- props = props({
49089
+ props = useProps({
49078
49090
  range: types$1.Range(),
49079
49091
  color: types$1.Color()
49080
49092
  });
@@ -49218,7 +49230,7 @@ var ScrollBar = class extends Component {
49218
49230
  <div t-att-style="this.sizeCss"/>
49219
49231
  </div>
49220
49232
  `;
49221
- props = props({
49233
+ props = useProps({
49222
49234
  width: types$1.Pixel().optional(1),
49223
49235
  height: types$1.Pixel().optional(1),
49224
49236
  direction: types$1.customValidator(types$1.string(), (direction) => ["horizontal", "vertical"].includes(direction)),
@@ -49264,7 +49276,7 @@ var HorizontalScrollBar = class extends Component {
49264
49276
  direction="'horizontal'"
49265
49277
  onScroll.bind="this.onScroll"
49266
49278
  />`;
49267
- props = props({ leftOffset: types$1.number().optional(0) });
49279
+ props = useProps({ leftOffset: types$1.number().optional(0) });
49268
49280
  get offset() {
49269
49281
  return this.env.model.getters.getActiveSheetScrollInfo().scrollX;
49270
49282
  }
@@ -49307,7 +49319,7 @@ var VerticalScrollBar = class extends Component {
49307
49319
  direction="'vertical'"
49308
49320
  onScroll.bind="(offset) => this.onScroll(offset)"
49309
49321
  />`;
49310
- props = props({ topOffset: types$1.number().optional(0) });
49322
+ props = useProps({ topOffset: types$1.number().optional(0) });
49311
49323
  get offset() {
49312
49324
  return this.env.model.getters.getActiveSheetScrollInfo().scrollY;
49313
49325
  }
@@ -49358,7 +49370,7 @@ const SIZE = 3;
49358
49370
  const COLOR = "#777";
49359
49371
  var TableResizer = class extends Component {
49360
49372
  static template = "o-spreadsheet-TableResizer";
49361
- props = props({ table: types$1.Table() });
49373
+ props = useProps({ table: types$1.Table() });
49362
49374
  state = proxy({ highlightZone: void 0 });
49363
49375
  dragNDropGrid = useDragAndDropBeyondTheViewport(this.env);
49364
49376
  setup() {
@@ -49446,7 +49458,7 @@ var Grid = class extends Component {
49446
49458
  TableResizer,
49447
49459
  Selection
49448
49460
  };
49449
- props = props({
49461
+ props = useProps({
49450
49462
  exposeFocus: types$1.function(),
49451
49463
  getGridSize: types$1.function()
49452
49464
  });
@@ -50074,6 +50086,10 @@ var Grid = class extends Component {
50074
50086
  get displaySelectionHandler() {
50075
50087
  return this.env.isMobile() && this.composerFocusStore.activeComposer.editionMode === "inactive";
50076
50088
  }
50089
+ get clientsToDisplay() {
50090
+ const sheetId = this.env.model.getters.getActiveSheetId();
50091
+ return this.env.model.getters.getClientsToDisplay(sheetId);
50092
+ }
50077
50093
  };
50078
50094
 
50079
50095
  //#endregion
@@ -50090,7 +50106,7 @@ supportedPivotPositionalFormulaRegistry.add("SPREADSHEET", false);
50090
50106
  //#region src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.ts
50091
50107
  var ClickableCellSortIcon = class extends Component {
50092
50108
  static template = "o-spreadsheet-ClickableCellSortIcon";
50093
- props = props({
50109
+ props = useProps({
50094
50110
  position: types$1.CellPosition(),
50095
50111
  sortDirection: types$1.or([types$1.SortDirection, types$1.literal("none")])
50096
50112
  });
@@ -50165,7 +50181,7 @@ var FullScreenFigure = class extends Component {
50165
50181
  var PivotHTMLRenderer = class extends Component {
50166
50182
  static template = "o_spreadsheet.PivotHTMLRenderer";
50167
50183
  static components = { Checkbox };
50168
- props = props({
50184
+ props = useProps({
50169
50185
  pivotId: types$1.UID(),
50170
50186
  onCellClicked: types$1.function()
50171
50187
  });
@@ -51038,6 +51054,7 @@ var Squisher = class {
51038
51054
  alreadyAppliedNumberOffsets = [];
51039
51055
  previousStrings = [];
51040
51056
  baseFormulaWasTransformed = false;
51057
+ rangeToStringOptions = { doNotSimplifyRange: true };
51041
51058
  baseNumber = void 0;
51042
51059
  constructor(getters) {
51043
51060
  this.getters = getters;
@@ -51093,9 +51110,9 @@ var Squisher = class {
51093
51110
  let references = [];
51094
51111
  if (!this.baseFormula || this.baseFormula.normalizedFormula !== cell.compiledFormula.normalizedFormula) {
51095
51112
  this.resetBaseTo(cell.compiledFormula);
51096
- return cell.compiledFormula.toFormulaString(this.getters);
51113
+ return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
51097
51114
  } else {
51098
- if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters);
51115
+ if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
51099
51116
  numbers = this.squishNumbers(cell.compiledFormula.literalValues.numbers);
51100
51117
  strings = this.squishStrings(cell.compiledFormula.literalValues.strings);
51101
51118
  references = this.squishReferences(cell.compiledFormula.rangeDependencies, forSheetId);
@@ -51172,23 +51189,23 @@ var Squisher = class {
51172
51189
  squishOneReference(reference, previousReferences, index, forSheetId) {
51173
51190
  const previousReference = previousReferences[index];
51174
51191
  if (deepEquals(previousReference, reference)) return "=";
51175
- if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc) {
51192
+ if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc || previousReference.parts.length !== reference.parts.length) {
51176
51193
  previousReferences[index] = deepCopy(reference);
51177
- return getRangeString(reference, forSheetId, this.getters.getSheetName);
51194
+ return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
51178
51195
  }
51179
51196
  if (previousReference.unboundedZone.bottom === void 0 || previousReference.unboundedZone.right === void 0 || reference.unboundedZone.bottom === void 0 || reference.unboundedZone.right === void 0) {
51180
51197
  previousReferences[index] = deepCopy(reference);
51181
- return getRangeString(reference, forSheetId, this.getters.getSheetName);
51198
+ return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
51182
51199
  }
51183
51200
  for (let i = 0; i < reference.parts.length; i++) if (previousReference.parts[i].colFixed !== reference.parts[i].colFixed || previousReference.parts[i].rowFixed !== reference.parts[i].rowFixed) {
51184
51201
  previousReferences[index] = deepCopy(reference);
51185
- return getRangeString(reference, forSheetId, this.getters.getSheetName);
51202
+ return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
51186
51203
  }
51187
51204
  const currentZone = reference.zone;
51188
51205
  const previousZone = previousReference.zone;
51189
51206
  if (currentZone.top !== currentZone.bottom || currentZone.left !== currentZone.right || previousZone.top !== previousZone.bottom || previousZone.left !== previousZone.right) {
51190
51207
  previousReferences[index] = deepCopy(reference);
51191
- return getRangeString(reference, forSheetId, this.getters.getSheetName);
51208
+ return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
51192
51209
  }
51193
51210
  const diffCol = reference.zone.left - previousReference.zone.left;
51194
51211
  const diffRow = reference.zone.top - previousReference.zone.top;
@@ -51196,7 +51213,7 @@ var Squisher = class {
51196
51213
  previousReference.unboundedZone = deepCopy(reference.unboundedZone);
51197
51214
  if (diffCol !== 0 && diffRow === 0) return `${diffCol > 0 ? "+" : "-"}C${Math.abs(diffCol)}`;
51198
51215
  else if (diffRow !== 0 && diffCol === 0) return `${diffRow > 0 ? "+" : "-"}R${Math.abs(diffRow)}`;
51199
- return getRangeString(reference, forSheetId, this.getters.getSheetName);
51216
+ return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
51200
51217
  }
51201
51218
  /**
51202
51219
  * Squish the number parameters. Result for each parameter should be compared the previous formula.
@@ -51405,10 +51422,19 @@ var Unsquisher = class {
51405
51422
  case "FIRST_OFFSET": {
51406
51423
  const currentOffset = current;
51407
51424
  this.previousOffset = currentOffset;
51408
- for (const position of targetPositions) yield {
51409
- position,
51410
- compiled: this.unsquishFormula(currentOffset, sheetId, getters)
51411
- };
51425
+ for (const position of targetPositions) {
51426
+ const result = this.unsquishFormula(currentOffset, sheetId, getters);
51427
+ if (!result.areRangeShapesInLineWithNormalizedFormula()) {
51428
+ const formulaString = result.toFormulaString(getters);
51429
+ yield {
51430
+ position,
51431
+ compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
51432
+ };
51433
+ } else yield {
51434
+ position,
51435
+ compiled: result
51436
+ };
51437
+ }
51412
51438
  break;
51413
51439
  }
51414
51440
  case "COMBINE_OFFSET": {
@@ -51417,10 +51443,19 @@ var Unsquisher = class {
51417
51443
  this.previousOffset.N = currentOffset.N ?? this.previousOffset.N;
51418
51444
  this.previousOffset.S = currentOffset.S ?? this.previousOffset.S;
51419
51445
  this.previousOffset.R = currentOffset.R ?? this.previousOffset.R;
51420
- for (const position of targetPositions) yield {
51421
- position,
51422
- compiled: this.unsquishFormula(this.previousOffset, sheetId, getters)
51423
- };
51446
+ for (const position of targetPositions) {
51447
+ const result = this.unsquishFormula(this.previousOffset, sheetId, getters);
51448
+ if (!result.areRangeShapesInLineWithNormalizedFormula()) {
51449
+ const formulaString = result.toFormulaString(getters);
51450
+ yield {
51451
+ position,
51452
+ compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
51453
+ };
51454
+ } else yield {
51455
+ position,
51456
+ compiled: result
51457
+ };
51458
+ }
51424
51459
  break;
51425
51460
  }
51426
51461
  case "NEW_NUMBER":
@@ -53025,11 +53060,16 @@ var DefaultPlugin = class extends CorePlugin {
53025
53060
  const deltaStyle = {};
53026
53061
  let hasDelta = false;
53027
53062
  const styleSheet = this.style[position.sheetId];
53028
- if (!styleSheet) continue;
53029
53063
  for (const key in newDefaultStyle) {
53030
53064
  if (key in cellStyle) continue;
53031
- const defaults = styleSheet[key];
53032
- if (!defaults) continue;
53065
+ const defaults = styleSheet?.[key];
53066
+ if (!defaults) {
53067
+ if (newDefaultStyle[key] !== DEFAULT_STYLE[key]) {
53068
+ deltaStyle[key] = DEFAULT_STYLE[key];
53069
+ hasDelta = true;
53070
+ }
53071
+ continue;
53072
+ }
53033
53073
  const rowDefault = defaults.rowDefault?.[position.row];
53034
53074
  if (rowDefault !== void 0) {
53035
53075
  if (priorities.shouldUseDefaultRow) {
@@ -53071,7 +53111,8 @@ var DefaultPlugin = class extends CorePlugin {
53071
53111
  for (const key in styleSheet) if (!(key in style)) {
53072
53112
  const defaults = styleSheet[key];
53073
53113
  if (!defaults) continue;
53074
- style[key] = defaults.rowDefault?.[position.row] ?? defaults.colDefault?.[position.col] ?? defaults.sheetDefault;
53114
+ const styleValue = defaults.rowDefault?.[position.row] ?? defaults.colDefault?.[position.col] ?? defaults.sheetDefault;
53115
+ if (styleValue !== void 0) style[key] = styleValue;
53075
53116
  }
53076
53117
  return style;
53077
53118
  }
@@ -59637,6 +59678,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59637
59678
  pivots = {};
59638
59679
  unusedPivotsInFormulas;
59639
59680
  custom;
59681
+ pivotPositionCache = new PositionMap();
59682
+ shouldInvalidateCache = false;
59640
59683
  constructor(config) {
59641
59684
  super(config);
59642
59685
  this.custom = config.custom;
@@ -59647,7 +59690,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59647
59690
  }
59648
59691
  }
59649
59692
  handle(cmd) {
59650
- if (invalidateEvaluationCommands.has(cmd.type)) for (const pivotId of this.getters.getPivotIds()) this.setupPivot(pivotId, { recreate: true });
59693
+ if (invalidateEvaluationCommands.has(cmd.type)) {
59694
+ this.shouldInvalidateCache = true;
59695
+ for (const pivotId of this.getters.getPivotIds()) this.setupPivot(pivotId, { recreate: true });
59696
+ }
59697
+ if (cmd.type === "UPDATE_CELL") this.shouldInvalidateCache = true;
59651
59698
  switch (cmd.type) {
59652
59699
  case "REFRESH_PIVOT":
59653
59700
  this.refreshPivot(cmd.id);
@@ -59687,6 +59734,12 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59687
59734
  break;
59688
59735
  }
59689
59736
  }
59737
+ finalize() {
59738
+ if (this.shouldInvalidateCache) {
59739
+ this.pivotPositionCache = new PositionMap();
59740
+ this.shouldInvalidateCache = false;
59741
+ }
59742
+ }
59690
59743
  /**
59691
59744
  * Get the id of the first pivot in the formula at the given position. Returns undefined if there
59692
59745
  * is no pivot at this position
@@ -59698,9 +59751,14 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59698
59751
  * Get all of the ids of the pivot present in the formula at the given position.
59699
59752
  */
59700
59753
  getPivotIdsFromPosition(position) {
59701
- const cell = this.getters.getCorrespondingFormulaCell(position);
59702
- if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
59703
- return [];
59754
+ if (!this.pivotPositionCache.has(position)) {
59755
+ const cell = this.getters.getCorrespondingFormulaCell(position);
59756
+ if (cell && cell.isFormula) {
59757
+ const pivotIds = this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
59758
+ this.pivotPositionCache.set(position, pivotIds);
59759
+ }
59760
+ }
59761
+ return this.pivotPositionCache.get(position) || [];
59704
59762
  }
59705
59763
  getPivotIdsFromFormula(sheetId, formula) {
59706
59764
  return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
@@ -61065,17 +61123,32 @@ var TableComputedStylePlugin = class extends UIPlugin {
61065
61123
  getCellTableStyle(position) {
61066
61124
  const table = this.getters.getTable(position);
61067
61125
  if (!table) return;
61068
- return this.tableStyles[position.sheetId][table.id]().styles[position.col]?.[position.row];
61126
+ try {
61127
+ return this.tableStyles[position.sheetId][table.id]().styles[position.col]?.[position.row];
61128
+ } catch (e) {
61129
+ if (isEvaluationError(e) || e instanceof EvaluationError) return;
61130
+ throw e;
61131
+ }
61069
61132
  }
61070
61133
  getCellTableBorder(position) {
61071
61134
  const table = this.getters.getTable(position);
61072
61135
  if (!table) return;
61073
- return this.tableStyles[position.sheetId][table.id]().borders[position.col]?.[position.row];
61136
+ try {
61137
+ return this.tableStyles[position.sheetId][table.id]().borders[position.col]?.[position.row];
61138
+ } catch (e) {
61139
+ if (isEvaluationError(e) || e instanceof EvaluationError) return;
61140
+ throw e;
61141
+ }
61074
61142
  }
61075
61143
  computeTableStyle(sheetId, table) {
61076
61144
  return lazy(() => {
61077
61145
  const style = this.getters.getTableStyle(table.config.styleId);
61078
- const { tableMetaData, config } = this.getTableMetaData(sheetId, table);
61146
+ const tableMetaDataAndConfig = this.getTableMetaData(sheetId, table);
61147
+ if (!tableMetaDataAndConfig) return {
61148
+ borders: {},
61149
+ styles: {}
61150
+ };
61151
+ const { tableMetaData, config } = tableMetaDataAndConfig;
61079
61152
  const relativeTableStyle = getComputedTableStyle(config, style, tableMetaData);
61080
61153
  const mapping = this.getTableMapping(sheetId, table);
61081
61154
  const absoluteTableStyle = {
@@ -61113,6 +61186,7 @@ var TableComputedStylePlugin = class extends UIPlugin {
61113
61186
  const pivotInfo = this.getters.getPivotStyleAtPosition(mainPosition);
61114
61187
  if (!pivotInfo) throw new Error("No dynamic pivot info found at pivot table position");
61115
61188
  const pivot = this.getters.getPivot(pivotInfo.pivotId);
61189
+ if (!pivot.isValid()) return;
61116
61190
  const pivotStyle = pivotInfo.pivotStyle;
61117
61191
  const maxRowDepth = pivot.getExpandedTableStructure().getNumberOfRowGroupBys();
61118
61192
  const pivotTable = pivot.getCollapsedTableStructure();
@@ -62407,14 +62481,13 @@ var CollaborativePlugin = class extends UIPlugin {
62407
62481
  * Get the list of others connected clients which are present in the same sheet
62408
62482
  * and with a valid position
62409
62483
  */
62410
- getClientsToDisplay() {
62484
+ getClientsToDisplay(sheetId) {
62411
62485
  try {
62412
62486
  this.getters.getCurrentClient();
62413
62487
  } catch (e) {
62414
62488
  if (e instanceof ClientDisconnectedError) return [];
62415
62489
  else throw e;
62416
62490
  }
62417
- const sheetId = this.getters.getActiveSheetId();
62418
62491
  const clients = [];
62419
62492
  for (const client of this.getters.getConnectedClients()) if (client.id !== this.getters.getCurrentClient().id && client.position && client.position.sheetId === sheetId && this.isPositionValid(client.position)) clients.push({
62420
62493
  ...client,
@@ -62425,7 +62498,7 @@ var CollaborativePlugin = class extends UIPlugin {
62425
62498
  drawLayer(renderingContext) {
62426
62499
  if (this.getters.isDashboard()) return;
62427
62500
  const { ctx, thinLineWidth, viewports, sheetId } = renderingContext;
62428
- for (const client of this.getClientsToDisplay()) {
62501
+ for (const client of this.getClientsToDisplay(sheetId)) {
62429
62502
  const { row, col } = client.position;
62430
62503
  const zone = this.getters.expandZone(sheetId, {
62431
62504
  top: row,
@@ -63233,8 +63306,8 @@ var HeaderVisibilityUIPlugin = class extends UIPlugin {
63233
63306
  getNextVisibleCellPosition({ sheetId, col, row }) {
63234
63307
  return {
63235
63308
  sheetId,
63236
- col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1),
63237
- row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1)
63309
+ col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1) || this.findVisibleHeader(sheetId, "COL", col, 0) || 0,
63310
+ row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1) || this.findVisibleHeader(sheetId, "ROW", row, 0) || 0
63238
63311
  };
63239
63312
  }
63240
63313
  /**
@@ -68461,7 +68534,7 @@ const RIPPLE_KEY_FRAMES = [
68461
68534
  ];
68462
68535
  var RippleEffect = class extends Component {
68463
68536
  static template = "o-spreadsheet-RippleEffect";
68464
- props = props({
68537
+ props = useProps({
68465
68538
  x: types$1.string(),
68466
68539
  y: types$1.string(),
68467
68540
  color: types$1.string(),
@@ -68514,7 +68587,7 @@ var RippleEffect = class extends Component {
68514
68587
  var Ripple = class extends Component {
68515
68588
  static template = "o-spreadsheet-Ripple";
68516
68589
  static components = { RippleEffect };
68517
- props = props({
68590
+ props = useProps({
68518
68591
  color: types$1.string().optional("#aaaaaa"),
68519
68592
  opacity: types$1.number().optional(.4),
68520
68593
  duration: types$1.number().optional(800),
@@ -68792,7 +68865,7 @@ var BottomBarSheet = class extends Component {
68792
68865
  Ripple,
68793
68866
  ColorPicker
68794
68867
  };
68795
- props = props({
68868
+ props = useProps({
68796
68869
  sheetId: types$1.string(),
68797
68870
  openContextMenu: types$1.function(),
68798
68871
  style: types$1.string().optional(""),
@@ -69082,7 +69155,7 @@ var AggregateStatisticsStore = class extends SpreadsheetStore {
69082
69155
  var BottomBarStatistic = class extends Component {
69083
69156
  static template = "o-spreadsheet-BottomBarStatistic";
69084
69157
  static components = { Ripple };
69085
- props = props({
69158
+ props = useProps({
69086
69159
  openContextMenu: types$1.function(),
69087
69160
  closeContextMenu: types$1.function()
69088
69161
  });
@@ -69136,7 +69209,7 @@ var BottomBarStatistic = class extends Component {
69136
69209
  const SHEET_LIST_MENU_MAX_HEIGHT = 250;
69137
69210
  var BottomBar = class extends Component {
69138
69211
  static template = "o-spreadsheet-BottomBar";
69139
- props = props({ onClick: types$1.function() });
69212
+ props = useProps({ onClick: types$1.function() });
69140
69213
  static components = {
69141
69214
  MenuPopover,
69142
69215
  Ripple,
@@ -69419,7 +69492,7 @@ var SpreadsheetDashboard = class extends Component {
69419
69492
  VerticalScrollBar,
69420
69493
  HorizontalScrollBar
69421
69494
  };
69422
- props = props({ getGridSize: types$1.function() });
69495
+ props = useProps({ getGridSize: types$1.function() });
69423
69496
  cellPopovers;
69424
69497
  onMouseWheel;
69425
69498
  canvasPosition;
@@ -69538,7 +69611,7 @@ var SpreadsheetDashboard = class extends Component {
69538
69611
  //#region src/components/header_group/header_group.ts
69539
69612
  var AbstractHeaderGroup = class extends Component {
69540
69613
  static template = "o-spreadsheet-HeaderGroup";
69541
- props = props({
69614
+ props = useProps({
69542
69615
  group: types$1.HeaderGroup(),
69543
69616
  layerOffset: types$1.number(),
69544
69617
  openContextMenu: types$1.function()
@@ -69692,7 +69765,7 @@ var HeaderGroupContainer = class extends Component {
69692
69765
  ColGroup,
69693
69766
  MenuPopover
69694
69767
  };
69695
- props = props({
69768
+ props = useProps({
69696
69769
  dimension: types$1.Dimension(),
69697
69770
  layers: types$1.array()
69698
69771
  });
@@ -69768,7 +69841,7 @@ function useScreenWidth() {
69768
69841
  //#region src/components/side_panel/side_panel/side_panel.ts
69769
69842
  var SidePanel = class extends Component {
69770
69843
  static template = "o-spreadsheet-SidePanel";
69771
- props = props({
69844
+ props = useProps({
69772
69845
  panelContent: types$1.SidePanelContent(),
69773
69846
  panelProps: types$1.SidePanelComponentProps(),
69774
69847
  onCloseSidePanel: types$1.function(),
@@ -69862,7 +69935,7 @@ var SidePanels = class extends Component {
69862
69935
  var RibbonMenu = class extends Component {
69863
69936
  static template = "o-spreadsheet-RibbonMenu";
69864
69937
  static components = { Menu };
69865
- props = props({ onClose: types$1.function() });
69938
+ props = useProps({ onClose: types$1.function() });
69866
69939
  rootItems = topbarMenuRegistry.getMenuItems();
69867
69940
  menuRef = signal(null);
69868
69941
  containerRef = signal(null);
@@ -69933,7 +70006,7 @@ var SmallBottomBar = class extends Component {
69933
70006
  RibbonMenu
69934
70007
  };
69935
70008
  static template = "o-spreadsheet-SmallBottomBar";
69936
- props = props({ onClick: types$1.function() });
70009
+ props = useProps({ onClick: types$1.function() });
69937
70010
  composerFocusStore;
69938
70011
  composerStore;
69939
70012
  composerInterface;
@@ -70134,7 +70207,7 @@ var FigureRendererStore = class extends DisposableStore {
70134
70207
  //#region src/components/standalone_grid_canvas/standalone_grid_canvas.ts
70135
70208
  var StandaloneGridCanvas = class extends Component {
70136
70209
  static template = "o-spreadsheet-StandaloneGridCanvas";
70137
- props = props({
70210
+ props = useProps({
70138
70211
  sheetId: types$1.UID(),
70139
70212
  zone: types$1.Zone(),
70140
70213
  renderingCtx: types$1.object()
@@ -70459,7 +70532,7 @@ var SpreadsheetPrintStore = class extends SpreadsheetStore {
70459
70532
  //#region src/components/spreadsheet_print/spreadsheet_print.ts
70460
70533
  var SpreadsheetPrint = class extends Component {
70461
70534
  static template = "o-spreadsheet-SpreadsheetPrint";
70462
- props = props({ onExitPrintMode: types$1.function() });
70535
+ props = useProps({ onExitPrintMode: types$1.function() });
70463
70536
  static components = {
70464
70537
  StandaloneGridCanvas,
70465
70538
  Section,
@@ -70801,7 +70874,7 @@ var BorderEditor = class extends Component {
70801
70874
  ColorPickerWidget,
70802
70875
  Popover
70803
70876
  };
70804
- props = props({
70877
+ props = useProps({
70805
70878
  class: types$1.string().optional(),
70806
70879
  currentBorderColor: types$1.Color(),
70807
70880
  currentBorderStyle: types$1.BorderStyle(),
@@ -70873,7 +70946,7 @@ var BorderEditor = class extends Component {
70873
70946
  var BorderEditorWidget = class extends Component {
70874
70947
  static template = "o-spreadsheet-BorderEditorWidget";
70875
70948
  static components = { BorderEditor };
70876
- props = props({
70949
+ props = useProps({
70877
70950
  disabled: types$1.boolean().optional(),
70878
70951
  dropdownMaxHeight: types$1.Pixel().optional(),
70879
70952
  class: types$1.string().optional()
@@ -70934,7 +71007,7 @@ var BorderEditorWidget = class extends Component {
70934
71007
  //#region src/components/paint_format_button/paint_format_button.ts
70935
71008
  var PaintFormatButton = class extends Component {
70936
71009
  static template = "o-spreadsheet-PaintFormatButton";
70937
- props = props({ class: types$1.string().optional() });
71010
+ props = useProps({ class: types$1.string().optional() });
70938
71011
  paintFormatStore;
70939
71012
  setup() {
70940
71013
  this.paintFormatStore = useStore(PaintFormatStore);
@@ -70959,7 +71032,7 @@ var TableDropdownButton = class extends Component {
70959
71032
  TableStylesPopover,
70960
71033
  ActionButton
70961
71034
  };
70962
- props = props({ class: types$1.string().optional() });
71035
+ props = useProps({ class: types$1.string().optional() });
70963
71036
  topBarToolStore;
70964
71037
  state = proxy({ popoverProps: void 0 });
70965
71038
  setup() {
@@ -71053,7 +71126,7 @@ var TableDropdownButton = class extends Component {
71053
71126
  var TopBarColorEditor = class extends Component {
71054
71127
  static components = { ColorPickerWidget };
71055
71128
  static template = "o-spreadsheet-ColorEditor";
71056
- props = props({
71129
+ props = useProps({
71057
71130
  class: types$1.string(),
71058
71131
  style: types$1.or([types$1.literal("textColor"), types$1.literal("fillColor")]),
71059
71132
  icon: types$1.string(),
@@ -71101,7 +71174,7 @@ var DropdownAction = class extends Component {
71101
71174
  ActionButton,
71102
71175
  Popover
71103
71176
  };
71104
- props = props({
71177
+ props = useProps({
71105
71178
  parentAction: types$1.ActionSpec(),
71106
71179
  childActions: types$1.array(types$1.ActionSpec()),
71107
71180
  class: types$1.string(),
@@ -71134,7 +71207,7 @@ var DropdownAction = class extends Component {
71134
71207
  var TopBarFontSizeEditor = class extends Component {
71135
71208
  static components = { FontSizeEditor };
71136
71209
  static template = "o-spreadsheet-TopBarFontSizeEditor";
71137
- props = props({ class: types$1.string() });
71210
+ props = useProps({ class: types$1.string() });
71138
71211
  topBarToolStore;
71139
71212
  setup() {
71140
71213
  this.topBarToolStore = useToolBarDropdownStore();
@@ -71168,7 +71241,7 @@ var NumberFormatsTool = class extends Component {
71168
71241
  MenuPopover,
71169
71242
  ActionButton
71170
71243
  };
71171
- props = props({ class: types$1.string() });
71244
+ props = useProps({ class: types$1.string() });
71172
71245
  formatNumberMenuItemSpec = formatNumberMenuItemSpec;
71173
71246
  topBarToolStore;
71174
71247
  buttonRef = signal(null);
@@ -71203,7 +71276,7 @@ var NumberFormatsTool = class extends Component {
71203
71276
  var ToolBarZoom = class extends Component {
71204
71277
  static template = "o-spreadsheet-TopBarZoom";
71205
71278
  static components = { NumberEditor };
71206
- props = props({ class: types$1.string() });
71279
+ props = useProps({ class: types$1.string() });
71207
71280
  topBarToolStore;
71208
71281
  valueList = ZOOM_VALUES;
71209
71282
  setup() {
@@ -71429,7 +71502,7 @@ topBarToolBarRegistry.add("edit").addChild("edit", {
71429
71502
  //#region src/components/top_bar/top_bar.ts
71430
71503
  var TopBar = class extends Component {
71431
71504
  static template = "o-spreadsheet-TopBar";
71432
- props = props({
71505
+ props = useProps({
71433
71506
  onClick: types$1.function(),
71434
71507
  dropdownMaxHeight: types$1.Pixel()
71435
71508
  });
@@ -71707,7 +71780,7 @@ var WebClipboardWrapper = class {
71707
71780
  //#region src/components/spreadsheet/spreadsheet.ts
71708
71781
  var Spreadsheet = class extends Component {
71709
71782
  static template = "o-spreadsheet-Spreadsheet";
71710
- props = props({
71783
+ props = useProps({
71711
71784
  model: types$1.Model(),
71712
71785
  notifyUser: types$1.function().optional(),
71713
71786
  raiseError: types$1.function().optional(),
@@ -77009,8 +77082,8 @@ var DefaultClipboardHandler = class extends AbstractCellClipboardHandler {
77009
77082
  for (const key in DEFAULT_STYLE) {
77010
77083
  content.style[key] = {
77011
77084
  sheetDefault: this.getters.getDefaultStyle(data.sheetId, key, "SHEET", void 0) ?? DEFAULT_STYLE[key],
77012
- colDefault: {},
77013
- rowDefault: {}
77085
+ colDefault: [],
77086
+ rowDefault: []
77014
77087
  };
77015
77088
  let colIndex = 0;
77016
77089
  for (const col of data.columnsIndexes) {
@@ -77027,20 +77100,41 @@ var DefaultClipboardHandler = class extends AbstractCellClipboardHandler {
77027
77100
  }
77028
77101
  return content;
77029
77102
  }
77030
- clearStyleFormat(sheetId, zone) {
77031
- this.dispatch("SET_FORMATTING", {
77032
- sheetId,
77033
- target: [zone],
77034
- format: ""
77035
- });
77103
+ adaptContentToZone(zone, content) {
77104
+ const colRepetition = Math.max(Math.floor((zone.right - zone.left + 1) / content.width), 1);
77105
+ const rowRepetition = Math.max(Math.floor((zone.bottom - zone.top + 1) / content.height), 1);
77106
+ if (colRepetition === 1 && rowRepetition === 1) return content;
77107
+ const newContent = deepCopy(content);
77108
+ newContent.height *= rowRepetition;
77109
+ newContent.width *= colRepetition;
77110
+ if (rowRepetition > 1 && newContent.format.rowDefault) {
77111
+ newContent.format.rowDefault.length = content.height;
77112
+ newContent.format.rowDefault = repeat(newContent.format.rowDefault, rowRepetition);
77113
+ }
77114
+ if (colRepetition > 1 && newContent.format.colDefault) {
77115
+ newContent.format.colDefault.length = content.width;
77116
+ newContent.format.colDefault = repeat(newContent.format.colDefault, colRepetition);
77117
+ }
77118
+ for (const key in content.style) {
77119
+ if (rowRepetition > 1 && newContent.style[key].rowDefault) {
77120
+ newContent.style[key].rowDefault.length = content.height;
77121
+ newContent.style[key].rowDefault = repeat(newContent.style[key].rowDefault, rowRepetition);
77122
+ }
77123
+ if (colRepetition > 1 && newContent.style[key].colDefault) {
77124
+ newContent.style[key].colDefault.length = content.width;
77125
+ newContent.style[key].colDefault = repeat(newContent.style[key].colDefault, colRepetition);
77126
+ }
77127
+ }
77128
+ return newContent;
77036
77129
  }
77037
77130
  paste(target, content, options) {
77038
77131
  const sheetId = target.sheetId;
77039
77132
  if (options.pasteOption === "asValue") return;
77040
77133
  const zones = target.zones;
77041
- if (!options.isCutOperation) for (const zone of zones) for (const pasteZone of splitZoneForPaste(zone, content.width, content.height)) {
77042
- this.pasteStyle(sheetId, pasteZone.left, pasteZone.top, content.width, content.height, content.style);
77043
- this.pasteFormat(sheetId, pasteZone.left, pasteZone.top, content.width, content.height, content.format);
77134
+ if (!options.isCutOperation) for (const zone of zones) {
77135
+ const newContent = this.adaptContentToZone(zone, content);
77136
+ this.pasteStyle(sheetId, zone.left, zone.top, newContent.width, newContent.height, newContent.style);
77137
+ this.pasteFormat(sheetId, zone.left, zone.top, newContent.width, newContent.height, newContent.format);
77044
77138
  }
77045
77139
  else {
77046
77140
  this.clearClippedZones(content);
@@ -77153,7 +77247,7 @@ var DefaultClipboardHandler = class extends AbstractCellClipboardHandler {
77153
77247
  const commands = [];
77154
77248
  for (const [zoneStr, [zone, priority]] of Object.entries(zones)) {
77155
77249
  const format = updateCells[zoneStr];
77156
- commands.push([
77250
+ if (format !== void 0) commands.push([
77157
77251
  priority,
77158
77252
  zone,
77159
77253
  format
@@ -77503,7 +77597,7 @@ const ERROR_TOOLTIP_MAX_HEIGHT = 80;
77503
77597
  var ErrorToolTip = class extends Component {
77504
77598
  static maxSize = { maxHeight: ERROR_TOOLTIP_MAX_HEIGHT };
77505
77599
  static template = "o-spreadsheet-ErrorToolTip";
77506
- props = props({
77600
+ props = useProps({
77507
77601
  cellPosition: types$1.CellPosition(),
77508
77602
  onClosed: types$1.function().optional()
77509
77603
  });
@@ -77587,7 +77681,7 @@ var FilterMenu = class extends Component {
77587
77681
  SidePanelCollapsible,
77588
77682
  FilterMenuCriterion
77589
77683
  };
77590
- props = props({
77684
+ props = useProps({
77591
77685
  filterPosition: types$1.Position(),
77592
77686
  onClosed: types$1.function().optional()
77593
77687
  });
@@ -77767,7 +77861,7 @@ const FilterMenuPopoverBuilder = { onOpen: (position, getters) => {
77767
77861
  //#region src/components/link/link_display/link_display.ts
77768
77862
  var LinkDisplay = class extends Component {
77769
77863
  static template = "o-spreadsheet-LinkDisplay";
77770
- props = props({
77864
+ props = useProps({
77771
77865
  cellPosition: types$1.CellPosition(),
77772
77866
  onClosed: types$1.function().optional()
77773
77867
  });
@@ -77841,7 +77935,7 @@ const LinkCellPopoverBuilder = { onHover: (position, getters) => {
77841
77935
  var LinkEditor = class extends Component {
77842
77936
  static template = "o-spreadsheet-LinkEditor";
77843
77937
  static components = { MenuPopover };
77844
- props = props({
77938
+ props = useProps({
77845
77939
  cellPosition: types$1.CellPosition(),
77846
77940
  onClosed: types$1.function().optional()
77847
77941
  });
@@ -87355,6 +87449,7 @@ const helpers = {
87355
87449
  collapseHierarchicalDisplayName,
87356
87450
  getCanonicalSymbolName,
87357
87451
  fuzzyLookup,
87452
+ PositionMap,
87358
87453
  replaceSymbolInFormula
87359
87454
  };
87360
87455
  const links = {
@@ -87485,6 +87580,6 @@ const chartHelpers = {
87485
87580
  //#endregion
87486
87581
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, BadExpressionError, CHART_TYPES, CellErrorType, CellValueType, CircularDependencyError, ClientDisconnectedError, ClipboardMIMEType, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DEFAULT_LOCALE_DIGIT_GROUPING, DIRECTION, DispatchResult, DivisionByZeroError, EvaluationError, InvalidReferenceError, LocalTransportService, Model, NEXT_VALUE, NotAvailableError, NumberTooLargeError, OrderedLayers, PREVIOUS_VALUE, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, SplillBlockedError, Spreadsheet, SpreadsheetPivotTable, UIPlugin, UnknownFunctionError, __info__, addFunction, addRenderingLayer, astToFormula, availableConditionalFormatOperators, availableDataValidationOperators, availableFiltersOperators, borderPositions, borderStyles, canExecuteInReadonly, categories, chartHelpers, compatibility, components, composerFocusTypes, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, errorTypes, filterDateCriterionOperators, filterNumberCriterionOperators, filterTextCriterionOperators, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidSubtotalFormulasCommands, invalidateBordersCommands, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isHeadersDependant, isMatrix, isPositionDependent, isRangeDependant, isSheetDependent, isTargetDependent, isZoneDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, schemeToColorScale, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
87487
87582
 
87488
- __info__.version = "19.4.2";
87489
- __info__.date = "2026-07-13T06:26:39.071Z";
87490
- __info__.hash = "c83d4aa";
87583
+ __info__.version = "19.4.4";
87584
+ __info__.date = "2026-07-23T07:49:22.265Z";
87585
+ __info__.hash = "6b3c312";