@odoo/o-spreadsheet 17.0.85 → 17.0.96

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 (398) hide show
  1. package/dist/o-spreadsheet.cjs.js +45990 -53385
  2. package/dist/o-spreadsheet.esm.js +45805 -53384
  3. package/dist/o-spreadsheet.iife.js +50220 -57798
  4. package/dist/o-spreadsheet.iife.min.js +534 -505
  5. package/dist/o_spreadsheet.xml +3 -3
  6. package/dist/types/actions/action.d.ts +73 -0
  7. package/dist/types/actions/data_actions.d.ts +9 -0
  8. package/dist/types/actions/edit_actions.d.ts +21 -0
  9. package/dist/types/actions/format_actions.d.ts +45 -0
  10. package/dist/types/actions/insert_actions.d.ts +28 -0
  11. package/dist/types/actions/menu_items_actions.d.ts +32 -0
  12. package/dist/types/actions/sheet_actions.d.ts +10 -0
  13. package/dist/types/actions/view_actions.d.ts +28 -0
  14. package/dist/types/collaborative/local_transport_service.d.ts +8 -0
  15. package/dist/types/collaborative/ot/ot.d.ts +22 -0
  16. package/dist/types/collaborative/ot/ot_helpers.d.ts +3 -0
  17. package/dist/types/collaborative/ot/ot_specific.d.ts +1 -0
  18. package/dist/types/collaborative/revisions.d.ts +22 -0
  19. package/dist/types/collaborative/session.d.ts +100 -0
  20. package/dist/types/components/action_button/action_button.d.ts +23 -0
  21. package/dist/types/components/animation/ripple.d.ts +53 -0
  22. package/dist/types/components/autofill/autofill.d.ts +25 -0
  23. package/dist/types/components/border_editor/border_editor.d.ts +41 -0
  24. package/dist/types/components/border_editor/border_editor_widget.d.ts +31 -0
  25. package/dist/types/components/bottom_bar/bottom_bar.d.ts +56 -0
  26. package/dist/types/components/bottom_bar_sheet/bottom_bar_sheet.d.ts +44 -0
  27. package/dist/types/components/bottom_bar_statistic/bottom_bar_statistic.d.ts +21 -0
  28. package/dist/types/components/collaborative_client_tag/collaborative_client_tag.d.ts +14 -0
  29. package/dist/types/components/color_picker/color_picker.d.ts +41 -0
  30. package/dist/types/components/color_picker/color_picker_widget.d.ts +27 -0
  31. package/dist/types/components/composer/autocomplete_dropdown/autocomplete_dropdown.d.ts +15 -0
  32. package/dist/types/components/composer/composer/composer.d.ts +135 -0
  33. package/dist/types/components/composer/content_editable_helper.d.ts +60 -0
  34. package/dist/types/components/composer/formula_assistant/formula_assistant.d.ts +20 -0
  35. package/dist/types/components/composer/grid_composer/grid_composer.d.ts +39 -0
  36. package/dist/types/components/composer/top_bar_composer/top_bar_composer.d.ts +18 -0
  37. package/dist/types/components/dashboard/dashboard.d.ts +50 -0
  38. package/dist/types/components/data_validation_overlay/data_validation_overlay.d.ts +15 -0
  39. package/dist/types/components/data_validation_overlay/dv_checkbox/dv_checkbox.d.ts +12 -0
  40. package/dist/types/components/data_validation_overlay/dv_list_icon/dv_list_icon.d.ts +10 -0
  41. package/dist/types/components/error_tooltip/error_tooltip.d.ts +18 -0
  42. package/dist/types/components/figures/chart/chartJs/chartjs.d.ts +18 -0
  43. package/dist/types/components/figures/chart/scorecard/chart_scorecard.d.ts +14 -0
  44. package/dist/types/components/figures/figure/figure.d.ts +41 -0
  45. package/dist/types/components/figures/figure_chart/figure_chart.d.ts +14 -0
  46. package/dist/types/components/figures/figure_container/figure_container.d.ts +117 -0
  47. package/dist/types/components/figures/figure_image/figure_image.d.ts +13 -0
  48. package/dist/types/components/filters/filter_icon/filter_icon.d.ts +12 -0
  49. package/dist/types/components/filters/filter_icons_overlay/filter_icons_overlay.d.ts +22 -0
  50. package/dist/types/components/filters/filter_menu/filter_menu.d.ts +43 -0
  51. package/dist/types/components/filters/filter_menu_item/filter_menu_value_item.d.ts +17 -0
  52. package/dist/types/components/font_size_editor/font_size_editor.d.ts +29 -0
  53. package/dist/types/components/grid/grid.d.ts +99 -0
  54. package/dist/types/components/grid_add_rows_footer/grid_add_rows_footer.d.ts +27 -0
  55. package/dist/types/components/grid_cell_icon/grid_cell_icon.d.ts +16 -0
  56. package/dist/types/components/grid_overlay/grid_overlay.d.ts +45 -0
  57. package/dist/types/components/grid_popover/grid_popover.d.ts +20 -0
  58. package/dist/types/components/header_group/header_group.d.ts +41 -0
  59. package/dist/types/components/header_group/header_group_container.d.ts +29 -0
  60. package/dist/types/components/headers_overlay/headers_overlay.d.ts +117 -0
  61. package/dist/types/components/helpers/css.d.ts +40 -0
  62. package/dist/types/components/helpers/dom_helpers.d.ts +34 -0
  63. package/dist/types/components/helpers/drag_and_drop.d.ts +20 -0
  64. package/dist/types/components/helpers/drag_and_drop_hook.d.ts +24 -0
  65. package/dist/types/components/helpers/draw_grid_hook.d.ts +3 -0
  66. package/dist/types/components/helpers/figure_container_helper.d.ts +14 -0
  67. package/dist/types/components/helpers/figure_drag_helper.d.ts +6 -0
  68. package/dist/types/components/helpers/figure_snap_helper.d.ts +25 -0
  69. package/dist/types/components/helpers/html_content_helpers.d.ts +2 -0
  70. package/dist/types/components/helpers/index.d.ts +1 -0
  71. package/dist/types/components/helpers/listener_hook.d.ts +10 -0
  72. package/dist/types/components/helpers/position_hook.d.ts +25 -0
  73. package/dist/types/components/helpers/selection_helpers.d.ts +2 -0
  74. package/dist/types/components/helpers/time_hooks.d.ts +9 -0
  75. package/dist/types/components/helpers/wheel_hook.d.ts +1 -0
  76. package/dist/types/components/highlight/border/border.d.ts +15 -0
  77. package/dist/types/components/highlight/corner/corner.d.ts +18 -0
  78. package/dist/types/components/highlight/highlight/highlight.d.ts +22 -0
  79. package/dist/types/components/icon_picker/icon_picker.d.ts +65 -0
  80. package/dist/types/components/icons/icons.d.ts +56 -0
  81. package/dist/types/components/index.d.ts +1 -0
  82. package/dist/types/components/link/index.d.ts +2 -0
  83. package/dist/types/components/link/link_display/link_display.d.ts +21 -0
  84. package/dist/types/components/link/link_editor/link_editor.d.ts +39 -0
  85. package/dist/types/components/menu/menu.d.ts +58 -0
  86. package/dist/types/components/paint_format_button/paint_format_button.d.ts +12 -0
  87. package/dist/types/components/popover/popover.d.ts +40 -0
  88. package/dist/types/components/scrollbar/index.d.ts +2 -0
  89. package/dist/types/components/scrollbar/scrollbar.d.ts +25 -0
  90. package/dist/types/components/scrollbar/scrollbar_horizontal.d.ts +26 -0
  91. package/dist/types/components/scrollbar/scrollbar_vertical.d.ts +26 -0
  92. package/dist/types/components/scrollbar.d.ts +9 -0
  93. package/dist/types/components/selection_input/selection_input.d.ts +54 -0
  94. package/dist/types/components/side_panel/chart/bar_chart/bar_chart_config_panel.d.ts +6 -0
  95. package/dist/types/components/side_panel/chart/bar_chart/bar_chart_design_panel.d.ts +4 -0
  96. package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_config_panel.d.ts +26 -0
  97. package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_design_panel.d.ts +34 -0
  98. package/dist/types/components/side_panel/chart/index.d.ts +17 -0
  99. package/dist/types/components/side_panel/chart/line_bar_pie_panel/config_panel.d.ts +45 -0
  100. package/dist/types/components/side_panel/chart/line_bar_pie_panel/design_panel.d.ts +26 -0
  101. package/dist/types/components/side_panel/chart/line_chart/line_chart_config_panel.d.ts +9 -0
  102. package/dist/types/components/side_panel/chart/line_chart/line_chart_design_panel.d.ts +4 -0
  103. package/dist/types/components/side_panel/chart/main_chart_panel/main_chart_panel.d.ts +20 -0
  104. package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_config_panel.d.ts +32 -0
  105. package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_design_panel.d.ts +26 -0
  106. package/dist/types/components/side_panel/conditional_formatting/cf_editor/cf_editor.d.ts +137 -0
  107. package/dist/types/components/side_panel/conditional_formatting/cf_preview_list/cf_preview_list.d.ts +58 -0
  108. package/dist/types/components/side_panel/conditional_formatting/conditional_formatting.d.ts +23 -0
  109. package/dist/types/components/side_panel/custom_currency/custom_currency.d.ts +27 -0
  110. package/dist/types/components/side_panel/data_validation/data_validation_panel.d.ts +25 -0
  111. package/dist/types/components/side_panel/data_validation/data_validation_panel_helper.d.ts +14 -0
  112. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_criterion_form.d.ts +11 -0
  113. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_date_criterion/dv_date_criterion.d.ts +16 -0
  114. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_double_input_criterion/dv_double_input_criterion.d.ts +10 -0
  115. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_input/dv_input.d.ts +30 -0
  116. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_single_input_criterion/dv_single_input_criterion.d.ts +9 -0
  117. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_value_in_list_criterion/dv_value_in_list_criterion.d.ts +23 -0
  118. package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_value_in_range_criterion/dv_value_in_range_criterion.d.ts +12 -0
  119. package/dist/types/components/side_panel/data_validation/dv_editor/dv_editor.d.ts +34 -0
  120. package/dist/types/components/side_panel/data_validation/dv_preview/dv_preview.d.ts +13 -0
  121. package/dist/types/components/side_panel/find_and_replace/find_and_replace.d.ts +27 -0
  122. package/dist/types/components/side_panel/more_formats/more_formats.d.ts +10 -0
  123. package/dist/types/components/side_panel/remove_duplicates/remove_duplicates.d.ts +32 -0
  124. package/dist/types/components/side_panel/select_menu/select_menu.d.ts +29 -0
  125. package/dist/types/components/side_panel/settings/settings_panel.d.ts +18 -0
  126. package/dist/types/components/side_panel/side_panel/side_panel.d.ts +18 -0
  127. package/dist/types/components/side_panel/split_to_columns_panel/split_to_columns_panel.d.ts +35 -0
  128. package/dist/types/components/spreadsheet/spreadsheet.d.ts +64 -0
  129. package/dist/types/components/top_bar/top_bar.d.ts +65 -0
  130. package/dist/types/components/translations_terms.d.ts +104 -0
  131. package/dist/types/components/validation_messages/validation_messages.d.ts +11 -0
  132. package/dist/types/constants.d.ts +137 -0
  133. package/dist/types/formulas/code_builder.d.ts +28 -0
  134. package/dist/types/formulas/compiler.d.ts +7 -0
  135. package/dist/types/formulas/composer_tokenizer.d.ts +31 -0
  136. package/dist/types/formulas/helpers.d.ts +2 -0
  137. package/dist/types/formulas/index.d.ts +16 -0
  138. package/dist/types/formulas/parser.d.ts +72 -0
  139. package/dist/types/formulas/range_tokenizer.d.ts +8 -0
  140. package/dist/types/formulas/tokenizer.d.ts +25 -0
  141. package/dist/types/functions/arguments.d.ts +10 -0
  142. package/dist/types/functions/helper_assert.d.ts +6 -0
  143. package/dist/types/functions/helper_financial.d.ts +49 -0
  144. package/dist/types/functions/helper_matrices.d.ts +23 -0
  145. package/dist/types/functions/helper_statistical.d.ts +3 -0
  146. package/dist/types/functions/helpers.d.ts +101 -0
  147. package/dist/types/functions/index.d.ts +10 -0
  148. package/dist/types/functions/module_array.d.ts +141 -0
  149. package/dist/types/functions/module_custom.d.ts +8 -0
  150. package/dist/types/functions/module_database.d.ts +85 -0
  151. package/dist/types/functions/module_date.d.ts +231 -0
  152. package/dist/types/functions/module_engineering.d.ts +8 -0
  153. package/dist/types/functions/module_filter.d.ts +17 -0
  154. package/dist/types/functions/module_financial.d.ts +358 -0
  155. package/dist/types/functions/module_info.d.ts +64 -0
  156. package/dist/types/functions/module_logical.d.ts +59 -0
  157. package/dist/types/functions/module_lookup.d.ts +72 -0
  158. package/dist/types/functions/module_math.d.ts +424 -0
  159. package/dist/types/functions/module_operators.d.ts +98 -0
  160. package/dist/types/functions/module_statistical.d.ts +296 -0
  161. package/dist/types/functions/module_text.d.ts +147 -0
  162. package/dist/types/functions/module_web.d.ts +8 -0
  163. package/dist/types/helpers/cells/cell_evaluation.d.ts +6 -0
  164. package/dist/types/helpers/cells/index.d.ts +2 -0
  165. package/dist/types/helpers/chart_date.d.ts +8 -0
  166. package/dist/types/helpers/clipboard/clipboard_abstract_cell_state.d.ts +26 -0
  167. package/dist/types/helpers/clipboard/clipboard_cells_state.d.ts +70 -0
  168. package/dist/types/helpers/clipboard/clipboard_figure_state.d.ts +41 -0
  169. package/dist/types/helpers/clipboard/clipboard_os_state.d.ts +12 -0
  170. package/dist/types/helpers/clipboard/navigator_clipboard_wrapper.d.ts +13 -0
  171. package/dist/types/helpers/color.d.ts +68 -0
  172. package/dist/types/helpers/coordinates.d.ts +40 -0
  173. package/dist/types/helpers/data_validation_helpers.d.ts +5 -0
  174. package/dist/types/helpers/dates.d.ts +90 -0
  175. package/dist/types/helpers/edge_scrolling.d.ts +9 -0
  176. package/dist/types/helpers/event_bus.d.ts +45 -0
  177. package/dist/types/helpers/figures/charts/abstract_chart.d.ts +56 -0
  178. package/dist/types/helpers/figures/charts/bar_chart.d.ts +29 -0
  179. package/dist/types/helpers/figures/charts/chart_common.d.ts +62 -0
  180. package/dist/types/helpers/figures/charts/chart_factory.d.ts +40 -0
  181. package/dist/types/helpers/figures/charts/chart_js_gauge_controller.d.ts +1 -0
  182. package/dist/types/helpers/figures/charts/chart_ui_common.d.ts +41 -0
  183. package/dist/types/helpers/figures/charts/gauge_chart.d.ts +23 -0
  184. package/dist/types/helpers/figures/charts/index.d.ts +10 -0
  185. package/dist/types/helpers/figures/charts/line_chart.d.ts +32 -0
  186. package/dist/types/helpers/figures/charts/pie_chart.d.ts +27 -0
  187. package/dist/types/helpers/figures/charts/scorecard_chart.d.ts +30 -0
  188. package/dist/types/helpers/figures/charts/scorecard_chart_config_builder.d.ts +35 -0
  189. package/dist/types/helpers/figures/figure/figure.d.ts +6 -0
  190. package/dist/types/helpers/figures/images/image_provider.d.ts +10 -0
  191. package/dist/types/helpers/filters.d.ts +19 -0
  192. package/dist/types/helpers/focus_manager.d.ts +5 -0
  193. package/dist/types/helpers/format.d.ts +32 -0
  194. package/dist/types/helpers/index.d.ts +15 -0
  195. package/dist/types/helpers/internal_viewport.d.ts +83 -0
  196. package/dist/types/helpers/inverse_commands.d.ts +2 -0
  197. package/dist/types/helpers/links.d.ts +23 -0
  198. package/dist/types/helpers/locale.d.ts +58 -0
  199. package/dist/types/helpers/misc.d.ts +178 -0
  200. package/dist/types/helpers/numbers.d.ts +25 -0
  201. package/dist/types/helpers/range.d.ts +59 -0
  202. package/dist/types/helpers/recompute_zones.d.ts +136 -0
  203. package/dist/types/helpers/rectangle.d.ts +7 -0
  204. package/dist/types/helpers/reference_type.d.ts +9 -0
  205. package/dist/types/helpers/references.d.ts +23 -0
  206. package/dist/types/helpers/search.d.ts +19 -0
  207. package/dist/types/helpers/sheet.d.ts +7 -0
  208. package/dist/types/helpers/sort.d.ts +16 -0
  209. package/dist/types/helpers/state_manager_helpers.d.ts +6 -0
  210. package/dist/types/helpers/text_helper.d.ts +28 -0
  211. package/dist/types/helpers/ui/cut_interactive.d.ts +2 -0
  212. package/dist/types/helpers/ui/filter_interactive.d.ts +7 -0
  213. package/dist/types/helpers/ui/freeze_interactive.d.ts +2 -0
  214. package/dist/types/helpers/ui/merge_interactive.d.ts +6 -0
  215. package/dist/types/helpers/ui/paste_interactive.d.ts +10 -0
  216. package/dist/types/helpers/ui/sheet_interactive.d.ts +2 -0
  217. package/dist/types/helpers/ui/split_to_columns_interactive.d.ts +6 -0
  218. package/dist/types/helpers/ui/stop_edition_interactive.d.ts +2 -0
  219. package/dist/types/helpers/ui/toggle_group_interactive.d.ts +6 -0
  220. package/dist/types/helpers/uuid.d.ts +20 -0
  221. package/dist/types/helpers/zones.d.ts +173 -0
  222. package/dist/types/history/branch.d.ts +62 -0
  223. package/dist/types/history/factory.d.ts +9 -0
  224. package/dist/types/history/operation.d.ts +17 -0
  225. package/dist/types/history/operation_sequence.d.ts +31 -0
  226. package/dist/types/history/repeat_commands/repeat_commands_generic.d.ts +6 -0
  227. package/dist/types/history/repeat_commands/repeat_commands_specific.d.ts +13 -0
  228. package/dist/types/history/repeat_commands/repeat_revision.d.ts +5 -0
  229. package/dist/types/history/selective_history.d.ts +81 -0
  230. package/dist/types/history/tree.d.ts +175 -0
  231. package/dist/types/index.d.ts +189 -0
  232. package/dist/types/migrations/data.d.ts +30 -0
  233. package/dist/types/migrations/legacy_tools.d.ts +15 -0
  234. package/dist/types/model.d.ts +192 -0
  235. package/dist/types/plugins/base_plugin.d.ts +63 -0
  236. package/dist/types/plugins/core/borders.d.ts +127 -0
  237. package/dist/types/plugins/core/cell.d.ts +103 -0
  238. package/dist/types/plugins/core/chart.d.ts +41 -0
  239. package/dist/types/plugins/core/conditional_format.d.ts +52 -0
  240. package/dist/types/plugins/core/data_validation.d.ts +31 -0
  241. package/dist/types/plugins/core/figures.d.ts +34 -0
  242. package/dist/types/plugins/core/filters.d.ts +43 -0
  243. package/dist/types/plugins/core/header_grouping.d.ts +82 -0
  244. package/dist/types/plugins/core/header_size.d.ts +23 -0
  245. package/dist/types/plugins/core/header_visibility.d.ts +20 -0
  246. package/dist/types/plugins/core/image.d.ts +32 -0
  247. package/dist/types/plugins/core/index.d.ts +13 -0
  248. package/dist/types/plugins/core/merge.d.ts +83 -0
  249. package/dist/types/plugins/core/range.d.ts +59 -0
  250. package/dist/types/plugins/core/settings.d.ts +12 -0
  251. package/dist/types/plugins/core/sheet.d.ts +151 -0
  252. package/dist/types/plugins/core_plugin.d.ts +49 -0
  253. package/dist/types/plugins/index.d.ts +7 -0
  254. package/dist/types/plugins/ui_core_views/cell_evaluation/compilation_parameters.d.ts +10 -0
  255. package/dist/types/plugins/ui_core_views/cell_evaluation/evaluation_plugin.d.ts +43 -0
  256. package/dist/types/plugins/ui_core_views/cell_evaluation/evaluator.d.ts +90 -0
  257. package/dist/types/plugins/ui_core_views/cell_evaluation/formula_dependency_graph.d.ts +23 -0
  258. package/dist/types/plugins/ui_core_views/cell_evaluation/index.d.ts +1 -0
  259. package/dist/types/plugins/ui_core_views/cell_evaluation/r_tree.d.ts +108 -0
  260. package/dist/types/plugins/ui_core_views/cell_evaluation/spreading_relation.d.ts +60 -0
  261. package/dist/types/plugins/ui_core_views/custom_colors.d.ts +24 -0
  262. package/dist/types/plugins/ui_core_views/evaluation_chart.d.ts +24 -0
  263. package/dist/types/plugins/ui_core_views/evaluation_conditional_format.d.ts +37 -0
  264. package/dist/types/plugins/ui_core_views/evaluation_data_validation.d.ts +38 -0
  265. package/dist/types/plugins/ui_core_views/header_sizes_ui.d.ts +32 -0
  266. package/dist/types/plugins/ui_core_views/index.d.ts +5 -0
  267. package/dist/types/plugins/ui_feature/autofill.d.ts +60 -0
  268. package/dist/types/plugins/ui_feature/automatic_sum.d.ts +101 -0
  269. package/dist/types/plugins/ui_feature/cell_popovers.d.ts +16 -0
  270. package/dist/types/plugins/ui_feature/collaborative.d.ts +25 -0
  271. package/dist/types/plugins/ui_feature/data_cleanup.d.ts +16 -0
  272. package/dist/types/plugins/ui_feature/find_and_replace.d.ts +76 -0
  273. package/dist/types/plugins/ui_feature/format.d.ts +23 -0
  274. package/dist/types/plugins/ui_feature/header_visibility_ui.d.ts +21 -0
  275. package/dist/types/plugins/ui_feature/highlight.d.ts +12 -0
  276. package/dist/types/plugins/ui_feature/index.d.ts +15 -0
  277. package/dist/types/plugins/ui_feature/local_history.d.ts +36 -0
  278. package/dist/types/plugins/ui_feature/renderer.d.ts +45 -0
  279. package/dist/types/plugins/ui_feature/selection_input.d.ts +67 -0
  280. package/dist/types/plugins/ui_feature/selection_inputs_manager.d.ts +33 -0
  281. package/dist/types/plugins/ui_feature/sort.d.ts +75 -0
  282. package/dist/types/plugins/ui_feature/split_to_columns.d.ts +21 -0
  283. package/dist/types/plugins/ui_feature/ui_options.d.ts +8 -0
  284. package/dist/types/plugins/ui_feature/ui_sheet.d.ts +30 -0
  285. package/dist/types/plugins/ui_plugin.d.ts +36 -0
  286. package/dist/types/plugins/ui_stateful/clipboard.d.ts +43 -0
  287. package/dist/types/plugins/ui_stateful/edition.d.ts +117 -0
  288. package/dist/types/plugins/ui_stateful/filter_evaluation.d.ts +26 -0
  289. package/dist/types/plugins/ui_stateful/header_positions.d.ts +28 -0
  290. package/dist/types/plugins/ui_stateful/index.d.ts +5 -0
  291. package/dist/types/plugins/ui_stateful/selection.d.ts +78 -0
  292. package/dist/types/plugins/ui_stateful/sheetview.d.ts +164 -0
  293. package/dist/types/registries/autofill_modifiers.d.ts +7 -0
  294. package/dist/types/registries/autofill_rules.d.ts +15 -0
  295. package/dist/types/registries/cell_clickable_registry.d.ts +8 -0
  296. package/dist/types/registries/cell_popovers_registry.d.ts +3 -0
  297. package/dist/types/registries/chart_types.d.ts +28 -0
  298. package/dist/types/registries/currencies_registry.d.ts +7 -0
  299. package/dist/types/registries/data_validation_registry.d.ts +32 -0
  300. package/dist/types/registries/figure_registry.d.ts +18 -0
  301. package/dist/types/registries/index.d.ts +11 -0
  302. package/dist/types/registries/inverse_command_registry.d.ts +5 -0
  303. package/dist/types/registries/menu_items_registry.d.ts +19 -0
  304. package/dist/types/registries/menus/cell_menu_registry.d.ts +2 -0
  305. package/dist/types/registries/menus/col_menu_registry.d.ts +2 -0
  306. package/dist/types/registries/menus/header_group_registry.d.ts +7 -0
  307. package/dist/types/registries/menus/index.d.ts +7 -0
  308. package/dist/types/registries/menus/link_menu_registry.d.ts +2 -0
  309. package/dist/types/registries/menus/number_format_menu_registry.d.ts +4 -0
  310. package/dist/types/registries/menus/row_menu_registry.d.ts +2 -0
  311. package/dist/types/registries/menus/sheet_menu_registry.d.ts +4 -0
  312. package/dist/types/registries/menus/topbar_menu_registry.d.ts +2 -0
  313. package/dist/types/registries/ot_registry.d.ts +21 -0
  314. package/dist/types/registries/registry.d.ts +44 -0
  315. package/dist/types/registries/repeat_commands_registry.d.ts +20 -0
  316. package/dist/types/registries/side_panel_registry.d.ts +8 -0
  317. package/dist/types/registries/topbar_component_registry.d.ts +18 -0
  318. package/dist/types/selection_stream/event_stream.d.ts +64 -0
  319. package/dist/types/selection_stream/selection_stream_processor.d.ts +167 -0
  320. package/dist/types/state_observer.d.ts +15 -0
  321. package/dist/types/translation.d.ts +21 -0
  322. package/dist/types/types/autofill.d.ts +62 -0
  323. package/dist/types/types/cell_popovers.d.ts +44 -0
  324. package/dist/types/types/cells.d.ts +64 -0
  325. package/dist/types/types/chart/bar_chart.d.ts +19 -0
  326. package/dist/types/types/chart/chart.d.ts +48 -0
  327. package/dist/types/types/chart/common_chart.d.ts +2 -0
  328. package/dist/types/types/chart/gauge_chart.d.ts +73 -0
  329. package/dist/types/types/chart/index.d.ts +7 -0
  330. package/dist/types/types/chart/line_chart.d.ts +21 -0
  331. package/dist/types/types/chart/pie_chart.d.ts +17 -0
  332. package/dist/types/types/chart/scorecard_chart.d.ts +26 -0
  333. package/dist/types/types/clipboard.d.ts +31 -0
  334. package/dist/types/types/collaborative/revisions.d.ts +7 -0
  335. package/dist/types/types/collaborative/session.d.ts +46 -0
  336. package/dist/types/types/collaborative/transport_service.d.ts +91 -0
  337. package/dist/types/types/commands.d.ts +873 -0
  338. package/dist/types/types/conditional_formatting.d.ts +103 -0
  339. package/dist/types/types/currency.d.ts +7 -0
  340. package/dist/types/types/data_validation.d.ts +121 -0
  341. package/dist/types/types/env.d.ts +33 -0
  342. package/dist/types/types/errors.d.ts +33 -0
  343. package/dist/types/types/event_stream/index.d.ts +1 -0
  344. package/dist/types/types/event_stream/selection_events.d.ts +11 -0
  345. package/dist/types/types/figure.d.ts +14 -0
  346. package/dist/types/types/files.d.ts +27 -0
  347. package/dist/types/types/format.d.ts +8 -0
  348. package/dist/types/types/functions.d.ts +49 -0
  349. package/dist/types/types/getters.d.ts +101 -0
  350. package/dist/types/types/history.d.ts +43 -0
  351. package/dist/types/types/image.d.ts +12 -0
  352. package/dist/types/types/index.d.ts +30 -0
  353. package/dist/types/types/locale.d.ts +13 -0
  354. package/dist/types/types/misc.d.ts +276 -0
  355. package/dist/types/types/range.d.ts +21 -0
  356. package/dist/types/types/rendering.d.ts +86 -0
  357. package/dist/types/types/validator.d.ts +16 -0
  358. package/dist/types/types/workbook_data.d.ts +112 -0
  359. package/dist/types/types/xlsx.d.ts +441 -0
  360. package/dist/types/xlsx/constants.d.ts +74 -0
  361. package/dist/types/xlsx/conversion/cf_conversion.d.ts +4 -0
  362. package/dist/types/xlsx/conversion/color_conversion.d.ts +24 -0
  363. package/dist/types/xlsx/conversion/conversion_maps.d.ts +167 -0
  364. package/dist/types/xlsx/conversion/figure_conversion.d.ts +3 -0
  365. package/dist/types/xlsx/conversion/format_conversion.d.ts +8 -0
  366. package/dist/types/xlsx/conversion/formula_conversion.d.ts +9 -0
  367. package/dist/types/xlsx/conversion/index.d.ts +7 -0
  368. package/dist/types/xlsx/conversion/sheet_conversion.d.ts +4 -0
  369. package/dist/types/xlsx/conversion/style_conversion.d.ts +19 -0
  370. package/dist/types/xlsx/conversion/table_conversion.d.ts +14 -0
  371. package/dist/types/xlsx/extraction/base_extractor.d.ts +142 -0
  372. package/dist/types/xlsx/extraction/cf_extractor.d.ts +14 -0
  373. package/dist/types/xlsx/extraction/chart_extractor.d.ts +11 -0
  374. package/dist/types/xlsx/extraction/external_book_extractor.d.ts +6 -0
  375. package/dist/types/xlsx/extraction/figure_extractor.d.ts +8 -0
  376. package/dist/types/xlsx/extraction/index.d.ts +3 -0
  377. package/dist/types/xlsx/extraction/misc_extractor.d.ts +18 -0
  378. package/dist/types/xlsx/extraction/pivot_extractor.d.ts +8 -0
  379. package/dist/types/xlsx/extraction/sheet_extractor.d.ts +23 -0
  380. package/dist/types/xlsx/extraction/style_extractor.d.ts +19 -0
  381. package/dist/types/xlsx/extraction/table_extractor.d.ts +10 -0
  382. package/dist/types/xlsx/functions/cells.d.ts +11 -0
  383. package/dist/types/xlsx/functions/charts.d.ts +3 -0
  384. package/dist/types/xlsx/functions/conditional_formatting.d.ts +3 -0
  385. package/dist/types/xlsx/functions/drawings.d.ts +5 -0
  386. package/dist/types/xlsx/functions/styles.d.ts +10 -0
  387. package/dist/types/xlsx/functions/table.d.ts +2 -0
  388. package/dist/types/xlsx/functions/worksheet.d.ts +9 -0
  389. package/dist/types/xlsx/helpers/colors.d.ts +8 -0
  390. package/dist/types/xlsx/helpers/content_helpers.d.ts +48 -0
  391. package/dist/types/xlsx/helpers/misc.d.ts +29 -0
  392. package/dist/types/xlsx/helpers/xlsx_helper.d.ts +10 -0
  393. package/dist/types/xlsx/helpers/xlsx_parser_error_manager.d.ts +34 -0
  394. package/dist/types/xlsx/helpers/xml_helpers.d.ts +36 -0
  395. package/dist/types/xlsx/xlsx_reader.d.ts +13 -0
  396. package/dist/types/xlsx/xlsx_writer.d.ts +8 -0
  397. package/package.json +42 -25
  398. package/dist/o-spreadsheet.d.ts +0 -8046
@@ -0,0 +1,43 @@
1
+ import { Filter, FilterTable } from "../../helpers/filters";
2
+ import { CellPosition, CommandResult, CoreCommand, ExcelWorkbookData, FilterId, FilterTableId, Position, UID, WorkbookData, Zone } from "../../types/index";
3
+ import { CorePlugin } from "../core_plugin";
4
+ interface FiltersState {
5
+ tables: Record<UID, Record<FilterTableId, FilterTable | undefined>>;
6
+ }
7
+ export declare class FiltersPlugin extends CorePlugin<FiltersState> implements FiltersState {
8
+ static getters: readonly ["doesZonesContainFilter", "getFilter", "getFilters", "getFilterTable", "getFilterTables", "getFilterTablesInZone", "getFilterId", "getFilterHeaders", "isFilterHeader"];
9
+ readonly tables: Record<UID, Record<FilterTableId, FilterTable | undefined>>;
10
+ allowDispatch(cmd: CoreCommand): CommandResult | CommandResult[];
11
+ handle(cmd: CoreCommand): void;
12
+ getFilters(sheetId: UID): Filter[];
13
+ getFilterTables(sheetId: UID): FilterTable[];
14
+ getFilter(position: CellPosition): Filter | undefined;
15
+ getFilterId(position: CellPosition): FilterId | undefined;
16
+ getFilterTable({ sheetId, col, row }: CellPosition): FilterTable | undefined;
17
+ /** Get the filter tables that are fully inside the given zone */
18
+ getFilterTablesInZone(sheetId: UID, zone: Zone): FilterTable[];
19
+ doesZonesContainFilter(sheetId: UID, zones: Zone[]): boolean;
20
+ getFilterHeaders(sheetId: UID): Position[];
21
+ isFilterHeader({ sheetId, col, row }: CellPosition): boolean;
22
+ private onAddColumnsRows;
23
+ private onDeleteColumnsRows;
24
+ private createFilterTable;
25
+ /** Extend a table down one row */
26
+ private extendTableDown;
27
+ /**
28
+ * Check if an UpdateCell command should cause the given table to be extended by one row.
29
+ *
30
+ * The table should be extended if all of these conditions are true:
31
+ * 1) The updated cell is right below the table
32
+ * 2) The command adds a content to the cell
33
+ * 3) No cell right below the table had any content before the command
34
+ * 4) Extending the table down would not overlap with another filter
35
+ * 5) Extending the table down would not overlap with a merge
36
+ *
37
+ */
38
+ private canUpdateCellCmdExtendTable;
39
+ import(data: WorkbookData): void;
40
+ export(data: WorkbookData): void;
41
+ exportForExcel(data: ExcelWorkbookData): void;
42
+ }
43
+ export {};
@@ -0,0 +1,82 @@
1
+ import { CommandResult, CoreCommand, UID, WorkbookData } from "../../types";
2
+ import { Dimension, HeaderGroup, HeaderIndex, Zone } from "./../../types/misc";
3
+ import { CorePlugin } from "./../core_plugin";
4
+ interface State {
5
+ groups: Record<UID, Record<Dimension, HeaderGroup[]>>;
6
+ }
7
+ export declare class HeaderGroupingPlugin extends CorePlugin<State> {
8
+ static getters: readonly ["getHeaderGroups", "getGroupsLayers", "getVisibleGroupLayers", "getHeaderGroup", "getHeaderGroupsInZone", "isGroupFolded", "isRowFolded", "isColFolded"];
9
+ private readonly groups;
10
+ allowDispatch(cmd: CoreCommand): CommandResult;
11
+ handle(cmd: CoreCommand): void;
12
+ getHeaderGroups(sheetId: UID, dim: Dimension): HeaderGroup[];
13
+ getHeaderGroup(sheetId: UID, dim: Dimension, start: number, end: number): HeaderGroup | undefined;
14
+ getHeaderGroupsInZone(sheetId: UID, dim: Dimension, zone: Zone): HeaderGroup[];
15
+ /**
16
+ * Get all the groups of a sheet in a dimension, and return an array of layers of those groups.
17
+ *
18
+ * The layering rules are:
19
+ * 1) A group containing another group should be on a layer above the group it contains
20
+ * 2) The widest/highest groups should be on the left/top layer compared to the groups it contains
21
+ * 3) The group should be on the left/top-most layer possible, barring intersections with other groups (see rules 1 and 2)
22
+ */
23
+ getGroupsLayers(sheetId: UID, dimension: Dimension): HeaderGroup[][];
24
+ /**
25
+ * Get all the groups of a sheet in a dimension, and return an array of layers of those groups,
26
+ * excluding the groups that are totally hidden.
27
+ */
28
+ getVisibleGroupLayers(sheetId: UID, dimension: Dimension): HeaderGroup[][];
29
+ isGroupFolded(sheetId: UID, dimension: Dimension, start: number, end: number): boolean;
30
+ isRowFolded(sheetId: UID, row: HeaderIndex): boolean;
31
+ isColFolded(sheetId: UID, col: HeaderIndex): boolean;
32
+ private getGroupId;
33
+ /**
34
+ * To get layers of groups, and to add/remove headers from groups, we can see each header of a group as a brick. Each
35
+ * brick falls down in the pile corresponding to its header, until it hits another brick, or the ground.
36
+ *
37
+ * With this abstraction, we can very simply group/ungroup headers from groups, and get the layers of groups.
38
+ * - grouping headers is done by adding a brick to each header pile
39
+ * - un-grouping headers is done by removing a brick from each header pile
40
+ * - getting the layers of groups is done by simply letting the brick fall and checking the result
41
+ *
42
+ * Example:
43
+ * We have 2 groups ([A=>E] and [C=>D]), and we want to group headers [C=>F]
44
+ *
45
+ * Headers : A B C D E F G A B C D E F G A B C D E F G
46
+ * Headers to group: [C=>D]: _ _ [C=>F]: _ _ _ _
47
+ * | | ==> | | | | ==> ==> Result: 3 groups
48
+ * | | ˅ ˅ | | _ _ - [C=>D]
49
+ * Groups: ˅ ˅ _ _ ˅ | _ _ _ - [C=>E]
50
+ * Groups: _ _ _ _ _ _ _ _ _ _ ˅ _ _ _ _ _ _ - [A=>F]
51
+
52
+ * @param groups
53
+ * @param start start of the range where to add/remove headers
54
+ * @param end end of the range where to add/remove headers
55
+ * @param delta -1: remove headers, 1: add headers, 0: get layers (don't add/remove anything)
56
+ */
57
+ private bricksFallingAlgorithm;
58
+ private groupHeaders;
59
+ /**
60
+ * Ungroup the given headers. The headers will be taken out of the group they are in. This might split a group into two
61
+ * if the headers were in the middle of a group. If multiple groups contains a header, it will only be taken out of the
62
+ * lowest group in the layering of the groups.
63
+ */
64
+ private unGroupHeaders;
65
+ private moveGroupsOnHeaderInsertion;
66
+ private moveGroupsOnHeaderDeletion;
67
+ private doGroupOverlap;
68
+ private removeDuplicateGroups;
69
+ private findGroupWithStartEnd;
70
+ /**
71
+ * Fold the given group, and all the groups starting at the same index that are contained inside the given group.
72
+ */
73
+ private foldHeaderGroup;
74
+ /**
75
+ * Unfold the given group, and all the groups starting at the same index that contain the given group.
76
+ */
77
+ private unfoldHeaderGroup;
78
+ private getGroupIndex;
79
+ import(data: WorkbookData): void;
80
+ export(data: WorkbookData): void;
81
+ }
82
+ export {};
@@ -0,0 +1,23 @@
1
+ import { Command, ExcelWorkbookData, WorkbookData } from "../../types";
2
+ import { Dimension, HeaderIndex, Pixel, UID } from "../../types/misc";
3
+ import { CorePlugin } from "../core_plugin";
4
+ interface HeaderSizeState {
5
+ sizes: Record<UID, Record<Dimension, Array<Pixel | undefined>>>;
6
+ }
7
+ export declare class HeaderSizePlugin extends CorePlugin<HeaderSizeState> implements HeaderSizeState {
8
+ static getters: readonly ["getUserRowSize", "getColSize"];
9
+ readonly sizes: Record<UID, Record<Dimension, Array<Pixel | undefined>>>;
10
+ handle(cmd: Command): void;
11
+ getColSize(sheetId: UID, index: HeaderIndex): Pixel;
12
+ getUserRowSize(sheetId: UID, index: HeaderIndex): Pixel | undefined;
13
+ import(data: WorkbookData): void;
14
+ exportForExcel(data: ExcelWorkbookData): void;
15
+ export(data: WorkbookData): void;
16
+ /**
17
+ * Export the header sizes
18
+ *
19
+ * @param exportDefaults : if true, export column/row sizes even if they have the default size
20
+ */
21
+ exportData(data: WorkbookData, exportDefaults?: boolean): void;
22
+ }
23
+ export {};
@@ -0,0 +1,20 @@
1
+ import { Command, CommandResult, ExcelWorkbookData, WorkbookData } from "../../types";
2
+ import { ConsecutiveIndexes, Dimension, HeaderIndex, UID } from "../../types/misc";
3
+ import { CorePlugin } from "../core_plugin";
4
+ export declare class HeaderVisibilityPlugin extends CorePlugin {
5
+ static getters: readonly ["checkElementsIncludeAllVisibleHeaders", "getHiddenColsGroups", "getHiddenRowsGroups", "isHeaderHiddenByUser", "isRowHiddenByUser", "isColHiddenByUser"];
6
+ private readonly hiddenHeaders;
7
+ allowDispatch(cmd: Command): CommandResult.Success | CommandResult.NotEnoughElements | CommandResult.InvalidSheetId | CommandResult.TooManyHiddenElements | CommandResult.InvalidHeaderIndex;
8
+ handle(cmd: Command): void;
9
+ checkElementsIncludeAllVisibleHeaders(sheetId: UID, dimension: Dimension, elements: HeaderIndex[]): boolean;
10
+ isHeaderHiddenByUser(sheetId: UID, dimension: Dimension, index: HeaderIndex): boolean;
11
+ isRowHiddenByUser(sheetId: UID, index: HeaderIndex): boolean;
12
+ isColHiddenByUser(sheetId: UID, index: HeaderIndex): boolean;
13
+ getHiddenColsGroups(sheetId: UID): ConsecutiveIndexes[];
14
+ getHiddenRowsGroups(sheetId: UID): ConsecutiveIndexes[];
15
+ private getAllVisibleHeaders;
16
+ import(data: WorkbookData): void;
17
+ exportForExcel(data: ExcelWorkbookData): void;
18
+ export(data: WorkbookData): void;
19
+ exportData(data: WorkbookData, exportDefaults?: boolean): void;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { FileStore } from "../../types/files";
2
+ import { Image } from "../../types/image";
3
+ import { CommandResult, CoreCommand, ExcelWorkbookData, FigureSize, UID, WorkbookData } from "../../types/index";
4
+ import { CorePlugin, CorePluginConfig } from "../core_plugin";
5
+ interface ImageState {
6
+ readonly images: Record<UID, Record<UID, Image | undefined> | undefined>;
7
+ }
8
+ export declare class ImagePlugin extends CorePlugin<ImageState> implements ImageState {
9
+ static getters: readonly ["getImage", "getImagePath", "getImageSize"];
10
+ readonly fileStore?: FileStore;
11
+ readonly images: Record<UID, Record<UID, Image | undefined> | undefined>;
12
+ /**
13
+ * paths of images synced with the file store server.
14
+ */
15
+ readonly syncedImages: Set<Image["path"]>;
16
+ constructor(config: CorePluginConfig);
17
+ allowDispatch(cmd: CoreCommand): CommandResult.Success | CommandResult.InvalidFigureId;
18
+ handle(cmd: CoreCommand): void;
19
+ /**
20
+ * Delete unused images from the file store
21
+ */
22
+ garbageCollectExternalResources(): void;
23
+ getImage(figureId: UID): Image;
24
+ getImagePath(figureId: UID): string;
25
+ getImageSize(figureId: UID): FigureSize;
26
+ private addImage;
27
+ import(data: WorkbookData): void;
28
+ export(data: WorkbookData): void;
29
+ exportForExcel(data: ExcelWorkbookData): void;
30
+ private getAllImages;
31
+ }
32
+ export {};
@@ -0,0 +1,13 @@
1
+ export * from "./borders";
2
+ export * from "./cell";
3
+ export * from "./chart";
4
+ export * from "./conditional_format";
5
+ export * from "./data_validation";
6
+ export * from "./figures";
7
+ export * from "./filters";
8
+ export * from "./header_size";
9
+ export * from "./header_visibility";
10
+ export * from "./image";
11
+ export * from "./merge";
12
+ export * from "./range";
13
+ export * from "./sheet";
@@ -0,0 +1,83 @@
1
+ import { ApplyRangeChange, CellPosition, CommandResult, CoreCommand, ExcelWorkbookData, HeaderIndex, Merge, Range, UID, WorkbookData, Zone } from "../../types/index";
2
+ import { CorePlugin } from "../core_plugin";
3
+ type SheetMergeCellMap = Record<number, Record<number, number | undefined> | undefined>;
4
+ interface MergeState {
5
+ readonly merges: Record<UID, Record<number, Range | undefined> | undefined>;
6
+ readonly mergeCellMap: Record<UID, SheetMergeCellMap | undefined>;
7
+ }
8
+ export declare class MergePlugin extends CorePlugin<MergeState> implements MergeState {
9
+ static getters: readonly ["isInMerge", "isInSameMerge", "isMergeHidden", "getMainCellPosition", "getBottomLeftCell", "expandZone", "doesIntersectMerge", "doesColumnsHaveCommonMerges", "doesRowsHaveCommonMerges", "getMerges", "getMerge", "getMergesInZone", "isSingleCellOrMerge", "getSelectionRangeString", "isMainCellPosition"];
10
+ private nextId;
11
+ readonly merges: Record<UID, Record<number, Range | undefined> | undefined>;
12
+ readonly mergeCellMap: Record<UID, SheetMergeCellMap | undefined>;
13
+ allowDispatch(cmd: CoreCommand): CommandResult | CommandResult[];
14
+ handle(cmd: CoreCommand): void;
15
+ adaptRanges(applyChange: ApplyRangeChange, sheetId?: UID): void;
16
+ getMerges(sheetId: UID): Merge[];
17
+ getMerge({ sheetId, col, row }: CellPosition): Merge | undefined;
18
+ getMergesInZone(sheetId: UID, zone: Zone): Merge[];
19
+ /**
20
+ * Same as `getRangeString` but add all necessary merge to the range to make it a valid selection
21
+ */
22
+ getSelectionRangeString(range: Range, forSheetId: UID): string;
23
+ /**
24
+ * Return true if the zone intersects an existing merge:
25
+ * if they have at least a common cell
26
+ */
27
+ doesIntersectMerge(sheetId: UID, zone: Zone): boolean;
28
+ /**
29
+ * Returns true if two columns have at least one merge in common
30
+ */
31
+ doesColumnsHaveCommonMerges(sheetId: string, colA: HeaderIndex, colB: HeaderIndex): boolean;
32
+ /**
33
+ * Returns true if two rows have at least one merge in common
34
+ */
35
+ doesRowsHaveCommonMerges(sheetId: string, rowA: HeaderIndex, rowB: HeaderIndex): boolean;
36
+ /**
37
+ * Add all necessary merge to the current selection to make it valid
38
+ */
39
+ expandZone(sheetId: UID, zone: Zone): Zone;
40
+ isInSameMerge(sheetId: UID, colA: HeaderIndex, rowA: HeaderIndex, colB: HeaderIndex, rowB: HeaderIndex): boolean;
41
+ isInMerge({ sheetId, col, row }: CellPosition): boolean;
42
+ getMainCellPosition(position: CellPosition): CellPosition;
43
+ getBottomLeftCell(position: CellPosition): CellPosition;
44
+ isMergeHidden(sheetId: UID, merge: Merge): boolean;
45
+ /**
46
+ * Check if the zone represents a single cell or a single merge.
47
+ */
48
+ isSingleCellOrMerge(sheetId: UID, zone: Zone): boolean;
49
+ isMainCellPosition(position: CellPosition): boolean;
50
+ /**
51
+ * Return true if the current selection requires losing state if it is merged.
52
+ * This happens when there is some textual content in other cells than the
53
+ * top left.
54
+ */
55
+ private isMergeDestructive;
56
+ private getMergeById;
57
+ private checkDestructiveMerge;
58
+ private checkOverlap;
59
+ private checkFrozenPanes;
60
+ /**
61
+ * The content of a merged cell should always be empty.
62
+ * Except for the top-left cell.
63
+ */
64
+ private checkMergedContentUpdate;
65
+ private checkMergeExists;
66
+ /**
67
+ * Merge the current selection. Note that:
68
+ * - it assumes that we have a valid selection (no intersection with other
69
+ * merges)
70
+ * - it does nothing if the merge is trivial: A1:A1
71
+ */
72
+ private addMerge;
73
+ private removeMerge;
74
+ /**
75
+ * Apply a range change on merges of a particular sheet.
76
+ */
77
+ private applyRangeChangeOnSheet;
78
+ import(data: WorkbookData): void;
79
+ private importMerges;
80
+ export(data: WorkbookData): void;
81
+ exportForExcel(data: ExcelWorkbookData): void;
82
+ }
83
+ export {};
@@ -0,0 +1,59 @@
1
+ import { RangeImpl } from "../../helpers/index";
2
+ import { Command, CommandHandler, CommandResult, CoreCommand, CoreGetters, Range, RangeData, RangeProvider, UID, UnboundedZone, Zone } from "../../types/index";
3
+ export declare class RangeAdapter implements CommandHandler<CoreCommand> {
4
+ private getters;
5
+ private providers;
6
+ constructor(getters: CoreGetters);
7
+ static getters: readonly ["getRangeString", "getRangeFromSheetXC", "createAdaptedRanges", "getRangeDataFromXc", "getRangeDataFromZone", "getRangeFromRangeData", "getRangeFromZone"];
8
+ allowDispatch(cmd: Command): CommandResult;
9
+ beforeHandle(command: Command): void;
10
+ handle(cmd: Command): void;
11
+ finalize(): void;
12
+ /**
13
+ * Return a modified adapting function that verifies that after adapting a range, the range is still valid.
14
+ * Any range that gets adapted by the function adaptRange in parameter does so
15
+ * without caring if the start and end of the range in both row and column
16
+ * direction can be incorrect. This function ensure that an incorrect range gets removed.
17
+ */
18
+ private verifyRangeRemoved;
19
+ private createAdaptedRange;
20
+ private executeOnAllRanges;
21
+ /**
22
+ * Stores the functions bound to each plugin to be able to iterate over all ranges of the application,
23
+ * without knowing any details of the internal data structure of the plugins and without storing ranges
24
+ * in the range adapter.
25
+ *
26
+ * @param provider a function bound to a plugin that will loop over its internal data structure to find
27
+ * all ranges
28
+ */
29
+ addRangeProvider(provider: RangeProvider["adaptRanges"]): void;
30
+ createAdaptedRanges(ranges: Range[], offsetX: number, offsetY: number, sheetId: UID): Range[];
31
+ /**
32
+ * Creates a range from a XC reference that can contain a sheet reference
33
+ * @param defaultSheetId the sheet to default to if the sheetXC parameter does not contain a sheet reference (usually the active sheet Id)
34
+ * @param sheetXC the string description of a range, in the form SheetName!XC:XC
35
+ */
36
+ getRangeFromSheetXC(defaultSheetId: UID, sheetXC: string): RangeImpl;
37
+ /**
38
+ * Gets the string that represents the range as it is at the moment of the call.
39
+ * The string will be prefixed with the sheet name if the call specified a sheet id in `forSheetId`
40
+ * different than the sheet on which the range has been created.
41
+ *
42
+ * @param range the range (received from getRangeFromXC or getRangeFromZone)
43
+ * @param forSheetId the id of the sheet where the range string is supposed to be used.
44
+ * @param options
45
+ * @param options.useFixedReference if true, the range will be returned with fixed row and column
46
+ */
47
+ getRangeString(range: Range, forSheetId: UID, options?: {
48
+ useFixedReference: boolean;
49
+ }): string;
50
+ getRangeDataFromXc(sheetId: UID, xc: string): RangeData;
51
+ getRangeDataFromZone(sheetId: UID, zone: Zone | UnboundedZone): RangeData;
52
+ getRangeFromZone(sheetId: UID, zone: Zone | UnboundedZone): Range;
53
+ getRangeFromRangeData(data: RangeData): Range;
54
+ /**
55
+ * Get a Xc string that represent a part of a range
56
+ */
57
+ private getRangePartString;
58
+ private getInvalidRange;
59
+ }
@@ -0,0 +1,12 @@
1
+ import { CommandResult, CoreCommand, Locale, WorkbookData } from "../../types";
2
+ import { CorePlugin } from "./../core_plugin";
3
+ export declare class SettingsPlugin extends CorePlugin {
4
+ static getters: readonly ["getLocale"];
5
+ private locale;
6
+ allowDispatch(cmd: CoreCommand): CommandResult.Success | CommandResult.InvalidLocale;
7
+ handle(cmd: CoreCommand): void;
8
+ getLocale(): Locale;
9
+ private changeCellsDateFormatWithLocale;
10
+ import(data: WorkbookData): void;
11
+ export(data: WorkbookData): void;
12
+ }
@@ -0,0 +1,151 @@
1
+ import { Cell, CellPosition, Command, CommandResult, CoreCommand, Dimension, ExcelWorkbookData, HeaderIndex, PaneDivision, Row, Sheet, UID, UnboundedZone, WorkbookData, Zone, ZoneDimension } from "../../types/index";
2
+ import { CorePlugin } from "../core_plugin";
3
+ interface SheetState {
4
+ readonly sheets: Record<UID, Sheet | undefined>;
5
+ readonly orderedSheetIds: UID[];
6
+ readonly sheetIdsMapName: Record<string, UID | undefined>;
7
+ readonly cellPosition: Record<UID, CellPosition | undefined>;
8
+ }
9
+ export declare class SheetPlugin extends CorePlugin<SheetState> implements SheetState {
10
+ static getters: readonly ["getSheetName", "tryGetSheetName", "getSheet", "tryGetSheet", "getSheetIdByName", "getSheetIds", "getVisibleSheetIds", "isSheetVisible", "getEvaluationSheets", "doesHeaderExist", "doesHeadersExist", "getCell", "getCellPosition", "getColsZone", "getRowCells", "getRowsZone", "getNumberCols", "getNumberRows", "getNumberHeaders", "getGridLinesVisibility", "getNextSheetName", "getSheetSize", "getSheetZone", "getPaneDivisions", "checkZonesExistInSheet", "getCommandZones", "getUnboundedZone", "checkElementsIncludeAllNonFrozenHeaders", "getDuplicateSheetName"];
11
+ readonly sheetIdsMapName: Record<string, UID | undefined>;
12
+ readonly orderedSheetIds: UID[];
13
+ readonly sheets: Record<UID, Sheet | undefined>;
14
+ readonly cellPosition: Record<UID, CellPosition | undefined>;
15
+ allowDispatch(cmd: CoreCommand): CommandResult | CommandResult[];
16
+ handle(cmd: CoreCommand): void;
17
+ import(data: WorkbookData): void;
18
+ private exportSheets;
19
+ export(data: WorkbookData): void;
20
+ exportForExcel(data: ExcelWorkbookData): void;
21
+ getGridLinesVisibility(sheetId: UID): boolean;
22
+ tryGetSheet(sheetId: UID): Sheet | undefined;
23
+ getSheet(sheetId: UID): Sheet;
24
+ isSheetVisible(sheetId: UID): boolean;
25
+ /**
26
+ * Return the sheet name. Throw if the sheet is not found.
27
+ */
28
+ getSheetName(sheetId: UID): string;
29
+ /**
30
+ * Return the sheet name or undefined if the sheet doesn't exist.
31
+ */
32
+ tryGetSheetName(sheetId: UID): string | undefined;
33
+ getSheetIdByName(name: string | undefined): UID | undefined;
34
+ getSheetIds(): UID[];
35
+ getVisibleSheetIds(): UID[];
36
+ getEvaluationSheets(): Record<UID, Sheet | undefined>;
37
+ doesHeaderExist(sheetId: UID, dimension: Dimension, index: number): boolean;
38
+ doesHeadersExist(sheetId: UID, dimension: Dimension, headerIndexes: HeaderIndex[]): boolean;
39
+ getRow(sheetId: UID, index: HeaderIndex): Row;
40
+ getCell({ sheetId, col, row }: CellPosition): Cell | undefined;
41
+ getColsZone(sheetId: UID, start: HeaderIndex, end: HeaderIndex): Zone;
42
+ getRowCells(sheetId: UID, row: HeaderIndex): UID[];
43
+ getRowsZone(sheetId: UID, start: HeaderIndex, end: HeaderIndex): Zone;
44
+ getCellPosition(cellId: UID): CellPosition;
45
+ getNumberCols(sheetId: UID): number;
46
+ getNumberRows(sheetId: UID): number;
47
+ getNumberHeaders(sheetId: UID, dimension: Dimension): number;
48
+ getNextSheetName(baseName?: string): string;
49
+ getSheetSize(sheetId: UID): ZoneDimension;
50
+ getSheetZone(sheetId: UID): Zone;
51
+ getUnboundedZone(sheetId: UID, zone: Zone): UnboundedZone;
52
+ getPaneDivisions(sheetId: UID): Readonly<PaneDivision>;
53
+ private setPaneDivisions;
54
+ /**
55
+ * Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
56
+ * This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
57
+ */
58
+ checkElementsIncludeAllNonFrozenHeaders(sheetId: UID, dimension: Dimension, elements: HeaderIndex[]): boolean;
59
+ getCommandZones(cmd: Command): Zone[];
60
+ /**
61
+ * Check if zones in the command are well formed and
62
+ * not outside the sheet.
63
+ */
64
+ checkZonesExistInSheet(sheetId: UID, zones: Zone[]): CommandResult;
65
+ private updateCellPosition;
66
+ /**
67
+ * Set the cell at a new position and clear its previous position.
68
+ */
69
+ private setNewPosition;
70
+ /**
71
+ * Remove the cell at the given position (if there's one)
72
+ */
73
+ private clearPosition;
74
+ private setGridLinesVisibility;
75
+ private clearZones;
76
+ private createSheet;
77
+ private moveSheet;
78
+ private findIndexOfTargetSheet;
79
+ private checkSheetName;
80
+ private checkSheetPosition;
81
+ private checkRowFreezeQuantity;
82
+ private checkColFreezeQuantity;
83
+ private checkRowFreezeOverlapMerge;
84
+ private checkColFreezeOverlapMerge;
85
+ private isRenameAllowed;
86
+ private renameSheet;
87
+ private hideSheet;
88
+ private showSheet;
89
+ private duplicateSheet;
90
+ getDuplicateSheetName(sheetName: string): string;
91
+ private deleteSheet;
92
+ /**
93
+ * Delete column. This requires a lot of handling:
94
+ * - Update all the formulas in all sheets
95
+ * - Move the cells
96
+ * - Update the cols/rows (size, number, (cells), ...)
97
+ * - Reevaluate the cells
98
+ *
99
+ * @param sheet ID of the sheet on which deletion should be applied
100
+ * @param columns Columns to delete
101
+ */
102
+ private removeColumns;
103
+ /**
104
+ * Delete row. This requires a lot of handling:
105
+ * - Update the merges
106
+ * - Update all the formulas in all sheets
107
+ * - Move the cells
108
+ * - Update the cols/rows (size, number, (cells), ...)
109
+ * - Reevaluate the cells
110
+ *
111
+ * @param sheet ID of the sheet on which deletion should be applied
112
+ * @param rows Rows to delete
113
+ */
114
+ private removeRows;
115
+ private addColumns;
116
+ private addRows;
117
+ private moveCellOnColumnsDeletion;
118
+ /**
119
+ * Move the cells after a column or rows insertion
120
+ */
121
+ private moveCellsOnAddition;
122
+ /**
123
+ * Move all the cells that are from the row under `deleteToRow` up to `deleteFromRow`
124
+ *
125
+ * b.e.
126
+ * move vertically with delete from 3 and delete to 5 will first clear all the cells from lines 3 to 5,
127
+ * then take all the row starting at index 6 and add them back at index 3
128
+ *
129
+ */
130
+ private moveCellOnRowsDeletion;
131
+ private updateRowsStructureOnDeletion;
132
+ /**
133
+ * Add empty rows at the end of the rows
134
+ *
135
+ * @param sheet Sheet
136
+ * @param quantity Number of rows to add
137
+ */
138
+ private addEmptyRows;
139
+ private getImportedSheetSize;
140
+ /**
141
+ * Check that any "sheetId" in the command matches an existing
142
+ * sheet.
143
+ */
144
+ private checkSheetExists;
145
+ /**
146
+ * Check if zones in the command are well formed and
147
+ * not outside the sheet.
148
+ */
149
+ private checkZonesAreInSheet;
150
+ }
151
+ export {};
@@ -0,0 +1,49 @@
1
+ import { UuidGenerator } from "../helpers";
2
+ import { ModelConfig } from "../model";
3
+ import { StateObserver } from "../state_observer";
4
+ import { ApplyRangeChange, CoreCommand, CoreCommandDispatcher, RangeProvider, UID, WorkbookData } from "../types";
5
+ import { CoreGetters } from "../types/getters";
6
+ import { BasePlugin } from "./base_plugin";
7
+ import { RangeAdapter } from "./core/range";
8
+ export interface CorePluginConfig {
9
+ readonly getters: CoreGetters;
10
+ readonly stateObserver: StateObserver;
11
+ readonly range: RangeAdapter;
12
+ readonly dispatch: CoreCommandDispatcher["dispatch"];
13
+ readonly uuidGenerator: UuidGenerator;
14
+ readonly custom: ModelConfig["custom"];
15
+ readonly external: ModelConfig["external"];
16
+ }
17
+ export interface CorePluginConstructor {
18
+ new (config: CorePluginConfig): CorePlugin;
19
+ getters: readonly string[];
20
+ }
21
+ /**
22
+ * Core plugins handle spreadsheet data.
23
+ * They are responsible to import, export and maintain the spreadsheet
24
+ * persisted state.
25
+ * They should not be concerned about UI parts or transient state.
26
+ */
27
+ export declare class CorePlugin<State = any> extends BasePlugin<State, CoreCommand> implements RangeProvider {
28
+ protected getters: CoreGetters;
29
+ protected uuidGenerator: UuidGenerator;
30
+ constructor({ getters, stateObserver, range, dispatch, uuidGenerator }: CorePluginConfig);
31
+ import(data: WorkbookData): void;
32
+ export(data: WorkbookData): void;
33
+ /**
34
+ * This method can be implemented in any plugin, to loop over the plugin's data structure and adapt the plugin's ranges.
35
+ * To adapt them, the implementation of the function must have a perfect knowledge of the data structure, thus
36
+ * implementing the loops over it makes sense in the plugin itself.
37
+ * When calling the method applyChange, the range will be adapted if necessary, then a copy will be returned along with
38
+ * the type of change that occurred.
39
+ *
40
+ * @param applyChange a function that, when called, will adapt the range according to the change on the grid
41
+ * @param sheetId an optional sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
42
+ */
43
+ adaptRanges(applyChange: ApplyRangeChange, sheetId?: UID): void;
44
+ /**
45
+ * Implement this method to clean unused external resources, such as images
46
+ * stored on a server which have been deleted.
47
+ */
48
+ garbageCollectExternalResources(): void;
49
+ }
@@ -0,0 +1,7 @@
1
+ import { Registry } from "../registries/registry";
2
+ import { CorePluginConstructor } from "./core_plugin";
3
+ import { UIPluginConstructor } from "./ui_plugin";
4
+ export declare const corePluginRegistry: Registry<CorePluginConstructor>;
5
+ export declare const featurePluginRegistry: Registry<UIPluginConstructor>;
6
+ export declare const statefulUIPluginRegistry: Registry<UIPluginConstructor>;
7
+ export declare const coreViewsPluginRegistry: Registry<UIPluginConstructor>;
@@ -0,0 +1,10 @@
1
+ import { ModelConfig } from "../../../model";
2
+ import { CellPosition, EnsureRange, EvalContext, EvaluatedCell, Getters, ReferenceDenormalizer } from "../../../types";
3
+ export type CompilationParameters = [ReferenceDenormalizer, EnsureRange, EvalContext];
4
+ /**
5
+ * Return all functions necessary to properly evaluate a formula:
6
+ * - a refFn function to read any reference, cell or range of a normalized formula
7
+ * - a range function to convert any reference to a proper value array
8
+ * - an evaluation context
9
+ */
10
+ export declare function buildCompilationParameters(context: ModelConfig["custom"], getters: Getters, computeCell: (position: CellPosition) => EvaluatedCell): CompilationParameters;
@@ -0,0 +1,43 @@
1
+ import { CellPosition, CellValue, Command, EvaluatedCell, ExcelWorkbookData, Format, FormattedValue, FormulaCell, Matrix, Range, UID, ValueAndFormat, Zone } from "../../../types/index";
2
+ import { UIPlugin, UIPluginConfig } from "../../ui_plugin";
3
+ import { CoreViewCommand } from "./../../../types/commands";
4
+ export declare class EvaluationPlugin extends UIPlugin {
5
+ static getters: readonly ["evaluateFormula", "evaluateFormulaResult", "getCorrespondingFormulaCell", "getRangeFormattedValues", "getRangeValues", "getRangeFormats", "getEvaluatedCell", "getEvaluatedCells", "getEvaluatedCellsInZone", "getSpreadPositionsOf", "getArrayFormulaSpreadingOn", "isEmpty"];
6
+ private shouldRebuildDependenciesGraph;
7
+ private evaluator;
8
+ private positionsToUpdate;
9
+ constructor(config: UIPluginConfig);
10
+ beforeHandle(cmd: Command): void;
11
+ handle(cmd: CoreViewCommand): void;
12
+ finalize(): void;
13
+ evaluateFormula(sheetId: UID, formulaString: string): CellValue | Matrix<CellValue>;
14
+ evaluateFormulaResult(sheetId: UID, formulaString: string): ValueAndFormat | Matrix<ValueAndFormat>;
15
+ /**
16
+ * Return the value of each cell in the range as they are displayed in the grid.
17
+ */
18
+ getRangeFormattedValues(range: Range): FormattedValue[];
19
+ /**
20
+ * Return the value of each cell in the range.
21
+ */
22
+ getRangeValues(range: Range): CellValue[];
23
+ /**
24
+ * Return the format of each cell in the range.
25
+ */
26
+ getRangeFormats(range: Range): (Format | undefined)[];
27
+ getEvaluatedCell(position: CellPosition): EvaluatedCell;
28
+ getEvaluatedCells(sheetId: UID): Record<UID, EvaluatedCell>;
29
+ getEvaluatedCellsInZone(sheetId: UID, zone: Zone): EvaluatedCell[];
30
+ getSpreadPositionsOf(position: CellPosition): CellPosition[];
31
+ getArrayFormulaSpreadingOn(position: CellPosition): CellPosition | undefined;
32
+ /**
33
+ * Check if a zone only contains empty cells
34
+ */
35
+ isEmpty(sheetId: UID, zone: Zone): boolean;
36
+ exportForExcel(data: ExcelWorkbookData): void;
37
+ /**
38
+ * Returns the corresponding formula cell of a given cell
39
+ * It could be the formula present in the cell itself or the
40
+ * formula of the array formula that spreads to the cell
41
+ */
42
+ getCorrespondingFormulaCell(position: CellPosition): FormulaCell | undefined;
43
+ }