@odoo/o-spreadsheet 19.4.0-alpha.10 → 19.4.0-alpha.12

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.
Files changed (194) hide show
  1. package/dist/o_spreadsheet.cjs +1386 -1780
  2. package/dist/o_spreadsheet.css +5 -5
  3. package/dist/o_spreadsheet.esm.js +1385 -1781
  4. package/dist/o_spreadsheet.iife.js +1386 -1780
  5. package/dist/o_spreadsheet.min.iife.js +279 -279
  6. package/dist/o_spreadsheet.xml +29 -16
  7. package/dist/types/components/action_button/action_button.d.ts +8 -29
  8. package/dist/types/components/animation/ripple.d.ts +33 -92
  9. package/dist/types/components/autofill/autofill.d.ts +5 -9
  10. package/dist/types/components/border_editor/border_editor.d.ts +18 -43
  11. package/dist/types/components/border_editor/border_editor_widget.d.ts +6 -20
  12. package/dist/types/components/bottom_bar/bottom_bar.d.ts +4 -7
  13. package/dist/types/components/bottom_bar/bottom_bar_sheet/bottom_bar_sheet.d.ts +8 -22
  14. package/dist/types/components/bottom_bar/bottom_bar_statistic/bottom_bar_statistic.d.ts +5 -10
  15. package/dist/types/components/collaborative_client_tag/collaborative_client_tag.d.ts +8 -17
  16. package/dist/types/components/color_picker/color_picker.d.ts +13 -30
  17. package/dist/types/components/color_picker/color_picker_widget.d.ts +12 -40
  18. package/dist/types/components/composer/autocomplete_dropdown/autocomplete_dropdown.d.ts +7 -17
  19. package/dist/types/components/composer/composer/composer.d.ts +18 -63
  20. package/dist/types/components/composer/formula_assistant/formula_assistant.d.ts +8 -17
  21. package/dist/types/components/composer/grid_composer/grid_composer.d.ts +8 -13
  22. package/dist/types/components/composer/speech_bubble/speech_bubble.d.ts +5 -10
  23. package/dist/types/components/composer/standalone_composer/standalone_composer.d.ts +16 -62
  24. package/dist/types/components/composer/top_bar_composer/top_bar_composer.d.ts +1 -2
  25. package/dist/types/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.d.ts +5 -11
  26. package/dist/types/components/dashboard/dashboard.d.ts +4 -8
  27. package/dist/types/components/error_tooltip/error_tooltip.d.ts +5 -14
  28. package/dist/types/components/figures/chart/chartJs/chartjs.d.ts +5 -14
  29. package/dist/types/components/figures/chart/chart_dashboard_menu/chart_dashboard_menu.d.ts +7 -15
  30. package/dist/types/components/figures/chart/gauge/gauge_chart_component.d.ts +5 -13
  31. package/dist/types/components/figures/chart/scorecard/chart_scorecard.d.ts +5 -14
  32. package/dist/types/components/figures/figure/figure.d.ts +10 -30
  33. package/dist/types/components/figures/figure_carousel/figure_carousel.d.ts +8 -24
  34. package/dist/types/components/figures/figure_chart/figure_chart.d.ts +7 -24
  35. package/dist/types/components/figures/figure_container/figure_container.d.ts +1 -4
  36. package/dist/types/components/figures/figure_image/figure_image.d.ts +6 -19
  37. package/dist/types/components/filters/filter_menu/filter_menu.d.ts +2 -13
  38. package/dist/types/components/filters/filter_menu_criterion/filter_menu_criterion.d.ts +6 -13
  39. package/dist/types/components/filters/filter_menu_item/filter_menu_value_item.d.ts +9 -21
  40. package/dist/types/components/filters/filter_menu_value_list/filter_menu_value_list.d.ts +12 -11
  41. package/dist/types/components/filters/pivot_filter_menu/pivot_filter_menu.d.ts +13 -28
  42. package/dist/types/components/font_size_editor/font_size_editor.d.ts +10 -25
  43. package/dist/types/components/full_screen_figure/full_screen_figure.d.ts +1 -2
  44. package/dist/types/components/generic_input/generic_input.d.ts +16 -45
  45. package/dist/types/components/grid/grid.d.ts +5 -10
  46. package/dist/types/components/grid_add_rows_footer/grid_add_rows_footer.d.ts +1 -5
  47. package/dist/types/components/grid_overlay/grid_overlay.d.ts +11 -37
  48. package/dist/types/components/grid_popover/grid_popover.d.ts +6 -13
  49. package/dist/types/components/header_group/header_group.d.ts +7 -12
  50. package/dist/types/components/header_group/header_group_container.d.ts +6 -11
  51. package/dist/types/components/headers_overlay/headers_overlay.d.ts +10 -16
  52. package/dist/types/components/headers_overlay/unhide_headers.d.ts +19 -30
  53. package/dist/types/components/highlight/border/border.d.ts +7 -16
  54. package/dist/types/components/highlight/corner/corner.d.ts +8 -18
  55. package/dist/types/components/highlight/highlight/highlight.d.ts +6 -11
  56. package/dist/types/components/icon_picker/icon_picker.d.ts +4 -8
  57. package/dist/types/components/link/link_display/link_display.d.ts +6 -13
  58. package/dist/types/components/link/link_editor/link_editor.d.ts +6 -13
  59. package/dist/types/components/menu/menu.d.ts +14 -55
  60. package/dist/types/components/menu_popover/menu_popover.d.ts +22 -69
  61. package/dist/types/components/named_range_selector/named_range_selector.d.ts +1 -4
  62. package/dist/types/components/number_editor/number_editor.d.ts +18 -54
  63. package/dist/types/components/number_input/number_input.d.ts +1 -52
  64. package/dist/types/components/paint_format_button/paint_format_button.d.ts +4 -11
  65. package/dist/types/components/pivot_html_renderer/pivot_html_renderer.d.ts +5 -9
  66. package/dist/types/components/popover/popover.d.ts +18 -69
  67. package/dist/types/components/props_validation.d.ts +185 -0
  68. package/dist/types/components/scrollbar/scrollbar.d.ts +13 -11
  69. package/dist/types/components/scrollbar/scrollbar_horizontal.d.ts +5 -13
  70. package/dist/types/components/scrollbar/scrollbar_vertical.d.ts +5 -13
  71. package/dist/types/components/select/select.d.ts +13 -36
  72. package/dist/types/components/selection/selection.d.ts +4 -4
  73. package/dist/types/components/selection_input/selection_input.d.ts +20 -74
  74. package/dist/types/components/side_panel/carousel_panel/carousel_panel.d.ts +5 -10
  75. package/dist/types/components/side_panel/chart/bar_chart/bar_chart_design_panel.d.ts +2 -10
  76. package/dist/types/components/side_panel/chart/bubble_chart/bubble_chart_config_panel.d.ts +2 -7
  77. package/dist/types/components/side_panel/chart/bubble_chart/bubble_chart_design_panel.d.ts +4 -16
  78. package/dist/types/components/side_panel/chart/building_blocks/axis_design/axis_design_editor.d.ts +7 -14
  79. package/dist/types/components/side_panel/chart/building_blocks/chart_title/chart_title.d.ts +11 -33
  80. package/dist/types/components/side_panel/chart/building_blocks/color_scale/color_scale_picker.d.ts +10 -13
  81. package/dist/types/components/side_panel/chart/building_blocks/data_series/data_series.d.ts +18 -61
  82. package/dist/types/components/side_panel/chart/building_blocks/data_source/data_source.d.ts +16 -42
  83. package/dist/types/components/side_panel/chart/building_blocks/error_section/error_section.d.ts +4 -11
  84. package/dist/types/components/side_panel/chart/building_blocks/general_design/general_design_editor.d.ts +11 -24
  85. package/dist/types/components/side_panel/chart/building_blocks/generic_side_panel/config_panel.d.ts +2 -7
  86. package/dist/types/components/side_panel/chart/building_blocks/humanize_numbers/humanize_numbers.d.ts +2 -7
  87. package/dist/types/components/side_panel/chart/building_blocks/label_range/label_range.d.ts +18 -35
  88. package/dist/types/components/side_panel/chart/building_blocks/legend/legend.d.ts +9 -17
  89. package/dist/types/components/side_panel/chart/building_blocks/pie_hole_size/pie_hole_size.d.ts +5 -10
  90. package/dist/types/components/side_panel/chart/building_blocks/range_data_source/range_data_source.d.ts +17 -41
  91. package/dist/types/components/side_panel/chart/building_blocks/series_design/series_design_editor.d.ts +9 -17
  92. package/dist/types/components/side_panel/chart/building_blocks/series_design/series_with_axis_design_editor.d.ts +8 -16
  93. package/dist/types/components/side_panel/chart/building_blocks/show_data_markers/show_data_markers.d.ts +2 -7
  94. package/dist/types/components/side_panel/chart/building_blocks/show_values/show_values.d.ts +8 -17
  95. package/dist/types/components/side_panel/chart/building_blocks/text_styler/text_styler.d.ts +10 -38
  96. package/dist/types/components/side_panel/chart/calendar_chart/calendar_chart_design_panel.d.ts +2 -7
  97. package/dist/types/components/side_panel/chart/chart_type_picker/chart_type_picker.d.ts +8 -11
  98. package/dist/types/components/side_panel/chart/chart_with_axis/design_panel.d.ts +2 -7
  99. package/dist/types/components/side_panel/chart/common.d.ts +5 -5
  100. package/dist/types/components/side_panel/chart/funnel_chart_panel/funnel_chart_design_panel.d.ts +4 -7
  101. package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_config_panel.d.ts +2 -7
  102. package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_design_panel.d.ts +4 -8
  103. package/dist/types/components/side_panel/chart/geo_chart_panel/geo_chart_region_select_section.d.ts +6 -12
  104. package/dist/types/components/side_panel/chart/main_chart_panel/main_chart_panel.d.ts +5 -10
  105. package/dist/types/components/side_panel/chart/pie_chart/pie_chart_design_panel.d.ts +2 -7
  106. package/dist/types/components/side_panel/chart/radar_chart/radar_chart_design_panel.d.ts +2 -7
  107. package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_config_panel.d.ts +2 -7
  108. package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_design_panel.d.ts +2 -7
  109. package/dist/types/components/side_panel/chart/sunburst_chart/sunburst_chart_design_panel.d.ts +5 -8
  110. package/dist/types/components/side_panel/chart/treemap_chart/treemap_category_color/treemap_category_color.d.ts +8 -14
  111. package/dist/types/components/side_panel/chart/treemap_chart/treemap_chart_design_panel.d.ts +13 -9
  112. package/dist/types/components/side_panel/chart/treemap_chart/treemap_color_scale/treemap_color_scale.d.ts +7 -14
  113. package/dist/types/components/side_panel/chart/waterfall_chart/waterfall_chart_design_panel.d.ts +2 -7
  114. package/dist/types/components/side_panel/chart/zoomable_chart/design_panel.d.ts +1 -3
  115. package/dist/types/components/side_panel/column_stats/column_stats_panel.d.ts +4 -8
  116. package/dist/types/components/side_panel/components/badge_selection/badge_selection.d.ts +6 -11
  117. package/dist/types/components/side_panel/components/checkbox/checkbox.d.ts +11 -40
  118. package/dist/types/components/side_panel/components/cog_wheel_menu/cog_wheel_menu.d.ts +4 -9
  119. package/dist/types/components/side_panel/components/collapse/collapse.d.ts +4 -10
  120. package/dist/types/components/side_panel/components/collapsible/side_panel_collapsible.d.ts +6 -16
  121. package/dist/types/components/side_panel/components/radio_selection/radio_selection.d.ts +9 -22
  122. package/dist/types/components/side_panel/components/round_color_picker/round_color_picker.d.ts +7 -23
  123. package/dist/types/components/side_panel/components/section/section.d.ts +6 -16
  124. package/dist/types/components/side_panel/conditional_formatting/cf_editor/cell_is_rule_editor.d.ts +4 -9
  125. package/dist/types/components/side_panel/conditional_formatting/cf_editor/cf_editor.d.ts +6 -13
  126. package/dist/types/components/side_panel/conditional_formatting/cf_editor/color_scale_rule_editor.d.ts +4 -9
  127. package/dist/types/components/side_panel/conditional_formatting/cf_editor/color_scale_rule_editor_threshold.d.ts +7 -12
  128. package/dist/types/components/side_panel/conditional_formatting/cf_editor/data_bar_rule_editor.d.ts +4 -9
  129. package/dist/types/components/side_panel/conditional_formatting/cf_editor/icon_set_rule_editor.d.ts +6 -10
  130. package/dist/types/components/side_panel/conditional_formatting/cf_preview/cf_preview.d.ts +6 -13
  131. package/dist/types/components/side_panel/conditional_formatting/cf_preview_list/cf_preview_list.d.ts +4 -8
  132. package/dist/types/components/side_panel/criterion_form/criterion_form.d.ts +7 -20
  133. package/dist/types/components/side_panel/criterion_form/criterion_input/criterion_input.d.ts +17 -46
  134. package/dist/types/components/side_panel/data_validation/data_validation_panel.d.ts +4 -8
  135. package/dist/types/components/side_panel/data_validation/dv_editor/dv_editor.d.ts +6 -14
  136. package/dist/types/components/side_panel/data_validation/dv_preview/dv_preview.d.ts +4 -9
  137. package/dist/types/components/side_panel/find_and_replace/find_and_replace.d.ts +4 -8
  138. package/dist/types/components/side_panel/more_formats/more_formats.d.ts +6 -14
  139. package/dist/types/components/side_panel/named_ranges_panel/named_range_preview/named_range_preview.d.ts +5 -8
  140. package/dist/types/components/side_panel/named_ranges_panel/named_ranges_panel.d.ts +4 -8
  141. package/dist/types/components/side_panel/perf_profile/perf_profile_panel.d.ts +4 -8
  142. package/dist/types/components/side_panel/pivot/pivot_custom_groups_collapsible/pivot_custom_groups_collapsible.d.ts +7 -13
  143. package/dist/types/components/side_panel/pivot/pivot_defer_update/pivot_defer_update.d.ts +10 -18
  144. package/dist/types/components/side_panel/pivot/pivot_filter/pivot_filter.d.ts +8 -15
  145. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/add_dimension_button/add_dimension_button.d.ts +5 -14
  146. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension/pivot_dimension.d.ts +7 -23
  147. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_granularity/pivot_dimension_granularity.d.ts +9 -16
  148. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_order/pivot_dimension_order.d.ts +9 -12
  149. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_layout_configurator.d.ts +15 -30
  150. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_measure/pivot_measure.d.ts +12 -22
  151. package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_sort_section/pivot_sort_section.d.ts +6 -13
  152. package/dist/types/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel.d.ts +8 -15
  153. package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.d.ts +5 -10
  154. package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_side_panel.d.ts +8 -18
  155. package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_spreadsheet_side_panel/pivot_spreadsheet_side_panel.d.ts +5 -11
  156. package/dist/types/components/side_panel/pivot/pivot_title_section/pivot_title_section.d.ts +6 -12
  157. package/dist/types/components/side_panel/remove_duplicates/remove_duplicates.d.ts +4 -7
  158. package/dist/types/components/side_panel/settings/settings_panel.d.ts +4 -8
  159. package/dist/types/components/side_panel/side_panel/side_panel.d.ts +12 -37
  160. package/dist/types/components/side_panel/side_panels/side_panels.d.ts +16 -6
  161. package/dist/types/components/side_panel/split_to_columns_panel/split_to_columns_panel.d.ts +4 -7
  162. package/dist/types/components/side_panel/table_panel/table_panel.d.ts +6 -10
  163. package/dist/types/components/side_panel/table_style_editor_panel/table_style_editor_panel.d.ts +6 -17
  164. package/dist/types/components/small_bottom_bar/ribbon_menu/ribbon_menu.d.ts +7 -11
  165. package/dist/types/components/small_bottom_bar/small_bottom_bar.d.ts +7 -10
  166. package/dist/types/components/spreadsheet/spreadsheet.d.ts +8 -20
  167. package/dist/types/components/spreadsheet_print/spreadsheet_print.d.ts +4 -8
  168. package/dist/types/components/standalone_grid_canvas/standalone_grid_canvas.d.ts +6 -13
  169. package/dist/types/components/tables/table_dropdown_button/table_dropdown_button.d.ts +7 -12
  170. package/dist/types/components/tables/table_resizer/table_resizer.d.ts +4 -8
  171. package/dist/types/components/tables/table_style_picker/table_style_picker.d.ts +11 -16
  172. package/dist/types/components/tables/table_style_preview/table_style_preview.d.ts +9 -28
  173. package/dist/types/components/tables/table_styles_popover/table_styles_popover.d.ts +23 -26
  174. package/dist/types/components/text_input/text_input.d.ts +1 -48
  175. package/dist/types/components/top_bar/color_editor/color_editor.d.ts +7 -14
  176. package/dist/types/components/top_bar/dropdown_action/dropdown_action.d.ts +10 -17
  177. package/dist/types/components/top_bar/font_size_editor/font_size_editor.d.ts +4 -8
  178. package/dist/types/components/top_bar/number_formats_tool/number_formats_tool.d.ts +4 -7
  179. package/dist/types/components/top_bar/top_bar.d.ts +9 -12
  180. package/dist/types/components/top_bar/zoom_editor/zoom_editor.d.ts +4 -8
  181. package/dist/types/components/validation_messages/validation_messages.d.ts +6 -15
  182. package/dist/types/helpers/formulas.d.ts +1 -0
  183. package/dist/types/index.d.ts +21 -1
  184. package/dist/types/owl3_compatibility_layer.d.ts +3 -6
  185. package/dist/types/plugins/ui_feature/table_computed_style.d.ts +1 -1
  186. package/dist/types/types/cell_popovers.d.ts +2 -2
  187. package/dist/types/types/chart/bar_chart.d.ts +1 -0
  188. package/dist/types/types/chart/chart.d.ts +1 -0
  189. package/dist/types/types/chart/sunburst_chart.d.ts +3 -1
  190. package/dist/types/types/chart/tree_map_chart.d.ts +11 -2
  191. package/dist/types/types/misc.d.ts +4 -2
  192. package/dist/types/types/props_of.d.ts +7 -3
  193. package/dist/types/types/spreadsheet_env.d.ts +0 -1
  194. package/package.json +2 -2
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 19.4.0-alpha.10
6
- * @date 2026-06-02T12:07:58.355Z
7
- * @hash 41144f9
5
+ * @version 19.4.0-alpha.12
6
+ * @date 2026-06-06T06:24:48.209Z
7
+ * @hash a71f829
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -671,6 +671,18 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
671
671
  function isMatrix(x) {
672
672
  return Array.isArray(x) && Array.isArray(x[0]);
673
673
  }
674
+ const borderPositions = [
675
+ "all",
676
+ "hv",
677
+ "h",
678
+ "v",
679
+ "external",
680
+ "left",
681
+ "top",
682
+ "right",
683
+ "bottom",
684
+ "clear"
685
+ ];
674
686
  let DIRECTION = /* @__PURE__ */ function(DIRECTION) {
675
687
  DIRECTION["UP"] = "up";
676
688
  DIRECTION["DOWN"] = "down";
@@ -678,6 +690,11 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
678
690
  DIRECTION["RIGHT"] = "right";
679
691
  return DIRECTION;
680
692
  }({});
693
+ const composerFocusTypes = [
694
+ "inactive",
695
+ "cellFocus",
696
+ "contentFocus"
697
+ ];
681
698
 
682
699
  //#endregion
683
700
  //#region src/helpers/misc.ts
@@ -2579,13 +2596,9 @@ stores.inject(MyMetaStore, storeInstance);
2579
2596
  const isOdooCompatLoaded = _odoo_owl.__ODOO_COMPATIBILITY_LAYER_ADDED__ === true;
2580
2597
  var _Component = class extends _odoo_owl.Component {
2581
2598
  static template = "";
2582
- static props = {};
2583
- static defaultProps = {};
2584
- props;
2585
2599
  env;
2586
2600
  constructor(node) {
2587
2601
  super(node);
2588
- this.props = (0, _odoo_owl.props)(null, this.constructor.defaultProps);
2589
2602
  this.env = useChildEnv();
2590
2603
  this.__owl__ = node;
2591
2604
  }
@@ -2707,10 +2720,11 @@ stores.inject(MyMetaStore, storeInstance);
2707
2720
  };
2708
2721
  var Portal = class extends _odoo_owl.Component {
2709
2722
  static template = _odoo_owl.xml`<t t-call-slot="default"/>`;
2710
- static props = {
2711
- selector: String,
2712
- slots: true
2713
- };
2723
+ constructor(node) {
2724
+ super(node);
2725
+ this.props = (0, _odoo_owl.props)();
2726
+ this.__owl__ = node;
2727
+ }
2714
2728
  setup() {
2715
2729
  const node = this.__owl__;
2716
2730
  const renderContent = node.renderFn;
@@ -4310,6 +4324,7 @@ set(value) {
4310
4324
  //#endregion
4311
4325
  //#region src/helpers/format/format_tokenizer.ts
4312
4326
  function tokenizeFormat(str) {
4327
+ str = str.replace(/\s/g, " ");
4313
4328
  const chars = new TokenizingChars(str);
4314
4329
  const result = [];
4315
4330
  let currentFormatPart = [];
@@ -7025,6 +7040,11 @@ set(value) {
7025
7040
  sheetId
7026
7041
  }, defaultGetSheetSize);
7027
7042
  }
7043
+ function replaceSymbolInFormula(formula, oldSymbol, newSymbol) {
7044
+ const oldCanonicalSymbol = getCanonicalSymbolName(oldSymbol);
7045
+ const newCanonicalSymbol = getCanonicalSymbolName(newSymbol);
7046
+ return tokenize(formula).map((token) => token.type === "SYMBOL" && token.value === oldCanonicalSymbol ? newCanonicalSymbol : token.value).join("");
7047
+ }
7028
7048
 
7029
7049
  //#endregion
7030
7050
  //#region src/formulas/code_builder.ts
@@ -9918,6 +9938,9 @@ set(value) {
9918
9938
  //#endregion
9919
9939
  //#region src/components/figures/chart/chartJs/chartjs_show_values_plugin.ts
9920
9940
  const MINIMAL_VERTICAL_DISTANCE = 13;
9941
+ function isLineOverlayOnBarChart(options, dataset) {
9942
+ return options.type === "bar" && dataset.type === "line";
9943
+ }
9921
9944
  /** This is a chartJS plugin that will draw the values of each data next to the point/bar/pie slice */
9922
9945
  const chartShowValuesPlugin = {
9923
9946
  id: "chartShowValuesPlugin",
@@ -9968,7 +9991,7 @@ set(value) {
9968
9991
  function drawLineOrBarOrRadarChartValues(chart, options, ctx) {
9969
9992
  const textsPositions = {};
9970
9993
  for (const dataset of chart._metasets) {
9971
- if (isTrendLineAxis(dataset.xAxisID) || dataset.hidden) continue;
9994
+ if (isTrendLineAxis(dataset.xAxisID) || dataset.hidden || isLineOverlayOnBarChart(options, dataset)) continue;
9972
9995
  const yAxisScale = chart.scales[dataset.yAxisID];
9973
9996
  for (let i = 0; i < dataset._parsed.length; i++) {
9974
9997
  const parsedValue = dataset._parsed[i];
@@ -10047,7 +10070,7 @@ set(value) {
10047
10070
  function drawHorizontalBarChartValues(chart, options, ctx) {
10048
10071
  const textsPositions = {};
10049
10072
  for (const dataset of chart._metasets) {
10050
- if (isTrendLineAxis(dataset.xAxisID)) return;
10073
+ if (isTrendLineAxis(dataset.xAxisID) || isLineOverlayOnBarChart(options, dataset)) continue;
10051
10074
  const xZeroLine = chart.scales[dataset.xAxisID].getPixelForValue(0);
10052
10075
  for (let i = 0; i < dataset._parsed.length; i++) {
10053
10076
  const value = Number(dataset._parsed[i].x);
@@ -10549,7 +10572,7 @@ set(value) {
10549
10572
  font: {
10550
10573
  style: italic ? "italic" : "normal",
10551
10574
  weight: bold ? "bold" : "normal",
10552
- size: design.title.fontSize ?? 12
10575
+ size: fontSizeInPixels(design.title.fontSize ?? 12)
10553
10576
  },
10554
10577
  align: align === "left" ? "start" : align === "right" ? "end" : "center"
10555
10578
  };
@@ -10692,8 +10715,38 @@ set(value) {
10692
10715
  trendDatasets.push(getTrendingLineDataSet(dataset, trendConfig, trendData));
10693
10716
  }
10694
10717
  dataSets.push(...trendDatasets);
10718
+ const totalLineDataset = getBarChartTotalLineDataset(definition, dataSetsValues);
10719
+ if (totalLineDataset) dataSets.push(totalLineDataset);
10695
10720
  return dataSets;
10696
10721
  }
10722
+ function getBarChartTotalLineDataset(definition, dataSetsValues) {
10723
+ const visibleDataSetsValues = dataSetsValues.filter((dataSet) => !dataSet.hidden);
10724
+ if (!definition.stacked || !definition.showTotalLine || visibleDataSetsValues.length < 2) return;
10725
+ const data = range(0, Math.max(...visibleDataSetsValues.map((dataSet) => dataSet.data.length))).map((index) => {
10726
+ let total;
10727
+ for (const dataSet of visibleDataSetsValues) {
10728
+ const cell = dataSet.data[index];
10729
+ if (isNumberResult(cell)) total = (total ?? 0) + cell.value;
10730
+ }
10731
+ return total ?? NaN;
10732
+ });
10733
+ const color = relativeLuminance(definition.background || "#FFFFFF") < .3 ? "#e9ecef" : "#343a40";
10734
+ return {
10735
+ type: "line",
10736
+ label: _t("Sum"),
10737
+ data,
10738
+ order: -1,
10739
+ tension: 0,
10740
+ fill: false,
10741
+ pointRadius: 3,
10742
+ borderWidth: 2,
10743
+ backgroundColor: color,
10744
+ borderColor: color,
10745
+ pointBackgroundColor: color,
10746
+ xAxisID: "x",
10747
+ yAxisID: "y"
10748
+ };
10749
+ }
10697
10750
  function getCalendarChartDatasetAndLabels(definition, args) {
10698
10751
  const { labels, dataSetsValues, background } = args;
10699
10752
  const values = dataSetsValues.map((ds) => ds.data).flat().filter(isNumberResult).map((cell) => cell.value);
@@ -11141,7 +11194,7 @@ set(value) {
11141
11194
  font: {
11142
11195
  weight: design?.bold ?? defaultDesign?.bold ? "bold" : "normal",
11143
11196
  style: design?.italic ?? defaultDesign?.italic ? "italic" : "normal",
11144
- size: design?.fontSize ?? defaultDesign?.fontSize
11197
+ size: fontSizeInPixels(design?.fontSize ?? defaultDesign.fontSize)
11145
11198
  }
11146
11199
  };
11147
11200
  }
@@ -11471,13 +11524,10 @@ set(value) {
11471
11524
  });
11472
11525
  var ChartJsComponent = class extends Component {
11473
11526
  static template = "o-spreadsheet-ChartJsComponent";
11474
- static props = {
11475
- chartId: String,
11476
- isFullScreen: {
11477
- type: Boolean,
11478
- optional: true
11479
- }
11480
- };
11527
+ props = (0, _odoo_owl.props)({
11528
+ chartId: _odoo_owl.types.string(),
11529
+ "isFullScreen?": _odoo_owl.types.boolean()
11530
+ });
11481
11531
  canvas = (0, _odoo_owl.signal)(null);
11482
11532
  chart;
11483
11533
  currentRuntime;
@@ -12080,35 +12130,35 @@ set(value) {
12080
12130
  if (this.runtime.progressBar) baselineValueFontSize /= 1.5;
12081
12131
  return {
12082
12132
  title: {
12083
- font: getDefaultContextFont(this.runtime.title.fontSize ?? 14, this.runtime.title.bold, this.runtime.title.italic),
12133
+ font: getDefaultContextFont(fontSizeInPixels(this.runtime.title.fontSize ?? 14), this.runtime.title.bold, this.runtime.title.italic),
12084
12134
  color: this.runtime.title.color ?? this.secondaryFontColor
12085
12135
  },
12086
12136
  keyValue: {
12087
12137
  color: this.runtime.keyValueStyle?.textColor || this.runtime.fontColor,
12088
- font: getDefaultContextFont(keyValueFontSize, this.runtime.keyValueStyle?.bold, this.runtime.keyValueStyle?.italic),
12138
+ font: getDefaultContextFont(fontSizeInPixels(keyValueFontSize), this.runtime.keyValueStyle?.bold, this.runtime.keyValueStyle?.italic),
12089
12139
  strikethrough: this.runtime.keyValueStyle?.strikethrough,
12090
12140
  underline: this.runtime.keyValueStyle?.underline
12091
12141
  },
12092
12142
  keyDescr: {
12093
12143
  color: this.runtime.keyValueDescrStyle?.textColor || this.runtime.fontColor,
12094
- font: getDefaultContextFont(keyValueDescrFontSize, this.runtime.keyValueDescrStyle?.bold, this.runtime.keyValueDescrStyle?.italic),
12144
+ font: getDefaultContextFont(fontSizeInPixels(keyValueDescrFontSize), this.runtime.keyValueDescrStyle?.bold, this.runtime.keyValueDescrStyle?.italic),
12095
12145
  strikethrough: this.runtime.keyValueDescrStyle?.strikethrough,
12096
12146
  underline: this.runtime.keyValueDescrStyle?.underline
12097
12147
  },
12098
12148
  baselineValue: {
12099
- font: getDefaultContextFont(baselineValueFontSize, this.runtime.baselineStyle?.bold, this.runtime.baselineStyle?.italic),
12149
+ font: getDefaultContextFont(fontSizeInPixels(baselineValueFontSize), this.runtime.baselineStyle?.bold, this.runtime.baselineStyle?.italic),
12100
12150
  strikethrough: this.runtime.baselineStyle?.strikethrough,
12101
12151
  underline: this.runtime.baselineStyle?.underline,
12102
12152
  color: this.runtime.baselineColor || this.runtime.baselineStyle?.textColor || this.secondaryFontColor
12103
12153
  },
12104
12154
  baselineDescr: {
12105
- font: getDefaultContextFont(baselineDescrFontSize, this.runtime.baselineDescrStyle?.bold, this.runtime.baselineDescrStyle?.italic),
12155
+ font: getDefaultContextFont(fontSizeInPixels(baselineDescrFontSize), this.runtime.baselineDescrStyle?.bold, this.runtime.baselineDescrStyle?.italic),
12106
12156
  strikethrough: this.runtime.baselineDescrStyle?.strikethrough,
12107
12157
  underline: this.runtime.baselineDescrStyle?.underline,
12108
12158
  color: this.runtime.baselineDescrStyle?.textColor ?? this.secondaryFontColor
12109
12159
  },
12110
12160
  baselineArrow: this.baselineArrow === "neutral" || this.runtime.progressBar ? void 0 : {
12111
- size: this.keyValue ? .8 * baselineValueFontSize : 0,
12161
+ size: this.keyValue ? .8 * fontSizeInPixels(baselineValueFontSize) : 0,
12112
12162
  color: this.runtime.baselineColor || this.runtime.baselineStyle?.textColor || this.secondaryFontColor
12113
12163
  }
12114
12164
  };
@@ -12173,13 +12223,10 @@ set(value) {
12173
12223
  //#region src/components/figures/chart/scorecard/chart_scorecard.ts
12174
12224
  var ScorecardChart = class extends Component {
12175
12225
  static template = "o-spreadsheet-ScorecardChart";
12176
- static props = {
12177
- chartId: String,
12178
- isFullScreen: {
12179
- type: Boolean,
12180
- optional: true
12181
- }
12182
- };
12226
+ props = (0, _odoo_owl.props)({
12227
+ chartId: _odoo_owl.types.string(),
12228
+ "isFullScreen?": _odoo_owl.types.boolean()
12229
+ });
12183
12230
  canvas = (0, _odoo_owl.signal)(null);
12184
12231
  get runtime() {
12185
12232
  return this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -12321,7 +12368,7 @@ set(value) {
12321
12368
  function drawTitle(ctx, config) {
12322
12369
  ctx.save();
12323
12370
  const title = config.title;
12324
- ctx.font = getDefaultContextFont(title.fontSize, title.bold, title.italic);
12371
+ ctx.font = getDefaultContextFont(fontSizeInPixels(title.fontSize), title.bold, title.italic);
12325
12372
  ctx.textBaseline = "middle";
12326
12373
  ctx.fillStyle = title.color;
12327
12374
  ctx.fillText(title.label, title.textPosition.x, title.textPosition.y);
@@ -12355,8 +12402,8 @@ set(value) {
12355
12402
  const inflectionValues = getInflectionValues(runtime, gaugeRect, textColor, ctx);
12356
12403
  let x = 0, titleWidth = 0, titleHeight = 0;
12357
12404
  if (runtime.title.text) ({width: titleWidth, height: titleHeight} = computeTextDimension(ctx, runtime.title.text, {
12358
- fontSize: 16,
12359
- ...runtime.title
12405
+ ...runtime.title,
12406
+ fontSize: fontSizeInPixels(runtime.title.fontSize ?? 16)
12360
12407
  }, "px"));
12361
12408
  switch (runtime.title.align) {
12362
12409
  case "right":
@@ -13865,13 +13912,10 @@ set(value) {
13865
13912
  const ANIMATION_DURATION = 1e3;
13866
13913
  var GaugeChartComponent = class extends Component {
13867
13914
  static template = "o-spreadsheet-GaugeChartComponent";
13868
- static props = {
13869
- chartId: String,
13870
- isFullScreen: {
13871
- type: Boolean,
13872
- optional: true
13873
- }
13874
- };
13915
+ props = (0, _odoo_owl.props)({
13916
+ chartId: _odoo_owl.types.string(),
13917
+ "isFullScreen?": _odoo_owl.types.boolean()
13918
+ });
13875
13919
  canvas = (0, _odoo_owl.signal)(null);
13876
13920
  animationStore;
13877
13921
  get runtime() {
@@ -13882,10 +13926,10 @@ set(value) {
13882
13926
  let animation = null;
13883
13927
  let lastRuntime = void 0;
13884
13928
  useLayoutEffect(() => {
13885
- if (this.env.isDashboard() && lastRuntime === void 0 && this.animationStore?.animationPlayed[this.animationChartId] !== "gauge") {
13929
+ if (this.env.model.getters.isDashboard() && lastRuntime === void 0 && this.animationStore?.animationPlayed[this.animationChartId] !== "gauge") {
13886
13930
  animation = this.drawGaugeWithAnimation();
13887
13931
  this.animationStore?.disableAnimationForChart(this.animationChartId, "gauge");
13888
- } else if (this.env.isDashboard() && lastRuntime !== void 0 && !deepEquals(this.runtime, lastRuntime)) {
13932
+ } else if (this.env.model.getters.isDashboard() && lastRuntime !== void 0 && !deepEquals(this.runtime, lastRuntime)) {
13889
13933
  animation = this.drawGaugeWithAnimation();
13890
13934
  this.animationStore?.disableAnimationForChart(this.animationChartId, "gauge");
13891
13935
  } else {
@@ -14142,52 +14186,201 @@ set(value) {
14142
14186
  };
14143
14187
  }
14144
14188
 
14189
+ //#endregion
14190
+ //#region src/components/props_validation.ts
14191
+ /**
14192
+ * Validate that a prop is a number, but with a more specific type than just `number` (e.g. `Pixel`).
14193
+ */
14194
+ function validateNumber() {
14195
+ return _odoo_owl.types.number();
14196
+ }
14197
+ /**
14198
+ * Validate that a prop is a string, but with a more specific type than just `string` (e.g. `Color`).
14199
+ */
14200
+ function validateString() {
14201
+ return _odoo_owl.types.string();
14202
+ }
14203
+ /**
14204
+ * Validate that a prop is an object, but with a more specific type than just `object` (e.g. `ActionSpec`).
14205
+ */
14206
+ function validateObject() {
14207
+ return _odoo_owl.types.object();
14208
+ }
14209
+ /**
14210
+ * Validate that a prop is an array, but with a more specific element type than `any[]`.
14211
+ */
14212
+ function validateArrayOf() {
14213
+ return _odoo_owl.types.array();
14214
+ }
14215
+ /**
14216
+ * Validate that a prop is a record (string-keyed dictionary), but with a more
14217
+ * specific value type than `any`.
14218
+ */
14219
+ function validateRecordOf() {
14220
+ return _odoo_owl.types.record();
14221
+ }
14222
+ /**
14223
+ * Validate that a prop is a `Set`, typed with a specific element type.
14224
+ */
14225
+ function validateSetOf() {
14226
+ return _odoo_owl.types.instanceOf(Set);
14227
+ }
14228
+ function validateRect() {
14229
+ return _odoo_owl.types.object({
14230
+ x: _odoo_owl.types.number(),
14231
+ y: _odoo_owl.types.number(),
14232
+ width: _odoo_owl.types.number(),
14233
+ height: _odoo_owl.types.number()
14234
+ });
14235
+ }
14236
+ function validateBorderPosition() {
14237
+ return _odoo_owl.types.customValidator(validateString(), (position) => borderPositions.includes(position));
14238
+ }
14239
+ function validateBorderStyle() {
14240
+ return _odoo_owl.types.customValidator(validateString(), (style) => borderStyles.includes(style));
14241
+ }
14242
+ function validateDOMCoordinates() {
14243
+ return _odoo_owl.types.object({
14244
+ x: _odoo_owl.types.number(),
14245
+ y: _odoo_owl.types.number()
14246
+ });
14247
+ }
14248
+ function validateDOMDimension() {
14249
+ return _odoo_owl.types.object({
14250
+ width: _odoo_owl.types.number(),
14251
+ height: _odoo_owl.types.number()
14252
+ });
14253
+ }
14254
+ function validateSortDirection() {
14255
+ return _odoo_owl.types.customValidator(validateString(), (direction) => ["asc", "desc"].includes(direction));
14256
+ }
14257
+ function validateResizeDirection() {
14258
+ return _odoo_owl.types.customValidator(validateNumber(), (direction) => [
14259
+ -1,
14260
+ 0,
14261
+ 1
14262
+ ].includes(direction));
14263
+ }
14264
+ function validateComposerFocusType() {
14265
+ return _odoo_owl.types.customValidator(validateString(), (value) => composerFocusTypes.includes(value));
14266
+ }
14267
+ function validateDimension() {
14268
+ return _odoo_owl.types.customValidator(validateString(), (value) => ["COL", "ROW"].includes(value));
14269
+ }
14270
+ function validateContextMenuType() {
14271
+ return _odoo_owl.types.customValidator(validateString(), (value) => [
14272
+ "ROW",
14273
+ "COL",
14274
+ "CELL",
14275
+ "FILTER",
14276
+ "GROUP_HEADERS",
14277
+ "UNGROUP_HEADERS"
14278
+ ].includes(value));
14279
+ }
14280
+ /**
14281
+ * Validate that a prop is a store. Typed as the CQS-wrapped `Store<T>` to
14282
+ * match what `useStore(...)` returns at the call site.
14283
+ */
14284
+ function validateStore() {
14285
+ return _odoo_owl.types.object();
14286
+ }
14287
+ const types$6 = {
14288
+ ..._odoo_owl.types,
14289
+ ArrayOf: validateArrayOf,
14290
+ RecordOf: validateRecordOf,
14291
+ SetOf: validateSetOf,
14292
+ GenericCriterionType: validateString,
14293
+ UID: validateString,
14294
+ CriterionFilter: validateObject,
14295
+ CSSProperties: validateObject,
14296
+ ResizeDirection: validateResizeDirection,
14297
+ FigureUI: validateObject,
14298
+ Token: validateObject,
14299
+ CellPosition: validateObject,
14300
+ AutoCompleteProviderDefinition: validateObject,
14301
+ AutoCompleteProposal: validateObject,
14302
+ FunctionDescription: validateObject,
14303
+ Rect: validateRect,
14304
+ Pixel: validateNumber,
14305
+ HeaderIndex: validateNumber,
14306
+ BorderPosition: validateBorderPosition,
14307
+ BorderStyle: validateBorderStyle,
14308
+ Color: validateString,
14309
+ ActionSpec: validateObject,
14310
+ DOMCoordinates: validateDOMCoordinates,
14311
+ DOMDimension: validateDOMDimension,
14312
+ ComposerFocusType: validateComposerFocusType,
14313
+ SortDirection: validateSortDirection,
14314
+ Store: validateStore,
14315
+ Position: validateObject,
14316
+ PivotCoreDefinition: validateObject,
14317
+ PivotField: validateObject,
14318
+ PivotDimension: validateObject,
14319
+ PivotMeasure: validateObject,
14320
+ PivotCoreMeasure: validateObject,
14321
+ PivotCustomGroupedField: validateObject,
14322
+ PivotRuntimeDefinition: validateObject,
14323
+ PivotFilter: validateObject,
14324
+ DataFilterValue: validateObject,
14325
+ SpreadsheetPivotCoreDefinition: validateObject,
14326
+ ComposerSelection: validateObject,
14327
+ Action: validateObject,
14328
+ MenuItemOrSeparator: validateObject,
14329
+ Model: validateObject,
14330
+ DispatchResult: validateObject,
14331
+ Zone: validateObject,
14332
+ Range: validateObject,
14333
+ HeaderGroup: validateObject,
14334
+ GridClickModifiers: validateObject,
14335
+ ZoomedMouseEvent: validateObject,
14336
+ ConditionalFormat: validateObject,
14337
+ ColorScaleThreshold: validateObject,
14338
+ Table: validateObject,
14339
+ CoreTable: validateObject,
14340
+ TableConfig: validateObject,
14341
+ TableStyle: validateObject,
14342
+ TitleDesign: validateObject,
14343
+ ChartDefinition: validateObject,
14344
+ ChartDefinitionWithDataSource: validateObject,
14345
+ ChartWithAxisDefinition: validateObject,
14346
+ ChartStyle: validateObject,
14347
+ ChartColorScale: validateObject,
14348
+ ChartRangeDataSource: validateObject,
14349
+ DataSetStyle: validateObject,
14350
+ GeoChartDefinition: validateObject,
14351
+ FunnelChartDefinition: validateObject,
14352
+ TreeMapChartDefinition: validateObject,
14353
+ TreeMapCategoryColorOptions: validateObject,
14354
+ TreeMapColorScaleOptions: validateObject,
14355
+ NamedRange: validateObject,
14356
+ DataValidationRule: validateObject,
14357
+ InformationNotification: validateObject,
14358
+ NotificationStoreMethods: validateObject,
14359
+ SidePanelContent: validateObject,
14360
+ SidePanelComponentProps: validateObject,
14361
+ DataValidationCriterionType: validateString,
14362
+ Dimension: validateDimension,
14363
+ ContextMenuType: validateContextMenuType
14364
+ };
14365
+
14145
14366
  //#endregion
14146
14367
  //#region src/components/menu/menu.ts
14147
14368
  var Menu = class extends Component {
14148
14369
  static template = "o-spreadsheet-Menu";
14149
- static props = {
14150
- menuItems: Array,
14151
- onClose: Function,
14152
- onClickMenu: {
14153
- type: Function,
14154
- optional: true
14155
- },
14156
- onMouseEnter: {
14157
- type: Function,
14158
- optional: true
14159
- },
14160
- onMouseLeave: {
14161
- type: Function,
14162
- optional: true
14163
- },
14164
- width: {
14165
- type: Number,
14166
- optional: true
14167
- },
14168
- hoveredMenuId: {
14169
- type: String,
14170
- optional: true
14171
- },
14172
- isHoveredMenuFocused: {
14173
- type: Boolean,
14174
- optional: true
14175
- },
14176
- onScroll: {
14177
- type: Function,
14178
- optional: true
14179
- },
14180
- onKeyDown: {
14181
- type: Function,
14182
- optional: true
14183
- },
14184
- disableKeyboardNavigation: {
14185
- type: Boolean,
14186
- optional: true
14187
- }
14188
- };
14189
14370
  static components = {};
14190
- static defaultProps = {};
14371
+ props = (0, _odoo_owl.props)({
14372
+ menuItems: types$6.ArrayOf(),
14373
+ onClose: types$6.function([]),
14374
+ "onClickMenu?": types$6.function([types$6.Action(), types$6.instanceOf(PointerEvent)]),
14375
+ "onMouseEnter?": types$6.function([types$6.Action(), types$6.instanceOf(PointerEvent)]),
14376
+ "onMouseLeave?": types$6.function([types$6.Action(), types$6.instanceOf(PointerEvent)]),
14377
+ "width?": types$6.number(),
14378
+ "hoveredMenuId?": types$6.string(),
14379
+ "isHoveredMenuFocused?": types$6.boolean(),
14380
+ "onScroll?": types$6.function([types$6.instanceOf(CustomEvent)]),
14381
+ "onKeyDown?": types$6.function([types$6.instanceOf(KeyboardEvent)]),
14382
+ "disableKeyboardNavigation?": types$6.boolean()
14383
+ });
14191
14384
  menuRef = (0, _odoo_owl.signal)(null);
14192
14385
  setup() {
14193
14386
  useLayoutEffect(() => {
@@ -14325,57 +14518,25 @@ set(value) {
14325
14518
  //#region src/components/popover/popover.ts
14326
14519
  var Popover = class extends Component {
14327
14520
  static template = "o-spreadsheet-Popover";
14328
- static props = {
14329
- anchorRect: Object,
14330
- containerRect: {
14331
- type: Object,
14332
- optional: true
14333
- },
14334
- positioning: {
14335
- type: String,
14336
- optional: true
14337
- },
14338
- maxWidth: {
14339
- type: Number,
14340
- optional: true
14341
- },
14342
- maxHeight: {
14343
- type: Number,
14344
- optional: true
14345
- },
14346
- verticalOffset: {
14347
- type: Number,
14348
- optional: true
14349
- },
14350
- onMouseWheel: {
14351
- type: Function,
14352
- optional: true
14353
- },
14354
- onPopoverHidden: {
14355
- type: Function,
14356
- optional: true
14357
- },
14358
- onPopoverMoved: {
14359
- type: Function,
14360
- optional: true
14361
- },
14362
- zIndex: {
14363
- type: Number,
14364
- optional: true
14365
- },
14366
- class: {
14367
- type: String,
14368
- optional: true
14369
- },
14370
- slots: Object
14371
- };
14372
- static defaultProps = {
14521
+ props = (0, _odoo_owl.props)({
14522
+ anchorRect: types$6.Rect(),
14523
+ "containerRect?": types$6.object({}),
14524
+ "positioning?": types$6.or([types$6.literal("top-right"), types$6.literal("bottom-left")]),
14525
+ "maxWidth?": types$6.Pixel(),
14526
+ "maxHeight?": types$6.Pixel(),
14527
+ "verticalOffset?": types$6.number(),
14528
+ "onMouseWheel?": types$6.function([]),
14529
+ "onPopoverHidden?": types$6.function([]),
14530
+ "onPopoverMoved?": types$6.function([]),
14531
+ "zIndex?": types$6.number(),
14532
+ "class?": types$6.string()
14533
+ }, {
14373
14534
  positioning: "bottom-left",
14374
14535
  verticalOffset: 0,
14375
14536
  onMouseWheel: () => {},
14376
14537
  onPopoverMoved: () => {},
14377
14538
  onPopoverHidden: () => {}
14378
- };
14539
+ });
14379
14540
  popoverRef = (0, _odoo_owl.signal)(null);
14380
14541
  popoverContentRef = (0, _odoo_owl.signal)(null);
14381
14542
  currentPosition = void 0;
@@ -14537,60 +14698,29 @@ set(value) {
14537
14698
  const TIMEOUT_DELAY = 250;
14538
14699
  var MenuPopover = class MenuPopover extends Component {
14539
14700
  static template = "o-spreadsheet-Menu-Popover";
14540
- static props = {
14541
- anchorRect: Object,
14542
- popoverPositioning: {
14543
- type: String,
14544
- optional: true
14545
- },
14546
- menuItems: Array,
14547
- depth: {
14548
- type: Number,
14549
- optional: true
14550
- },
14551
- maxHeight: {
14552
- type: Number,
14553
- optional: true
14554
- },
14555
- onClose: Function,
14556
- onMenuClicked: {
14557
- type: Function,
14558
- optional: true
14559
- },
14560
- menuId: {
14561
- type: String,
14562
- optional: true
14563
- },
14564
- onMouseOver: {
14565
- type: Function,
14566
- optional: true
14567
- },
14568
- width: {
14569
- type: Number,
14570
- optional: true
14571
- },
14572
- autoSelectFirstItem: {
14573
- type: Boolean,
14574
- optional: true
14575
- },
14576
- disableKeyboardNavigation: {
14577
- type: Boolean,
14578
- optional: true
14579
- },
14580
- onKeyboardNavigation: {
14581
- type: Function,
14582
- optional: true
14583
- }
14584
- };
14585
14701
  static components = {
14586
14702
  MenuPopover,
14587
14703
  Menu,
14588
14704
  Popover
14589
14705
  };
14590
- static defaultProps = {
14706
+ props = (0, _odoo_owl.props)({
14707
+ anchorRect: types$6.Rect(),
14708
+ "popoverPositioning?": types$6.or([types$6.literal("top-right"), types$6.literal("bottom-left")]),
14709
+ menuItems: types$6.ArrayOf(),
14710
+ "depth?": types$6.number(),
14711
+ "maxHeight?": types$6.Pixel(),
14712
+ onClose: types$6.function([]),
14713
+ "onMenuClicked?": types$6.function([types$6.instanceOf(CustomEvent)]),
14714
+ "menuId?": types$6.UID(),
14715
+ "onMouseOver?": types$6.function([]),
14716
+ "width?": types$6.number(),
14717
+ "autoSelectFirstItem?": types$6.boolean(),
14718
+ "disableKeyboardNavigation?": types$6.boolean(),
14719
+ "onKeyboardNavigation?": types$6.function([types$6.instanceOf(KeyboardEvent)])
14720
+ }, {
14591
14721
  depth: 0,
14592
14722
  popoverPositioning: "top-right"
14593
- };
14723
+ });
14594
14724
  subMenu = (0, _odoo_owl.proxy)({
14595
14725
  isOpen: false,
14596
14726
  anchorRect: null,
@@ -14830,31 +14960,16 @@ set(value) {
14830
14960
  //#region src/components/select/select.ts
14831
14961
  var Select = class extends Component {
14832
14962
  static template = "o-spreadsheet-Select";
14833
- static props = {
14834
- onChange: Function,
14835
- values: Array,
14836
- selectedValue: {
14837
- type: String,
14838
- optional: true
14839
- },
14840
- class: {
14841
- type: String,
14842
- optional: true
14843
- },
14844
- popoverClass: {
14845
- type: String,
14846
- optional: true
14847
- },
14848
- name: {
14849
- type: String,
14850
- optional: true
14851
- },
14852
- title: {
14853
- type: String,
14854
- optional: true
14855
- }
14856
- };
14857
14963
  static components = { Popover };
14964
+ props = (0, _odoo_owl.props)({
14965
+ onChange: types$6.function([types$6.string()]),
14966
+ values: types$6.array(),
14967
+ "selectedValue?": types$6.string(),
14968
+ "class?": types$6.string(),
14969
+ "popoverClass?": types$6.string(),
14970
+ "name?": types$6.string(),
14971
+ "title?": types$6.string()
14972
+ });
14858
14973
  selectRef = (0, _odoo_owl.signal)(null);
14859
14974
  dropdownRef = (0, _odoo_owl.signal)(null);
14860
14975
  state = (0, _odoo_owl.proxy)({
@@ -14960,14 +15075,10 @@ set(value) {
14960
15075
  MenuPopover,
14961
15076
  Select
14962
15077
  };
14963
- static props = {
14964
- chartId: String,
14965
- hasFullScreenButton: {
14966
- type: Boolean,
14967
- optional: true
14968
- }
14969
- };
14970
- static defaultProps = { hasFullScreenButton: true };
15078
+ props = (0, _odoo_owl.props)({
15079
+ chartId: types$6.UID(),
15080
+ "hasFullScreenButton?": types$6.boolean()
15081
+ }, { hasFullScreenButton: true });
14971
15082
  fullScreenFigureStore;
14972
15083
  menuState = (0, _odoo_owl.proxy)({
14973
15084
  isOpen: false,
@@ -15030,25 +15141,16 @@ set(value) {
15030
15141
  //#region src/components/figures/figure_carousel/figure_carousel.ts
15031
15142
  var CarouselFigure = class extends Component {
15032
15143
  static template = "o-spreadsheet-CarouselFigure";
15033
- static props = {
15034
- figureUI: Object,
15035
- editFigureStyle: {
15036
- type: Function,
15037
- optional: true
15038
- },
15039
- isFullScreen: {
15040
- type: Boolean,
15041
- optional: true
15042
- },
15043
- openContextMenu: {
15044
- type: Function,
15045
- optional: true
15046
- }
15047
- };
15048
15144
  static components = {
15049
15145
  ChartDashboardMenu,
15050
15146
  MenuPopover
15051
15147
  };
15148
+ props = (0, _odoo_owl.props)({
15149
+ figureUI: types$6.FigureUI(),
15150
+ "editFigureStyle?": types$6.function([types$6.CSSProperties()]),
15151
+ "isFullScreen?": types$6.boolean(),
15152
+ "openContextMenu?": types$6.function([types$6.Rect(), types$6.function([])])
15153
+ });
15052
15154
  carouselTabsRef = (0, _odoo_owl.signal)(null);
15053
15155
  carouselTabsDropdownRef = (0, _odoo_owl.signal)(null);
15054
15156
  menuState = (0, _odoo_owl.proxy)({
@@ -15118,10 +15220,12 @@ set(value) {
15118
15220
  return this.carousel.title?.text ?? "";
15119
15221
  }
15120
15222
  get titleStyle() {
15121
- return cssPropertiesToCss(cellTextStyleToCss(chartStyleToCellStyle({
15223
+ const style = {
15122
15224
  ...DEFAULT_CAROUSEL_TITLE_STYLE,
15123
15225
  ...this.carousel.title
15124
- })));
15226
+ };
15227
+ style.fontSize = fontSizeInPixels(style.fontSize ?? 16);
15228
+ return cssPropertiesToCss(cellTextStyleToCss(chartStyleToCellStyle(style)));
15125
15229
  }
15126
15230
  updateTabsVisibility() {
15127
15231
  const tabsContainerEl = this.carouselTabsRef();
@@ -15181,22 +15285,13 @@ set(value) {
15181
15285
  //#region src/components/figures/figure_chart/figure_chart.ts
15182
15286
  var ChartFigure = class extends Component {
15183
15287
  static template = "o-spreadsheet-ChartFigure";
15184
- static props = {
15185
- figureUI: Object,
15186
- editFigureStyle: {
15187
- type: Function,
15188
- optional: true
15189
- },
15190
- isFullScreen: {
15191
- type: Boolean,
15192
- optional: true
15193
- },
15194
- openContextMenu: {
15195
- type: Function,
15196
- optional: true
15197
- }
15198
- };
15199
15288
  static components = { ChartDashboardMenu };
15289
+ props = (0, _odoo_owl.props)({
15290
+ figureUI: types$6.FigureUI(),
15291
+ "editFigureStyle?": types$6.function([types$6.CSSProperties()]),
15292
+ "isFullScreen?": types$6.boolean(),
15293
+ "openContextMenu?": types$6.function([types$6.Rect(), types$6.function([])])
15294
+ });
15200
15295
  onDoubleClick() {
15201
15296
  this.env.model.dispatch("SELECT_FIGURE", { figureId: this.props.figureUI.id });
15202
15297
  this.env.openSidePanel("ChartPanel");
@@ -15221,18 +15316,12 @@ set(value) {
15221
15316
  //#region src/components/figures/figure_image/figure_image.ts
15222
15317
  var ImageFigure = class extends Component {
15223
15318
  static template = "o-spreadsheet-ImageFigure";
15224
- static props = {
15225
- figureUI: Object,
15226
- editFigureStyle: {
15227
- type: Function,
15228
- optional: true
15229
- },
15230
- openContextMenu: {
15231
- type: Function,
15232
- optional: true
15233
- }
15234
- };
15235
15319
  static components = {};
15320
+ props = (0, _odoo_owl.props)({
15321
+ figureUI: types$6.FigureUI(),
15322
+ "editFigureStyle?": types$6.function([types$6.CSSProperties()]),
15323
+ "openContextMenu?": types$6.function([types$6.Rect(), types$6.function([])])
15324
+ });
15236
15325
  get figureId() {
15237
15326
  return this.props.figureUI.id;
15238
15327
  }
@@ -15268,30 +15357,21 @@ set(value) {
15268
15357
  const ACTIVE_BORDER_WIDTH = 2;
15269
15358
  var FigureComponent = class extends Component {
15270
15359
  static template = "o-spreadsheet-FigureComponent";
15271
- static props = {
15272
- figureUI: Object,
15273
- style: {
15274
- type: String,
15275
- optional: true
15276
- },
15277
- class: {
15278
- type: String,
15279
- optional: true
15280
- },
15281
- onMouseDown: {
15282
- type: Function,
15283
- optional: true
15284
- },
15285
- onClickAnchor: {
15286
- type: Function,
15287
- optional: true
15288
- }
15289
- };
15290
15360
  static components = { MenuPopover };
15291
- static defaultProps = {
15361
+ props = (0, _odoo_owl.props)({
15362
+ figureUI: types$6.FigureUI(),
15363
+ style: types$6.string(),
15364
+ class: types$6.string(),
15365
+ "onMouseDown?": types$6.function([types$6.instanceOf(MouseEvent)]),
15366
+ "onClickAnchor?": types$6.function([
15367
+ types$6.ResizeDirection(),
15368
+ types$6.ResizeDirection(),
15369
+ types$6.instanceOf(MouseEvent)
15370
+ ])
15371
+ }, {
15292
15372
  onMouseDown: () => {},
15293
15373
  onClickAnchor: () => {}
15294
- };
15374
+ });
15295
15375
  menuState = (0, _odoo_owl.proxy)({
15296
15376
  isOpen: false,
15297
15377
  anchorRect: null,
@@ -15308,7 +15388,7 @@ set(value) {
15308
15388
  return figureRegistry;
15309
15389
  }
15310
15390
  getBorderWidth() {
15311
- if (this.env.isDashboard()) return 0;
15391
+ if (this.env.model.getters.isDashboard()) return 0;
15312
15392
  return this.isSelected ? ACTIVE_BORDER_WIDTH : this.borderWidth;
15313
15393
  }
15314
15394
  getBorderStyle(position) {
@@ -15450,7 +15530,7 @@ set(value) {
15450
15530
  };
15451
15531
  }
15452
15532
  onContextMenu(ev) {
15453
- if (this.env.isDashboard()) return;
15533
+ if (this.env.model.getters.isDashboard()) return;
15454
15534
  const zoomedMouseEvent = withZoom(this.env, ev);
15455
15535
  this.openContextMenu({
15456
15536
  x: zoomedMouseEvent.clientX,
@@ -15476,7 +15556,7 @@ set(value) {
15476
15556
  if (el) for (const property in properties) el.style.setProperty(property, properties[property] || null);
15477
15557
  }
15478
15558
  get isFigureResizable() {
15479
- return this.isSelected && !this.env.isMobile() && !this.env.isDashboard() && !this.env.model.getters.isCurrentSheetLocked();
15559
+ return this.isSelected && !this.env.isMobile() && !this.env.model.getters.isDashboard() && !this.env.model.getters.isCurrentSheetLocked();
15480
15560
  }
15481
15561
  };
15482
15562
 
@@ -21765,7 +21845,7 @@ set(value) {
21765
21845
  return measures.map((measure) => {
21766
21846
  if (measure.id === oldMeasure.id) return newMeasure;
21767
21847
  else if (!measure.computedBy || oldMeasure.id === newMeasure.id) return measure;
21768
- const newFormula = tokenize(measure.computedBy.formula).map((token) => token.type === "SYMBOL" && token.value === getCanonicalSymbolName(oldMeasure.id) ? getCanonicalSymbolName(newMeasure.id) : token.value).join("");
21848
+ const newFormula = replaceSymbolInFormula(measure.computedBy.formula, oldMeasure.id, newMeasure.id);
21769
21849
  return {
21770
21850
  ...measure,
21771
21851
  computedBy: {
@@ -24406,51 +24486,22 @@ set(value) {
24406
24486
 
24407
24487
  //#endregion
24408
24488
  //#region src/components/generic_input/generic_input.ts
24489
+ const genericInputPropsDefinition = {
24490
+ value: types$6.or([types$6.number(), types$6.string()]),
24491
+ onChange: types$6.function([types$6.string()]),
24492
+ "onFocused?": types$6.function([]),
24493
+ "onBlur?": types$6.function([]),
24494
+ "onInput?": types$6.function([types$6.string()]),
24495
+ "class?": types$6.string(),
24496
+ "id?": types$6.string(),
24497
+ "placeholder?": types$6.string(),
24498
+ "autofocus?": types$6.boolean(),
24499
+ "alwaysShowBorder?": types$6.boolean(),
24500
+ "selectContentOnFocus?": types$6.boolean(),
24501
+ "resetOnBlur?": types$6.boolean()
24502
+ };
24409
24503
  var GenericInput = class extends Component {
24410
- static props = {
24411
- value: [Number, String],
24412
- onChange: Function,
24413
- onFocused: {
24414
- type: Function,
24415
- optional: true
24416
- },
24417
- onBlur: {
24418
- type: Function,
24419
- optional: true
24420
- },
24421
- onInput: {
24422
- type: Function,
24423
- optional: true
24424
- },
24425
- class: {
24426
- type: String,
24427
- optional: true
24428
- },
24429
- id: {
24430
- type: String,
24431
- optional: true
24432
- },
24433
- placeholder: {
24434
- type: String,
24435
- optional: true
24436
- },
24437
- autofocus: {
24438
- type: Boolean,
24439
- optional: true
24440
- },
24441
- alwaysShowBorder: {
24442
- type: Boolean,
24443
- optional: true
24444
- },
24445
- selectContentOnFocus: {
24446
- type: Boolean,
24447
- optional: true
24448
- },
24449
- resetOnBlur: {
24450
- type: Boolean,
24451
- optional: true
24452
- }
24453
- };
24504
+ props = (0, _odoo_owl.props)(genericInputPropsDefinition);
24454
24505
  genericInputRef = (0, _odoo_owl.signal)(null);
24455
24506
  lastOnChangeValue = this.props.value.toString();
24456
24507
  setup() {
@@ -24533,13 +24584,11 @@ set(value) {
24533
24584
  var TextInput = class extends GenericInput {
24534
24585
  static template = "o-spreadsheet-TextInput";
24535
24586
  static components = {};
24536
- static props = {
24537
- ...GenericInput.props,
24538
- errorMessage: {
24539
- type: String,
24540
- optional: true
24541
- }
24542
- };
24587
+ props = (0, _odoo_owl.props)({
24588
+ ...genericInputPropsDefinition,
24589
+ value: types$6.string(),
24590
+ "errorMessage?": types$6.string()
24591
+ });
24543
24592
  get inputClass() {
24544
24593
  return [
24545
24594
  this.props.class,
@@ -24554,25 +24603,13 @@ set(value) {
24554
24603
  //#region src/components/action_button/action_button.ts
24555
24604
  var ActionButton = class extends Component {
24556
24605
  static template = "o-spreadsheet-ActionButton";
24557
- static props = {
24558
- action: Object,
24559
- hasTriangleDownIcon: {
24560
- type: Boolean,
24561
- optional: true
24562
- },
24563
- selectedColor: {
24564
- type: String,
24565
- optional: true
24566
- },
24567
- class: {
24568
- type: String,
24569
- optional: true
24570
- },
24571
- onClick: {
24572
- type: Function,
24573
- optional: true
24574
- }
24575
- };
24606
+ props = (0, _odoo_owl.props)({
24607
+ action: types$6.ActionSpec(),
24608
+ "hasTriangleDownIcon?": types$6.boolean(),
24609
+ "selectedColor?": types$6.string(),
24610
+ "class?": types$6.string(),
24611
+ "onClick?": types$6.function()
24612
+ });
24576
24613
  actionButton = createAction(this.props.action);
24577
24614
  setup() {
24578
24615
  (0, _odoo_owl.onWillUpdateProps)((nextProps) => {
@@ -24624,24 +24661,14 @@ set(value) {
24624
24661
  const INNER_GRADIENT_HEIGHT = CONTENT_WIDTH - 30 - 2 * ITEM_BORDER_WIDTH;
24625
24662
  var ColorPicker = class extends Component {
24626
24663
  static template = "o-spreadsheet-ColorPicker";
24627
- static props = {
24628
- onColorPicked: Function,
24629
- currentColor: {
24630
- type: String,
24631
- optional: true
24632
- },
24633
- maxHeight: {
24634
- type: Number,
24635
- optional: true
24636
- },
24637
- anchorRect: Object,
24638
- disableNoColor: {
24639
- type: Boolean,
24640
- optional: true
24641
- }
24642
- };
24643
- static defaultProps = { currentColor: "" };
24644
24664
  static components = { Popover };
24665
+ props = (0, _odoo_owl.props)({
24666
+ onColorPicked: types$6.function([types$6.string()]),
24667
+ "currentColor?": types$6.string(),
24668
+ "maxHeight?": types$6.Pixel(),
24669
+ anchorRect: types$6.Rect(),
24670
+ "disableNoColor?": types$6.boolean()
24671
+ }, { currentColor: "" });
24645
24672
  COLORS = COLOR_PICKER_DEFAULTS;
24646
24673
  state = (0, _odoo_owl.proxy)({
24647
24674
  showGradient: false,
@@ -24785,33 +24812,18 @@ set(value) {
24785
24812
  //#region src/components/color_picker/color_picker_widget.ts
24786
24813
  var ColorPickerWidget = class extends Component {
24787
24814
  static template = "o-spreadsheet-ColorPickerWidget";
24788
- static props = {
24789
- currentColor: {
24790
- type: String,
24791
- optional: true
24792
- },
24793
- toggleColorPicker: Function,
24794
- showColorPicker: Boolean,
24795
- onColorPicked: Function,
24796
- icon: String,
24797
- title: {
24798
- type: String,
24799
- optional: true
24800
- },
24801
- disabled: {
24802
- type: Boolean,
24803
- optional: true
24804
- },
24805
- dropdownMaxHeight: {
24806
- type: Number,
24807
- optional: true
24808
- },
24809
- class: {
24810
- type: String,
24811
- optional: true
24812
- }
24813
- };
24814
24815
  static components = { ColorPicker };
24816
+ props = (0, _odoo_owl.props)({
24817
+ "currentColor?": types$6.string(),
24818
+ toggleColorPicker: types$6.function([]),
24819
+ showColorPicker: types$6.boolean(),
24820
+ onColorPicked: types$6.function([types$6.string()]),
24821
+ icon: types$6.string(),
24822
+ "title?": types$6.string(),
24823
+ "disabled?": types$6.boolean(),
24824
+ "dropdownMaxHeight?": types$6.Pixel(),
24825
+ "class?": types$6.string()
24826
+ });
24815
24827
  colorPickerButtonRef = (0, _odoo_owl.signal)(null);
24816
24828
  get iconStyle() {
24817
24829
  return this.props.currentColor ? `border-color: ${this.props.currentColor}` : "border-bottom-style: hidden";
@@ -24825,29 +24837,19 @@ set(value) {
24825
24837
  //#region src/components/number_editor/number_editor.ts
24826
24838
  var NumberEditor = class extends Component {
24827
24839
  static template = "o-spreadsheet-NumberEditor";
24828
- static props = {
24829
- currentValue: Number,
24830
- onValueChange: Function,
24831
- onToggle: {
24832
- type: Function,
24833
- optional: true
24834
- },
24835
- onFocusInput: {
24836
- type: Function,
24837
- optional: true
24838
- },
24839
- class: String,
24840
- valueIcon: {
24841
- type: String,
24842
- optional: true
24843
- },
24844
- min: Number,
24845
- max: Number,
24846
- title: String,
24847
- valueList: Array
24848
- };
24849
- static defaultProps = { onFocusInput: () => {} };
24850
24840
  static components = { Popover };
24841
+ props = (0, _odoo_owl.props)({
24842
+ currentValue: types$6.number(),
24843
+ onValueChange: types$6.function([types$6.number()]),
24844
+ "onToggle?": types$6.function([]),
24845
+ "onFocusInput?": types$6.function([]),
24846
+ class: types$6.string(),
24847
+ "valueIcon?": types$6.string(),
24848
+ min: types$6.number(),
24849
+ max: types$6.number(),
24850
+ title: types$6.string(),
24851
+ valueList: types$6.array(types$6.number())
24852
+ }, { onFocusInput: () => {} });
24851
24853
  dropdown = (0, _odoo_owl.proxy)({ isOpen: false });
24852
24854
  inputRef = (0, _odoo_owl.signal)(null);
24853
24855
  rootEditorRef = (0, _odoo_owl.signal)(null);
@@ -24926,20 +24928,13 @@ set(value) {
24926
24928
  var FontSizeEditor = class extends Component {
24927
24929
  static template = "o-spreadsheet-FontSizeEditor";
24928
24930
  static components = { NumberEditor };
24929
- static props = {
24930
- currentFontSize: Number,
24931
- onFontSizeChanged: Function,
24932
- onToggle: {
24933
- type: Function,
24934
- optional: true
24935
- },
24936
- onFocusInput: {
24937
- type: Function,
24938
- optional: true
24939
- },
24940
- class: String
24941
- };
24942
- static defaultProps = { onFocusInput: () => {} };
24931
+ props = (0, _odoo_owl.props)({
24932
+ currentFontSize: types$6.number(),
24933
+ onFontSizeChanged: types$6.function([types$6.number()]),
24934
+ "onToggle?": types$6.function([]),
24935
+ "onFocusInput?": types$6.function([]),
24936
+ class: types$6.string()
24937
+ }, { onFocusInput: () => {} });
24943
24938
  fontSizes = FONT_SIZES;
24944
24939
  };
24945
24940
 
@@ -24952,33 +24947,15 @@ set(value) {
24952
24947
  ActionButton,
24953
24948
  FontSizeEditor
24954
24949
  };
24955
- static props = {
24956
- style: Object,
24957
- updateStyle: {
24958
- type: Function,
24959
- optional: true
24960
- },
24961
- defaultStyle: {
24962
- type: Object,
24963
- optional: true
24964
- },
24965
- hasVerticalAlign: {
24966
- type: Boolean,
24967
- optional: true
24968
- },
24969
- hasHorizontalAlign: {
24970
- type: Boolean,
24971
- optional: true
24972
- },
24973
- hasBackgroundColor: {
24974
- type: Boolean,
24975
- optional: true
24976
- },
24977
- class: {
24978
- type: String,
24979
- optional: true
24980
- }
24981
- };
24950
+ props = (0, _odoo_owl.props)({
24951
+ style: types$6.ChartStyle(),
24952
+ updateStyle: types$6.function([types$6.ChartStyle()]),
24953
+ "defaultStyle?": types$6.object({}),
24954
+ "hasVerticalAlign?": types$6.boolean(),
24955
+ "hasHorizontalAlign?": types$6.boolean(),
24956
+ "hasBackgroundColor?": types$6.boolean(),
24957
+ "class?": types$6.string()
24958
+ });
24982
24959
  openedEl = null;
24983
24960
  setup() {
24984
24961
  useExternalListener(window, "click", this.onExternalClick);
@@ -25160,7 +25137,7 @@ set(value) {
25160
25137
  var CogWheelMenu = class extends Component {
25161
25138
  static template = "o-spreadsheet-CogWheelMenu";
25162
25139
  static components = { MenuPopover };
25163
- static props = { items: Array };
25140
+ props = (0, _odoo_owl.props)({ items: types$6.array(types$6.ActionSpec()) });
25164
25141
  buttonRef = (0, _odoo_owl.signal)(null);
25165
25142
  menuState = (0, _odoo_owl.proxy)({
25166
25143
  isOpen: false,
@@ -25180,33 +25157,27 @@ set(value) {
25180
25157
  //#region src/components/side_panel/components/section/section.ts
25181
25158
  var Section = class extends Component {
25182
25159
  static template = "o_spreadsheet.Section";
25183
- static props = {
25184
- class: {
25185
- type: String,
25186
- optional: true
25187
- },
25188
- title: {
25189
- type: String,
25190
- optional: true
25191
- },
25192
- slots: Object
25193
- };
25160
+ props = (0, _odoo_owl.props)({
25161
+ "class?": types$6.string(),
25162
+ "title?": types$6.string(),
25163
+ slots: types$6.object()
25164
+ });
25194
25165
  };
25195
25166
 
25196
25167
  //#endregion
25197
25168
  //#region src/components/side_panel/carousel_panel/carousel_panel.ts
25198
25169
  var CarouselPanel = class extends Component {
25199
25170
  static template = "o-spreadsheet-CarouselPanel";
25200
- static props = {
25201
- onCloseSidePanel: Function,
25202
- figureId: String
25203
- };
25204
25171
  static components = {
25205
25172
  Section,
25206
25173
  TextInput,
25207
25174
  TextStyler,
25208
25175
  CogWheelMenu
25209
25176
  };
25177
+ props = (0, _odoo_owl.props)({
25178
+ onCloseSidePanel: types$6.function([]),
25179
+ figureId: types$6.UID()
25180
+ });
25210
25181
  DEFAULT_CAROUSEL_TITLE_STYLE = DEFAULT_CAROUSEL_TITLE_STYLE;
25211
25182
  dragAndDrop = useDragAndDropListItems();
25212
25183
  previewListRef = (0, _odoo_owl.signal)(null);
@@ -25413,34 +25384,15 @@ set(value) {
25413
25384
  //#region src/components/side_panel/components/checkbox/checkbox.ts
25414
25385
  var Checkbox = class extends Component {
25415
25386
  static template = "o-spreadsheet.Checkbox";
25416
- static props = {
25417
- label: {
25418
- type: String,
25419
- optional: true
25420
- },
25421
- value: {
25422
- type: Boolean,
25423
- optional: true
25424
- },
25425
- className: {
25426
- type: String,
25427
- optional: true
25428
- },
25429
- name: {
25430
- type: String,
25431
- optional: true
25432
- },
25433
- title: {
25434
- type: String,
25435
- optional: true
25436
- },
25437
- disabled: {
25438
- type: Boolean,
25439
- optional: true
25440
- },
25441
- onChange: Function
25442
- };
25443
- static defaultProps = { value: false };
25387
+ props = (0, _odoo_owl.props)({
25388
+ "label?": types$6.string(),
25389
+ "value?": types$6.boolean(),
25390
+ "className?": types$6.string(),
25391
+ "name?": types$6.string(),
25392
+ "title?": types$6.string(),
25393
+ "disabled?": types$6.boolean(),
25394
+ onChange: types$6.function([types$6.boolean()])
25395
+ }, { value: false });
25444
25396
  onChange(ev) {
25445
25397
  const value = ev.target.checked;
25446
25398
  this.props.onChange(value);
@@ -25449,11 +25401,11 @@ set(value) {
25449
25401
 
25450
25402
  //#endregion
25451
25403
  //#region src/components/side_panel/chart/common.ts
25452
- const ChartSidePanelPropsObject = {
25453
- chartId: String,
25454
- definition: Object,
25455
- canUpdateChart: Function,
25456
- updateChart: Function
25404
+ const chartSidePanelPropsDefinition = {
25405
+ chartId: types$6.UID(),
25406
+ definition: types$6.object({}),
25407
+ canUpdateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
25408
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult())
25457
25409
  };
25458
25410
 
25459
25411
  //#endregion
@@ -25941,63 +25893,25 @@ set(value) {
25941
25893
  */
25942
25894
  var SelectionInput = class extends Component {
25943
25895
  static template = "o-spreadsheet-SelectionInput";
25944
- static props = {
25945
- ranges: Array,
25946
- hasSingleRange: {
25947
- type: Boolean,
25948
- optional: true
25949
- },
25950
- required: {
25951
- type: Boolean,
25952
- optional: true
25953
- },
25954
- autofocus: {
25955
- type: Boolean,
25956
- optional: true
25957
- },
25958
- isInvalid: {
25959
- type: Boolean,
25960
- optional: true
25961
- },
25962
- class: {
25963
- type: String,
25964
- optional: true
25965
- },
25966
- onSelectionChanged: {
25967
- type: Function,
25968
- optional: true
25969
- },
25970
- onSelectionConfirmed: {
25971
- type: Function,
25972
- optional: true
25973
- },
25974
- onSelectionReordered: {
25975
- type: Function,
25976
- optional: true
25977
- },
25978
- onSelectionRemoved: {
25979
- type: Function,
25980
- optional: true
25981
- },
25982
- onInputFocused: {
25983
- type: Function,
25984
- optional: true
25985
- },
25986
- colors: {
25987
- type: Array,
25988
- optional: true,
25989
- default: []
25990
- },
25991
- disabledRanges: {
25992
- type: Array,
25993
- optional: true,
25994
- default: []
25995
- },
25996
- disabledRangeTitle: {
25997
- type: String,
25998
- optional: true
25999
- }
26000
- };
25896
+ props = (0, _odoo_owl.props)({
25897
+ ranges: types$6.array(types$6.string()),
25898
+ "hasSingleRange?": types$6.boolean(),
25899
+ "required?": types$6.boolean(),
25900
+ "autofocus?": types$6.boolean(),
25901
+ "isInvalid?": types$6.boolean(),
25902
+ "class?": types$6.string(),
25903
+ "onSelectionChanged?": types$6.function([types$6.array(types$6.string())]),
25904
+ "onSelectionConfirmed?": types$6.function([]),
25905
+ "onSelectionReordered?": types$6.function([types$6.array(types$6.number())]),
25906
+ "onSelectionRemoved?": types$6.function([types$6.number()]),
25907
+ "onInputFocused?": types$6.function([]),
25908
+ "colors?": types$6.ArrayOf(),
25909
+ "disabledRanges?": types$6.array(types$6.boolean()),
25910
+ "disabledRangeTitle?": types$6.string()
25911
+ }, {
25912
+ colors: [],
25913
+ disabledRanges: []
25914
+ });
26001
25915
  state = (0, _odoo_owl.proxy)({ isMissing: false });
26002
25916
  dragAndDrop = useDragAndDropListItems();
26003
25917
  focusedInputRef = (0, _odoo_owl.signal)(null);
@@ -26161,47 +26075,20 @@ set(value) {
26161
26075
  SelectionInput,
26162
26076
  Section
26163
26077
  };
26164
- static props = {
26165
- ranges: Array,
26166
- dataSetStyles: {
26167
- type: Object,
26168
- optional: true
26169
- },
26170
- hasSingleRange: {
26171
- type: Boolean,
26172
- optional: true
26173
- },
26174
- onSelectionChanged: Function,
26175
- onSelectionReordered: {
26176
- type: Function,
26177
- optional: true
26178
- },
26179
- onSelectionRemoved: {
26180
- type: Function,
26181
- optional: true
26182
- },
26183
- onSelectionConfirmed: Function,
26184
- title: {
26185
- type: String,
26186
- optional: true
26187
- },
26188
- maxNumberOfUsedRanges: {
26189
- type: Number,
26190
- optional: true
26191
- },
26192
- datasetOrientation: {
26193
- type: String,
26194
- optional: true
26195
- },
26196
- canChangeDatasetOrientation: {
26197
- type: Boolean,
26198
- optional: true
26199
- },
26200
- onFlipAxis: {
26201
- type: Function,
26202
- optional: true
26203
- }
26204
- };
26078
+ props = (0, _odoo_owl.props)({
26079
+ ranges: types$6.ArrayOf(),
26080
+ "dataSetStyles?": types$6.DataSetStyle(),
26081
+ "hasSingleRange?": types$6.boolean(),
26082
+ onSelectionChanged: types$6.function([types$6.array(types$6.string())]),
26083
+ "onSelectionReordered?": types$6.function([types$6.array(types$6.number())]),
26084
+ "onSelectionRemoved?": types$6.function([types$6.number()]),
26085
+ onSelectionConfirmed: types$6.function([]),
26086
+ "maxNumberOfUsedRanges?": types$6.number(),
26087
+ "title?": types$6.string(),
26088
+ "datasetOrientation?": types$6.or([types$6.literal("rows"), types$6.literal("columns")]),
26089
+ "canChangeDatasetOrientation?": types$6.boolean(),
26090
+ "onFlipAxis?": types$6.function([types$6.string()])
26091
+ });
26205
26092
  get ranges() {
26206
26093
  return this.props.ranges.map((r) => r.dataRange);
26207
26094
  }
@@ -26229,28 +26116,18 @@ set(value) {
26229
26116
  Checkbox,
26230
26117
  Section
26231
26118
  };
26232
- static props = {
26233
- title: {
26234
- type: String,
26235
- optional: true
26236
- },
26237
- range: String,
26238
- class: {
26239
- type: String,
26240
- optional: true
26241
- },
26242
- isInvalid: Boolean,
26243
- onSelectionChanged: Function,
26244
- onSelectionConfirmed: Function,
26245
- options: {
26246
- type: Array,
26247
- optional: true
26248
- }
26249
- };
26250
- static defaultProps = {
26119
+ props = (0, _odoo_owl.props)({
26120
+ "title?": types$6.string(),
26121
+ range: types$6.string(),
26122
+ "class?": types$6.string(),
26123
+ isInvalid: types$6.boolean(),
26124
+ onSelectionChanged: types$6.function([types$6.string()]),
26125
+ onSelectionConfirmed: types$6.function([]),
26126
+ "options?": types$6.ArrayOf()
26127
+ }, {
26251
26128
  title: _t("Categories / Labels"),
26252
26129
  options: []
26253
- };
26130
+ });
26254
26131
  get sectionClass() {
26255
26132
  return "o-data-labels" + (this.props.class ? ` ${this.props.class}` : "");
26256
26133
  }
@@ -26264,28 +26141,16 @@ set(value) {
26264
26141
  ChartDataSeries,
26265
26142
  ChartLabelRange
26266
26143
  };
26267
- static props = {
26268
- chartId: String,
26269
- definition: Object,
26270
- updateChart: Function,
26271
- canUpdateChart: Function,
26272
- onErrorMessagesChanged: {
26273
- type: Function,
26274
- optional: true
26275
- },
26276
- dataSeriesTitle: {
26277
- type: String,
26278
- optional: true
26279
- },
26280
- labelRangeTitle: {
26281
- type: String,
26282
- optional: true
26283
- },
26284
- getLabelRangeOptions: {
26285
- type: Function,
26286
- optional: true
26287
- }
26288
- };
26144
+ props = (0, _odoo_owl.props)({
26145
+ chartId: types$6.UID(),
26146
+ definition: types$6.ChartDefinitionWithDataSource(),
26147
+ updateChart: types$6.function([]),
26148
+ canUpdateChart: types$6.function([]),
26149
+ "onErrorMessagesChanged?": types$6.function([types$6.array(types$6.string())]),
26150
+ "dataSeriesTitle?": types$6.string(),
26151
+ "labelRangeTitle?": types$6.string(),
26152
+ "getLabelRangeOptions?": types$6.function([])
26153
+ });
26289
26154
  get DataSourceComponent() {
26290
26155
  const dataSourceType = this.props.definition.dataSource.type;
26291
26156
  return chartDataSourceSidePanelComponentRegistry.get(dataSourceType);
@@ -26296,14 +26161,15 @@ set(value) {
26296
26161
  //#region src/components/validation_messages/validation_messages.ts
26297
26162
  var ValidationMessages = class extends Component {
26298
26163
  static template = "o-spreadsheet-ValidationMessages";
26299
- static props = {
26300
- messages: Array,
26301
- msgType: String,
26302
- singleBox: {
26303
- type: Boolean,
26304
- optional: true
26305
- }
26306
- };
26164
+ props = (0, _odoo_owl.props)({
26165
+ messages: types$6.array(types$6.string()),
26166
+ msgType: types$6.or([
26167
+ types$6.literal("warning"),
26168
+ types$6.literal("error"),
26169
+ types$6.literal("info")
26170
+ ]),
26171
+ "singleBox?": types$6.boolean()
26172
+ });
26307
26173
  get divClasses() {
26308
26174
  if (this.props.msgType === "warning") return "o-validation-warning";
26309
26175
  if (this.props.msgType === "info") return "o-validation-info";
@@ -26322,10 +26188,7 @@ set(value) {
26322
26188
  Section,
26323
26189
  ValidationMessages
26324
26190
  };
26325
- static props = { messages: {
26326
- type: Array,
26327
- element: String
26328
- } };
26191
+ props = (0, _odoo_owl.props)({ messages: types$6.array(types$6.string()) });
26329
26192
  };
26330
26193
 
26331
26194
  //#endregion
@@ -26338,7 +26201,7 @@ set(value) {
26338
26201
  Checkbox,
26339
26202
  ChartErrorSection
26340
26203
  };
26341
- static props = ChartSidePanelPropsObject;
26204
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
26342
26205
  chartTerms = ChartTerms;
26343
26206
  state = (0, _odoo_owl.proxy)({ errorMessages: [] });
26344
26207
  onErrorMessagesChanged(errorMessages) {
@@ -26385,10 +26248,7 @@ set(value) {
26385
26248
  //#region src/components/side_panel/components/collapse/collapse.ts
26386
26249
  var Collapse = class extends Component {
26387
26250
  static template = "o-spreadsheet-Collapse";
26388
- static props = {
26389
- isCollapsed: Boolean,
26390
- slots: Object
26391
- };
26251
+ props = (0, _odoo_owl.props)({ isCollapsed: types$6.boolean() });
26392
26252
  contentRef = (0, _odoo_owl.signal)(null);
26393
26253
  setup() {
26394
26254
  (0, _odoo_owl.onMounted)(() => {
@@ -26420,23 +26280,13 @@ set(value) {
26420
26280
  //#region src/components/side_panel/components/collapsible/side_panel_collapsible.ts
26421
26281
  var SidePanelCollapsible = class extends Component {
26422
26282
  static template = "o-spreadsheet-SidePanelCollapsible";
26423
- static props = {
26424
- slots: Object,
26425
- title: {
26426
- type: String,
26427
- optional: true
26428
- },
26429
- isInitiallyCollapsed: {
26430
- type: Boolean,
26431
- optional: true
26432
- },
26433
- class: {
26434
- type: String,
26435
- optional: true
26436
- }
26437
- };
26438
26283
  static components = { Collapse };
26439
- state = (0, _odoo_owl.proxy)({ isCollapsed: this.props.isInitiallyCollapsed });
26284
+ props = (0, _odoo_owl.props)({
26285
+ "title?": types$6.string(),
26286
+ "isInitiallyCollapsed?": types$6.boolean(),
26287
+ "class?": types$6.string()
26288
+ });
26289
+ state = (0, _odoo_owl.proxy)({ isCollapsed: !!this.props.isInitiallyCollapsed });
26440
26290
  toggle() {
26441
26291
  this.state.isCollapsed = !this.state.isCollapsed;
26442
26292
  }
@@ -26447,17 +26297,11 @@ set(value) {
26447
26297
  var NumberInput = class extends GenericInput {
26448
26298
  static template = "o-spreadsheet-NumberInput";
26449
26299
  static components = {};
26450
- static props = {
26451
- ...GenericInput.props,
26452
- min: {
26453
- type: Number,
26454
- optional: true
26455
- },
26456
- max: {
26457
- type: Number,
26458
- optional: true
26459
- }
26460
- };
26300
+ props = (0, _odoo_owl.props)({
26301
+ ...genericInputPropsDefinition,
26302
+ "min?": types$6.number(),
26303
+ "max?": types$6.number()
26304
+ });
26461
26305
  debouncedOnChange = debounce(this.props.onChange.bind(this), 100, true);
26462
26306
  save() {
26463
26307
  const currentValue = (this.genericInputRef()?.value || "").trim();
@@ -26478,11 +26322,11 @@ set(value) {
26478
26322
  //#region src/components/side_panel/components/badge_selection/badge_selection.ts
26479
26323
  var BadgeSelection = class extends Component {
26480
26324
  static template = "o-spreadsheet.BadgeSelection";
26481
- static props = {
26482
- choices: Array,
26483
- onChange: Function,
26484
- selectedValue: String
26485
- };
26325
+ props = (0, _odoo_owl.props)({
26326
+ choices: types$6.ArrayOf(),
26327
+ onChange: types$6.function([types$6.string()]),
26328
+ selectedValue: types$6.string()
26329
+ });
26486
26330
  };
26487
26331
 
26488
26332
  //#endregion
@@ -26494,28 +26338,18 @@ set(value) {
26494
26338
  TextStyler,
26495
26339
  TextInput
26496
26340
  };
26497
- static props = {
26498
- title: {
26499
- type: String,
26500
- optional: true
26501
- },
26502
- placeholder: {
26503
- type: String,
26504
- optional: true
26505
- },
26506
- updateTitle: Function,
26507
- name: { type: String },
26508
- style: Object,
26509
- defaultStyle: {
26510
- type: Object,
26511
- optional: true
26512
- },
26513
- updateStyle: Function
26514
- };
26515
- static defaultProps = {
26341
+ props = (0, _odoo_owl.props)({
26342
+ "title?": types$6.string(),
26343
+ "placeholder?": types$6.string(),
26344
+ updateTitle: types$6.function([types$6.string()]),
26345
+ "name?": types$6.string(),
26346
+ style: types$6.TitleDesign(),
26347
+ "defaultStyle?": types$6.object({}),
26348
+ updateStyle: types$6.function([types$6.object({})])
26349
+ }, {
26516
26350
  title: "",
26517
26351
  placeholder: ""
26518
- };
26352
+ });
26519
26353
  updateTitle(value) {
26520
26354
  this.props.updateTitle(value);
26521
26355
  }
@@ -26533,12 +26367,12 @@ set(value) {
26533
26367
  NumberInput,
26534
26368
  DateInput
26535
26369
  };
26536
- static props = {
26537
- chartId: String,
26538
- definition: Object,
26539
- updateChart: Function,
26540
- axesList: Array
26541
- };
26370
+ props = (0, _odoo_owl.props)({
26371
+ chartId: types$6.UID(),
26372
+ definition: types$6.ChartWithAxisDefinition(),
26373
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
26374
+ axesList: types$6.ArrayOf()
26375
+ });
26542
26376
  state = (0, _odoo_owl.proxy)({ currentAxis: "x" });
26543
26377
  defaultFontSize = 12;
26544
26378
  get axisTitleStyle() {
@@ -26708,17 +26542,13 @@ set(value) {
26708
26542
  //#region src/components/side_panel/components/radio_selection/radio_selection.ts
26709
26543
  var RadioSelection = class extends Component {
26710
26544
  static template = "o-spreadsheet.RadioSelection";
26711
- static props = {
26712
- choices: Array,
26713
- onChange: Function,
26714
- selectedValue: { optional: false },
26715
- name: String,
26716
- direction: {
26717
- type: String,
26718
- optional: true
26719
- }
26720
- };
26721
- static defaultProps = { direction: "horizontal" };
26545
+ props = (0, _odoo_owl.props)({
26546
+ choices: types$6.ArrayOf(),
26547
+ onChange: types$6.function([types$6.any()]),
26548
+ selectedValue: types$6.string(),
26549
+ name: types$6.string(),
26550
+ "direction?": types$6.or([types$6.literal("horizontal"), types$6.literal("vertical")])
26551
+ }, { direction: "horizontal" });
26722
26552
  };
26723
26553
 
26724
26554
  //#endregion
@@ -26729,21 +26559,12 @@ set(value) {
26729
26559
  Section,
26730
26560
  ColorPicker
26731
26561
  };
26732
- static props = {
26733
- currentColor: {
26734
- type: String,
26735
- optional: true
26736
- },
26737
- title: {
26738
- type: String,
26739
- optional: true
26740
- },
26741
- onColorPicked: Function,
26742
- disableNoColor: {
26743
- type: Boolean,
26744
- optional: true
26745
- }
26746
- };
26562
+ props = (0, _odoo_owl.props)({
26563
+ "currentColor?": types$6.string(),
26564
+ "title?": types$6.string(),
26565
+ onColorPicked: types$6.function([types$6.string()]),
26566
+ "disableNoColor?": types$6.boolean()
26567
+ });
26747
26568
  colorPickerButtonRef = (0, _odoo_owl.signal)(null);
26748
26569
  state;
26749
26570
  setup() {
@@ -26779,18 +26600,13 @@ set(value) {
26779
26600
  SidePanelCollapsible,
26780
26601
  RadioSelection
26781
26602
  };
26782
- static props = {
26783
- ...ChartSidePanelPropsObject,
26784
- defaultChartTitleFontSize: {
26785
- type: Number,
26786
- optional: true
26787
- },
26788
- slots: {
26789
- type: Object,
26790
- optional: true
26791
- }
26792
- };
26793
- static defaultProps = { defaultChartTitleFontSize: 16 };
26603
+ props = (0, _odoo_owl.props)({
26604
+ chartId: types$6.UID(),
26605
+ definition: types$6.ChartDefinition(),
26606
+ canUpdateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
26607
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
26608
+ "defaultChartTitleFontSize?": types$6.number()
26609
+ }, { defaultChartTitleFontSize: 16 });
26794
26610
  state;
26795
26611
  setup() {
26796
26612
  this.state = (0, _odoo_owl.proxy)({ activeTool: "" });
@@ -26827,7 +26643,7 @@ set(value) {
26827
26643
  var ChartHumanizeNumbers = class extends Component {
26828
26644
  static template = "o-spreadsheet-ChartHumanizeNumbers";
26829
26645
  static components = { Checkbox };
26830
- static props = ChartSidePanelPropsObject;
26646
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
26831
26647
  get title() {
26832
26648
  const locale = this.env.model.getters.getLocale();
26833
26649
  return _t("E.g. 1234567 -> %(value)s", { value: formatValue(1234567, {
@@ -26845,14 +26661,13 @@ set(value) {
26845
26661
  Section,
26846
26662
  Select
26847
26663
  };
26848
- static props = {
26849
- ...ChartSidePanelPropsObject,
26850
- isDisabled: {
26851
- type: Boolean,
26852
- optional: true
26853
- }
26854
- };
26855
- static defaultProps = { isDisabled: false };
26664
+ props = (0, _odoo_owl.props)({
26665
+ chartId: types$6.string(),
26666
+ definition: types$6.ChartDefinitionWithDataSource(),
26667
+ canUpdateChart: types$6.function(),
26668
+ updateChart: types$6.function(),
26669
+ "isDisabled?": types$6.boolean()
26670
+ }, { isDisabled: false });
26856
26671
  updateLegendPosition(value) {
26857
26672
  this.props.updateChart(this.props.chartId, { legendPosition: value });
26858
26673
  }
@@ -26892,13 +26707,12 @@ set(value) {
26892
26707
  RoundColorPicker,
26893
26708
  Select
26894
26709
  };
26895
- static props = {
26896
- ...ChartSidePanelPropsObject,
26897
- slots: {
26898
- type: Object,
26899
- optional: true
26900
- }
26901
- };
26710
+ props = (0, _odoo_owl.props)({
26711
+ chartId: types$6.UID(),
26712
+ definition: types$6.ChartDefinitionWithDataSource(),
26713
+ canUpdateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
26714
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult())
26715
+ });
26902
26716
  state = (0, _odoo_owl.proxy)({ dataSetId: this.getDataSeries()[0]?.dataSetId || "" });
26903
26717
  getRuntime() {
26904
26718
  const runtime = this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -26958,13 +26772,12 @@ set(value) {
26958
26772
  NumberInput,
26959
26773
  Select
26960
26774
  };
26961
- static props = {
26962
- ...ChartSidePanelPropsObject,
26963
- slots: {
26964
- type: Object,
26965
- optional: true
26966
- }
26967
- };
26775
+ props = (0, _odoo_owl.props)({
26776
+ chartId: types$6.UID(),
26777
+ definition: types$6.ChartDefinitionWithDataSource(),
26778
+ canUpdateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
26779
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult())
26780
+ });
26968
26781
  axisChoices = CHART_AXIS_CHOICES;
26969
26782
  updateDataSeriesAxis(dataSetId, axis) {
26970
26783
  const dataSetStyles = { ...this.props.definition.dataSetStyles };
@@ -27099,13 +26912,13 @@ set(value) {
27099
26912
  var ChartShowValues = class extends Component {
27100
26913
  static template = "o-spreadsheet-ChartShowValues";
27101
26914
  static components = { Checkbox };
27102
- static props = {
27103
- ...ChartSidePanelPropsObject,
27104
- defaultValue: {
27105
- type: Boolean,
27106
- optional: true
27107
- }
27108
- };
26915
+ props = (0, _odoo_owl.props)({
26916
+ chartId: types$6.UID(),
26917
+ definition: types$6.ChartDefinitionWithDataSource(),
26918
+ canUpdateChart: types$6.function([]),
26919
+ updateChart: types$6.function([]),
26920
+ "defaultValue?": types$6.boolean()
26921
+ });
27109
26922
  };
27110
26923
 
27111
26924
  //#endregion
@@ -27122,7 +26935,7 @@ set(value) {
27122
26935
  ChartShowValues,
27123
26936
  ChartHumanizeNumbers
27124
26937
  };
27125
- static props = ChartSidePanelPropsObject;
26938
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
27126
26939
  get axesList() {
27127
26940
  const { useLeftAxis, useRightAxis } = getDefinedAxis(this.props.definition);
27128
26941
  const axes = [{
@@ -27172,7 +26985,7 @@ set(value) {
27172
26985
  ChartLabelRange,
27173
26986
  ChartErrorSection
27174
26987
  };
27175
- static props = ChartSidePanelPropsObject;
26988
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
27176
26989
  state = (0, _odoo_owl.proxy)({
27177
26990
  datasetDispatchResult: void 0,
27178
26991
  labelsDispatchResult: void 0,
@@ -27308,7 +27121,7 @@ set(value) {
27308
27121
  RoundColorPicker,
27309
27122
  Checkbox
27310
27123
  };
27311
- static props = ChartSidePanelPropsObject;
27124
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
27312
27125
  get axesList() {
27313
27126
  return [{
27314
27127
  id: "x",
@@ -28301,10 +28114,7 @@ set(value) {
28301
28114
  toggleDataVisibility: toggleLineBarDataVisibility
28302
28115
  }),
28303
28116
  ...getLegendDisplayOptions(definition),
28304
- ...getCustomLegendLabels(chartFontColor(definition.background), {
28305
- pointStyle: "rect",
28306
- lineWidth: 3
28307
- })
28117
+ ...getCustomLegendLabels(chartFontColor(definition.background), { lineWidth: 3 })
28308
28118
  };
28309
28119
  }
28310
28120
  function getPyramidChartLegend(definition, args) {
@@ -28675,7 +28485,7 @@ set(value) {
28675
28485
  showLabels: definition.showLabels ?? SunburstChartDefaults.showLabels,
28676
28486
  showValues: definition.showValues ?? SunburstChartDefaults.showValues,
28677
28487
  style: {
28678
- fontSize: definition.valuesDesign?.fontSize ?? SunburstChartDefaults.valuesDesign.fontSize,
28488
+ fontSize: fontSizeInPixels(definition.valuesDesign?.fontSize ?? SunburstChartDefaults.valuesDesign.fontSize),
28679
28489
  align: definition.valuesDesign?.align ?? SunburstChartDefaults.valuesDesign.align,
28680
28490
  bold: definition.valuesDesign?.bold ?? SunburstChartDefaults.valuesDesign.bold,
28681
28491
  italic: definition.valuesDesign?.italic ?? SunburstChartDefaults.valuesDesign.italic,
@@ -28730,7 +28540,7 @@ set(value) {
28730
28540
  color: title?.color ?? fontColor,
28731
28541
  align: title.align === "center" ? "center" : title.align === "right" ? "end" : "start",
28732
28542
  font: {
28733
- size: title.fontSize ?? 16,
28543
+ size: fontSizeInPixels(title.fontSize ?? 16),
28734
28544
  weight: title.bold ? "bold" : "normal",
28735
28545
  style: title.italic ? "italic" : "normal"
28736
28546
  },
@@ -29112,6 +28922,7 @@ set(value) {
29112
28922
  "stacked",
29113
28923
  "aggregated",
29114
28924
  "showValues",
28925
+ "showTotalLine",
29115
28926
  "zoomable"
29116
28927
  ],
29117
28928
  fromStrDefinition: (definition) => ({
@@ -29137,6 +28948,7 @@ set(value) {
29137
28948
  type: "bar",
29138
28949
  axesDesign: context.axesDesign,
29139
28950
  showValues: context.showValues,
28951
+ showTotalLine: context.showTotalLine,
29140
28952
  horizontal: context.horizontal,
29141
28953
  zoomable: context.zoomable,
29142
28954
  humanize: context.humanize
@@ -29738,29 +29550,17 @@ set(value) {
29738
29550
  ChartDataSeries,
29739
29551
  ChartLabelRange
29740
29552
  };
29741
- static props = {
29742
- chartId: String,
29743
- definition: Object,
29744
- dataSource: Object,
29745
- updateChart: Function,
29746
- canUpdateChart: Function,
29747
- onErrorMessagesChanged: {
29748
- type: Function,
29749
- optional: true
29750
- },
29751
- dataSeriesTitle: {
29752
- type: String,
29753
- optional: true
29754
- },
29755
- labelRangeTitle: {
29756
- type: String,
29757
- optional: true
29758
- },
29759
- getLabelRangeOptions: {
29760
- type: Function,
29761
- optional: true
29762
- }
29763
- };
29553
+ props = (0, _odoo_owl.props)({
29554
+ chartId: types$6.UID(),
29555
+ definition: types$6.ChartDefinitionWithDataSource(),
29556
+ dataSource: types$6.ChartRangeDataSource(),
29557
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
29558
+ canUpdateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult()),
29559
+ "onErrorMessagesChanged?": types$6.function([types$6.array(types$6.string())]),
29560
+ "dataSeriesTitle?": types$6.string(),
29561
+ "labelRangeTitle?": types$6.string(),
29562
+ "getLabelRangeOptions?": types$6.function([])
29563
+ });
29764
29564
  state = (0, _odoo_owl.proxy)({
29765
29565
  datasetDispatchResult: void 0,
29766
29566
  labelsDispatchResult: void 0
@@ -30610,10 +30410,10 @@ set(value) {
30610
30410
  RoundColorPicker,
30611
30411
  Popover
30612
30412
  };
30613
- static props = {
30614
- definition: Object,
30615
- onUpdateColorScale: Function
30616
- };
30413
+ props = (0, _odoo_owl.props)({
30414
+ definition: types$6.object({ "colorScale?": types$6.ChartColorScale() }),
30415
+ onUpdateColorScale: types$6.function([types$6.ChartColorScale()])
30416
+ });
30617
30417
  colorScales = COLORSCALES.map((colorScale) => ({
30618
30418
  value: colorScale,
30619
30419
  label: ChartTerms.ColorScales[colorScale],
@@ -30704,7 +30504,7 @@ set(value) {
30704
30504
  RoundColorPicker,
30705
30505
  Select
30706
30506
  };
30707
- static props = ChartSidePanelPropsObject;
30507
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
30708
30508
  get axesList() {
30709
30509
  return [{
30710
30510
  id: "x",
@@ -30749,7 +30549,7 @@ set(value) {
30749
30549
  var ChartShowDataMarkers = class extends Component {
30750
30550
  static template = "o-spreadsheet-ChartShowDataMarkers";
30751
30551
  static components = { Checkbox };
30752
- static props = ChartSidePanelPropsObject;
30552
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
30753
30553
  };
30754
30554
 
30755
30555
  //#endregion
@@ -30812,12 +30612,10 @@ set(value) {
30812
30612
  Section,
30813
30613
  ChartHumanizeNumbers
30814
30614
  };
30815
- static props = {
30816
- chartId: String,
30817
- definition: Object,
30818
- updateChart: Function,
30819
- canUpdateChart: Function
30820
- };
30615
+ props = (0, _odoo_owl.props)({
30616
+ ...chartSidePanelPropsDefinition,
30617
+ definition: types$6.FunnelChartDefinition()
30618
+ });
30821
30619
  getFunnelColorItems() {
30822
30620
  const labels = this.env.model.getters.getChartRuntime(this.props.chartId).chartJsConfig.data.labels || [];
30823
30621
  const colors = getFunnelLabelColors(labels, this.props.definition.funnelColors);
@@ -30840,7 +30638,7 @@ set(value) {
30840
30638
  ChartErrorSection,
30841
30639
  ChartDataSeries
30842
30640
  };
30843
- static props = ChartSidePanelPropsObject;
30641
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
30844
30642
  state = (0, _odoo_owl.proxy)({ dataRangeDispatchResult: void 0 });
30845
30643
  dataRange = this.props.definition.dataRange;
30846
30644
  get configurationErrorMessages() {
@@ -30865,15 +30663,12 @@ set(value) {
30865
30663
  //#region src/components/composer/autocomplete_dropdown/autocomplete_dropdown.ts
30866
30664
  var TextValueProvider = class extends Component {
30867
30665
  static template = "o-spreadsheet-TextValueProvider";
30868
- static props = {
30869
- proposals: Array,
30870
- selectedIndex: {
30871
- type: Number,
30872
- optional: true
30873
- },
30874
- onValueSelected: Function,
30875
- onValueHovered: Function
30876
- };
30666
+ props = (0, _odoo_owl.props)({
30667
+ proposals: types$6.array(types$6.AutoCompleteProposal()),
30668
+ "selectedIndex?": types$6.number(),
30669
+ onValueSelected: types$6.function([types$6.AutoCompleteProposal()]),
30670
+ onValueHovered: types$6.function([types$6.string()])
30671
+ });
30877
30672
  autoCompleteListRef = (0, _odoo_owl.signal)(null);
30878
30673
  setup() {
30879
30674
  (0, _odoo_owl.useEffect)(() => {
@@ -31090,15 +30885,12 @@ set(value) {
31090
30885
  //#region src/components/composer/formula_assistant/formula_assistant.ts
31091
30886
  var FunctionDescriptionProvider = class extends Component {
31092
30887
  static template = "o-spreadsheet-FunctionDescriptionProvider";
31093
- static props = {
31094
- functionDescription: Object,
31095
- argsToFocus: Array,
31096
- repeatingArgGroupIndex: {
31097
- type: Number,
31098
- optional: true
31099
- }
31100
- };
31101
30888
  static components = { Collapse };
30889
+ props = (0, _odoo_owl.props)({
30890
+ functionDescription: types$6.FunctionDescription(),
30891
+ argsToFocus: types$6.array(types$6.number()),
30892
+ "repeatingArgGroupIndex?": types$6.number()
30893
+ });
31102
30894
  state = (0, _odoo_owl.proxy)({ isCollapsed: true });
31103
30895
  toggle() {
31104
30896
  this.state.isCollapsed = !this.state.isCollapsed;
@@ -31162,11 +30954,11 @@ set(value) {
31162
30954
  const BUBBLE_ARROW_SIZE = 7;
31163
30955
  var SpeechBubble = class extends Component {
31164
30956
  static template = "o-spreadsheet-SpeechBubble";
31165
- static props = {
31166
- content: String,
31167
- anchorRect: Object
31168
- };
31169
30957
  static components = {};
30958
+ props = (0, _odoo_owl.props)({
30959
+ content: types$6.string(),
30960
+ anchorRect: types$6.Rect()
30961
+ });
31170
30962
  spreadsheetRect = useSpreadsheetRect();
31171
30963
  bubbleRef = (0, _odoo_owl.signal)(null);
31172
30964
  setup() {
@@ -31193,62 +30985,30 @@ set(value) {
31193
30985
  const highlightClass = "highlight-flag";
31194
30986
  var Composer = class extends Component {
31195
30987
  static template = "o-spreadsheet-Composer";
31196
- static props = {
31197
- focus: { validate: (value) => [
31198
- "inactive",
31199
- "cellFocus",
31200
- "contentFocus"
31201
- ].includes(value) },
31202
- inputStyle: {
31203
- type: String,
31204
- optional: true
31205
- },
31206
- rect: {
31207
- type: Object,
31208
- optional: true
31209
- },
31210
- delimitation: {
31211
- type: Object,
31212
- optional: true
31213
- },
31214
- onComposerCellFocused: {
31215
- type: Function,
31216
- optional: true
31217
- },
31218
- onComposerContentFocused: Function,
31219
- isDefaultFocus: {
31220
- type: Boolean,
31221
- optional: true
31222
- },
31223
- onInputContextMenu: {
31224
- type: Function,
31225
- optional: true
31226
- },
31227
- composerStore: Object,
31228
- placeholder: {
31229
- type: String,
31230
- optional: true
31231
- },
31232
- inputMode: {
31233
- type: String,
31234
- optional: true
31235
- },
31236
- showAssistant: {
31237
- type: Boolean,
31238
- optional: true
31239
- }
31240
- };
31241
30988
  static components = {
31242
30989
  TextValueProvider,
31243
30990
  FunctionDescriptionProvider,
31244
30991
  SpeechBubble
31245
30992
  };
31246
- static defaultProps = {
30993
+ props = (0, _odoo_owl.props)({
30994
+ focus: types$6.ComposerFocusType(),
30995
+ "inputStyle?": types$6.string(),
30996
+ "rect?": types$6.Rect(),
30997
+ "delimitation?": types$6.DOMDimension(),
30998
+ "onComposerCellFocused?": types$6.function([types$6.string()]),
30999
+ onComposerContentFocused: types$6.function([types$6.ComposerSelection()]),
31000
+ "isDefaultFocus?": types$6.boolean(),
31001
+ "onInputContextMenu?": types$6.function([types$6.instanceOf(MouseEvent)]),
31002
+ composerStore: types$6.Store(),
31003
+ "placeholder?": types$6.string(),
31004
+ "inputMode?": types$6.string(),
31005
+ "showAssistant?": types$6.boolean()
31006
+ }, {
31247
31007
  inputStyle: "",
31248
31008
  isDefaultFocus: false,
31249
31009
  inputMode: "text",
31250
31010
  showAssistant: true
31251
- };
31011
+ });
31252
31012
  DOMFocusableElementStore;
31253
31013
  composerRef = (0, _odoo_owl.signal)(null);
31254
31014
  containerRef = (0, _odoo_owl.signal)(null);
@@ -32813,54 +32573,23 @@ set(value) {
32813
32573
  //#region src/components/composer/standalone_composer/standalone_composer.ts
32814
32574
  var StandaloneComposer = class extends Component {
32815
32575
  static template = "o-spreadsheet-StandaloneComposer";
32816
- static props = {
32817
- composerContent: {
32818
- type: String,
32819
- optional: true
32820
- },
32821
- defaultRangeSheetId: {
32822
- type: String,
32823
- optional: true
32824
- },
32825
- defaultStatic: {
32826
- type: Boolean,
32827
- optional: true
32828
- },
32829
- onConfirm: Function,
32830
- contextualAutocomplete: {
32831
- type: Object,
32832
- optional: true
32833
- },
32834
- placeholder: {
32835
- type: String,
32836
- optional: true
32837
- },
32838
- title: {
32839
- type: String,
32840
- optional: true
32841
- },
32842
- class: {
32843
- type: String,
32844
- optional: true
32845
- },
32846
- invalid: {
32847
- type: Boolean,
32848
- optional: true
32849
- },
32850
- autofocus: {
32851
- type: Boolean,
32852
- optional: true
32853
- },
32854
- getContextualColoredSymbolToken: {
32855
- type: Function,
32856
- optional: true
32857
- }
32858
- };
32859
32576
  static components = { Composer };
32860
- static defaultProps = {
32577
+ props = (0, _odoo_owl.props)({
32578
+ onConfirm: types$6.function([types$6.string()]),
32579
+ "composerContent?": types$6.string(),
32580
+ defaultRangeSheetId: types$6.UID(),
32581
+ "defaultStatic?": types$6.boolean(),
32582
+ "contextualAutocomplete?": types$6.AutoCompleteProviderDefinition(),
32583
+ "placeholder?": types$6.string(),
32584
+ "title?": types$6.string(),
32585
+ "class?": types$6.string(),
32586
+ "invalid?": types$6.boolean(),
32587
+ "autofocus?": types$6.boolean(),
32588
+ "getContextualColoredSymbolToken?": types$6.function([types$6.Token()], types$6.Color())
32589
+ }, {
32861
32590
  composerContent: "",
32862
32591
  defaultStatic: false
32863
- };
32592
+ });
32864
32593
  composerFocusStore;
32865
32594
  standaloneComposerStore;
32866
32595
  composerInterface;
@@ -32924,7 +32653,7 @@ set(value) {
32924
32653
  ChartHumanizeNumbers,
32925
32654
  Select
32926
32655
  };
32927
- static props = ChartSidePanelPropsObject;
32656
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
32928
32657
  state;
32929
32658
  setup() {
32930
32659
  this.state = (0, _odoo_owl.proxy)({
@@ -33055,11 +32784,11 @@ set(value) {
33055
32784
  Section,
33056
32785
  Select
33057
32786
  };
33058
- static props = {
33059
- chartId: String,
33060
- definition: Object,
33061
- updateChart: Function
33062
- };
32787
+ props = (0, _odoo_owl.props)({
32788
+ chartId: types$6.UID(),
32789
+ definition: types$6.GeoChartDefinition(),
32790
+ updateChart: types$6.function([types$6.UID(), types$6.object({})], types$6.DispatchResult())
32791
+ });
33063
32792
  updateSelectedRegion(value) {
33064
32793
  this.props.updateChart(this.props.chartId, { region: value });
33065
32794
  }
@@ -33209,10 +32938,10 @@ set(value) {
33209
32938
  Section,
33210
32939
  NumberInput
33211
32940
  };
33212
- static props = {
33213
- onValueChange: Function,
33214
- value: Number
33215
- };
32941
+ props = (0, _odoo_owl.props)({
32942
+ onValueChange: types$6.function([types$6.number()]),
32943
+ value: types$6.number()
32944
+ });
33216
32945
  onChange(value) {
33217
32946
  if (!isNaN(Number(value))) this.props.onValueChange(clip(Number(value), 0, 95));
33218
32947
  }
@@ -33234,7 +32963,7 @@ set(value) {
33234
32963
  RoundColorPicker,
33235
32964
  Select
33236
32965
  };
33237
- static props = ChartSidePanelPropsObject;
32966
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33238
32967
  state = (0, _odoo_owl.proxy)({ index: 0 });
33239
32968
  get runtime() {
33240
32969
  return this.env.model.getters.getChartRuntime(this.props.chartId);
@@ -33294,7 +33023,7 @@ set(value) {
33294
33023
  Checkbox,
33295
33024
  ChartHumanizeNumbers
33296
33025
  };
33297
- static props = ChartSidePanelPropsObject;
33026
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33298
33027
  };
33299
33028
 
33300
33029
  //#endregion
@@ -33344,7 +33073,7 @@ set(value) {
33344
33073
  Section,
33345
33074
  Select
33346
33075
  };
33347
- static props = ChartSidePanelPropsObject;
33076
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33348
33077
  state = (0, _odoo_owl.proxy)({
33349
33078
  keyValueDispatchResult: void 0,
33350
33079
  baselineDispatchResult: void 0
@@ -33418,7 +33147,7 @@ set(value) {
33418
33147
  ChartTitle,
33419
33148
  ChartHumanizeNumbers
33420
33149
  };
33421
- static props = ChartSidePanelPropsObject;
33150
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33422
33151
  get colorsSectionTitle() {
33423
33152
  return this.props.definition.baselineMode === "progress" ? _t("Progress bar colors") : _t("Baseline colors");
33424
33153
  }
@@ -33499,7 +33228,7 @@ set(value) {
33499
33228
  PieHoleSize,
33500
33229
  ChartHumanizeNumbers
33501
33230
  };
33502
- static props = ChartSidePanelPropsObject;
33231
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33503
33232
  defaults = SunburstChartDefaults;
33504
33233
  get showValues() {
33505
33234
  return this.props.definition.showValues ?? SunburstChartDefaults.showValues;
@@ -33532,11 +33261,11 @@ set(value) {
33532
33261
  Checkbox,
33533
33262
  RoundColorPicker
33534
33263
  };
33535
- static props = {
33536
- chartId: String,
33537
- definition: Object,
33538
- onColorChanged: Function
33539
- };
33264
+ props = (0, _odoo_owl.props)({
33265
+ chartId: types$6.UID(),
33266
+ definition: types$6.TreeMapChartDefinition(),
33267
+ onColorChanged: types$6.function([types$6.TreeMapCategoryColorOptions()], types$6.DispatchResult())
33268
+ });
33540
33269
  get coloringOptions() {
33541
33270
  const coloringOptions = this.props.definition.coloringOptions ?? TreeMapChartDefaults.coloringOptions;
33542
33271
  if (coloringOptions.type !== "categoryColor") throw new Error("Coloring options is not solid color");
@@ -33564,11 +33293,11 @@ set(value) {
33564
33293
  var TreeMapColorScale = class extends Component {
33565
33294
  static template = "o-spreadsheet-TreeMapColorScale";
33566
33295
  static components = { RoundColorPicker };
33567
- static props = {
33568
- chartId: String,
33569
- definition: Object,
33570
- onColorChanged: Function
33571
- };
33296
+ props = (0, _odoo_owl.props)({
33297
+ chartId: types$6.UID(),
33298
+ definition: types$6.TreeMapChartDefinition(),
33299
+ onColorChanged: types$6.function([types$6.TreeMapColorScaleOptions()], types$6.DispatchResult())
33300
+ });
33572
33301
  get coloringOptions() {
33573
33302
  const coloringOptions = this.props.definition.coloringOptions ?? TreeMapChartDefaults.coloringOptions;
33574
33303
  if (coloringOptions.type !== "colorScale") throw new Error("Coloring options is not a color scale");
@@ -33610,7 +33339,7 @@ set(value) {
33610
33339
  TreeMapColorScale,
33611
33340
  ChartHumanizeNumbers
33612
33341
  };
33613
- static props = ChartSidePanelPropsObject;
33342
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33614
33343
  savedColors = {
33615
33344
  categoryColors: DEFAULT_SOLID_COLOR,
33616
33345
  colorScale: DEFAULT_COLOR_SCALE
@@ -33667,7 +33396,7 @@ set(value) {
33667
33396
  ChartLegend,
33668
33397
  ChartHumanizeNumbers
33669
33398
  };
33670
- static props = ChartSidePanelPropsObject;
33399
+ props = (0, _odoo_owl.props)(chartSidePanelPropsDefinition);
33671
33400
  axisChoices = CHART_AXIS_CHOICES;
33672
33401
  onUpdateShowSubTotals(showSubTotals) {
33673
33402
  this.props.updateChart(this.props.chartId, { showSubTotals });
@@ -33781,10 +33510,10 @@ set(value) {
33781
33510
  Section,
33782
33511
  Popover
33783
33512
  };
33784
- static props = {
33785
- chartId: String,
33786
- chartPanelStore: Object
33787
- };
33513
+ props = (0, _odoo_owl.props)({
33514
+ chartId: types$6.UID(),
33515
+ chartPanelStore: types$6.Store()
33516
+ });
33788
33517
  categories = chartCategories;
33789
33518
  chartTypeByCategories = {};
33790
33519
  popoverRef = (0, _odoo_owl.signal)(null);
@@ -33959,10 +33688,10 @@ set(value) {
33959
33688
  Section,
33960
33689
  ChartTypePicker
33961
33690
  };
33962
- static props = {
33963
- onCloseSidePanel: Function,
33964
- chartId: String
33965
- };
33691
+ props = (0, _odoo_owl.props)({
33692
+ onCloseSidePanel: types$6.function([]),
33693
+ chartId: types$6.UID()
33694
+ });
33966
33695
  store;
33967
33696
  get chartId() {
33968
33697
  return this.props.chartId;
@@ -34353,13 +34082,13 @@ set(value) {
34353
34082
  //#region src/components/side_panel/column_stats/column_stats_panel.ts
34354
34083
  var ColumnStatsPanel = class extends Component {
34355
34084
  static template = "o-spreadsheet-ColumnStatsPanel";
34356
- static props = { onCloseSidePanel: Function };
34357
34085
  static components = {
34358
34086
  NumberInput,
34359
34087
  SidePanelCollapsible,
34360
34088
  BadgeSelection,
34361
34089
  Section
34362
34090
  };
34091
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
34363
34092
  state = (0, _odoo_owl.proxy)({
34364
34093
  currentChart: "count",
34365
34094
  currentFrequencyOrder: "descending",
@@ -34602,7 +34331,7 @@ set(value) {
34602
34331
  ColorPickerWidget,
34603
34332
  Select
34604
34333
  };
34605
- static props = { store: Object };
34334
+ props = (0, _odoo_owl.props)({ store: types$6.Store() });
34606
34335
  getTextDecoration = getTextDecoration;
34607
34336
  get rule() {
34608
34337
  return this.props.store.state.rules.cellIs;
@@ -34612,18 +34341,12 @@ set(value) {
34612
34341
  //#endregion
34613
34342
  //#region src/components/side_panel/criterion_form/criterion_form.ts
34614
34343
  var CriterionForm = class extends Component {
34615
- static props = {
34616
- criterion: Object,
34617
- onCriterionChanged: Function,
34618
- disableFormulas: {
34619
- type: Boolean,
34620
- optional: true
34621
- },
34622
- autofocus: {
34623
- type: Boolean,
34624
- optional: true
34625
- }
34626
- };
34344
+ props = (0, _odoo_owl.props)({
34345
+ criterion: types$6.object({}),
34346
+ onCriterionChanged: types$6.function([types$6.object({})]),
34347
+ "disableFormulas?": types$6.boolean(),
34348
+ "autofocus?": types$6.boolean()
34349
+ });
34627
34350
  setup() {
34628
34351
  const composerFocusStore = useStore(ComposerFocusStore);
34629
34352
  if (composerFocusStore.activeComposer.editionMode !== "inactive") composerFocusStore.activeComposer.stopEdition();
@@ -35204,41 +34927,22 @@ set(value) {
35204
34927
  //#region src/components/side_panel/criterion_form/criterion_input/criterion_input.ts
35205
34928
  var CriterionInput = class extends Component {
35206
34929
  static template = "o-spreadsheet-CriterionInput";
35207
- static props = {
35208
- value: {
35209
- type: String,
35210
- optional: true
35211
- },
35212
- criterionType: String,
35213
- onValueChanged: Function,
35214
- onKeyDown: {
35215
- type: Function,
35216
- optional: true
35217
- },
35218
- focused: {
35219
- type: Boolean,
35220
- optional: true
35221
- },
35222
- onBlur: {
35223
- type: Function,
35224
- optional: true
35225
- },
35226
- onFocus: {
35227
- type: Function,
35228
- optional: true
35229
- },
35230
- disableFormulas: {
35231
- type: Boolean,
35232
- optional: true
35233
- }
35234
- };
35235
- static defaultProps = {
34930
+ static components = { StandaloneComposer };
34931
+ props = (0, _odoo_owl.props)({
34932
+ "value?": types$6.string(),
34933
+ criterionType: types$6.DataValidationCriterionType(),
34934
+ onValueChanged: types$6.function([types$6.string()]),
34935
+ "onKeyDown?": types$6.function([types$6.instanceOf(KeyboardEvent)]),
34936
+ "focused?": types$6.boolean(),
34937
+ "onBlur?": types$6.function([]),
34938
+ "onFocus?": types$6.function([]),
34939
+ "disableFormulas?": types$6.boolean()
34940
+ }, {
35236
34941
  value: "",
35237
34942
  onKeyDown: () => {},
35238
34943
  focused: false,
35239
34944
  onBlur: () => {}
35240
- };
35241
- static components = { StandaloneComposer };
34945
+ });
35242
34946
  inputRef = (0, _odoo_owl.signal)(null);
35243
34947
  setup() {
35244
34948
  useLayoutEffect(() => {
@@ -36065,10 +35769,14 @@ set(value) {
36065
35769
  StandaloneComposer,
36066
35770
  Select
36067
35771
  };
36068
- static props = {
36069
- store: Object,
36070
- thresholdType: String
36071
- };
35772
+ props = (0, _odoo_owl.props)({
35773
+ store: types$6.Store(),
35774
+ thresholdType: types$6.or([
35775
+ types$6.literal("minimum"),
35776
+ types$6.literal("midpoint"),
35777
+ types$6.literal("maximum")
35778
+ ])
35779
+ });
36072
35780
  get rule() {
36073
35781
  return this.props.store.state.rules.colorScale;
36074
35782
  }
@@ -36139,7 +35847,7 @@ set(value) {
36139
35847
  var ColorScaleRuleEditor = class extends Component {
36140
35848
  static template = "o-spreadsheet-ColorScaleRuleEditor";
36141
35849
  static components = { ColorScaleRuleEditorThreshold };
36142
- static props = { store: Object };
35850
+ props = (0, _odoo_owl.props)({ store: types$6.Store() });
36143
35851
  };
36144
35852
 
36145
35853
  //#endregion
@@ -36150,7 +35858,7 @@ set(value) {
36150
35858
  SelectionInput,
36151
35859
  RoundColorPicker
36152
35860
  };
36153
- static props = { store: Object };
35861
+ props = (0, _odoo_owl.props)({ store: types$6.Store() });
36154
35862
  get rule() {
36155
35863
  return this.props.store.state.rules.dataBar;
36156
35864
  }
@@ -36161,7 +35869,7 @@ set(value) {
36161
35869
  //#region src/components/icon_picker/icon_picker.ts
36162
35870
  var IconPicker = class extends Component {
36163
35871
  static template = "o-spreadsheet-IconPicker";
36164
- static props = { onIconPicked: Function };
35872
+ props = (0, _odoo_owl.props)({ onIconPicked: types$6.function([types$6.string()]) });
36165
35873
  onIconClick(icon) {
36166
35874
  if (icon) this.props.onIconPicked(icon);
36167
35875
  }
@@ -36182,7 +35890,7 @@ set(value) {
36182
35890
  StandaloneComposer,
36183
35891
  Select
36184
35892
  };
36185
- static props = { store: Object };
35893
+ props = (0, _odoo_owl.props)({ store: types$6.Store() });
36186
35894
  get rule() {
36187
35895
  return this.props.store.state.rules.iconSet;
36188
35896
  }
@@ -36261,11 +35969,11 @@ set(value) {
36261
35969
  IconSetRuleEditor,
36262
35970
  DataBarRuleEditor
36263
35971
  };
36264
- static props = {
36265
- cf: Object,
36266
- isNewCf: Boolean,
36267
- onCloseSidePanel: Function
36268
- };
35972
+ props = (0, _odoo_owl.props)({
35973
+ cf: types$6.ConditionalFormat(),
35974
+ isNewCf: types$6.boolean(),
35975
+ onCloseSidePanel: types$6.function([])
35976
+ });
36269
35977
  activeSheetId;
36270
35978
  store;
36271
35979
  setup() {
@@ -36321,11 +36029,11 @@ set(value) {
36321
36029
  //#region src/components/side_panel/conditional_formatting/cf_preview/cf_preview.ts
36322
36030
  var ConditionalFormatPreview = class extends Component {
36323
36031
  static template = "o-spreadsheet-ConditionalFormatPreview";
36324
- static props = {
36325
- conditionalFormat: Object,
36326
- onMouseDown: Function,
36327
- class: String
36328
- };
36032
+ props = (0, _odoo_owl.props)({
36033
+ conditionalFormat: types$6.ConditionalFormat(),
36034
+ onMouseDown: types$6.function([types$6.instanceOf(MouseEvent)]),
36035
+ class: types$6.string()
36036
+ });
36329
36037
  icons = ICONS;
36330
36038
  cfPreviewRef = (0, _odoo_owl.signal)(null);
36331
36039
  setup() {
@@ -36381,8 +36089,8 @@ set(value) {
36381
36089
  //#region src/components/side_panel/conditional_formatting/cf_preview_list/cf_preview_list.ts
36382
36090
  var ConditionalFormatPreviewList = class extends Component {
36383
36091
  static template = "o-spreadsheet-ConditionalFormatPreviewList";
36384
- static props = { onCloseSidePanel: Function };
36385
36092
  static components = { ConditionalFormatPreview };
36093
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
36386
36094
  dragAndDrop = useDragAndDropListItems();
36387
36095
  cfListRef = (0, _odoo_owl.signal)(null);
36388
36096
  get conditionalFormats() {
@@ -36451,7 +36159,7 @@ set(value) {
36451
36159
  //#region src/components/side_panel/data_validation/dv_preview/dv_preview.ts
36452
36160
  var DataValidationPreview = class extends Component {
36453
36161
  static template = "o-spreadsheet-DataValidationPreview";
36454
- static props = { rule: Object };
36162
+ props = (0, _odoo_owl.props)({ rule: types$6.DataValidationRule() });
36455
36163
  dvPreviewRef = (0, _odoo_owl.signal)(null);
36456
36164
  setup() {
36457
36165
  useHighlightsOnHover(this.dvPreviewRef, this);
@@ -36486,8 +36194,8 @@ set(value) {
36486
36194
  //#region src/components/side_panel/data_validation/data_validation_panel.ts
36487
36195
  var DataValidationPanel = class extends Component {
36488
36196
  static template = "o-spreadsheet-DataValidationPanel";
36489
- static props = { onCloseSidePanel: Function };
36490
36197
  static components = { DataValidationPreview };
36198
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
36491
36199
  addDataValidationRule() {
36492
36200
  this.env.replaceSidePanel("DataValidationEditor", "DataValidation", { ruleId: UuidGenerator.smallUuid() });
36493
36201
  }
@@ -36541,14 +36249,11 @@ set(value) {
36541
36249
  Section,
36542
36250
  ValidationMessages
36543
36251
  };
36544
- static props = {
36545
- ruleId: String,
36546
- onCancel: {
36547
- type: Function,
36548
- optional: true
36549
- },
36550
- onCloseSidePanel: Function
36551
- };
36252
+ props = (0, _odoo_owl.props)({
36253
+ ruleId: types$6.UID(),
36254
+ "onCancel?": types$6.function([]),
36255
+ onCloseSidePanel: types$6.function([])
36256
+ });
36552
36257
  state = (0, _odoo_owl.proxy)({
36553
36258
  rule: this.defaultDataValidationRule,
36554
36259
  errors: [],
@@ -36995,7 +36700,7 @@ set(value) {
36995
36700
  ValidationMessages,
36996
36701
  Select
36997
36702
  };
36998
- static props = { onCloseSidePanel: Function };
36703
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
36999
36704
  searchInputRef = (0, _odoo_owl.signal)(null);
37000
36705
  store;
37001
36706
  state;
@@ -37821,13 +37526,6 @@ set(value) {
37821
37526
  //#region src/components/side_panel/more_formats/more_formats.ts
37822
37527
  var MoreFormatsPanel = class extends Component {
37823
37528
  static template = "o-spreadsheet-MoreFormatsPanel";
37824
- static props = {
37825
- onCloseSidePanel: Function,
37826
- category: {
37827
- type: String,
37828
- optional: true
37829
- }
37830
- };
37831
37529
  static components = {
37832
37530
  BadgeSelection,
37833
37531
  Section,
@@ -37835,6 +37533,14 @@ set(value) {
37835
37533
  Checkbox,
37836
37534
  Select
37837
37535
  };
37536
+ props = (0, _odoo_owl.props)({
37537
+ onCloseSidePanel: types$6.function([]),
37538
+ "category?": types$6.or([
37539
+ types$6.literal("number"),
37540
+ types$6.literal("date"),
37541
+ types$6.literal("currency")
37542
+ ])
37543
+ });
37838
37544
  store;
37839
37545
  setup() {
37840
37546
  this.store = useLocalStore(MoreFormatsStore, this.props.category);
@@ -37890,11 +37596,11 @@ set(value) {
37890
37596
  //#region src/components/side_panel/named_ranges_panel/named_range_preview/named_range_preview.ts
37891
37597
  var NamedRangePreview = class extends Component {
37892
37598
  static template = "o-spreadsheet-NamedRangePreview";
37893
- static props = { namedRange: Object };
37894
37599
  static components = {
37895
37600
  SelectionInput,
37896
37601
  TextInput
37897
37602
  };
37603
+ props = (0, _odoo_owl.props)({ namedRange: types$6.NamedRange() });
37898
37604
  state = (0, _odoo_owl.proxy)({});
37899
37605
  namedRangePreviewRef = (0, _odoo_owl.signal)(null);
37900
37606
  setup() {
@@ -37946,12 +37652,12 @@ set(value) {
37946
37652
  //#region src/components/side_panel/named_ranges_panel/named_ranges_panel.ts
37947
37653
  var NamedRangesPanel = class extends Component {
37948
37654
  static template = "o-spreadsheet-NamedRangesPanel";
37949
- static props = { onCloseSidePanel: Function };
37950
37655
  static components = {
37951
37656
  NamedRangePreview,
37952
37657
  SelectionInput,
37953
37658
  TextInput
37954
37659
  };
37660
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
37955
37661
  get namedRanges() {
37956
37662
  return this.env.model.getters.getNamedRanges();
37957
37663
  }
@@ -37972,7 +37678,7 @@ set(value) {
37972
37678
  var PerfProfilePanel = class extends Component {
37973
37679
  static template = "o-spreadsheet-PerfProfilePanel";
37974
37680
  static components = { Section };
37975
- static props = { onCloseSidePanel: Function };
37681
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
37976
37682
  state = (0, _odoo_owl.proxy)({
37977
37683
  selectedIndex: void 0,
37978
37684
  lastProfiledTime: 0
@@ -38188,11 +37894,11 @@ set(value) {
38188
37894
  //#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel.ts
38189
37895
  var PivotMeasureDisplayPanel = class extends Component {
38190
37896
  static template = "o-spreadsheet-PivotMeasureDisplayPanel";
38191
- static props = {
38192
- onCloseSidePanel: Function,
38193
- pivotId: String,
38194
- measure: Object
38195
- };
37897
+ props = (0, _odoo_owl.props)({
37898
+ onCloseSidePanel: types$6.function([]),
37899
+ pivotId: types$6.UID(),
37900
+ measure: types$6.PivotCoreMeasure()
37901
+ });
38196
37902
  static components = {
38197
37903
  Section,
38198
37904
  Checkbox,
@@ -38254,13 +37960,13 @@ set(value) {
38254
37960
  //#region src/components/side_panel/pivot/pivot_defer_update/pivot_defer_update.ts
38255
37961
  var PivotDeferUpdate = class extends Component {
38256
37962
  static template = "o-spreadsheet-PivotDeferUpdate";
38257
- static props = {
38258
- deferUpdate: Boolean,
38259
- isDirty: Boolean,
38260
- toggleDeferUpdate: Function,
38261
- discard: Function,
38262
- apply: Function
38263
- };
37963
+ props = (0, _odoo_owl.props)({
37964
+ deferUpdate: types$6.boolean(),
37965
+ isDirty: types$6.boolean(),
37966
+ toggleDeferUpdate: types$6.function([types$6.boolean()]),
37967
+ discard: types$6.function([]),
37968
+ apply: types$6.function([])
37969
+ });
38264
37970
  static components = {
38265
37971
  Section,
38266
37972
  Checkbox
@@ -38273,6 +37979,150 @@ set(value) {
38273
37979
  }
38274
37980
  };
38275
37981
 
37982
+ //#endregion
37983
+ //#region src/helpers/pivot/pivot_runtime_definition.ts
37984
+ /**
37985
+ * Represent a pivot runtime definition. A pivot runtime definition is a pivot
37986
+ * definition that has been enriched to include the display name of its attributes
37987
+ * (measures, columns, rows).
37988
+ */
37989
+ var PivotRuntimeDefinition = class {
37990
+ measures;
37991
+ columns;
37992
+ rows;
37993
+ filters;
37994
+ sortedColumn;
37995
+ collapsedDomains;
37996
+ customFields;
37997
+ constructor(definition, fields) {
37998
+ this.columns = definition.columns.map((dimension) => this.createPivotDimension(fields, dimension));
37999
+ this.rows = definition.rows.map((dimension) => this.createPivotDimension(fields, dimension));
38000
+ this.measures = definition.measures.map((measure) => this.createMeasure(fields, measure));
38001
+ this.filters = (definition.filters ?? []).map((filter) => this.createPivotFilter(fields, filter));
38002
+ this.sortedColumn = definition.sortedColumn;
38003
+ this.collapsedDomains = definition.collapsedDomains;
38004
+ this.customFields = definition.customFields;
38005
+ }
38006
+ getDimension(nameWithGranularity) {
38007
+ const dimension = this.columns.find((d) => d.nameWithGranularity === nameWithGranularity) || this.rows.find((d) => d.nameWithGranularity === nameWithGranularity);
38008
+ if (!dimension) throw new EvaluationError(_t("Dimension %s does not exist", nameWithGranularity));
38009
+ return dimension;
38010
+ }
38011
+ getMeasure(id) {
38012
+ const measure = this.measures.find((measure) => measure.id === id);
38013
+ if (!measure) throw new EvaluationError(_t("Field %s is not a measure", id));
38014
+ return measure;
38015
+ }
38016
+ get invalidAggregatorsForCustomField() {
38017
+ return [];
38018
+ }
38019
+ createMeasure(fields, measure) {
38020
+ const fieldName = measure.fieldName;
38021
+ const field = fieldName === "__count" ? {
38022
+ name: "__count",
38023
+ string: _t("Count"),
38024
+ type: "integer",
38025
+ aggregator: "sum"
38026
+ } : fields[fieldName];
38027
+ const aggregator = measure.aggregator;
38028
+ let isValid = !!(field || measure.computedBy);
38029
+ for (const dimension of [...this.rows, ...this.columns]) if (fields[dimension.fieldName]?.isCustomField && this.invalidAggregatorsForCustomField.includes(aggregator)) {
38030
+ isValid = false;
38031
+ break;
38032
+ }
38033
+ return {
38034
+ /**
38035
+ * Get the id of the measure, as it is stored in the pivot formula
38036
+ */
38037
+ id: measure.id,
38038
+ /**
38039
+ * Display name of the measure
38040
+ * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
38041
+ */
38042
+ get displayName() {
38043
+ return measure.userDefinedName ?? field?.string ?? measure.fieldName;
38044
+ },
38045
+ userDefinedName: measure.userDefinedName,
38046
+ /**
38047
+ * Get the name of the field of the measure
38048
+ */
38049
+ fieldName,
38050
+ /**
38051
+ * Get the aggregator of the measure
38052
+ */
38053
+ aggregator,
38054
+ /**
38055
+ * Get the type of the measure field
38056
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
38057
+ */
38058
+ type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
38059
+ isValid,
38060
+ isHidden: measure.isHidden,
38061
+ format: measure.format,
38062
+ computedBy: measure.computedBy,
38063
+ display: measure.display
38064
+ };
38065
+ }
38066
+ createPivotDimension(fields, dimension) {
38067
+ const field = fields[dimension.fieldName];
38068
+ const type = field?.type ?? "integer";
38069
+ const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
38070
+ return {
38071
+ /**
38072
+ * Get the display name of the dimension
38073
+ * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
38074
+ */
38075
+ displayName: field?.string ?? dimension.fieldName,
38076
+ /**
38077
+ * Get the name of the dimension, as it is stored in the pivot formula
38078
+ * e.g. "stage_id", "create_date:month"
38079
+ */
38080
+ nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
38081
+ /**
38082
+ * Get the name of the field of the dimension
38083
+ * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
38084
+ */
38085
+ fieldName: dimension.fieldName,
38086
+ /**
38087
+ * Get the aggregate operator of the dimension
38088
+ * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
38089
+ */
38090
+ granularity,
38091
+ /**
38092
+ * Get the type of the field of the dimension
38093
+ * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
38094
+ */
38095
+ type: field?.isCustomField ? "custom" : type,
38096
+ order: dimension.order,
38097
+ isValid: !!field,
38098
+ isCustomField: !!field?.isCustomField,
38099
+ customGroups: field?.customGroups,
38100
+ parentField: field?.parentField
38101
+ };
38102
+ }
38103
+ createPivotFilter(fields, filter) {
38104
+ const field = fields[filter.fieldName];
38105
+ return {
38106
+ ...filter,
38107
+ displayName: field?.name ?? filter.fieldName,
38108
+ isValid: !!field
38109
+ };
38110
+ }
38111
+ };
38112
+
38113
+ //#endregion
38114
+ //#region src/helpers/pivot/spreadsheet_pivot/runtime_definition_spreadsheet_pivot.ts
38115
+ var SpreadsheetPivotRuntimeDefinition = class extends PivotRuntimeDefinition {
38116
+ range;
38117
+ constructor(definition, fields, getters) {
38118
+ super(definition, fields);
38119
+ if (definition.dataSet) {
38120
+ const { sheetId, zone } = definition.dataSet;
38121
+ this.range = getters.getRangeFromZone(sheetId, zone);
38122
+ }
38123
+ }
38124
+ };
38125
+
38276
38126
  //#endregion
38277
38127
  //#region src/types/table.ts
38278
38128
  const filterCriterions = [
@@ -38338,12 +38188,12 @@ set(value) {
38338
38188
  //#region src/components/filters/filter_menu_criterion/filter_menu_criterion.ts
38339
38189
  var FilterMenuCriterion = class extends Component {
38340
38190
  static template = "o-spreadsheet-FilterMenuCriterion";
38341
- static props = {
38342
- criterion: Object,
38343
- onCriterionChanged: Function,
38344
- criterionOperators: Array
38345
- };
38346
38191
  static components = { Select };
38192
+ props = (0, _odoo_owl.props)({
38193
+ criterion: types$6.CriterionFilter(),
38194
+ criterionOperators: types$6.array(types$6.GenericCriterionType()),
38195
+ onCriterionChanged: types$6.function([types$6.CriterionFilter()])
38196
+ });
38347
38197
  state;
38348
38198
  setup() {
38349
38199
  (0, _odoo_owl.onWillUpdateProps)((nextProps) => {
@@ -38376,17 +38226,14 @@ set(value) {
38376
38226
  var FilterMenuValueItem = class extends Component {
38377
38227
  static template = "o-spreadsheet-FilterMenuValueItem";
38378
38228
  static components = { Checkbox };
38379
- static props = {
38380
- value: String,
38381
- isChecked: Boolean,
38382
- isSelected: Boolean,
38383
- onMouseMove: Function,
38384
- onClick: Function,
38385
- scrolledTo: {
38386
- type: String,
38387
- optional: true
38388
- }
38389
- };
38229
+ props = (0, _odoo_owl.props)({
38230
+ value: _odoo_owl.types.string(),
38231
+ isChecked: _odoo_owl.types.boolean(),
38232
+ isSelected: _odoo_owl.types.boolean(),
38233
+ onMouseMove: _odoo_owl.types.function([]),
38234
+ onClick: _odoo_owl.types.function([]),
38235
+ "scrolledTo?": _odoo_owl.types.or([_odoo_owl.types.literal("top"), _odoo_owl.types.literal("bottom")])
38236
+ });
38390
38237
  itemRef = (0, _odoo_owl.signal)(null);
38391
38238
  setup() {
38392
38239
  (0, _odoo_owl.onWillPatch)(() => {
@@ -38404,11 +38251,15 @@ set(value) {
38404
38251
  //#region src/components/filters/filter_menu_value_list/filter_menu_value_list.ts
38405
38252
  var FilterMenuValueList = class extends Component {
38406
38253
  static template = "o-spreadsheet-FilterMenuValueList";
38407
- static props = {
38408
- values: Object,
38409
- onUpdateHiddenValues: Function
38410
- };
38411
38254
  static components = { FilterMenuValueItem };
38255
+ props = (0, _odoo_owl.props)({
38256
+ values: types$6.array(types$6.object({
38257
+ checked: types$6.boolean(),
38258
+ string: types$6.string(),
38259
+ "scrolledTo?": types$6.or([types$6.literal("top"), types$6.literal("bottom")])
38260
+ })),
38261
+ onUpdateHiddenValues: types$6.function([types$6.array(types$6.string())])
38262
+ });
38412
38263
  state = (0, _odoo_owl.proxy)({
38413
38264
  displayedValues: [],
38414
38265
  textFilter: "",
@@ -38509,17 +38360,6 @@ set(value) {
38509
38360
  //#region src/components/filters/pivot_filter_menu/pivot_filter_menu.ts
38510
38361
  var PivotFilterMenu = class extends Component {
38511
38362
  static template = "o-spreadsheet-PivotFilterMenu";
38512
- static props = {
38513
- pivotId: String,
38514
- definition: Object,
38515
- filter: Object,
38516
- values: Object,
38517
- onClosed: {
38518
- type: Function,
38519
- optional: true
38520
- },
38521
- onConfirmed: Function
38522
- };
38523
38363
  static components = {
38524
38364
  FilterMenuValueList,
38525
38365
  SidePanelCollapsible,
@@ -38527,6 +38367,18 @@ set(value) {
38527
38367
  };
38528
38368
  criterionCategory = "char";
38529
38369
  updatedCriterionValue;
38370
+ props = (0, _odoo_owl.props)({
38371
+ pivotId: types$6.UID(),
38372
+ definition: types$6.instanceOf(SpreadsheetPivotRuntimeDefinition),
38373
+ filter: types$6.PivotFilter(),
38374
+ values: types$6.array(types$6.object({
38375
+ checked: types$6.boolean(),
38376
+ string: types$6.string(),
38377
+ "scrolledTo?": types$6.or([types$6.literal("top"), types$6.literal("bottom")])
38378
+ })),
38379
+ "onClosed?": types$6.function([]),
38380
+ onConfirmed: types$6.function([types$6.DataFilterValue()])
38381
+ });
38530
38382
  setup() {
38531
38383
  (0, _odoo_owl.onWillUpdateProps)((nextProps) => {
38532
38384
  if (!deepEquals(nextProps.definition, this.props.definition)) {
@@ -38578,21 +38430,29 @@ set(value) {
38578
38430
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension/pivot_dimension.ts
38579
38431
  var PivotDimension = class extends Component {
38580
38432
  static template = "o-spreadsheet-PivotDimension";
38581
- static props = {
38582
- dimension: Object,
38583
- onRemoved: {
38584
- type: Function,
38585
- optional: true
38586
- },
38587
- onNameUpdated: {
38588
- type: Function,
38589
- optional: true
38590
- },
38591
- slots: {
38592
- type: Object,
38593
- optional: true
38594
- }
38595
- };
38433
+ props = (0, _odoo_owl.props)({
38434
+ dimension: types$6.or([
38435
+ types$6.PivotDimension(),
38436
+ types$6.PivotMeasure(),
38437
+ types$6.PivotFilter()
38438
+ ]),
38439
+ "onRemoved?": types$6.function([types$6.or([
38440
+ types$6.PivotDimension(),
38441
+ types$6.PivotMeasure(),
38442
+ types$6.PivotFilter()
38443
+ ])]),
38444
+ "onNameUpdated?": types$6.function([types$6.or([
38445
+ types$6.PivotDimension(),
38446
+ types$6.PivotMeasure(),
38447
+ types$6.PivotFilter()
38448
+ ]), types$6.string()]),
38449
+ "type?": types$6.or([
38450
+ types$6.literal("row"),
38451
+ types$6.literal("col"),
38452
+ types$6.literal("measure"),
38453
+ types$6.literal("filter")
38454
+ ])
38455
+ });
38596
38456
  static components = {
38597
38457
  CogWheelMenu,
38598
38458
  TextInput
@@ -38615,12 +38475,12 @@ set(value) {
38615
38475
  Popover,
38616
38476
  PivotFilterMenu
38617
38477
  };
38618
- static props = {
38619
- pivotId: String,
38620
- definition: Object,
38621
- filter: Object,
38622
- onFiltersUpdated: Function
38623
- };
38478
+ props = (0, _odoo_owl.props)({
38479
+ pivotId: types$6.UID(),
38480
+ definition: types$6.instanceOf(SpreadsheetPivotRuntimeDefinition),
38481
+ filter: types$6.PivotFilter(),
38482
+ onFiltersUpdated: types$6.function([types$6.SpreadsheetPivotCoreDefinition()])
38483
+ });
38624
38484
  state;
38625
38485
  buttonFilter = (0, _odoo_owl.signal)(null);
38626
38486
  popover;
@@ -38747,14 +38607,10 @@ set(value) {
38747
38607
  Popover,
38748
38608
  TextValueProvider
38749
38609
  };
38750
- static props = {
38751
- onFieldPicked: Function,
38752
- fields: Array,
38753
- slots: {
38754
- type: Object,
38755
- optional: true
38756
- }
38757
- };
38610
+ props = (0, _odoo_owl.props)({
38611
+ onFieldPicked: types$6.function([types$6.string()]),
38612
+ fields: types$6.array()
38613
+ });
38758
38614
  buttonRef = (0, _odoo_owl.signal)(null);
38759
38615
  popover = (0, _odoo_owl.proxy)({ isOpen: false });
38760
38616
  search = (0, _odoo_owl.proxy)({ input: "" });
@@ -38846,11 +38702,11 @@ set(value) {
38846
38702
  //#region src/components/side_panel/pivot/pivot_custom_groups_collapsible/pivot_custom_groups_collapsible.ts
38847
38703
  var PivotCustomGroupsCollapsible = class extends Component {
38848
38704
  static template = "o-spreadsheet-PivotCustomGroupsCollapsible";
38849
- static props = {
38850
- pivotId: String,
38851
- customField: Object,
38852
- onCustomFieldUpdated: Function
38853
- };
38705
+ props = (0, _odoo_owl.props)({
38706
+ pivotId: types$6.UID(),
38707
+ customField: types$6.PivotCustomGroupedField(),
38708
+ onCustomFieldUpdated: types$6.function([types$6.object({})])
38709
+ });
38854
38710
  static components = {
38855
38711
  SidePanelCollapsible,
38856
38712
  TextInput,
@@ -38910,12 +38766,12 @@ set(value) {
38910
38766
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_granularity/pivot_dimension_granularity.ts
38911
38767
  var PivotDimensionGranularity = class extends Component {
38912
38768
  static template = "o-spreadsheet-PivotDimensionGranularity";
38913
- static props = {
38914
- dimension: Object,
38915
- onUpdated: Function,
38916
- availableGranularities: Set,
38917
- allGranularities: Array
38918
- };
38769
+ props = (0, _odoo_owl.props)({
38770
+ dimension: types$6.PivotDimension(),
38771
+ onUpdated: types$6.function([types$6.PivotDimension(), types$6.instanceOf(InputEvent)]),
38772
+ availableGranularities: types$6.SetOf(),
38773
+ allGranularities: types$6.array()
38774
+ });
38919
38775
  static components = { Select };
38920
38776
  periods = ALL_PERIODS;
38921
38777
  get granularityOptions() {
@@ -38931,10 +38787,11 @@ set(value) {
38931
38787
  //#region src/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_order/pivot_dimension_order.ts
38932
38788
  var PivotDimensionOrder = class extends Component {
38933
38789
  static template = "o-spreadsheet-PivotDimensionOrder";
38934
- static props = {
38935
- dimension: Object,
38936
- onUpdated: Function
38937
- };
38790
+ props = (0, _odoo_owl.props)({
38791
+ dimension: types$6.PivotDimension(),
38792
+ onUpdated: types$6.function([types$6.PivotDimension(), types$6.instanceOf(InputEvent)]),
38793
+ "isMeasureSorted?": types$6.boolean()
38794
+ });
38938
38795
  static components = { Select };
38939
38796
  get orderSelectOptions() {
38940
38797
  const options = [{
@@ -38944,12 +38801,20 @@ set(value) {
38944
38801
  value: "desc",
38945
38802
  label: _t("Descending")
38946
38803
  }];
38804
+ if (this.props.isMeasureSorted) options.unshift({
38805
+ value: "measures",
38806
+ label: _t("Sorted by measure")
38807
+ });
38947
38808
  if (this.props.dimension.type === "date") return options;
38948
38809
  return [{
38949
38810
  value: "",
38950
38811
  label: _t("Unsorted")
38951
38812
  }, ...options];
38952
38813
  }
38814
+ get selectedValue() {
38815
+ if (this.props.isMeasureSorted) return "measures";
38816
+ return this.props.dimension.order || "";
38817
+ }
38953
38818
  };
38954
38819
 
38955
38820
  //#endregion
@@ -39004,15 +38869,15 @@ set(value) {
39004
38869
  StandaloneComposer,
39005
38870
  Select
39006
38871
  };
39007
- static props = {
39008
- definition: Object,
39009
- measure: Object,
39010
- onMeasureUpdated: Function,
39011
- onRemoved: Function,
39012
- generateMeasureId: Function,
39013
- aggregators: Object,
39014
- pivotId: String
39015
- };
38872
+ props = (0, _odoo_owl.props)({
38873
+ pivotId: types$6.string(),
38874
+ definition: types$6.PivotRuntimeDefinition(),
38875
+ measure: types$6.PivotMeasure(),
38876
+ onMeasureUpdated: types$6.function([types$6.PivotMeasure()]),
38877
+ onRemoved: types$6.function([]),
38878
+ generateMeasureId: types$6.function([types$6.string(), types$6.string()], types$6.string()),
38879
+ aggregators: types$6.object({})
38880
+ });
39016
38881
  getMeasureAutocomplete() {
39017
38882
  return createMeasureAutoComplete(this.props.definition, this.props.measure);
39018
38883
  }
@@ -39092,10 +38957,10 @@ set(value) {
39092
38957
  var PivotSortSection = class extends Component {
39093
38958
  static template = "o-spreadsheet-PivotSortSection";
39094
38959
  static components = { Section };
39095
- static props = {
39096
- definition: Object,
39097
- pivotId: String
39098
- };
38960
+ props = (0, _odoo_owl.props)({
38961
+ definition: types$6.PivotRuntimeDefinition(),
38962
+ pivotId: types$6.UID()
38963
+ });
39099
38964
  get hasValidSort() {
39100
38965
  const pivot = this.env.model.getters.getPivot(this.props.pivotId);
39101
38966
  return !!this.props.definition.sortedColumn && isSortedColumnValid(this.props.definition.sortedColumn, pivot);
@@ -39147,21 +39012,18 @@ set(value) {
39147
39012
  PivotCustomGroupsCollapsible,
39148
39013
  SidePanelCollapsible
39149
39014
  };
39150
- static props = {
39151
- definition: Object,
39152
- onDimensionsUpdated: Function,
39153
- onFiltersUpdated: Function,
39154
- unusedGroupableFields: Array,
39155
- measureFields: Array,
39156
- unusedGranularities: Object,
39157
- dateGranularities: Array,
39158
- datetimeGranularities: Array,
39159
- getScrollableContainerEl: {
39160
- type: Function,
39161
- optional: true
39162
- },
39163
- pivotId: String
39164
- };
39015
+ props = (0, _odoo_owl.props)({
39016
+ definition: types$6.instanceOf(PivotRuntimeDefinition),
39017
+ onDimensionsUpdated: types$6.function([types$6.PivotCoreDefinition()]),
39018
+ onFiltersUpdated: types$6.function([types$6.PivotCoreDefinition()]),
39019
+ unusedGroupableFields: types$6.array(types$6.PivotField()),
39020
+ measureFields: types$6.array(types$6.PivotField()),
39021
+ unusedGranularities: types$6.RecordOf(),
39022
+ dateGranularities: types$6.array(types$6.string()),
39023
+ datetimeGranularities: types$6.array(types$6.string()),
39024
+ "getScrollableContainerEl?": types$6.function([], types$6.instanceOf(HTMLElement)),
39025
+ pivotId: types$6.UID()
39026
+ });
39165
39027
  dimensionsRef = (0, _odoo_owl.signal)(null);
39166
39028
  dragAndDrop = useDragAndDropListItems();
39167
39029
  AGGREGATORS = AGGREGATORS;
@@ -39323,7 +39185,8 @@ set(value) {
39323
39185
  return this.env.model.getters.getPivotCoreDefinition(this.props.pivotId).customFields?.[dimension.nameWithGranularity];
39324
39186
  }
39325
39187
  updateOrder(updateDimension, order) {
39326
- const { rows, columns } = this.props.definition;
39188
+ const { rows, columns, sortedColumn } = this.props.definition;
39189
+ const isRow = rows.some((row) => row.nameWithGranularity === updateDimension.nameWithGranularity);
39327
39190
  this.props.onDimensionsUpdated({
39328
39191
  rows: rows.map((row) => {
39329
39192
  if (row.nameWithGranularity === updateDimension.nameWithGranularity) return {
@@ -39338,7 +39201,8 @@ set(value) {
39338
39201
  order: order || void 0
39339
39202
  };
39340
39203
  return col;
39341
- })
39204
+ }),
39205
+ sortedColumn: isRow ? void 0 : sortedColumn
39342
39206
  });
39343
39207
  }
39344
39208
  updateGranularity(dimension, granularity) {
@@ -39364,6 +39228,9 @@ set(value) {
39364
39228
  const possibleValues = this.env.model.getters.getPivot(this.props.pivotId).getPossibleFieldValues(dimension);
39365
39229
  return possibleValues.length > 100 ? _t("This dimension contains a lot of values (%s), and might slow down the pivot table.", possibleValues.length) : void 0;
39366
39230
  }
39231
+ get hasSortedColumn() {
39232
+ return !!this.props.definition.sortedColumn;
39233
+ }
39367
39234
  };
39368
39235
 
39369
39236
  //#endregion
@@ -39375,10 +39242,10 @@ set(value) {
39375
39242
  Section,
39376
39243
  TextInput
39377
39244
  };
39378
- static props = {
39379
- pivotId: String,
39380
- flipAxis: Function
39381
- };
39245
+ props = (0, _odoo_owl.props)({
39246
+ pivotId: types$6.UID(),
39247
+ flipAxis: types$6.function([])
39248
+ });
39382
39249
  get cogWheelMenuItems() {
39383
39250
  return [
39384
39251
  {
@@ -39444,150 +39311,6 @@ set(value) {
39444
39311
  }
39445
39312
  };
39446
39313
 
39447
- //#endregion
39448
- //#region src/helpers/pivot/pivot_runtime_definition.ts
39449
- /**
39450
- * Represent a pivot runtime definition. A pivot runtime definition is a pivot
39451
- * definition that has been enriched to include the display name of its attributes
39452
- * (measures, columns, rows).
39453
- */
39454
- var PivotRuntimeDefinition = class {
39455
- measures;
39456
- columns;
39457
- rows;
39458
- filters;
39459
- sortedColumn;
39460
- collapsedDomains;
39461
- customFields;
39462
- constructor(definition, fields) {
39463
- this.columns = definition.columns.map((dimension) => this.createPivotDimension(fields, dimension));
39464
- this.rows = definition.rows.map((dimension) => this.createPivotDimension(fields, dimension));
39465
- this.measures = definition.measures.map((measure) => this.createMeasure(fields, measure));
39466
- this.filters = (definition.filters ?? []).map((filter) => this.createPivotFilter(fields, filter));
39467
- this.sortedColumn = definition.sortedColumn;
39468
- this.collapsedDomains = definition.collapsedDomains;
39469
- this.customFields = definition.customFields;
39470
- }
39471
- getDimension(nameWithGranularity) {
39472
- const dimension = this.columns.find((d) => d.nameWithGranularity === nameWithGranularity) || this.rows.find((d) => d.nameWithGranularity === nameWithGranularity);
39473
- if (!dimension) throw new EvaluationError(_t("Dimension %s does not exist", nameWithGranularity));
39474
- return dimension;
39475
- }
39476
- getMeasure(id) {
39477
- const measure = this.measures.find((measure) => measure.id === id);
39478
- if (!measure) throw new EvaluationError(_t("Field %s is not a measure", id));
39479
- return measure;
39480
- }
39481
- get invalidAggregatorsForCustomField() {
39482
- return [];
39483
- }
39484
- createMeasure(fields, measure) {
39485
- const fieldName = measure.fieldName;
39486
- const field = fieldName === "__count" ? {
39487
- name: "__count",
39488
- string: _t("Count"),
39489
- type: "integer",
39490
- aggregator: "sum"
39491
- } : fields[fieldName];
39492
- const aggregator = measure.aggregator;
39493
- let isValid = !!(field || measure.computedBy);
39494
- for (const dimension of [...this.rows, ...this.columns]) if (fields[dimension.fieldName]?.isCustomField && this.invalidAggregatorsForCustomField.includes(aggregator)) {
39495
- isValid = false;
39496
- break;
39497
- }
39498
- return {
39499
- /**
39500
- * Get the id of the measure, as it is stored in the pivot formula
39501
- */
39502
- id: measure.id,
39503
- /**
39504
- * Display name of the measure
39505
- * e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
39506
- */
39507
- get displayName() {
39508
- return measure.userDefinedName ?? field?.string ?? measure.fieldName;
39509
- },
39510
- userDefinedName: measure.userDefinedName,
39511
- /**
39512
- * Get the name of the field of the measure
39513
- */
39514
- fieldName,
39515
- /**
39516
- * Get the aggregator of the measure
39517
- */
39518
- aggregator,
39519
- /**
39520
- * Get the type of the measure field
39521
- * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
39522
- */
39523
- type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
39524
- isValid,
39525
- isHidden: measure.isHidden,
39526
- format: measure.format,
39527
- computedBy: measure.computedBy,
39528
- display: measure.display
39529
- };
39530
- }
39531
- createPivotDimension(fields, dimension) {
39532
- const field = fields[dimension.fieldName];
39533
- const type = field?.type ?? "integer";
39534
- const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
39535
- return {
39536
- /**
39537
- * Get the display name of the dimension
39538
- * e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
39539
- */
39540
- displayName: field?.string ?? dimension.fieldName,
39541
- /**
39542
- * Get the name of the dimension, as it is stored in the pivot formula
39543
- * e.g. "stage_id", "create_date:month"
39544
- */
39545
- nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
39546
- /**
39547
- * Get the name of the field of the dimension
39548
- * e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
39549
- */
39550
- fieldName: dimension.fieldName,
39551
- /**
39552
- * Get the aggregate operator of the dimension
39553
- * e.g. "stage_id" -> undefined, "create_date:month" -> "month"
39554
- */
39555
- granularity,
39556
- /**
39557
- * Get the type of the field of the dimension
39558
- * e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
39559
- */
39560
- type: field?.isCustomField ? "custom" : type,
39561
- order: dimension.order,
39562
- isValid: !!field,
39563
- isCustomField: !!field?.isCustomField,
39564
- customGroups: field?.customGroups,
39565
- parentField: field?.parentField
39566
- };
39567
- }
39568
- createPivotFilter(fields, filter) {
39569
- const field = fields[filter.fieldName];
39570
- return {
39571
- ...filter,
39572
- displayName: field?.name ?? filter.fieldName,
39573
- isValid: !!field
39574
- };
39575
- }
39576
- };
39577
-
39578
- //#endregion
39579
- //#region src/helpers/pivot/spreadsheet_pivot/runtime_definition_spreadsheet_pivot.ts
39580
- var SpreadsheetPivotRuntimeDefinition = class extends PivotRuntimeDefinition {
39581
- range;
39582
- constructor(definition, fields, getters) {
39583
- super(definition, fields);
39584
- if (definition.dataSet) {
39585
- const { sheetId, zone } = definition.dataSet;
39586
- this.range = getters.getRangeFromZone(sheetId, zone);
39587
- }
39588
- }
39589
- };
39590
-
39591
39314
  //#endregion
39592
39315
  //#region src/helpers/filter_helpers.ts
39593
39316
  /**
@@ -41139,10 +40862,6 @@ set(value) {
41139
40862
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_spreadsheet_side_panel/pivot_spreadsheet_side_panel.ts
41140
40863
  var PivotSpreadsheetSidePanel = class extends Component {
41141
40864
  static template = "o-spreadsheet-PivotSpreadsheetSidePanel";
41142
- static props = {
41143
- pivotId: String,
41144
- onCloseSidePanel: Function
41145
- };
41146
40865
  static components = {
41147
40866
  PivotLayoutConfigurator,
41148
40867
  Section,
@@ -41153,6 +40872,10 @@ set(value) {
41153
40872
  AddDimensionButton,
41154
40873
  PivotFilterEditor
41155
40874
  };
40875
+ props = (0, _odoo_owl.props)({
40876
+ pivotId: types$6.UID(),
40877
+ onCloseSidePanel: types$6.function([])
40878
+ });
41156
40879
  store;
41157
40880
  state;
41158
40881
  pivotSidePanelRef = (0, _odoo_owl.signal)(null);
@@ -42387,23 +42110,14 @@ set(value) {
42387
42110
  var TableStylePreview = class extends Component {
42388
42111
  static template = "o-spreadsheet-TableStylePreview";
42389
42112
  static components = { MenuPopover };
42390
- static props = {
42391
- tableConfig: Object,
42392
- tableStyle: Object,
42393
- type: String,
42394
- styleId: {
42395
- type: String,
42396
- optional: true
42397
- },
42398
- selected: {
42399
- type: Boolean,
42400
- optional: true
42401
- },
42402
- onClick: {
42403
- type: Function,
42404
- optional: true
42405
- }
42406
- };
42113
+ props = (0, _odoo_owl.props)({
42114
+ tableConfig: types$6.TableConfig(),
42115
+ tableStyle: types$6.TableStyle(),
42116
+ type: types$6.or([types$6.literal("table"), types$6.literal("pivot")]),
42117
+ "styleId?": types$6.string(),
42118
+ "selected?": types$6.boolean(),
42119
+ "onClick?": types$6.function([])
42120
+ });
42407
42121
  canvasRef = (0, _odoo_owl.signal)(null);
42408
42122
  menu = (0, _odoo_owl.proxy)({
42409
42123
  isOpen: false,
@@ -42489,21 +42203,15 @@ set(value) {
42489
42203
  Popover,
42490
42204
  TableStylePreview
42491
42205
  };
42492
- static props = {
42493
- tableConfig: Object,
42494
- popoverProps: {
42495
- type: Object,
42496
- optional: true
42497
- },
42498
- closePopover: Function,
42499
- onStylePicked: Function,
42500
- selectedStyleId: {
42501
- type: String,
42502
- optional: true
42503
- },
42504
- tableStyles: Object,
42505
- type: String
42506
- };
42206
+ props = (0, _odoo_owl.props)({
42207
+ tableConfig: types$6.object({}),
42208
+ "popoverProps?": types$6.object({}),
42209
+ closePopover: types$6.function([]),
42210
+ onStylePicked: types$6.function([types$6.string()]),
42211
+ "selectedStyleId?": types$6.string(),
42212
+ tableStyles: types$6.RecordOf(),
42213
+ type: types$6.or([types$6.literal("table"), types$6.literal("pivot")])
42214
+ });
42507
42215
  tableStyleListRef = (0, _odoo_owl.signal)(null);
42508
42216
  state = (0, _odoo_owl.proxy)({ selectedCategory: this.initialSelectedCategory });
42509
42217
  setup() {
@@ -42543,12 +42251,12 @@ set(value) {
42543
42251
  TableStylesPopover,
42544
42252
  TableStylePreview
42545
42253
  };
42546
- static props = {
42547
- tableConfig: Object,
42548
- onStylePicked: Function,
42549
- tableStyles: Object,
42550
- type: String
42551
- };
42254
+ props = (0, _odoo_owl.props)({
42255
+ tableConfig: types$6.TableConfig(),
42256
+ onStylePicked: types$6.function([types$6.string()]),
42257
+ tableStyles: types$6.RecordOf(),
42258
+ type: types$6.or([types$6.literal("table"), types$6.literal("pivot")])
42259
+ });
42552
42260
  state = (0, _odoo_owl.proxy)({ popoverProps: void 0 });
42553
42261
  getDisplayedTableStyles() {
42554
42262
  const allStyles = this.props.tableStyles;
@@ -42589,13 +42297,13 @@ set(value) {
42589
42297
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_design_panel/pivot_design_panel.ts
42590
42298
  var PivotDesignPanel = class extends Component {
42591
42299
  static template = "o-spreadsheet-PivotDesignPanel";
42592
- static props = { pivotId: String };
42593
42300
  static components = {
42594
42301
  Section,
42595
42302
  Checkbox,
42596
42303
  NumberInput,
42597
42304
  TableStylePicker
42598
42305
  };
42306
+ props = (0, _odoo_owl.props)({ pivotId: types$6.UID() });
42599
42307
  store;
42600
42308
  setup() {
42601
42309
  this.store = useLocalStore(PivotSidePanelStore, this.props.pivotId, "neverDefer");
@@ -42644,20 +42352,16 @@ set(value) {
42644
42352
  //#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel.ts
42645
42353
  var PivotSidePanel = class extends Component {
42646
42354
  static template = "o-spreadsheet-PivotSidePanel";
42647
- static props = {
42648
- pivotId: String,
42649
- onCloseSidePanel: Function,
42650
- openTab: {
42651
- type: String,
42652
- optional: true
42653
- }
42654
- };
42655
- static defaultProps = { openTab: "configuration" };
42656
42355
  static components = {
42657
42356
  PivotLayoutConfigurator,
42658
42357
  Section,
42659
42358
  PivotDesignPanel
42660
42359
  };
42360
+ props = (0, _odoo_owl.props)({
42361
+ pivotId: types$6.UID(),
42362
+ onCloseSidePanel: types$6.function([]),
42363
+ "openTab?": types$6.or([types$6.literal("configuration"), types$6.literal("design")])
42364
+ }, { openTab: "configuration" });
42661
42365
  state = (0, _odoo_owl.proxy)({ panel: this.props.openTab || "configuration" });
42662
42366
  setup() {
42663
42367
  useHighlights(this);
@@ -42687,7 +42391,7 @@ set(value) {
42687
42391
  Section,
42688
42392
  Checkbox
42689
42393
  };
42690
- static props = { onCloseSidePanel: Function };
42394
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
42691
42395
  state = (0, _odoo_owl.proxy)({
42692
42396
  hasHeader: false,
42693
42397
  columns: {}
@@ -42771,7 +42475,7 @@ set(value) {
42771
42475
  BadgeSelection,
42772
42476
  Select
42773
42477
  };
42774
- static props = { onCloseSidePanel: Function };
42478
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
42775
42479
  loadedLocales = [];
42776
42480
  setup() {
42777
42481
  (0, _odoo_owl.onWillStart)(() => this.loadLocales());
@@ -42889,7 +42593,7 @@ set(value) {
42889
42593
  Checkbox,
42890
42594
  Select
42891
42595
  };
42892
- static props = { onCloseSidePanel: Function };
42596
+ props = (0, _odoo_owl.props)({ onCloseSidePanel: types$6.function([]) });
42893
42597
  state = (0, _odoo_owl.proxy)({
42894
42598
  separatorValue: "auto",
42895
42599
  addNewColumns: false,
@@ -42965,10 +42669,10 @@ set(value) {
42965
42669
  Section,
42966
42670
  NumberInput
42967
42671
  };
42968
- static props = {
42969
- onCloseSidePanel: Function,
42970
- table: Object
42971
- };
42672
+ props = (0, _odoo_owl.props)({
42673
+ onCloseSidePanel: types$6.function([]),
42674
+ table: types$6.CoreTable()
42675
+ });
42972
42676
  state;
42973
42677
  setup() {
42974
42678
  const sheetId = this.env.model.getters.getActiveSheetId();
@@ -43125,17 +42829,11 @@ set(value) {
43125
42829
  RoundColorPicker,
43126
42830
  TableStylePreview
43127
42831
  };
43128
- static props = {
43129
- onCloseSidePanel: Function,
43130
- onStylePicked: {
43131
- type: Function,
43132
- optional: true
43133
- },
43134
- styleId: {
43135
- type: String,
43136
- optional: true
43137
- }
43138
- };
42832
+ props = (0, _odoo_owl.props)({
42833
+ onCloseSidePanel: types$6.function([]),
42834
+ "onStylePicked?": types$6.function([types$6.string()]),
42835
+ "styleId?": types$6.string()
42836
+ });
43139
42837
  state = (0, _odoo_owl.proxy)(this.getInitialState());
43140
42838
  setup() {
43141
42839
  useExternalListener(window, "click", () => this.state.pickerOpened = false);
@@ -45465,10 +45163,10 @@ set(value) {
45465
45163
  //#region src/components/autofill/autofill.ts
45466
45164
  var Autofill = class extends Component {
45467
45165
  static template = "o-spreadsheet-Autofill";
45468
- static props = {
45469
- position: Object,
45470
- isVisible: Boolean
45471
- };
45166
+ props = (0, _odoo_owl.props)({
45167
+ position: types$6.DOMCoordinates(),
45168
+ isVisible: types$6.boolean()
45169
+ });
45472
45170
  state = (0, _odoo_owl.proxy)({
45473
45171
  position: {
45474
45172
  x: 0,
@@ -45543,7 +45241,7 @@ set(value) {
45543
45241
  }
45544
45242
  };
45545
45243
  var TooltipComponent = class extends Component {
45546
- static props = { content: String };
45244
+ props = (0, _odoo_owl.props)({ content: types$6.string() });
45547
45245
  static template = _odoo_owl.xml`
45548
45246
  <div t-out="this.props.content"/>
45549
45247
  `;
@@ -45553,13 +45251,13 @@ set(value) {
45553
45251
  //#region src/components/collaborative_client_tag/collaborative_client_tag.ts
45554
45252
  var ClientTag = class extends Component {
45555
45253
  static template = "o-spreadsheet-ClientTag";
45556
- static props = {
45557
- active: Boolean,
45558
- name: String,
45559
- color: String,
45560
- col: Number,
45561
- row: Number
45562
- };
45254
+ props = (0, _odoo_owl.props)({
45255
+ active: types$6.boolean(),
45256
+ name: types$6.string(),
45257
+ color: types$6.Color(),
45258
+ col: types$6.HeaderIndex(),
45259
+ row: types$6.HeaderIndex()
45260
+ });
45563
45261
  get tagStyle() {
45564
45262
  const { col, row, color } = this.props;
45565
45263
  const { height } = this.env.model.getters.getSheetViewDimensionWithHeaders();
@@ -46133,11 +45831,11 @@ set(value) {
46133
45831
  */
46134
45832
  var GridComposer = class extends Component {
46135
45833
  static template = "o-spreadsheet-GridComposer";
46136
- static props = {
46137
- gridDims: Object,
46138
- onInputContextMenu: Function
46139
- };
46140
45834
  static components = { Composer };
45835
+ props = (0, _odoo_owl.props)({
45836
+ gridDims: types$6.DOMDimension(),
45837
+ onInputContextMenu: types$6.function([types$6.instanceOf(MouseEvent)])
45838
+ });
46141
45839
  rect = this.defaultRect;
46142
45840
  isEditing = false;
46143
45841
  isCellReferenceVisible = false;
@@ -46597,7 +46295,6 @@ set(value) {
46597
46295
  */
46598
46296
  var FiguresContainer = class extends Component {
46599
46297
  static template = "o-spreadsheet-FiguresContainer";
46600
- static props = {};
46601
46298
  static components = { FigureComponent };
46602
46299
  dnd = (0, _odoo_owl.proxy)({
46603
46300
  draggedFigure: void 0,
@@ -46948,7 +46645,6 @@ set(value) {
46948
46645
  //#region src/components/grid_add_rows_footer/grid_add_rows_footer.ts
46949
46646
  var GridAddRowsFooter = class extends Component {
46950
46647
  static template = "o-spreadsheet-GridAddRowsFooter";
46951
- static props = {};
46952
46648
  static components = { ValidationMessages };
46953
46649
  DOMFocusableElementStore;
46954
46650
  inputRef = (0, _odoo_owl.signal)(null);
@@ -47256,40 +46952,32 @@ set(value) {
47256
46952
  }
47257
46953
  var GridOverlay = class extends Component {
47258
46954
  static template = "o-spreadsheet-GridOverlay";
47259
- static props = {
47260
- onCellDoubleClicked: {
47261
- type: Function,
47262
- optional: true
47263
- },
47264
- onCellClicked: {
47265
- type: Function,
47266
- optional: true
47267
- },
47268
- onCellRightClicked: {
47269
- type: Function,
47270
- optional: true
47271
- },
47272
- onGridResized: {
47273
- type: Function,
47274
- optional: true
47275
- },
47276
- onGridMoved: Function,
47277
- gridOverlayDimensions: String,
47278
- slots: {
47279
- type: Object,
47280
- optional: true
47281
- }
47282
- };
47283
46955
  static components = {
47284
46956
  FiguresContainer,
47285
46957
  GridAddRowsFooter
47286
46958
  };
47287
- static defaultProps = {
46959
+ props = (0, _odoo_owl.props)({
46960
+ "onCellDoubleClicked?": types$6.function([types$6.HeaderIndex(), types$6.HeaderIndex()]),
46961
+ "onCellClicked?": types$6.function([
46962
+ types$6.HeaderIndex(),
46963
+ types$6.HeaderIndex(),
46964
+ types$6.GridClickModifiers(),
46965
+ types$6.ZoomedMouseEvent()
46966
+ ]),
46967
+ "onCellRightClicked?": types$6.function([
46968
+ types$6.HeaderIndex(),
46969
+ types$6.HeaderIndex(),
46970
+ types$6.DOMCoordinates()
46971
+ ]),
46972
+ "onGridResized?": types$6.function([]),
46973
+ onGridMoved: types$6.function([types$6.Pixel(), types$6.Pixel()]),
46974
+ gridOverlayDimensions: types$6.string()
46975
+ }, {
47288
46976
  onCellDoubleClicked: () => {},
47289
46977
  onCellClicked: () => {},
47290
46978
  onCellRightClicked: () => {},
47291
46979
  onGridResized: () => {}
47292
- };
46980
+ });
47293
46981
  gridOverlayRef = (0, _odoo_owl.signal)(null);
47294
46982
  cellPopovers;
47295
46983
  paintFormatStore;
@@ -47399,12 +47087,12 @@ set(value) {
47399
47087
  //#region src/components/grid_popover/grid_popover.ts
47400
47088
  var GridPopover = class extends Component {
47401
47089
  static template = "o-spreadsheet-GridPopover";
47402
- static props = {
47403
- onClosePopover: Function,
47404
- onMouseWheel: Function,
47405
- gridRect: Object
47406
- };
47407
47090
  static components = { Popover };
47091
+ props = (0, _odoo_owl.props)({
47092
+ onClosePopover: types$6.function([]),
47093
+ onMouseWheel: types$6.function([types$6.instanceOf(WheelEvent)]),
47094
+ gridRect: types$6.Rect()
47095
+ });
47408
47096
  cellPopovers;
47409
47097
  setup() {
47410
47098
  this.cellPopovers = useStore(CellPopoverStore);
@@ -47428,15 +47116,14 @@ set(value) {
47428
47116
  //#region src/components/headers_overlay/unhide_headers.ts
47429
47117
  var UnhideRowHeaders = class extends Component {
47430
47118
  static template = "o-spreadsheet-UnhideRowHeaders";
47431
- static props = {
47432
- headersGroups: Array,
47433
- headerRange: Object,
47434
- offset: {
47435
- type: Number,
47436
- optional: true
47437
- }
47438
- };
47439
- static defaultProps = { offset: 0 };
47119
+ props = (0, _odoo_owl.props)({
47120
+ headersGroups: types$6.array(),
47121
+ headerRange: types$6.object({
47122
+ start: types$6.HeaderIndex(),
47123
+ end: types$6.HeaderIndex()
47124
+ }),
47125
+ "offset?": types$6.number()
47126
+ }, { offset: 0 });
47440
47127
  get sheetId() {
47441
47128
  return this.env.model.getters.getActiveSheetId();
47442
47129
  }
@@ -47472,15 +47159,14 @@ set(value) {
47472
47159
  };
47473
47160
  var UnhideColumnHeaders = class extends Component {
47474
47161
  static template = "o-spreadsheet-UnhideColumnHeaders";
47475
- static props = {
47476
- headersGroups: Array,
47477
- headerRange: Object,
47478
- offset: {
47479
- type: Number,
47480
- optional: true
47481
- }
47482
- };
47483
- static defaultProps = { offset: 0 };
47162
+ props = (0, _odoo_owl.props)({
47163
+ headersGroups: types$6.array(),
47164
+ headerRange: types$6.object({
47165
+ start: types$6.HeaderIndex(),
47166
+ end: types$6.HeaderIndex()
47167
+ }),
47168
+ "offset?": types$6.number()
47169
+ }, { offset: 0 });
47484
47170
  get sheetId() {
47485
47171
  return this.env.model.getters.getActiveSheetId();
47486
47172
  }
@@ -47511,8 +47197,13 @@ set(value) {
47511
47197
 
47512
47198
  //#endregion
47513
47199
  //#region src/components/headers_overlay/headers_overlay.ts
47200
+ const resizerPropsDefinition = { onOpenContextMenu: types$6.function([
47201
+ types$6.ContextMenuType(),
47202
+ types$6.Pixel(),
47203
+ types$6.Pixel()
47204
+ ]) };
47514
47205
  var AbstractResizer = class extends Component {
47515
- static props = { onOpenContextMenu: Function };
47206
+ props = (0, _odoo_owl.props)(resizerPropsDefinition);
47516
47207
  composerFocusStore;
47517
47208
  PADDING = 0;
47518
47209
  MAX_SIZE_MARGIN = 0;
@@ -47710,7 +47401,6 @@ set(value) {
47710
47401
  }
47711
47402
  };
47712
47403
  var ColResizer = class extends AbstractResizer {
47713
- static props = { onOpenContextMenu: Function };
47714
47404
  static template = "o-spreadsheet-ColResizer";
47715
47405
  static components = { UnhideColumnHeaders };
47716
47406
  colResizerRef = (0, _odoo_owl.signal)(null);
@@ -47845,7 +47535,6 @@ set(value) {
47845
47535
  }
47846
47536
  };
47847
47537
  var RowResizer = class extends AbstractResizer {
47848
- static props = { onOpenContextMenu: Function };
47849
47538
  static template = "o-spreadsheet-RowResizer";
47850
47539
  static components = { UnhideRowHeaders };
47851
47540
  rowResizerRef = (0, _odoo_owl.signal)(null);
@@ -47976,8 +47665,8 @@ set(value) {
47976
47665
  }
47977
47666
  };
47978
47667
  var HeadersOverlay = class extends Component {
47979
- static props = { onOpenContextMenu: Function };
47980
47668
  static template = "o-spreadsheet-HeadersOverlay";
47669
+ props = (0, _odoo_owl.props)(resizerPropsDefinition);
47981
47670
  static components = {
47982
47671
  ColResizer,
47983
47672
  RowResizer
@@ -48965,12 +48654,17 @@ set(value) {
48965
48654
  //#region src/components/highlight/border/border.ts
48966
48655
  var Border = class extends Component {
48967
48656
  static template = "o-spreadsheet-Border";
48968
- static props = {
48969
- zone: Object,
48970
- orientation: String,
48971
- isMoving: Boolean,
48972
- onMoveHighlight: Function
48973
- };
48657
+ props = (0, _odoo_owl.props)({
48658
+ zone: types$6.Zone(),
48659
+ orientation: types$6.or([
48660
+ types$6.literal("n"),
48661
+ types$6.literal("s"),
48662
+ types$6.literal("w"),
48663
+ types$6.literal("e")
48664
+ ]),
48665
+ isMoving: types$6.boolean(),
48666
+ onMoveHighlight: types$6.function([types$6.instanceOf(PointerEvent)])
48667
+ });
48974
48668
  get style() {
48975
48669
  const isTop = [
48976
48670
  "n",
@@ -49013,13 +48707,26 @@ set(value) {
49013
48707
  const MOBILE_HANDLER_WIDTH = 40;
49014
48708
  var Corner = class extends Component {
49015
48709
  static template = "o-spreadsheet-Corner";
49016
- static props = {
49017
- zone: Object,
49018
- color: String,
49019
- orientation: String,
49020
- isResizing: Boolean,
49021
- onResizeHighlight: Function
49022
- };
48710
+ props = (0, _odoo_owl.props)({
48711
+ zone: types$6.Zone(),
48712
+ color: types$6.Color(),
48713
+ orientation: types$6.or([
48714
+ types$6.literal("nw"),
48715
+ types$6.literal("ne"),
48716
+ types$6.literal("sw"),
48717
+ types$6.literal("se"),
48718
+ types$6.literal("n"),
48719
+ types$6.literal("s"),
48720
+ types$6.literal("e"),
48721
+ types$6.literal("w")
48722
+ ]),
48723
+ isResizing: types$6.boolean(),
48724
+ onResizeHighlight: types$6.function([
48725
+ types$6.instanceOf(PointerEvent),
48726
+ types$6.ResizeDirection(),
48727
+ types$6.ResizeDirection()
48728
+ ])
48729
+ });
49023
48730
  dirX;
49024
48731
  dirY;
49025
48732
  setup() {
@@ -49074,14 +48781,14 @@ set(value) {
49074
48781
  //#region src/components/highlight/highlight/highlight.ts
49075
48782
  var Highlight = class extends Component {
49076
48783
  static template = "o-spreadsheet-Highlight";
49077
- static props = {
49078
- range: Object,
49079
- color: String
49080
- };
49081
48784
  static components = {
49082
48785
  Corner,
49083
48786
  Border
49084
48787
  };
48788
+ props = (0, _odoo_owl.props)({
48789
+ range: types$6.Range(),
48790
+ color: types$6.Color()
48791
+ });
49085
48792
  highlightState = (0, _odoo_owl.proxy)({ shiftingMode: "none" });
49086
48793
  dragNDropGrid = useDragAndDropBeyondTheViewport(this.env);
49087
48794
  get cornerOrientations() {
@@ -49222,20 +48929,20 @@ set(value) {
49222
48929
  <div t-att-style="this.sizeCss"/>
49223
48930
  </div>
49224
48931
  `;
48932
+ props = (0, _odoo_owl.props)({
48933
+ "width?": types$6.Pixel(),
48934
+ "height?": types$6.Pixel(),
48935
+ direction: types$6.customValidator(types$6.string(), (direction) => ["horizontal", "vertical"].includes(direction)),
48936
+ position: types$6.CSSProperties(),
48937
+ offset: types$6.Pixel(),
48938
+ onScroll: types$6.function([types$6.Pixel()])
48939
+ }, {
48940
+ width: 1,
48941
+ height: 1
48942
+ });
49225
48943
  scrollbarRef = (0, _odoo_owl.signal)(null);
49226
48944
  scrollbar;
49227
48945
  setup() {
49228
- this.props = (0, _odoo_owl.props)({
49229
- "width?": _odoo_owl.types.number(),
49230
- "height?": _odoo_owl.types.number(),
49231
- direction: _odoo_owl.types.customValidator(_odoo_owl.types.string(), (direction) => ["horizontal", "vertical"].includes(direction)),
49232
- position: _odoo_owl.types.object({}),
49233
- offset: _odoo_owl.types.number(),
49234
- onScroll: _odoo_owl.types.function()
49235
- }, {
49236
- width: 1,
49237
- height: 1
49238
- });
49239
48946
  this.scrollbar = new ScrollBar$1(this.scrollbarRef(), this.props.direction);
49240
48947
  (0, _odoo_owl.onMounted)(() => {
49241
48948
  this.scrollbar.el = this.scrollbarRef();
@@ -49261,10 +48968,6 @@ set(value) {
49261
48968
  //#endregion
49262
48969
  //#region src/components/scrollbar/scrollbar_horizontal.ts
49263
48970
  var HorizontalScrollBar = class extends Component {
49264
- static props = { leftOffset: {
49265
- type: Number,
49266
- optional: true
49267
- } };
49268
48971
  static components = { ScrollBar };
49269
48972
  static template = _odoo_owl.xml`
49270
48973
  <ScrollBar
@@ -49275,7 +48978,7 @@ set(value) {
49275
48978
  direction="'horizontal'"
49276
48979
  onScroll.bind="this.onScroll"
49277
48980
  />`;
49278
- static defaultProps = { leftOffset: 0 };
48981
+ props = (0, _odoo_owl.props)({ "leftOffset?": types$6.number() }, { leftOffset: 0 });
49279
48982
  get offset() {
49280
48983
  return this.env.model.getters.getActiveSheetScrollInfo().scrollX;
49281
48984
  }
@@ -49308,10 +49011,6 @@ set(value) {
49308
49011
  //#endregion
49309
49012
  //#region src/components/scrollbar/scrollbar_vertical.ts
49310
49013
  var VerticalScrollBar = class extends Component {
49311
- static props = { topOffset: {
49312
- type: Number,
49313
- optional: true
49314
- } };
49315
49014
  static components = { ScrollBar };
49316
49015
  static template = _odoo_owl.xml`
49317
49016
  <ScrollBar
@@ -49322,7 +49021,7 @@ set(value) {
49322
49021
  direction="'vertical'"
49323
49022
  onScroll.bind="(offset) => this.onScroll(offset)"
49324
49023
  />`;
49325
- static defaultProps = { topOffset: 0 };
49024
+ props = (0, _odoo_owl.props)({ "topOffset?": types$6.number() }, { topOffset: 0 });
49326
49025
  get offset() {
49327
49026
  return this.env.model.getters.getActiveSheetScrollInfo().scrollY;
49328
49027
  }
@@ -49356,7 +49055,6 @@ set(value) {
49356
49055
  //#region src/components/selection/selection.ts
49357
49056
  var Selection = class extends Component {
49358
49057
  static template = "o-spreadsheet-Selection";
49359
- static props = {};
49360
49058
  static components = { Highlight };
49361
49059
  get highlightProps() {
49362
49060
  const sheetId = this.env.model.getters.getActiveSheetId();
@@ -49374,7 +49072,7 @@ set(value) {
49374
49072
  const COLOR = "#777";
49375
49073
  var TableResizer = class extends Component {
49376
49074
  static template = "o-spreadsheet-TableResizer";
49377
- static props = { table: Object };
49075
+ props = (0, _odoo_owl.props)({ table: types$6.Table() });
49378
49076
  state = (0, _odoo_owl.proxy)({ highlightZone: void 0 });
49379
49077
  dragNDropGrid = useDragAndDropBeyondTheViewport(this.env);
49380
49078
  setup() {
@@ -49447,10 +49145,6 @@ set(value) {
49447
49145
  };
49448
49146
  var Grid = class extends Component {
49449
49147
  static template = "o-spreadsheet-Grid";
49450
- static props = {
49451
- exposeFocus: Function,
49452
- getGridSize: Function
49453
- };
49454
49148
  static components = {
49455
49149
  GridComposer,
49456
49150
  GridOverlay,
@@ -49466,6 +49160,10 @@ set(value) {
49466
49160
  TableResizer,
49467
49161
  Selection
49468
49162
  };
49163
+ props = (0, _odoo_owl.props)({
49164
+ exposeFocus: types$6.function([types$6.function([])]),
49165
+ getGridSize: types$6.function([], types$6.DOMDimension())
49166
+ });
49469
49167
  HEADER_HEIGHT = 26;
49470
49168
  HEADER_WIDTH = 48;
49471
49169
  menuState;
@@ -50105,10 +49803,10 @@ set(value) {
50105
49803
  //#region src/components/dashboard/clickable_cell_sort_icon/clickable_cell_sort_icon.ts
50106
49804
  var ClickableCellSortIcon = class extends Component {
50107
49805
  static template = "o-spreadsheet-ClickableCellSortIcon";
50108
- static props = {
50109
- position: Object,
50110
- sortDirection: String
50111
- };
49806
+ props = (0, _odoo_owl.props)({
49807
+ position: types$6.CellPosition(),
49808
+ sortDirection: types$6.or([types$6.SortDirection, types$6.literal("none")])
49809
+ });
50112
49810
  hoveredTableStore;
50113
49811
  setup() {
50114
49812
  this.hoveredTableStore = useStore(HoveredTableStore);
@@ -50141,7 +49839,6 @@ set(value) {
50141
49839
  //#region src/components/full_screen_figure/full_screen_figure.ts
50142
49840
  var FullScreenFigure = class extends Component {
50143
49841
  static template = "o-spreadsheet-FullScreenFigure";
50144
- static props = {};
50145
49842
  static components = { ChartFigure };
50146
49843
  fullScreenFigureStore;
50147
49844
  fullScreenFigureRef = (0, _odoo_owl.signal)(null);
@@ -50181,10 +49878,10 @@ set(value) {
50181
49878
  var PivotHTMLRenderer = class extends Component {
50182
49879
  static template = "o_spreadsheet.PivotHTMLRenderer";
50183
49880
  static components = { Checkbox };
50184
- static props = {
50185
- pivotId: String,
50186
- onCellClicked: Function
50187
- };
49881
+ props = (0, _odoo_owl.props)({
49882
+ pivotId: types$6.UID(),
49883
+ onCellClicked: types$6.function([types$6.string()])
49884
+ });
50188
49885
  pivot = this.env.model.getters.getPivot(this.props.pivotId);
50189
49886
  data = {
50190
49887
  columns: [],
@@ -59148,9 +58845,11 @@ set(value) {
59148
58845
  this.refreshPivot(cmd.id);
59149
58846
  break;
59150
58847
  case "ADD_PIVOT":
58848
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
59151
58849
  this.setupPivot(cmd.pivotId);
59152
58850
  break;
59153
58851
  case "DUPLICATE_PIVOT":
58852
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
59154
58853
  this.setupPivot(cmd.newPivotId);
59155
58854
  break;
59156
58855
  case "UPDATE_PIVOT":
@@ -59342,8 +59041,8 @@ set(value) {
59342
59041
  }
59343
59042
  }
59344
59043
  for (const pivotId of this.getters.getPivotIds()) {
59345
- const pivot = this.getters.getPivot(pivotId);
59346
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
59044
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
59045
+ for (const measure of pivot.measures) if (measure.computedBy) {
59347
59046
  const { sheetId } = measure.computedBy;
59348
59047
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
59349
59048
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -60719,7 +60418,8 @@ set(value) {
60719
60418
  "REMOVE_TABLE",
60720
60419
  "RESIZE_TABLE",
60721
60420
  "CREATE_TABLE_STYLE",
60722
- "REMOVE_TABLE_STYLE"
60421
+ "REMOVE_TABLE_STYLE",
60422
+ "DELETE_CONTENT"
60723
60423
  ]);
60724
60424
  function doesCommandInvalidatesTableStyle(cmd) {
60725
60425
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -64522,7 +64222,7 @@ set(value) {
64522
64222
  if (this.getters.getFigure(figureSheetId, figureId).tag === "image") innerHTML = await this.craftImageHTML(figureId);
64523
64223
  else innerHTML = " ";
64524
64224
  } else innerHTML = " ";
64525
- else if (cells.length === 1 && cells[0].length === 1) innerHTML = `${this.getters.getCellText(cells[0][0].position)}`;
64225
+ else if (cells.length === 1 && cells[0].length === 1) innerHTML = xmlEscape(`${this.getters.getCellText(cells[0][0].position)}`);
64526
64226
  else if (!cells[0][0]) return "";
64527
64227
  else {
64528
64228
  let htmlTable = `<table border="1" style="border-collapse:collapse">`;
@@ -67879,20 +67579,22 @@ set(value) {
67879
67579
  ];
67880
67580
  var RippleEffect = class extends Component {
67881
67581
  static template = "o-spreadsheet-RippleEffect";
67882
- static props = {
67883
- x: String,
67884
- y: String,
67885
- color: String,
67886
- opacity: Number,
67887
- duration: Number,
67888
- width: Number,
67889
- height: Number,
67890
- offsetY: Number,
67891
- offsetX: Number,
67892
- allowOverflow: Boolean,
67893
- onAnimationEnd: Function,
67894
- style: String
67895
- };
67582
+ props = (0, _odoo_owl.props)({
67583
+ x: _odoo_owl.types.string(),
67584
+ y: _odoo_owl.types.string(),
67585
+ color: _odoo_owl.types.string(),
67586
+ opacity: _odoo_owl.types.number(),
67587
+ duration: _odoo_owl.types.number(),
67588
+ /** Width of the ripple. Defaults to the width of the element the ripple is on (without margins). */
67589
+ width: _odoo_owl.types.number(),
67590
+ /** Height of the ripple. Defaults to the height of the element the ripple is on (without margins). */
67591
+ height: _odoo_owl.types.number(),
67592
+ offsetY: _odoo_owl.types.number(),
67593
+ offsetX: _odoo_owl.types.number(),
67594
+ allowOverflow: _odoo_owl.types.boolean(),
67595
+ onAnimationEnd: _odoo_owl.types.function(),
67596
+ style: _odoo_owl.types.string()
67597
+ });
67896
67598
  rippleRef = (0, _odoo_owl.signal)(null);
67897
67599
  setup() {
67898
67600
  let animation = void 0;
@@ -67929,66 +67631,31 @@ set(value) {
67929
67631
  };
67930
67632
  var Ripple = class extends Component {
67931
67633
  static template = "o-spreadsheet-Ripple";
67932
- static props = {
67933
- color: {
67934
- type: String,
67935
- optional: true
67936
- },
67937
- opacity: {
67938
- type: Number,
67939
- optional: true
67940
- },
67941
- duration: {
67942
- type: Number,
67943
- optional: true
67944
- },
67945
- ignoreClickPosition: {
67946
- type: Boolean,
67947
- optional: true
67948
- },
67949
- width: {
67950
- type: Number,
67951
- optional: true
67952
- },
67953
- height: {
67954
- type: Number,
67955
- optional: true
67956
- },
67957
- offsetY: {
67958
- type: Number,
67959
- optional: true
67960
- },
67961
- offsetX: {
67962
- type: Number,
67963
- optional: true
67964
- },
67965
- allowOverflow: {
67966
- type: Boolean,
67967
- optional: true
67968
- },
67969
- enabled: {
67970
- type: Boolean,
67971
- optional: true
67972
- },
67973
- onAnimationEnd: {
67974
- type: Function,
67975
- optional: true
67976
- },
67977
- slots: Object,
67978
- class: {
67979
- type: String,
67980
- optional: true
67981
- }
67982
- };
67983
67634
  static components = { RippleEffect };
67984
- static defaultProps = {
67635
+ props = (0, _odoo_owl.props)({
67636
+ "color?": _odoo_owl.types.string(),
67637
+ "opacity?": _odoo_owl.types.number(),
67638
+ "duration?": _odoo_owl.types.number(),
67639
+ /** If true, the ripple will play from the element center instead of the position of the click */
67640
+ "ignoreClickPosition?": _odoo_owl.types.boolean(),
67641
+ /** Width of the ripple. Defaults to the width of the element the ripple is on (without margins). */
67642
+ "width?": _odoo_owl.types.number(),
67643
+ /** Height of the ripple. Defaults to the height of the element the ripple is on (without margins). */
67644
+ "height?": _odoo_owl.types.number(),
67645
+ "offsetY?": _odoo_owl.types.number(),
67646
+ "offsetX?": _odoo_owl.types.number(),
67647
+ "allowOverflow?": _odoo_owl.types.boolean(),
67648
+ "enabled?": _odoo_owl.types.boolean(),
67649
+ "onAnimationEnd?": _odoo_owl.types.function(),
67650
+ "class?": _odoo_owl.types.string()
67651
+ }, {
67985
67652
  color: "#aaaaaa",
67986
67653
  opacity: .4,
67987
67654
  duration: 800,
67988
67655
  enabled: true,
67989
67656
  onAnimationEnd: () => {},
67990
67657
  class: ""
67991
- };
67658
+ });
67992
67659
  childContainerRef = (0, _odoo_owl.signal)(null);
67993
67660
  state = (0, _odoo_owl.proxy)({ ripples: [] });
67994
67661
  currentId = 1;
@@ -68236,26 +67903,19 @@ set(value) {
68236
67903
  };
68237
67904
  var BottomBarSheet = class extends Component {
68238
67905
  static template = "o-spreadsheet-BottomBarSheet";
68239
- static props = {
68240
- sheetId: String,
68241
- openContextMenu: Function,
68242
- style: {
68243
- type: String,
68244
- optional: true
68245
- },
68246
- onMouseDown: {
68247
- type: Function,
68248
- optional: true
68249
- }
68250
- };
68251
67906
  static components = {
68252
67907
  Ripple,
68253
67908
  ColorPicker
68254
67909
  };
68255
- static defaultProps = {
67910
+ props = (0, _odoo_owl.props)({
67911
+ sheetId: _odoo_owl.types.string(),
67912
+ openContextMenu: _odoo_owl.types.function([_odoo_owl.types.instanceOf(MenuItemRegistry), _odoo_owl.types.instanceOf(MouseEvent)]),
67913
+ "style?": _odoo_owl.types.string(),
67914
+ "onMouseDown?": _odoo_owl.types.function([_odoo_owl.types.instanceOf(PointerEvent)])
67915
+ }, {
68256
67916
  onMouseDown: () => {},
68257
67917
  style: ""
68258
- };
67918
+ });
68259
67919
  state = (0, _odoo_owl.proxy)({
68260
67920
  isEditing: false,
68261
67921
  pickerOpened: false
@@ -68516,11 +68176,15 @@ set(value) {
68516
68176
  //#region src/components/bottom_bar/bottom_bar_statistic/bottom_bar_statistic.ts
68517
68177
  var BottomBarStatistic = class extends Component {
68518
68178
  static template = "o-spreadsheet-BottomBarStatistic";
68519
- static props = {
68520
- openContextMenu: Function,
68521
- closeContextMenu: Function
68522
- };
68523
68179
  static components = { Ripple };
68180
+ props = (0, _odoo_owl.props)({
68181
+ openContextMenu: _odoo_owl.types.function([
68182
+ _odoo_owl.types.number(),
68183
+ _odoo_owl.types.number(),
68184
+ _odoo_owl.types.instanceOf(MenuItemRegistry)
68185
+ ]),
68186
+ closeContextMenu: _odoo_owl.types.function([])
68187
+ });
68524
68188
  state = (0, _odoo_owl.proxy)({ selectedStatisticFn: "" });
68525
68189
  store;
68526
68190
  setup() {
@@ -68563,7 +68227,7 @@ set(value) {
68563
68227
  const MENU_MAX_HEIGHT = 250;
68564
68228
  var BottomBar = class extends Component {
68565
68229
  static template = "o-spreadsheet-BottomBar";
68566
- static props = { onClick: Function };
68230
+ props = (0, _odoo_owl.props)({ onClick: _odoo_owl.types.function([]) });
68567
68231
  static components = {
68568
68232
  MenuPopover,
68569
68233
  Ripple,
@@ -68839,7 +68503,6 @@ set(value) {
68839
68503
  //#region src/components/dashboard/dashboard.ts
68840
68504
  var SpreadsheetDashboard = class extends Component {
68841
68505
  static template = "o-spreadsheet-SpreadsheetDashboard";
68842
- static props = { getGridSize: Function };
68843
68506
  static components = {
68844
68507
  GridOverlay,
68845
68508
  GridPopover,
@@ -68847,6 +68510,7 @@ set(value) {
68847
68510
  VerticalScrollBar,
68848
68511
  HorizontalScrollBar
68849
68512
  };
68513
+ props = (0, _odoo_owl.props)({ getGridSize: types$6.function([], types$6.DOMDimension()) });
68850
68514
  cellPopovers;
68851
68515
  onMouseWheel;
68852
68516
  canvasPosition;
@@ -68959,11 +68623,11 @@ set(value) {
68959
68623
  //#region src/components/header_group/header_group.ts
68960
68624
  var AbstractHeaderGroup = class extends Component {
68961
68625
  static template = "o-spreadsheet-HeaderGroup";
68962
- static props = {
68963
- group: Object,
68964
- layerOffset: Number,
68965
- openContextMenu: Function
68966
- };
68626
+ props = (0, _odoo_owl.props)({
68627
+ group: types$6.HeaderGroup(),
68628
+ layerOffset: types$6.number(),
68629
+ openContextMenu: types$6.function([types$6.DOMCoordinates(), types$6.ArrayOf()])
68630
+ });
68967
68631
  toggleGroup() {
68968
68632
  const sheetId = this.env.model.getters.getActiveSheetId();
68969
68633
  const { start, end } = this.props.group;
@@ -69108,15 +68772,15 @@ set(value) {
69108
68772
  //#region src/components/header_group/header_group_container.ts
69109
68773
  var HeaderGroupContainer = class extends Component {
69110
68774
  static template = "o-spreadsheet-HeaderGroupContainer";
69111
- static props = {
69112
- dimension: String,
69113
- layers: Array
69114
- };
69115
68775
  static components = {
69116
68776
  RowGroup,
69117
68777
  ColGroup,
69118
68778
  MenuPopover
69119
68779
  };
68780
+ props = (0, _odoo_owl.props)({
68781
+ dimension: types$6.Dimension(),
68782
+ layers: types$6.array()
68783
+ });
69120
68784
  menu = (0, _odoo_owl.proxy)({
69121
68785
  isOpen: false,
69122
68786
  anchorRect: null,
@@ -69189,29 +68853,17 @@ set(value) {
69189
68853
  //#region src/components/side_panel/side_panel/side_panel.ts
69190
68854
  var SidePanel = class extends Component {
69191
68855
  static template = "o-spreadsheet-SidePanel";
69192
- static props = {
69193
- panelContent: Object,
69194
- panelProps: Object,
69195
- onCloseSidePanel: Function,
69196
- onStartHandleDrag: Function,
69197
- onResetPanelSize: Function,
69198
- isPinned: {
69199
- type: Boolean,
69200
- optional: true
69201
- },
69202
- onTogglePinPanel: {
69203
- type: Function,
69204
- optional: true
69205
- },
69206
- onToggleCollapsePanel: {
69207
- type: Function,
69208
- optional: true
69209
- },
69210
- isCollapsed: {
69211
- type: Boolean,
69212
- optional: true
69213
- }
69214
- };
68856
+ props = (0, _odoo_owl.props)({
68857
+ panelContent: types$6.SidePanelContent(),
68858
+ panelProps: types$6.SidePanelComponentProps(),
68859
+ onCloseSidePanel: types$6.function([]),
68860
+ onStartHandleDrag: types$6.function([types$6.instanceOf(MouseEvent)]),
68861
+ onResetPanelSize: types$6.function([]),
68862
+ "isPinned?": types$6.boolean(),
68863
+ "onTogglePinPanel?": types$6.function([]),
68864
+ "onToggleCollapsePanel?": types$6.function([]),
68865
+ "isCollapsed?": types$6.boolean()
68866
+ });
69215
68867
  spreadsheetRect = useSpreadsheetRect();
69216
68868
  getTitle() {
69217
68869
  const panel = this.props.panelContent;
@@ -69223,7 +68875,6 @@ set(value) {
69223
68875
  //#region src/components/side_panel/side_panels/side_panels.ts
69224
68876
  var SidePanels = class extends Component {
69225
68877
  static template = "o-spreadsheet-SidePanels";
69226
- static props = {};
69227
68878
  static components = { SidePanel };
69228
68879
  sidePanelStore;
69229
68880
  spreadsheetRect = useSpreadsheetRect();
@@ -69295,8 +68946,8 @@ set(value) {
69295
68946
  //#region src/components/small_bottom_bar/ribbon_menu/ribbon_menu.ts
69296
68947
  var RibbonMenu = class extends Component {
69297
68948
  static template = "o-spreadsheet-RibbonMenu";
69298
- static props = { onClose: Function };
69299
68949
  static components = { Menu };
68950
+ props = (0, _odoo_owl.props)({ onClose: types$6.function([]) });
69300
68951
  rootItems = topbarMenuRegistry.getMenuItems();
69301
68952
  menuRef = (0, _odoo_owl.signal)(null);
69302
68953
  containerRef = (0, _odoo_owl.signal)(null);
@@ -69334,9 +68985,6 @@ set(value) {
69334
68985
  onClickMenu: this.onClickMenu.bind(this)
69335
68986
  };
69336
68987
  }
69337
- get style() {
69338
- return cssPropertiesToCss({ height: `${this.props.height}px` });
69339
- }
69340
68988
  updateShadows() {
69341
68989
  const el = this.containerRef();
69342
68990
  if (!el) return;
@@ -69370,7 +69018,7 @@ set(value) {
69370
69018
  RibbonMenu
69371
69019
  };
69372
69020
  static template = "o-spreadsheet-SmallBottomBar";
69373
- static props = { onClick: Function };
69021
+ props = (0, _odoo_owl.props)({ onClick: types$6.function([]) });
69374
69022
  composerFocusStore;
69375
69023
  composerStore;
69376
69024
  composerInterface;
@@ -69571,11 +69219,11 @@ set(value) {
69571
69219
  //#region src/components/standalone_grid_canvas/standalone_grid_canvas.ts
69572
69220
  var StandaloneGridCanvas = class extends Component {
69573
69221
  static template = "o-spreadsheet-StandaloneGridCanvas";
69574
- static props = {
69575
- sheetId: String,
69576
- zone: Object,
69577
- renderingCtx: Object
69578
- };
69222
+ props = (0, _odoo_owl.props)({
69223
+ sheetId: types$6.UID(),
69224
+ zone: types$6.Zone(),
69225
+ renderingCtx: types$6.object({})
69226
+ });
69579
69227
  canvasRef = (0, _odoo_owl.signal)(null);
69580
69228
  rendererStore;
69581
69229
  figureRendererStore;
@@ -69896,7 +69544,7 @@ set(value) {
69896
69544
  //#region src/components/spreadsheet_print/spreadsheet_print.ts
69897
69545
  var SpreadsheetPrint = class extends Component {
69898
69546
  static template = "o-spreadsheet-SpreadsheetPrint";
69899
- static props = { onExitPrintMode: Function };
69547
+ props = (0, _odoo_owl.props)({ onExitPrintMode: types$6.function([]) });
69900
69548
  static components = {
69901
69549
  StandaloneGridCanvas,
69902
69550
  Section,
@@ -69958,7 +69606,6 @@ set(value) {
69958
69606
  const COMPOSER_MAX_HEIGHT = 300;
69959
69607
  var TopBarComposer = class extends Component {
69960
69608
  static template = "o-spreadsheet-TopBarComposer";
69961
- static props = {};
69962
69609
  static components = { Composer };
69963
69610
  composerFocusStore;
69964
69611
  composerStore;
@@ -70043,7 +69690,6 @@ set(value) {
70043
69690
  //#region src/components/named_range_selector/named_range_selector.ts
70044
69691
  var NamedRangeSelector = class extends Component {
70045
69692
  static template = "o-spreadsheet-NamedRangeSelector";
70046
- static props = {};
70047
69693
  static components = {
70048
69694
  TextInput,
70049
69695
  MenuPopover
@@ -70226,36 +69872,21 @@ set(value) {
70226
69872
  ]];
70227
69873
  var BorderEditor = class extends Component {
70228
69874
  static template = "o-spreadsheet-BorderEditor";
70229
- static props = {
70230
- class: {
70231
- type: String,
70232
- optional: true
70233
- },
70234
- currentBorderColor: {
70235
- type: String,
70236
- optional: false
70237
- },
70238
- currentBorderStyle: {
70239
- type: String,
70240
- optional: false
70241
- },
70242
- currentBorderPosition: {
70243
- type: String,
70244
- optional: true
70245
- },
70246
- onBorderColorPicked: Function,
70247
- onBorderStylePicked: Function,
70248
- onBorderPositionPicked: Function,
70249
- maxHeight: {
70250
- type: Number,
70251
- optional: true
70252
- },
70253
- anchorRect: Object
70254
- };
70255
69875
  static components = {
70256
69876
  ColorPickerWidget,
70257
69877
  Popover
70258
69878
  };
69879
+ props = (0, _odoo_owl.props)({
69880
+ "class?": types$6.string(),
69881
+ currentBorderColor: types$6.Color(),
69882
+ currentBorderStyle: types$6.BorderStyle(),
69883
+ "currentBorderPosition?": types$6.BorderPosition(),
69884
+ onBorderColorPicked: types$6.function([types$6.Color()]),
69885
+ onBorderStylePicked: types$6.function([types$6.BorderStyle()]),
69886
+ onBorderPositionPicked: types$6.function([types$6.BorderPosition()]),
69887
+ "maxHeight?": types$6.Pixel(),
69888
+ anchorRect: types$6.Rect()
69889
+ });
70259
69890
  BORDER_POSITIONS = BORDER_POSITIONS;
70260
69891
  lineStyleButtonRef = (0, _odoo_owl.signal)(null);
70261
69892
  borderStyles = borderStyles;
@@ -70316,21 +69947,12 @@ set(value) {
70316
69947
  //#region src/components/border_editor/border_editor_widget.ts
70317
69948
  var BorderEditorWidget = class extends Component {
70318
69949
  static template = "o-spreadsheet-BorderEditorWidget";
70319
- static props = {
70320
- disabled: {
70321
- type: Boolean,
70322
- optional: true
70323
- },
70324
- dropdownMaxHeight: {
70325
- type: Number,
70326
- optional: true
70327
- },
70328
- class: {
70329
- type: String,
70330
- optional: true
70331
- }
70332
- };
70333
69950
  static components = { BorderEditor };
69951
+ props = (0, _odoo_owl.props)({
69952
+ "disabled?": types$6.boolean(),
69953
+ "dropdownMaxHeight?": types$6.Pixel(),
69954
+ "class?": types$6.string()
69955
+ });
70334
69956
  topBarToolStore;
70335
69957
  borderEditorButtonRef = (0, _odoo_owl.signal)(null);
70336
69958
  state = (0, _odoo_owl.proxy)({
@@ -70387,10 +70009,7 @@ set(value) {
70387
70009
  //#region src/components/paint_format_button/paint_format_button.ts
70388
70010
  var PaintFormatButton = class extends Component {
70389
70011
  static template = "o-spreadsheet-PaintFormatButton";
70390
- static props = { class: {
70391
- type: String,
70392
- optional: true
70393
- } };
70012
+ props = (0, _odoo_owl.props)({ "class?": types$6.string() });
70394
70013
  paintFormatStore;
70395
70014
  setup() {
70396
70015
  this.paintFormatStore = useStore(PaintFormatStore);
@@ -70415,10 +70034,7 @@ set(value) {
70415
70034
  TableStylesPopover,
70416
70035
  ActionButton
70417
70036
  };
70418
- static props = { class: {
70419
- type: String,
70420
- optional: true
70421
- } };
70037
+ props = (0, _odoo_owl.props)({ "class?": types$6.string() });
70422
70038
  topBarToolStore;
70423
70039
  state = (0, _odoo_owl.proxy)({ popoverProps: void 0 });
70424
70040
  setup() {
@@ -70507,13 +70123,13 @@ set(value) {
70507
70123
  //#region src/components/top_bar/color_editor/color_editor.ts
70508
70124
  var TopBarColorEditor = class extends Component {
70509
70125
  static components = { ColorPickerWidget };
70510
- static props = {
70511
- class: String,
70512
- style: String,
70513
- icon: String,
70514
- title: String
70515
- };
70516
70126
  static template = "o-spreadsheet-ColorEditor";
70127
+ props = (0, _odoo_owl.props)({
70128
+ class: types$6.string(),
70129
+ style: types$6.or([types$6.literal("textColor"), types$6.literal("fillColor")]),
70130
+ icon: types$6.string(),
70131
+ title: types$6.string()
70132
+ });
70517
70133
  topBarToolStore;
70518
70134
  state = (0, _odoo_owl.proxy)({ isOpen: false });
70519
70135
  setup() {
@@ -70543,12 +70159,12 @@ set(value) {
70543
70159
  ActionButton,
70544
70160
  Popover
70545
70161
  };
70546
- static props = {
70547
- parentAction: Object,
70548
- childActions: Array,
70549
- class: String,
70550
- childClass: String
70551
- };
70162
+ props = (0, _odoo_owl.props)({
70163
+ parentAction: types$6.ActionSpec(),
70164
+ childActions: types$6.array(types$6.ActionSpec()),
70165
+ class: types$6.string(),
70166
+ childClass: types$6.string()
70167
+ });
70552
70168
  topBarToolStore;
70553
70169
  actionRef = (0, _odoo_owl.signal)(null);
70554
70170
  setup() {
@@ -70575,8 +70191,8 @@ set(value) {
70575
70191
  //#region src/components/top_bar/font_size_editor/font_size_editor.ts
70576
70192
  var TopBarFontSizeEditor = class extends Component {
70577
70193
  static components = { FontSizeEditor };
70578
- static props = { class: String };
70579
70194
  static template = "o-spreadsheet-TopBarFontSizeEditor";
70195
+ props = (0, _odoo_owl.props)({ class: _odoo_owl.types.string() });
70580
70196
  topBarToolStore;
70581
70197
  setup() {
70582
70198
  this.topBarToolStore = useToolBarDropdownStore();
@@ -70610,7 +70226,7 @@ set(value) {
70610
70226
  MenuPopover,
70611
70227
  ActionButton
70612
70228
  };
70613
- static props = { class: String };
70229
+ props = (0, _odoo_owl.props)({ class: types$6.string() });
70614
70230
  formatNumberMenuItemSpec = formatNumberMenuItemSpec;
70615
70231
  topBarToolStore;
70616
70232
  buttonRef = (0, _odoo_owl.signal)(null);
@@ -70645,7 +70261,7 @@ set(value) {
70645
70261
  var ToolBarZoom = class extends Component {
70646
70262
  static template = "o-spreadsheet-TopBarZoom";
70647
70263
  static components = { NumberEditor };
70648
- static props = { class: String };
70264
+ props = (0, _odoo_owl.props)({ class: types$6.string() });
70649
70265
  topBarToolStore;
70650
70266
  valueList = ZOOM_VALUES;
70651
70267
  setup() {
@@ -70871,10 +70487,10 @@ set(value) {
70871
70487
  //#region src/components/top_bar/top_bar.ts
70872
70488
  var TopBar = class extends Component {
70873
70489
  static template = "o-spreadsheet-TopBar";
70874
- static props = {
70875
- onClick: Function,
70876
- dropdownMaxHeight: Number
70877
- };
70490
+ props = (0, _odoo_owl.props)({
70491
+ onClick: types$6.function([]),
70492
+ dropdownMaxHeight: types$6.Pixel()
70493
+ });
70878
70494
  static components = {
70879
70495
  MenuPopover,
70880
70496
  TopBarComposer,
@@ -71149,21 +70765,16 @@ set(value) {
71149
70765
  //#region src/components/spreadsheet/spreadsheet.ts
71150
70766
  var Spreadsheet = class extends Component {
71151
70767
  static template = "o-spreadsheet-Spreadsheet";
71152
- static props = {
71153
- model: Object,
71154
- notifyUser: {
71155
- type: Function,
71156
- optional: true
71157
- },
71158
- raiseError: {
71159
- type: Function,
71160
- optional: true
71161
- },
71162
- askConfirmation: {
71163
- type: Function,
71164
- optional: true
71165
- }
71166
- };
70768
+ props = (0, _odoo_owl.props)({
70769
+ model: types$6.Model(),
70770
+ "notifyUser?": types$6.function([types$6.InformationNotification()]),
70771
+ "raiseError?": types$6.function([types$6.string(), types$6.function([])]),
70772
+ "askConfirmation?": types$6.function([
70773
+ types$6.string(),
70774
+ types$6.function([]),
70775
+ types$6.function([])
70776
+ ])
70777
+ });
71167
70778
  static components = {
71168
70779
  TopBar,
71169
70780
  Grid,
@@ -71193,7 +70804,7 @@ set(value) {
71193
70804
  properties["color-scheme"] = this.props.model.getters.isDarkMode() ? "dark" : "light";
71194
70805
  if (this.state.printModeEnabled) properties["display"] = `block`;
71195
70806
  else {
71196
- if (this.env.isDashboard()) properties["grid-template-rows"] = `auto`;
70807
+ if (this.env.model.getters.isDashboard()) properties["grid-template-rows"] = `auto`;
71197
70808
  else properties["grid-template-rows"] = `min-content auto min-content`;
71198
70809
  properties["grid-template-columns"] = `auto ${this.sidePanel.mainPanel ? `${this.sidePanel.totalPanelSize || 350}px` : "auto"}`;
71199
70810
  }
@@ -71221,7 +70832,6 @@ set(value) {
71221
70832
  imageProvider: fileStore ? new ImageProvider(fileStore) : void 0,
71222
70833
  loadCurrencies: this.model.config.external.loadCurrencies,
71223
70834
  loadLocales: this.model.config.external.loadLocales,
71224
- isDashboard: () => this.model.getters.isDashboard(),
71225
70835
  openSidePanel: this.sidePanel.open.bind(this.sidePanel),
71226
70836
  replaceSidePanel: this.sidePanel.replace.bind(this.sidePanel),
71227
70837
  toggleSidePanel: this.sidePanel.toggle.bind(this.sidePanel),
@@ -76741,13 +76351,10 @@ set(value) {
76741
76351
  var ErrorToolTip = class extends Component {
76742
76352
  static maxSize = { maxHeight: ERROR_TOOLTIP_MAX_HEIGHT };
76743
76353
  static template = "o-spreadsheet-ErrorToolTip";
76744
- static props = {
76745
- cellPosition: Object,
76746
- onClosed: {
76747
- type: Function,
76748
- optional: true
76749
- }
76750
- };
76354
+ props = (0, _odoo_owl.props)({
76355
+ cellPosition: types$6.CellPosition(),
76356
+ "onClosed?": types$6.function([])
76357
+ });
76751
76358
  get dataValidationErrorMessage() {
76752
76359
  return this.env.model.getters.getInvalidDataValidationMessage(this.props.cellPosition);
76753
76360
  }
@@ -76823,18 +76430,15 @@ set(value) {
76823
76430
  //#region src/components/filters/filter_menu/filter_menu.ts
76824
76431
  var FilterMenu = class extends Component {
76825
76432
  static template = "o-spreadsheet-FilterMenu";
76826
- static props = {
76827
- filterPosition: Object,
76828
- onClosed: {
76829
- type: Function,
76830
- optional: true
76831
- }
76832
- };
76833
76433
  static components = {
76834
76434
  FilterMenuValueList,
76835
76435
  SidePanelCollapsible,
76836
76436
  FilterMenuCriterion
76837
76437
  };
76438
+ props = (0, _odoo_owl.props)({
76439
+ filterPosition: types$6.Position(),
76440
+ "onClosed?": types$6.function([])
76441
+ });
76838
76442
  state;
76839
76443
  criterionCategory = "text";
76840
76444
  updatedCriterionValue;
@@ -77011,13 +76615,10 @@ set(value) {
77011
76615
  //#region src/components/link/link_display/link_display.ts
77012
76616
  var LinkDisplay = class extends Component {
77013
76617
  static template = "o-spreadsheet-LinkDisplay";
77014
- static props = {
77015
- cellPosition: Object,
77016
- onClosed: {
77017
- type: Function,
77018
- optional: true
77019
- }
77020
- };
76618
+ props = (0, _odoo_owl.props)({
76619
+ cellPosition: types$6.CellPosition(),
76620
+ "onClosed?": types$6.function([])
76621
+ });
77021
76622
  cellPopovers;
77022
76623
  setup() {
77023
76624
  this.cellPopovers = useStore(CellPopoverStore);
@@ -77087,14 +76688,11 @@ set(value) {
77087
76688
  //#region src/components/link/link_editor/link_editor.ts
77088
76689
  var LinkEditor = class extends Component {
77089
76690
  static template = "o-spreadsheet-LinkEditor";
77090
- static props = {
77091
- cellPosition: Object,
77092
- onClosed: {
77093
- type: Function,
77094
- optional: true
77095
- }
77096
- };
77097
76691
  static components = { MenuPopover };
76692
+ props = (0, _odoo_owl.props)({
76693
+ cellPosition: types$6.CellPosition(),
76694
+ "onClosed?": types$6.function([])
76695
+ });
77098
76696
  static size = { maxHeight: 500 };
77099
76697
  urlInput = (0, _odoo_owl.signal)(null);
77100
76698
  suggestionListRef = (0, _odoo_owl.signal)(null);
@@ -86481,7 +86079,9 @@ set(value) {
86481
86079
  supportedPivotPositionalFormulaRegistry,
86482
86080
  pivotToFunctionValueRegistry,
86483
86081
  migrationStepRegistry,
86484
- chartJsExtensionRegistry
86082
+ chartJsExtensionRegistry,
86083
+ onIterationEndEvaluationRegistry,
86084
+ specificRangeTransformRegistry
86485
86085
  };
86486
86086
  const helpers = {
86487
86087
  arg,
@@ -86554,7 +86154,10 @@ set(value) {
86554
86154
  parseFormat,
86555
86155
  isFormula,
86556
86156
  domainToColRowDomain,
86557
- collapseHierarchicalDisplayName
86157
+ collapseHierarchicalDisplayName,
86158
+ getCanonicalSymbolName,
86159
+ fuzzyLookup,
86160
+ replaceSymbolInFormula
86558
86161
  };
86559
86162
  const links = {
86560
86163
  isMarkdownLink,
@@ -86605,6 +86208,7 @@ set(value) {
86605
86208
  MenuPopover,
86606
86209
  Popover,
86607
86210
  SelectionInput,
86211
+ StandaloneComposer,
86608
86212
  ValidationMessages,
86609
86213
  AddDimensionButton,
86610
86214
  PivotDimensionGranularity,
@@ -86726,12 +86330,14 @@ exports.astToFormula = astToFormula;
86726
86330
  exports.availableConditionalFormatOperators = availableConditionalFormatOperators;
86727
86331
  exports.availableDataValidationOperators = availableDataValidationOperators;
86728
86332
  exports.availableFiltersOperators = availableFiltersOperators;
86333
+ exports.borderPositions = borderPositions;
86729
86334
  exports.borderStyles = borderStyles;
86730
86335
  exports.canExecuteInReadonly = canExecuteInReadonly;
86731
86336
  exports.categories = categories;
86732
86337
  exports.chartHelpers = chartHelpers;
86733
86338
  exports.compatibility = compatibility;
86734
86339
  exports.components = components;
86340
+ exports.composerFocusTypes = composerFocusTypes;
86735
86341
  exports.constants = constants;
86736
86342
  exports.convertAstNodes = convertAstNodes;
86737
86343
  exports.coreTypes = coreTypes;
@@ -86775,8 +86381,8 @@ exports.stores = stores;
86775
86381
  exports.tokenColors = tokenColors;
86776
86382
  exports.tokenize = tokenize;
86777
86383
 
86778
- __info__.version = "19.4.0-alpha.10";
86779
- __info__.date = "2026-06-02T12:07:58.355Z";
86780
- __info__.hash = "41144f9";
86384
+ __info__.version = "19.4.0-alpha.12";
86385
+ __info__.date = "2026-06-06T06:24:48.209Z";
86386
+ __info__.hash = "a71f829";
86781
86387
 
86782
86388
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);