@odoo/o-spreadsheet 18.0.55 → 18.0.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/o-spreadsheet.cjs.js +60099 -68434
- package/dist/o-spreadsheet.esm.js +59914 -68433
- package/dist/o-spreadsheet.iife.js +65385 -73903
- package/dist/o-spreadsheet.iife.min.js +764 -727
- package/dist/o_spreadsheet.xml +9 -6
- package/dist/types/actions/action.d.ts +84 -0
- package/dist/types/actions/data_actions.d.ts +12 -0
- package/dist/types/actions/edit_actions.d.ts +23 -0
- package/dist/types/actions/format_actions.d.ts +63 -0
- package/dist/types/actions/insert_actions.d.ts +32 -0
- package/dist/types/actions/menu_items_actions.d.ts +55 -0
- package/dist/types/actions/sheet_actions.d.ts +13 -0
- package/dist/types/actions/view_actions.d.ts +26 -0
- package/dist/types/clipboard_handlers/abstract_cell_clipboard_handler.d.ts +7 -0
- package/dist/types/clipboard_handlers/abstract_clipboard_handler.d.ts +12 -0
- package/dist/types/clipboard_handlers/abstract_figure_clipboard_handler.d.ts +5 -0
- package/dist/types/clipboard_handlers/borders_clipboard.d.ts +17 -0
- package/dist/types/clipboard_handlers/cell_clipboard.d.ts +29 -0
- package/dist/types/clipboard_handlers/chart_clipboard.d.ts +15 -0
- package/dist/types/clipboard_handlers/conditional_format_clipboard.d.ts +25 -0
- package/dist/types/clipboard_handlers/data_validation_clipboard.d.ts +25 -0
- package/dist/types/clipboard_handlers/image_clipboard.d.ts +16 -0
- package/dist/types/clipboard_handlers/index.d.ts +7 -0
- package/dist/types/clipboard_handlers/merge_clipboard.d.ts +16 -0
- package/dist/types/clipboard_handlers/references_clipboard.d.ts +11 -0
- package/dist/types/clipboard_handlers/sheet_clipboard.d.ts +11 -0
- package/dist/types/clipboard_handlers/tables_clipboard.d.ts +33 -0
- package/dist/types/collaborative/local_transport_service.d.ts +8 -0
- package/dist/types/collaborative/ot/ot.d.ts +22 -0
- package/dist/types/collaborative/ot/ot_helpers.d.ts +3 -0
- package/dist/types/collaborative/ot/ot_specific.d.ts +1 -0
- package/dist/types/collaborative/revisions.d.ts +22 -0
- package/dist/types/collaborative/session.d.ts +101 -0
- package/dist/types/components/action_button/action_button.d.ts +42 -0
- package/dist/types/components/animation/ripple.d.ts +118 -0
- package/dist/types/components/autofill/autofill.d.ts +29 -0
- package/dist/types/components/border_editor/border_editor.d.ts +67 -0
- package/dist/types/components/border_editor/border_editor_widget.d.ts +47 -0
- package/dist/types/components/bottom_bar/bottom_bar.d.ts +59 -0
- package/dist/types/components/bottom_bar/bottom_bar_sheet/bottom_bar_sheet.d.ts +62 -0
- package/dist/types/components/bottom_bar/bottom_bar_statistic/aggregate_statistics_store.d.ts +15 -0
- package/dist/types/components/bottom_bar/bottom_bar_statistic/bottom_bar_statistic.d.ts +25 -0
- package/dist/types/components/collaborative_client_tag/collaborative_client_tag.d.ts +21 -0
- package/dist/types/components/color_picker/color_picker.d.ts +57 -0
- package/dist/types/components/color_picker/color_picker_widget.d.ts +52 -0
- package/dist/types/components/composer/autocomplete_dropdown/autocomplete_dropdown.d.ts +23 -0
- package/dist/types/components/composer/autocomplete_dropdown/autocomplete_dropdown_store.d.ts +12 -0
- package/dist/types/components/composer/composer/abstract_composer_store.d.ts +113 -0
- package/dist/types/components/composer/composer/cell_composer_store.d.ts +18 -0
- package/dist/types/components/composer/composer/composer.d.ts +172 -0
- package/dist/types/components/composer/composer_focus_store.d.ts +28 -0
- package/dist/types/components/composer/content_editable_helper.d.ts +60 -0
- package/dist/types/components/composer/formula_assistant/formula_assistant.d.ts +18 -0
- package/dist/types/components/composer/grid_composer/grid_composer.d.ts +47 -0
- package/dist/types/components/composer/standalone_composer/standalone_composer.d.ts +60 -0
- package/dist/types/components/composer/standalone_composer/standalone_composer_store.d.ts +22 -0
- package/dist/types/components/composer/top_bar_composer/top_bar_composer.d.ts +19 -0
- package/dist/types/components/dashboard/clickable_cell_store.d.ts +15 -0
- package/dist/types/components/dashboard/dashboard.d.ts +49 -0
- package/dist/types/components/data_validation_overlay/data_validation_overlay.d.ts +16 -0
- package/dist/types/components/data_validation_overlay/dv_checkbox/dv_checkbox.d.ts +19 -0
- package/dist/types/components/data_validation_overlay/dv_list_icon/dv_list_icon.d.ts +13 -0
- package/dist/types/components/error_tooltip/error_tooltip.d.ts +25 -0
- package/dist/types/components/figures/chart/chartJs/chartjs.d.ts +23 -0
- package/dist/types/components/figures/chart/chartJs/chartjs_show_values_plugin.d.ts +16 -0
- package/dist/types/components/figures/chart/chartJs/chartjs_waterfall_plugin.d.ts +12 -0
- package/dist/types/components/figures/chart/gauge/gauge_chart_component.d.ts +13 -0
- package/dist/types/components/figures/chart/scorecard/chart_scorecard.d.ts +18 -0
- package/dist/types/components/figures/figure/figure.d.ts +54 -0
- package/dist/types/components/figures/figure_chart/figure_chart.d.ts +16 -0
- package/dist/types/components/figures/figure_container/figure_container.d.ts +117 -0
- package/dist/types/components/figures/figure_image/figure_image.d.ts +15 -0
- package/dist/types/components/filters/filter_icon/filter_icon.d.ts +19 -0
- package/dist/types/components/filters/filter_icons_overlay/filter_icons_overlay.d.ts +13 -0
- package/dist/types/components/filters/filter_menu/filter_menu.d.ts +46 -0
- package/dist/types/components/filters/filter_menu_item/filter_menu_value_item.d.ts +28 -0
- package/dist/types/components/focus_store.d.ts +6 -0
- package/dist/types/components/font_size_editor/font_size_editor.d.ts +34 -0
- package/dist/types/components/grid/grid.d.ts +105 -0
- package/dist/types/components/grid/hovered_cell_store.d.ts +10 -0
- package/dist/types/components/grid_add_rows_footer/grid_add_rows_footer.d.ts +29 -0
- package/dist/types/components/grid_cell_icon/grid_cell_icon.d.ts +26 -0
- package/dist/types/components/grid_overlay/grid_overlay.d.ts +68 -0
- package/dist/types/components/grid_popover/grid_popover.d.ts +28 -0
- package/dist/types/components/header_group/header_group.d.ts +46 -0
- package/dist/types/components/header_group/header_group_container.d.ts +33 -0
- package/dist/types/components/headers_overlay/headers_overlay.d.ts +131 -0
- package/dist/types/components/helpers/autofocus_hook.d.ts +3 -0
- package/dist/types/components/helpers/css.d.ts +40 -0
- package/dist/types/components/helpers/dom_helpers.d.ts +34 -0
- package/dist/types/components/helpers/drag_and_drop.d.ts +20 -0
- package/dist/types/components/helpers/drag_and_drop_hook.d.ts +24 -0
- package/dist/types/components/helpers/draw_grid_hook.d.ts +3 -0
- package/dist/types/components/helpers/figure_container_helper.d.ts +14 -0
- package/dist/types/components/helpers/figure_drag_helper.d.ts +6 -0
- package/dist/types/components/helpers/figure_snap_helper.d.ts +25 -0
- package/dist/types/components/helpers/highlight_hook.d.ts +4 -0
- package/dist/types/components/helpers/html_content_helpers.d.ts +2 -0
- package/dist/types/components/helpers/index.d.ts +1 -0
- package/dist/types/components/helpers/listener_hook.d.ts +13 -0
- package/dist/types/components/helpers/position_hook.d.ts +25 -0
- package/dist/types/components/helpers/selection_helpers.d.ts +2 -0
- package/dist/types/components/helpers/time_hooks.d.ts +17 -0
- package/dist/types/components/helpers/touch_scroll_hook.d.ts +3 -0
- package/dist/types/components/helpers/wheel_hook.d.ts +1 -0
- package/dist/types/components/highlight/border/border.d.ts +21 -0
- package/dist/types/components/highlight/corner/corner.d.ts +25 -0
- package/dist/types/components/highlight/highlight/highlight.d.ts +26 -0
- package/dist/types/components/icon_picker/icon_picker.d.ts +68 -0
- package/dist/types/components/icons/icons.d.ts +56 -0
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/link/index.d.ts +2 -0
- package/dist/types/components/link/link_display/link_display.d.ts +28 -0
- package/dist/types/components/link/link_editor/link_editor.d.ts +46 -0
- package/dist/types/components/menu/menu.d.ts +99 -0
- package/dist/types/components/paint_format_button/paint_format_button.d.ts +20 -0
- package/dist/types/components/paint_format_button/paint_format_store.d.ts +27 -0
- package/dist/types/components/pivot_html_renderer/pivot_html_renderer.d.ts +87 -0
- package/dist/types/components/popover/cell_popover_store.d.ts +22 -0
- package/dist/types/components/popover/index.d.ts +3 -0
- package/dist/types/components/popover/popover.d.ts +80 -0
- package/dist/types/components/popover/popover_builders.d.ts +1 -0
- package/dist/types/components/scrollbar/index.d.ts +2 -0
- package/dist/types/components/scrollbar/scrollbar.d.ts +39 -0
- package/dist/types/components/scrollbar/scrollbar_horizontal.d.ts +32 -0
- package/dist/types/components/scrollbar/scrollbar_vertical.d.ts +32 -0
- package/dist/types/components/scrollbar.d.ts +9 -0
- package/dist/types/components/selection_input/selection_input.d.ts +81 -0
- package/dist/types/components/selection_input/selection_input_store.d.ts +96 -0
- package/dist/types/components/side_panel/chart/bar_chart/bar_chart_config_panel.d.ts +7 -0
- package/dist/types/components/side_panel/chart/building_blocks/axis_design/axis_design_editor.d.ts +46 -0
- package/dist/types/components/side_panel/chart/building_blocks/data_series/data_series.d.ts +30 -0
- package/dist/types/components/side_panel/chart/building_blocks/error_section/error_section.d.ts +21 -0
- package/dist/types/components/side_panel/chart/building_blocks/general_design/general_design_editor.d.ts +41 -0
- package/dist/types/components/side_panel/chart/building_blocks/generic_side_panel/config_panel.d.ts +87 -0
- package/dist/types/components/side_panel/chart/building_blocks/label_range/label_range.d.ts +42 -0
- package/dist/types/components/side_panel/chart/building_blocks/title/title.d.ts +76 -0
- package/dist/types/components/side_panel/chart/chart_type_picker/chart_type_picker.d.ts +49 -0
- package/dist/types/components/side_panel/chart/chart_with_axis/design_panel.d.ts +63 -0
- package/dist/types/components/side_panel/chart/combo_chart/combo_chart_config_panel.d.ts +4 -0
- package/dist/types/components/side_panel/chart/combo_chart/combo_chart_design_panel.d.ts +19 -0
- package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_config_panel.d.ts +32 -0
- package/dist/types/components/side_panel/chart/gauge_chart_panel/gauge_chart_design_panel.d.ts +48 -0
- package/dist/types/components/side_panel/chart/index.d.ts +15 -0
- package/dist/types/components/side_panel/chart/line_chart/line_chart_config_panel.d.ts +16 -0
- package/dist/types/components/side_panel/chart/main_chart_panel/main_chart_panel.d.ts +31 -0
- package/dist/types/components/side_panel/chart/main_chart_panel/main_chart_panel_store.d.ts +10 -0
- package/dist/types/components/side_panel/chart/pie_chart/pie_chart_design_panel.d.ts +31 -0
- package/dist/types/components/side_panel/chart/scatter_chart/scatter_chart_config_panel.d.ts +12 -0
- package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_config_panel.d.ts +40 -0
- package/dist/types/components/side_panel/chart/scorecard_chart_panel/scorecard_chart_design_panel.d.ts +41 -0
- package/dist/types/components/side_panel/chart/waterfall_chart/waterfall_chart_design_panel.d.ts +53 -0
- package/dist/types/components/side_panel/components/badge_selection/badge_selection.d.ts +20 -0
- package/dist/types/components/side_panel/components/checkbox/checkbox.d.ts +47 -0
- package/dist/types/components/side_panel/components/cog_wheel_menu/cog_wheel_menu.d.ts +22 -0
- package/dist/types/components/side_panel/components/collapsible/side_panel_collapsible.d.ts +16 -0
- package/dist/types/components/side_panel/components/radio_selection/radio_selection.d.ts +32 -0
- package/dist/types/components/side_panel/components/round_color_picker/round_color_picker.d.ts +45 -0
- package/dist/types/components/side_panel/components/section/section.d.ts +16 -0
- package/dist/types/components/side_panel/conditional_formatting/cf_editor/cf_editor.d.ts +167 -0
- package/dist/types/components/side_panel/conditional_formatting/cf_preview/cf_preview.d.ts +57 -0
- package/dist/types/components/side_panel/conditional_formatting/cf_preview_list/cf_preview_list.d.ts +64 -0
- package/dist/types/components/side_panel/conditional_formatting/conditional_formatting.d.ts +30 -0
- package/dist/types/components/side_panel/custom_currency/custom_currency.d.ts +43 -0
- package/dist/types/components/side_panel/data_validation/data_validation_panel.d.ts +28 -0
- package/dist/types/components/side_panel/data_validation/data_validation_panel_helper.d.ts +14 -0
- package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_criterion_form.d.ts +15 -0
- package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_date_criterion/dv_date_criterion.d.ts +16 -0
- package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_double_input_criterion/dv_double_input_criterion.d.ts +10 -0
- package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_input/dv_input.d.ts +54 -0
- package/dist/types/components/side_panel/data_validation/dv_criterion_form/dv_single_input_criterion/dv_single_input_criterion.d.ts +9 -0
- 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
- 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
- package/dist/types/components/side_panel/data_validation/dv_editor/dv_editor.d.ts +48 -0
- package/dist/types/components/side_panel/data_validation/dv_preview/dv_preview.d.ts +20 -0
- package/dist/types/components/side_panel/find_and_replace/find_and_replace.d.ts +46 -0
- package/dist/types/components/side_panel/find_and_replace/find_and_replace_store.d.ts +72 -0
- package/dist/types/components/side_panel/more_formats/more_formats.d.ts +13 -0
- package/dist/types/components/side_panel/pivot/editable_name/editable_name.d.ts +21 -0
- package/dist/types/components/side_panel/pivot/pivot_defer_update/pivot_defer_update.d.ts +28 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/add_dimension_button/add_dimension_button.d.ts +46 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension/pivot_dimension.d.ts +35 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_granularity/pivot_dimension_granularity.d.ts +34 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_dimension_order/pivot_dimension_order.d.ts +15 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_layout_configurator.d.ts +73 -0
- package/dist/types/components/side_panel/pivot/pivot_layout_configurator/pivot_measure/pivot_measure.d.ts +37 -0
- package/dist/types/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel.d.ts +68 -0
- package/dist/types/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.d.ts +34 -0
- package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_side_panel.d.ts +21 -0
- package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.d.ts +35 -0
- package/dist/types/components/side_panel/pivot/pivot_side_panel/pivot_spreadsheet_side_panel/pivot_spreadsheet_side_panel.d.ts +49 -0
- package/dist/types/components/side_panel/pivot/pivot_title_section/pivot_title_section.d.ts +29 -0
- package/dist/types/components/side_panel/remove_duplicates/remove_duplicates.d.ts +39 -0
- package/dist/types/components/side_panel/select_menu/select_menu.d.ts +37 -0
- package/dist/types/components/side_panel/settings/settings_panel.d.ts +28 -0
- package/dist/types/components/side_panel/side_panel/side_panel.d.ts +15 -0
- package/dist/types/components/side_panel/side_panel/side_panel_store.d.ts +32 -0
- package/dist/types/components/side_panel/split_to_columns_panel/split_to_columns_panel.d.ts +42 -0
- package/dist/types/components/side_panel/table_panel/table_panel.d.ts +52 -0
- package/dist/types/components/side_panel/table_style_editor_panel/table_style_editor_panel.d.ts +50 -0
- package/dist/types/components/spreadsheet/spreadsheet.d.ts +63 -0
- package/dist/types/components/tables/table_dropdown_button/table_dropdown_button.d.ts +25 -0
- package/dist/types/components/tables/table_resizer/table_resizer.d.ts +20 -0
- package/dist/types/components/tables/table_style_picker/table_style_picker.d.ts +28 -0
- package/dist/types/components/tables/table_style_preview/table_canvas_helpers.d.ts +2 -0
- package/dist/types/components/tables/table_style_preview/table_style_preview.d.ts +45 -0
- package/dist/types/components/tables/table_styles_popover/table_styles_popover.d.ts +53 -0
- package/dist/types/components/text_input/text_input.d.ts +35 -0
- package/dist/types/components/top_bar/top_bar.d.ts +70 -0
- package/dist/types/components/translations_terms.d.ts +191 -0
- package/dist/types/components/validation_messages/validation_messages.d.ts +21 -0
- package/dist/types/constants.d.ts +179 -0
- package/dist/types/formulas/code_builder.d.ts +24 -0
- package/dist/types/formulas/compiler.d.ts +26 -0
- package/dist/types/formulas/composer_tokenizer.d.ts +48 -0
- package/dist/types/formulas/helpers.d.ts +7 -0
- package/dist/types/formulas/index.d.ts +14 -0
- package/dist/types/formulas/parser.d.ts +76 -0
- package/dist/types/formulas/range_tokenizer.d.ts +8 -0
- package/dist/types/formulas/tokenizer.d.ts +25 -0
- package/dist/types/functions/arguments.d.ts +10 -0
- package/dist/types/functions/helper_assert.d.ts +6 -0
- package/dist/types/functions/helper_financial.d.ts +51 -0
- package/dist/types/functions/helper_logical.d.ts +9 -0
- package/dist/types/functions/helper_lookup.d.ts +9 -0
- package/dist/types/functions/helper_math.d.ts +3 -0
- package/dist/types/functions/helper_matrices.d.ts +24 -0
- package/dist/types/functions/helper_parser.d.ts +95 -0
- package/dist/types/functions/helper_statistical.d.ts +19 -0
- package/dist/types/functions/helpers.d.ts +146 -0
- package/dist/types/functions/index.d.ts +18 -0
- package/dist/types/functions/module_array.d.ts +122 -0
- package/dist/types/functions/module_custom.d.ts +6 -0
- package/dist/types/functions/module_database.d.ts +73 -0
- package/dist/types/functions/module_date.d.ts +185 -0
- package/dist/types/functions/module_engineering.d.ts +7 -0
- package/dist/types/functions/module_filter.d.ts +16 -0
- package/dist/types/functions/module_financial.d.ts +295 -0
- package/dist/types/functions/module_info.d.ts +63 -0
- package/dist/types/functions/module_logical.d.ts +31 -0
- package/dist/types/functions/module_lookup.d.ts +108 -0
- package/dist/types/functions/module_math.d.ts +354 -0
- package/dist/types/functions/module_operators.d.ts +77 -0
- package/dist/types/functions/module_parser.d.ts +7 -0
- package/dist/types/functions/module_statistical.d.ts +244 -0
- package/dist/types/functions/module_text.d.ts +132 -0
- package/dist/types/functions/module_web.d.ts +7 -0
- package/dist/types/helpers/cells/cell_evaluation.d.ts +4 -0
- package/dist/types/helpers/cells/index.d.ts +2 -0
- package/dist/types/helpers/chart_date.d.ts +8 -0
- package/dist/types/helpers/clipboard/clipboard_helpers.d.ts +32 -0
- package/dist/types/helpers/clipboard/navigator_clipboard_wrapper.d.ts +13 -0
- package/dist/types/helpers/color.d.ts +80 -0
- package/dist/types/helpers/coordinates.d.ts +38 -0
- package/dist/types/helpers/data_normalization.d.ts +14 -0
- package/dist/types/helpers/data_validation_helpers.d.ts +6 -0
- package/dist/types/helpers/dates.d.ts +92 -0
- package/dist/types/helpers/edge_scrolling.d.ts +9 -0
- package/dist/types/helpers/event_bus.d.ts +45 -0
- package/dist/types/helpers/figures/charts/abstract_chart.d.ts +56 -0
- package/dist/types/helpers/figures/charts/bar_chart.d.ts +32 -0
- package/dist/types/helpers/figures/charts/chart_common.d.ts +122 -0
- package/dist/types/helpers/figures/charts/chart_common_line_scatter.d.ts +16 -0
- package/dist/types/helpers/figures/charts/chart_factory.d.ts +35 -0
- package/dist/types/helpers/figures/charts/chart_ui_common.d.ts +51 -0
- package/dist/types/helpers/figures/charts/combo_chart.d.ts +29 -0
- package/dist/types/helpers/figures/charts/gauge_chart.d.ts +23 -0
- package/dist/types/helpers/figures/charts/gauge_chart_rendering.d.ts +48 -0
- package/dist/types/helpers/figures/charts/index.d.ts +10 -0
- package/dist/types/helpers/figures/charts/line_chart.d.ts +33 -0
- package/dist/types/helpers/figures/charts/pie_chart.d.ts +29 -0
- package/dist/types/helpers/figures/charts/pyramid_chart.d.ts +32 -0
- package/dist/types/helpers/figures/charts/scatter_chart.d.ts +31 -0
- package/dist/types/helpers/figures/charts/scorecard_chart.d.ts +32 -0
- package/dist/types/helpers/figures/charts/scorecard_chart_config_builder.d.ts +44 -0
- package/dist/types/helpers/figures/charts/waterfall_chart.d.ts +37 -0
- package/dist/types/helpers/figures/figure/figure.d.ts +6 -0
- package/dist/types/helpers/figures/images/image_provider.d.ts +10 -0
- package/dist/types/helpers/format/format.d.ts +45 -0
- package/dist/types/helpers/format/format_parser.d.ts +38 -0
- package/dist/types/helpers/format/format_tokenizer.d.ts +39 -0
- package/dist/types/helpers/index.d.ts +17 -0
- package/dist/types/helpers/internal_viewport.d.ts +82 -0
- package/dist/types/helpers/inverse_commands.d.ts +2 -0
- package/dist/types/helpers/links.d.ts +23 -0
- package/dist/types/helpers/locale.d.ts +58 -0
- package/dist/types/helpers/misc.d.ts +211 -0
- package/dist/types/helpers/numbers.d.ts +25 -0
- package/dist/types/helpers/pivot/pivot_composer_helpers.d.ts +61 -0
- package/dist/types/helpers/pivot/pivot_domain_helpers.d.ts +68 -0
- package/dist/types/helpers/pivot/pivot_helpers.d.ts +55 -0
- package/dist/types/helpers/pivot/pivot_highlight.d.ts +2 -0
- package/dist/types/helpers/pivot/pivot_menu_items.d.ts +3 -0
- package/dist/types/helpers/pivot/pivot_positional_formula_registry.d.ts +7 -0
- package/dist/types/helpers/pivot/pivot_presence_tracker.d.ts +9 -0
- package/dist/types/helpers/pivot/pivot_presentation.d.ts +91 -0
- package/dist/types/helpers/pivot/pivot_registry.d.ts +28 -0
- package/dist/types/helpers/pivot/pivot_runtime_definition.d.ts +14 -0
- package/dist/types/helpers/pivot/pivot_side_panel_registry.d.ts +6 -0
- package/dist/types/helpers/pivot/pivot_time_adapter.d.ts +5 -0
- package/dist/types/helpers/pivot/spreadsheet_pivot/data_entry_spreadsheet_pivot.d.ts +20 -0
- package/dist/types/helpers/pivot/spreadsheet_pivot/date_spreadsheet_pivot.d.ts +7 -0
- package/dist/types/helpers/pivot/spreadsheet_pivot/runtime_definition_spreadsheet_pivot.d.ts +7 -0
- package/dist/types/helpers/pivot/spreadsheet_pivot/spreadsheet_pivot.d.ts +96 -0
- package/dist/types/helpers/pivot/table_spreadsheet_pivot.d.ts +80 -0
- package/dist/types/helpers/range.d.ts +59 -0
- package/dist/types/helpers/recompute_zones.d.ts +130 -0
- package/dist/types/helpers/rectangle.d.ts +7 -0
- package/dist/types/helpers/reference_type.d.ts +29 -0
- package/dist/types/helpers/references.d.ts +25 -0
- package/dist/types/helpers/rendering.d.ts +2 -0
- package/dist/types/helpers/search.d.ts +19 -0
- package/dist/types/helpers/sheet.d.ts +7 -0
- package/dist/types/helpers/sort.d.ts +16 -0
- package/dist/types/helpers/state_manager_helpers.d.ts +6 -0
- package/dist/types/helpers/table_helpers.d.ts +9 -0
- package/dist/types/helpers/table_presets.d.ts +23 -0
- package/dist/types/helpers/text_helper.d.ts +35 -0
- package/dist/types/helpers/ui/cut_interactive.d.ts +2 -0
- package/dist/types/helpers/ui/freeze_interactive.d.ts +2 -0
- package/dist/types/helpers/ui/merge_interactive.d.ts +6 -0
- package/dist/types/helpers/ui/paste_interactive.d.ts +10 -0
- package/dist/types/helpers/ui/sheet_interactive.d.ts +2 -0
- package/dist/types/helpers/ui/split_to_columns_interactive.d.ts +6 -0
- package/dist/types/helpers/ui/table_interactive.d.ts +7 -0
- package/dist/types/helpers/ui/toggle_group_interactive.d.ts +6 -0
- package/dist/types/helpers/uuid.d.ts +20 -0
- package/dist/types/helpers/zones.d.ts +150 -0
- package/dist/types/history/branch.d.ts +62 -0
- package/dist/types/history/factory.d.ts +9 -0
- package/dist/types/history/operation.d.ts +17 -0
- package/dist/types/history/operation_sequence.d.ts +31 -0
- package/dist/types/history/repeat_commands/repeat_commands_generic.d.ts +7 -0
- package/dist/types/history/repeat_commands/repeat_commands_specific.d.ts +13 -0
- package/dist/types/history/repeat_commands/repeat_revision.d.ts +5 -0
- package/dist/types/history/selective_history.d.ts +80 -0
- package/dist/types/history/tree.d.ts +175 -0
- package/dist/types/index.d.ts +364 -0
- package/dist/types/migrations/data.d.ts +30 -0
- package/dist/types/migrations/legacy_tools.d.ts +15 -0
- package/dist/types/migrations/locale.d.ts +94 -0
- package/dist/types/migrations/migration_steps.d.ts +6 -0
- package/dist/types/model.d.ts +193 -0
- package/dist/types/plugins/base_plugin.d.ts +64 -0
- package/dist/types/plugins/core/borders.d.ts +127 -0
- package/dist/types/plugins/core/cell.d.ts +115 -0
- package/dist/types/plugins/core/chart.d.ts +41 -0
- package/dist/types/plugins/core/conditional_format.d.ts +53 -0
- package/dist/types/plugins/core/data_validation.d.ts +33 -0
- package/dist/types/plugins/core/figures.d.ts +34 -0
- package/dist/types/plugins/core/header_grouping.d.ts +83 -0
- package/dist/types/plugins/core/header_size.d.ts +23 -0
- package/dist/types/plugins/core/header_visibility.d.ts +20 -0
- package/dist/types/plugins/core/image.d.ts +32 -0
- package/dist/types/plugins/core/index.d.ts +13 -0
- package/dist/types/plugins/core/merge.d.ts +82 -0
- package/dist/types/plugins/core/pivot.d.ts +66 -0
- package/dist/types/plugins/core/range.d.ts +75 -0
- package/dist/types/plugins/core/settings.d.ts +12 -0
- package/dist/types/plugins/core/sheet.d.ts +148 -0
- package/dist/types/plugins/core/spreadsheet_pivot.d.ts +6 -0
- package/dist/types/plugins/core/table_style.d.ts +22 -0
- package/dist/types/plugins/core/tables.d.ts +56 -0
- package/dist/types/plugins/core_plugin.d.ts +50 -0
- package/dist/types/plugins/index.d.ts +7 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/binary_grid.d.ts +36 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/compilation_parameters.d.ts +14 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/evaluation_plugin.d.ts +58 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/evaluator.d.ts +59 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/formula_dependency_graph.d.ts +24 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/index.d.ts +1 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/position_map.d.ts +11 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/position_set.d.ts +28 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/r_tree.d.ts +108 -0
- package/dist/types/plugins/ui_core_views/cell_evaluation/spreading_relation.d.ts +63 -0
- package/dist/types/plugins/ui_core_views/custom_colors.d.ts +28 -0
- package/dist/types/plugins/ui_core_views/dynamic_tables.d.ts +32 -0
- package/dist/types/plugins/ui_core_views/evaluation_chart.d.ts +24 -0
- package/dist/types/plugins/ui_core_views/evaluation_conditional_format.d.ts +41 -0
- package/dist/types/plugins/ui_core_views/evaluation_data_validation.d.ts +38 -0
- package/dist/types/plugins/ui_core_views/header_sizes_ui.d.ts +32 -0
- package/dist/types/plugins/ui_core_views/index.d.ts +5 -0
- package/dist/types/plugins/ui_core_views/pivot_ui.d.ts +49 -0
- package/dist/types/plugins/ui_feature/autofill.d.ts +61 -0
- package/dist/types/plugins/ui_feature/automatic_sum.d.ts +101 -0
- package/dist/types/plugins/ui_feature/cell_computed_style.d.ts +13 -0
- package/dist/types/plugins/ui_feature/collaborative.d.ts +25 -0
- package/dist/types/plugins/ui_feature/data_cleanup.d.ts +16 -0
- package/dist/types/plugins/ui_feature/datavalidation_insertion.d.ts +5 -0
- package/dist/types/plugins/ui_feature/format.d.ts +25 -0
- package/dist/types/plugins/ui_feature/header_visibility_ui.d.ts +21 -0
- package/dist/types/plugins/ui_feature/index.d.ts +10 -0
- package/dist/types/plugins/ui_feature/insert_pivot.d.ts +14 -0
- package/dist/types/plugins/ui_feature/local_history.d.ts +36 -0
- package/dist/types/plugins/ui_feature/pivot_presence_plugin.d.ts +10 -0
- package/dist/types/plugins/ui_feature/sort.d.ts +29 -0
- package/dist/types/plugins/ui_feature/split_to_columns.d.ts +21 -0
- package/dist/types/plugins/ui_feature/table_autofill.d.ts +6 -0
- package/dist/types/plugins/ui_feature/table_computed_style.d.ts +26 -0
- package/dist/types/plugins/ui_feature/table_resize_ui.d.ts +6 -0
- package/dist/types/plugins/ui_feature/ui_options.d.ts +8 -0
- package/dist/types/plugins/ui_feature/ui_sheet.d.ts +48 -0
- package/dist/types/plugins/ui_plugin.d.ts +38 -0
- package/dist/types/plugins/ui_stateful/clipboard.d.ts +58 -0
- package/dist/types/plugins/ui_stateful/filter_evaluation.d.ts +25 -0
- package/dist/types/plugins/ui_stateful/header_positions.d.ts +28 -0
- package/dist/types/plugins/ui_stateful/index.d.ts +4 -0
- package/dist/types/plugins/ui_stateful/selection.d.ts +74 -0
- package/dist/types/plugins/ui_stateful/sheetview.d.ts +175 -0
- package/dist/types/registries/auto_completes/auto_complete_registry.d.ts +56 -0
- package/dist/types/registries/auto_completes/data_validation_auto_complete.d.ts +1 -0
- package/dist/types/registries/auto_completes/function_auto_complete.d.ts +1 -0
- package/dist/types/registries/auto_completes/index.d.ts +5 -0
- package/dist/types/registries/auto_completes/pivot_auto_complete.d.ts +1 -0
- package/dist/types/registries/auto_completes/pivot_dimension_auto_complete.d.ts +4 -0
- package/dist/types/registries/auto_completes/sheet_name_auto_complete.d.ts +1 -0
- package/dist/types/registries/autofill_modifiers.d.ts +7 -0
- package/dist/types/registries/autofill_rules.d.ts +20 -0
- package/dist/types/registries/cell_clickable_registry.d.ts +8 -0
- package/dist/types/registries/cell_popovers_registry.d.ts +3 -0
- package/dist/types/registries/chart_types.d.ts +52 -0
- package/dist/types/registries/currencies_registry.d.ts +7 -0
- package/dist/types/registries/data_validation_registry.d.ts +32 -0
- package/dist/types/registries/evaluation_registry.d.ts +9 -0
- package/dist/types/registries/figure_registry.d.ts +18 -0
- package/dist/types/registries/icons_on_cell_registry.d.ts +9 -0
- package/dist/types/registries/index.d.ts +12 -0
- package/dist/types/registries/inverse_command_registry.d.ts +5 -0
- package/dist/types/registries/menu_items_registry.d.ts +21 -0
- package/dist/types/registries/menus/cell_menu_registry.d.ts +2 -0
- package/dist/types/registries/menus/col_menu_registry.d.ts +2 -0
- package/dist/types/registries/menus/header_group_registry.d.ts +7 -0
- package/dist/types/registries/menus/index.d.ts +7 -0
- package/dist/types/registries/menus/link_menu_registry.d.ts +2 -0
- package/dist/types/registries/menus/number_format_menu_registry.d.ts +7 -0
- package/dist/types/registries/menus/row_menu_registry.d.ts +2 -0
- package/dist/types/registries/menus/sheet_menu_registry.d.ts +5 -0
- package/dist/types/registries/menus/table_style_menu_registry.d.ts +3 -0
- package/dist/types/registries/menus/topbar_menu_registry.d.ts +2 -0
- package/dist/types/registries/ot_registry.d.ts +21 -0
- package/dist/types/registries/registry.d.ts +44 -0
- package/dist/types/registries/repeat_commands_registry.d.ts +19 -0
- package/dist/types/registries/side_panel_registry.d.ts +14 -0
- package/dist/types/registries/side_panel_registry_entries.d.ts +1 -0
- package/dist/types/registries/topbar_component_registry.d.ts +20 -0
- package/dist/types/selection_stream/event_stream.d.ts +65 -0
- package/dist/types/selection_stream/selection_stream_processor.d.ts +154 -0
- package/dist/types/state_observer.d.ts +17 -0
- package/dist/types/store_engine/dependency_container.d.ts +25 -0
- package/dist/types/store_engine/index.d.ts +3 -0
- package/dist/types/store_engine/store.d.ts +72 -0
- package/dist/types/store_engine/store_hooks.d.ts +18 -0
- package/dist/types/stores/DOM_focus_store.d.ts +6 -0
- package/dist/types/stores/array_formula_highlight.d.ts +14 -0
- package/dist/types/stores/grid_renderer_store.d.ts +36 -0
- package/dist/types/stores/highlight_store.d.ts +16 -0
- package/dist/types/stores/index.d.ts +2 -0
- package/dist/types/stores/model_store.d.ts +2 -0
- package/dist/types/stores/notification_store.d.ts +13 -0
- package/dist/types/stores/renderer_store.d.ts +12 -0
- package/dist/types/stores/spreadsheet_store.d.ts +13 -0
- package/dist/types/translation.d.ts +21 -0
- package/dist/types/types/autofill.d.ts +71 -0
- package/dist/types/types/cell_popovers.d.ts +50 -0
- package/dist/types/types/cells.d.ts +64 -0
- package/dist/types/types/chart/bar_chart.d.ts +12 -0
- package/dist/types/types/chart/chart.d.ts +114 -0
- package/dist/types/types/chart/combo_chart.d.ts +15 -0
- package/dist/types/types/chart/common_bar_combo.d.ts +14 -0
- package/dist/types/types/chart/common_chart.d.ts +2 -0
- package/dist/types/types/chart/gauge_chart.d.ts +83 -0
- package/dist/types/types/chart/index.d.ts +7 -0
- package/dist/types/types/chart/line_chart.d.ts +24 -0
- package/dist/types/types/chart/pie_chart.d.ts +21 -0
- package/dist/types/types/chart/pyramid_chart.d.ts +10 -0
- package/dist/types/types/chart/scatter_chart.d.ts +5 -0
- package/dist/types/types/chart/scorecard_chart.d.ts +33 -0
- package/dist/types/types/chart/waterfall_chart.d.ts +27 -0
- package/dist/types/types/clipboard.d.ts +45 -0
- package/dist/types/types/collaborative/revisions.d.ts +7 -0
- package/dist/types/types/collaborative/session.d.ts +46 -0
- package/dist/types/types/collaborative/transport_service.d.ts +91 -0
- package/dist/types/types/commands.d.ts +833 -0
- package/dist/types/types/conditional_formatting.d.ts +113 -0
- package/dist/types/types/currency.d.ts +7 -0
- package/dist/types/types/data_validation.d.ts +121 -0
- package/dist/types/types/env.d.ts +29 -0
- package/dist/types/types/errors.d.ts +36 -0
- package/dist/types/types/event_stream/index.d.ts +1 -0
- package/dist/types/types/event_stream/selection_events.d.ts +11 -0
- package/dist/types/types/figure.d.ts +18 -0
- package/dist/types/types/files.d.ts +27 -0
- package/dist/types/types/find_and_replace.d.ts +8 -0
- package/dist/types/types/format.d.ts +8 -0
- package/dist/types/types/functions.d.ts +50 -0
- package/dist/types/types/getters.d.ts +102 -0
- package/dist/types/types/history.d.ts +43 -0
- package/dist/types/types/image.d.ts +16 -0
- package/dist/types/types/index.d.ts +39 -0
- package/dist/types/types/locale.d.ts +14 -0
- package/dist/types/types/misc.d.ts +312 -0
- package/dist/types/types/pivot.d.ts +136 -0
- package/dist/types/types/pivot_runtime.d.ts +31 -0
- package/dist/types/types/range.d.ts +21 -0
- package/dist/types/types/rendering.d.ts +95 -0
- package/dist/types/types/table.d.ts +65 -0
- package/dist/types/types/validator.d.ts +16 -0
- package/dist/types/types/workbook_data.d.ts +147 -0
- package/dist/types/types/xlsx.d.ts +502 -0
- package/dist/types/xlsx/constants.d.ts +74 -0
- package/dist/types/xlsx/conversion/cf_conversion.d.ts +4 -0
- package/dist/types/xlsx/conversion/color_conversion.d.ts +31 -0
- package/dist/types/xlsx/conversion/conversion_maps.d.ts +186 -0
- package/dist/types/xlsx/conversion/data_validation_conversion.d.ts +4 -0
- package/dist/types/xlsx/conversion/figure_conversion.d.ts +3 -0
- package/dist/types/xlsx/conversion/format_conversion.d.ts +8 -0
- package/dist/types/xlsx/conversion/formula_conversion.d.ts +9 -0
- package/dist/types/xlsx/conversion/index.d.ts +7 -0
- package/dist/types/xlsx/conversion/sheet_conversion.d.ts +4 -0
- package/dist/types/xlsx/conversion/style_conversion.d.ts +19 -0
- package/dist/types/xlsx/conversion/table_conversion.d.ts +8 -0
- package/dist/types/xlsx/extraction/base_extractor.d.ts +142 -0
- package/dist/types/xlsx/extraction/cf_extractor.d.ts +14 -0
- package/dist/types/xlsx/extraction/chart_extractor.d.ts +14 -0
- package/dist/types/xlsx/extraction/data_validation_extractor.d.ts +9 -0
- package/dist/types/xlsx/extraction/external_book_extractor.d.ts +6 -0
- package/dist/types/xlsx/extraction/figure_extractor.d.ts +10 -0
- package/dist/types/xlsx/extraction/index.d.ts +3 -0
- package/dist/types/xlsx/extraction/misc_extractor.d.ts +18 -0
- package/dist/types/xlsx/extraction/pivot_extractor.d.ts +10 -0
- package/dist/types/xlsx/extraction/sheet_extractor.d.ts +26 -0
- package/dist/types/xlsx/extraction/style_extractor.d.ts +19 -0
- package/dist/types/xlsx/extraction/table_extractor.d.ts +10 -0
- package/dist/types/xlsx/functions/cells.d.ts +11 -0
- package/dist/types/xlsx/functions/charts.d.ts +3 -0
- package/dist/types/xlsx/functions/conditional_formatting.d.ts +3 -0
- package/dist/types/xlsx/functions/data_validation.d.ts +3 -0
- package/dist/types/xlsx/functions/drawings.d.ts +5 -0
- package/dist/types/xlsx/functions/styles.d.ts +10 -0
- package/dist/types/xlsx/functions/table.d.ts +2 -0
- package/dist/types/xlsx/functions/worksheet.d.ts +10 -0
- package/dist/types/xlsx/helpers/colors.d.ts +8 -0
- package/dist/types/xlsx/helpers/content_helpers.d.ts +58 -0
- package/dist/types/xlsx/helpers/misc.d.ts +34 -0
- package/dist/types/xlsx/helpers/xlsx_helper.d.ts +10 -0
- package/dist/types/xlsx/helpers/xlsx_parser_error_manager.d.ts +38 -0
- package/dist/types/xlsx/helpers/xml_helpers.d.ts +36 -0
- package/dist/types/xlsx/xlsx_reader.d.ts +13 -0
- package/dist/types/xlsx/xlsx_writer.d.ts +19 -0
- package/package.json +45 -25
- package/dist/o-spreadsheet.d.ts +0 -12439
|
@@ -0,0 +1,50 @@
|
|
|
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 canDispatch: CoreCommandDispatcher["dispatch"];
|
|
14
|
+
readonly uuidGenerator: UuidGenerator;
|
|
15
|
+
readonly custom: ModelConfig["custom"];
|
|
16
|
+
readonly external: ModelConfig["external"];
|
|
17
|
+
}
|
|
18
|
+
export interface CorePluginConstructor {
|
|
19
|
+
new (config: CorePluginConfig): CorePlugin;
|
|
20
|
+
getters: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Core plugins handle spreadsheet data.
|
|
24
|
+
* They are responsible to import, export and maintain the spreadsheet
|
|
25
|
+
* persisted state.
|
|
26
|
+
* They should not be concerned about UI parts or transient state.
|
|
27
|
+
*/
|
|
28
|
+
export declare class CorePlugin<State = any> extends BasePlugin<State, CoreCommand> implements RangeProvider {
|
|
29
|
+
protected getters: CoreGetters;
|
|
30
|
+
protected uuidGenerator: UuidGenerator;
|
|
31
|
+
constructor({ getters, stateObserver, range, dispatch, canDispatch, uuidGenerator, }: CorePluginConfig);
|
|
32
|
+
import(data: WorkbookData): void;
|
|
33
|
+
export(data: WorkbookData): void;
|
|
34
|
+
/**
|
|
35
|
+
* This method can be implemented in any plugin, to loop over the plugin's data structure and adapt the plugin's ranges.
|
|
36
|
+
* To adapt them, the implementation of the function must have a perfect knowledge of the data structure, thus
|
|
37
|
+
* implementing the loops over it makes sense in the plugin itself.
|
|
38
|
+
* When calling the method applyChange, the range will be adapted if necessary, then a copy will be returned along with
|
|
39
|
+
* the type of change that occurred.
|
|
40
|
+
*
|
|
41
|
+
* @param applyChange a function that, when called, will adapt the range according to the change on the grid
|
|
42
|
+
* @param sheetId an optional sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
|
|
43
|
+
*/
|
|
44
|
+
adaptRanges(applyChange: ApplyRangeChange, sheetId?: UID): void;
|
|
45
|
+
/**
|
|
46
|
+
* Implement this method to clean unused external resources, such as images
|
|
47
|
+
* stored on a server which have been deleted.
|
|
48
|
+
*/
|
|
49
|
+
garbageCollectExternalResources(): void;
|
|
50
|
+
}
|
|
@@ -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,36 @@
|
|
|
1
|
+
import { CellPosition } from "../../../types";
|
|
2
|
+
type Bit = 0 | 1;
|
|
3
|
+
/**
|
|
4
|
+
* Implements a fixed-sized grid or 2D matrix of bits.
|
|
5
|
+
* based on https://github.com/zandaqo/structurae
|
|
6
|
+
*
|
|
7
|
+
* The grid is implemented as a 1D array of 32-bit integers, where each bit represents a cell in the grid.
|
|
8
|
+
* It follows row-major order, with each row stored consecutively in 32-bit blocks.
|
|
9
|
+
* Pads the number of columns to the next power of 2 to allow quick lookups with bitwise operations.
|
|
10
|
+
*
|
|
11
|
+
* Key terminology:
|
|
12
|
+
* - bucket: Index of an item in the Uint32Array, a 32-bit integer.
|
|
13
|
+
* - bitPosition: The position of a bit within the bucket 32-bit integer.
|
|
14
|
+
*/
|
|
15
|
+
export declare class BinaryGrid extends Uint32Array {
|
|
16
|
+
private columnOffset;
|
|
17
|
+
cols: number;
|
|
18
|
+
rows: number;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a binary grid of specified dimensions.
|
|
21
|
+
*/
|
|
22
|
+
static create(rows: number, columns: number): BinaryGrid;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the bit at given coordinates.
|
|
25
|
+
*/
|
|
26
|
+
getValue(position: CellPosition): Bit;
|
|
27
|
+
/**
|
|
28
|
+
* Sets the bit at given coordinates.
|
|
29
|
+
*/
|
|
30
|
+
setValue(position: CellPosition, value: Bit): boolean;
|
|
31
|
+
isEmpty(): boolean;
|
|
32
|
+
fillAllPositions(): void;
|
|
33
|
+
clear(): void;
|
|
34
|
+
private getCoordinates;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ModelConfig } from "../../../model";
|
|
2
|
+
import { CellPosition, EnsureRange, EvalContext, EvaluatedCell, Getters, ReferenceDenormalizer } from "../../../types";
|
|
3
|
+
export type CompilationParameters = {
|
|
4
|
+
referenceDenormalizer: ReferenceDenormalizer;
|
|
5
|
+
ensureRange: EnsureRange;
|
|
6
|
+
evalContext: EvalContext;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Return all functions necessary to properly evaluate a formula:
|
|
10
|
+
* - a refFn function to read any reference, cell or range of a normalized formula
|
|
11
|
+
* - a range function to convert any reference to a proper value array
|
|
12
|
+
* - an evaluation context
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildCompilationParameters(context: ModelConfig["custom"], getters: Getters, computeCell: (position: CellPosition) => EvaluatedCell): CompilationParameters;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { CellPosition, CellValue, Command, EvaluatedCell, ExcelWorkbookData, Format, FormattedValue, FormulaCell, FunctionResultObject, GetSymbolValue, Matrix, Range, RangeCompiledFormula, UID, 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", "evaluateCompiledFormula", "getCorrespondingFormulaCell", "getRangeFormattedValues", "getRangeValues", "getRangeFormats", "getEvaluatedCell", "getEvaluatedCells", "getEvaluatedCellsInZone", "getEvaluatedCellsPositions", "getSpreadZone", "getArrayFormulaSpreadingOn", "isArrayFormulaSpillBlocked", "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, originCellPosition?: CellPosition): CellValue | Matrix<CellValue>;
|
|
14
|
+
evaluateFormulaResult(sheetId: UID, formulaString: string, originCellPosition?: CellPosition): Matrix<FunctionResultObject> | FunctionResultObject;
|
|
15
|
+
evaluateCompiledFormula(sheetId: UID, compiledFormula: RangeCompiledFormula, getSymbolValue: GetSymbolValue): FunctionResultObject | Matrix<FunctionResultObject>;
|
|
16
|
+
/**
|
|
17
|
+
* Return the value of each cell in the range as they are displayed in the grid.
|
|
18
|
+
*/
|
|
19
|
+
getRangeFormattedValues(range: Range): FormattedValue[];
|
|
20
|
+
/**
|
|
21
|
+
* Return the value of each cell in the range.
|
|
22
|
+
*/
|
|
23
|
+
getRangeValues(range: Range): CellValue[];
|
|
24
|
+
/**
|
|
25
|
+
* Return the format of each cell in the range.
|
|
26
|
+
*/
|
|
27
|
+
getRangeFormats(range: Range): (Format | undefined)[];
|
|
28
|
+
getEvaluatedCell(position: CellPosition): EvaluatedCell;
|
|
29
|
+
getEvaluatedCells(sheetId: UID): EvaluatedCell[];
|
|
30
|
+
getEvaluatedCellsPositions(sheetId: UID): CellPosition[];
|
|
31
|
+
getEvaluatedCellsInZone(sheetId: UID, zone: Zone): EvaluatedCell[];
|
|
32
|
+
/**
|
|
33
|
+
* Return the spread zone the position is part of, if any
|
|
34
|
+
*/
|
|
35
|
+
getSpreadZone(position: CellPosition, options?: {
|
|
36
|
+
ignoreSpillError: boolean;
|
|
37
|
+
}): Zone | undefined;
|
|
38
|
+
getArrayFormulaSpreadingOn(position: CellPosition): CellPosition | undefined;
|
|
39
|
+
isArrayFormulaSpillBlocked(position: CellPosition): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Check if a zone only contains empty cells
|
|
42
|
+
*/
|
|
43
|
+
isEmpty(sheetId: UID, zone: Zone): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Maps the visible positions of a range according to a provided callback
|
|
46
|
+
* @param range - the range we filter out
|
|
47
|
+
* @param evaluationCallback - the callback applied to the filtered positions
|
|
48
|
+
* @returns the values filtered (ie we keep only the not hidden values)
|
|
49
|
+
*/
|
|
50
|
+
private mapVisiblePositions;
|
|
51
|
+
exportForExcel(data: ExcelWorkbookData): void;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the corresponding formula cell of a given cell
|
|
54
|
+
* It could be the formula present in the cell itself or the
|
|
55
|
+
* formula of the array formula that spreads to the cell
|
|
56
|
+
*/
|
|
57
|
+
getCorrespondingFormulaCell(position: CellPosition): FormulaCell | undefined;
|
|
58
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ModelConfig } from "../../../model";
|
|
2
|
+
import { CellPosition, EvaluatedCell, FunctionResultObject, GetSymbolValue, Getters, Matrix, RangeCompiledFormula, UID, Zone } from "../../../types";
|
|
3
|
+
import { CompilationParameters } from "./compilation_parameters";
|
|
4
|
+
export declare class Evaluator {
|
|
5
|
+
private readonly context;
|
|
6
|
+
private readonly getters;
|
|
7
|
+
private compilationParams;
|
|
8
|
+
private evaluatedCells;
|
|
9
|
+
private formulaDependencies;
|
|
10
|
+
private blockedArrayFormulas;
|
|
11
|
+
private spreadingRelations;
|
|
12
|
+
constructor(context: ModelConfig["custom"], getters: Getters);
|
|
13
|
+
getEvaluatedCell(position: CellPosition): EvaluatedCell;
|
|
14
|
+
getSpreadZone(position: CellPosition, options?: {
|
|
15
|
+
ignoreSpillError: boolean;
|
|
16
|
+
}): Zone | undefined;
|
|
17
|
+
getEvaluatedPositions(): CellPosition[];
|
|
18
|
+
getEvaluatedPositionsInSheet(sheetId: UID): CellPosition[];
|
|
19
|
+
getArrayFormulaSpreadingOn(position: CellPosition): CellPosition | undefined;
|
|
20
|
+
isArrayFormulaSpillBlocked(position: CellPosition): boolean;
|
|
21
|
+
updateDependencies(position: CellPosition): void;
|
|
22
|
+
private addDependencies;
|
|
23
|
+
private updateCompilationParameters;
|
|
24
|
+
private updateCompilationParametersForGridEvaluation;
|
|
25
|
+
private createEmptyPositionSet;
|
|
26
|
+
evaluateCells(positions: CellPosition[]): void;
|
|
27
|
+
private getArrayFormulasImpactedByChangesOf;
|
|
28
|
+
buildDependencyGraph(): void;
|
|
29
|
+
evaluateAllCells(): void;
|
|
30
|
+
evaluateFormulaResult(sheetId: UID, formulaString: string, originCellPosition?: CellPosition): FunctionResultObject | Matrix<FunctionResultObject>;
|
|
31
|
+
evaluateCompiledFormula(sheetId: UID, compiledFormula: RangeCompiledFormula, getContextualSymbolValue?: GetSymbolValue): FunctionResultObject | Matrix<FunctionResultObject>;
|
|
32
|
+
private getAllCells;
|
|
33
|
+
/**
|
|
34
|
+
* Return the position of formulas blocked by the given positions
|
|
35
|
+
* as well as all their dependencies.
|
|
36
|
+
*/
|
|
37
|
+
private getArrayFormulasBlockedBy;
|
|
38
|
+
private nextPositionsToUpdate;
|
|
39
|
+
private cellsBeingComputed;
|
|
40
|
+
private symbolsBeingComputed;
|
|
41
|
+
private evaluate;
|
|
42
|
+
private computeCell;
|
|
43
|
+
private computeAndSave;
|
|
44
|
+
private computeFormulaCell;
|
|
45
|
+
private invalidatePositionsDependingOnSpread;
|
|
46
|
+
private assertSheetHasEnoughSpaceToSpreadFormulaResult;
|
|
47
|
+
private assertNoMergedCellsInSpreadZone;
|
|
48
|
+
private checkCollision;
|
|
49
|
+
private spreadValues;
|
|
50
|
+
private invalidateSpreading;
|
|
51
|
+
/**
|
|
52
|
+
* Wraps a GetSymbolValue function to add cycle detection
|
|
53
|
+
* and error handling.
|
|
54
|
+
*/
|
|
55
|
+
private buildSafeGetSymbolValue;
|
|
56
|
+
private getDirectDependencies;
|
|
57
|
+
private getCellsDependingOn;
|
|
58
|
+
}
|
|
59
|
+
export declare function updateEvalContextAndExecute(compiledFormula: RangeCompiledFormula, compilationParams: CompilationParameters, sheetId: UID, getSymbolValue: GetSymbolValue, originCellPosition: CellPosition | undefined): FunctionResultObject | Matrix<FunctionResultObject>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CellPosition } from "../../../types";
|
|
2
|
+
import { PositionSet } from "./position_set";
|
|
3
|
+
import { RTreeBoundingBox, RTreeItem } from "./r_tree";
|
|
4
|
+
/**
|
|
5
|
+
* Implementation of a dependency Graph.
|
|
6
|
+
* The graph is used to evaluate the cells in the correct
|
|
7
|
+
* order, and should be updated each time a cell's content is modified
|
|
8
|
+
*
|
|
9
|
+
* It uses an R-Tree data structure to efficiently find dependent cells.
|
|
10
|
+
*/
|
|
11
|
+
export declare class FormulaDependencyGraph {
|
|
12
|
+
private readonly createEmptyPositionSet;
|
|
13
|
+
private readonly dependencies;
|
|
14
|
+
private readonly rTree;
|
|
15
|
+
constructor(createEmptyPositionSet: () => PositionSet, data?: RTreeItem<CellPosition>[]);
|
|
16
|
+
removeAllDependencies(formulaPosition: CellPosition): void;
|
|
17
|
+
addDependencies(formulaPosition: CellPosition, dependencies: RTreeBoundingBox[]): void;
|
|
18
|
+
/**
|
|
19
|
+
* Return all the cells that depend on the provided ranges,
|
|
20
|
+
* in the correct order they should be evaluated.
|
|
21
|
+
* This is called a topological ordering (excluding cycles)
|
|
22
|
+
*/
|
|
23
|
+
getCellsDependingOn(ranges: RTreeBoundingBox[], ignore: PositionSet): PositionSet;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./evaluation_plugin";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CellPosition, UID } from "../../../types";
|
|
2
|
+
export declare class PositionMap<T> {
|
|
3
|
+
private map;
|
|
4
|
+
set({ sheetId, col, row }: CellPosition, value: T): void;
|
|
5
|
+
get({ sheetId, col, row }: CellPosition): T | undefined;
|
|
6
|
+
getSheet(sheetId: UID): Record<number, Record<number, T>> | undefined;
|
|
7
|
+
has({ sheetId, col, row }: CellPosition): boolean;
|
|
8
|
+
delete({ sheetId, col, row }: CellPosition): void;
|
|
9
|
+
keys(): CellPosition[];
|
|
10
|
+
keysForSheet(sheetId: UID): CellPosition[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CellPosition, UID } from "../../../types";
|
|
2
|
+
export type SheetSizes = Record<UID, {
|
|
3
|
+
rows: number;
|
|
4
|
+
cols: number;
|
|
5
|
+
}>;
|
|
6
|
+
export declare class PositionSet {
|
|
7
|
+
private sheets;
|
|
8
|
+
/**
|
|
9
|
+
* List of positions in the order they were inserted.
|
|
10
|
+
*/
|
|
11
|
+
private insertions;
|
|
12
|
+
private maxSize;
|
|
13
|
+
constructor(sheetSizes: SheetSizes);
|
|
14
|
+
add(position: CellPosition): void;
|
|
15
|
+
addMany(positions: Iterable<CellPosition>): void;
|
|
16
|
+
delete(position: CellPosition): void;
|
|
17
|
+
deleteMany(positions: Iterable<CellPosition>): void;
|
|
18
|
+
has(position: CellPosition): boolean;
|
|
19
|
+
clear(): CellPosition[];
|
|
20
|
+
isEmpty(): boolean;
|
|
21
|
+
fillAllPositions(): void;
|
|
22
|
+
/**
|
|
23
|
+
* Iterate over the positions in the order of insertion.
|
|
24
|
+
* Note that the same position may be yielded multiple times if the value was added
|
|
25
|
+
* to the set then removed and then added again.
|
|
26
|
+
*/
|
|
27
|
+
[Symbol.iterator](): Generator<CellPosition>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { UID, Zone } from "../../../types";
|
|
2
|
+
/**
|
|
3
|
+
* R-Tree Data Structure
|
|
4
|
+
*
|
|
5
|
+
* R-Tree is a spatial data structure used for efficient indexing and querying
|
|
6
|
+
* of multi-dimensional objects, particularly in geometric and spatial applications.
|
|
7
|
+
*
|
|
8
|
+
* It organizes objects into a tree hierarchy, grouping nearby objects together
|
|
9
|
+
* in bounding boxes. Each node in the tree represents a bounding box that
|
|
10
|
+
* contains its child nodes or leaf objects. This hierarchical structure allows
|
|
11
|
+
* for faster spatial queries.
|
|
12
|
+
*
|
|
13
|
+
* @see https://en.wikipedia.org/wiki/R-tree
|
|
14
|
+
*
|
|
15
|
+
* Consider a 2D Space with four zones: A, B, C, D
|
|
16
|
+
* +--------------------------+
|
|
17
|
+
* | |
|
|
18
|
+
* | +---+ +-------+ |
|
|
19
|
+
* | | A | | B | |
|
|
20
|
+
* | +---+ +-------+ |
|
|
21
|
+
* | |
|
|
22
|
+
* | |
|
|
23
|
+
* | +---+ |
|
|
24
|
+
* | | C | |
|
|
25
|
+
* | +---+ |
|
|
26
|
+
* | +-----------+ |
|
|
27
|
+
* | | D | |
|
|
28
|
+
* | +-----------+ |
|
|
29
|
+
* | |
|
|
30
|
+
* +--------------------------+
|
|
31
|
+
*
|
|
32
|
+
* It groups together zones that are spatially close into a minimum bounding box.
|
|
33
|
+
* For example, A and B are grouped together in rectangle R1, and C and D are grouped
|
|
34
|
+
* in R2.
|
|
35
|
+
*
|
|
36
|
+
* R0
|
|
37
|
+
* +--------------------------+
|
|
38
|
+
* | R1 |
|
|
39
|
+
* | +-----------------+ |
|
|
40
|
+
* | | A | | B | |
|
|
41
|
+
* | +-----------------+ |
|
|
42
|
+
* | |
|
|
43
|
+
* | R2 |
|
|
44
|
+
* | +---+---+---+ |
|
|
45
|
+
* | | | C | | |
|
|
46
|
+
* | | +---+ | |
|
|
47
|
+
* | +-----------+ |
|
|
48
|
+
* | | D | |
|
|
49
|
+
* | +-----------+ |
|
|
50
|
+
* | |
|
|
51
|
+
* +--------------------------+
|
|
52
|
+
*
|
|
53
|
+
* The tree would look like this:
|
|
54
|
+
* R0
|
|
55
|
+
* / \
|
|
56
|
+
* / \
|
|
57
|
+
* R1 R2
|
|
58
|
+
* | |
|
|
59
|
+
* A,B C,D
|
|
60
|
+
|
|
61
|
+
* Choosing how to group the zones is crucial for the performance of the tree.
|
|
62
|
+
* Key considerations include avoiding excessive empty space coverage and minimizing overlap
|
|
63
|
+
* to reduce the number of subtrees processed during searches.
|
|
64
|
+
*
|
|
65
|
+
* Various heuristics exist for determining the optimal grouping strategy, such as "least enlargement"
|
|
66
|
+
* which prioritizes grouping nodes resulting in the smallest increase in bounding box size. In cases where
|
|
67
|
+
* the choice cannot be made based on this criterion due to the same enlargement for different groupings,
|
|
68
|
+
* we then evaluate "least area," aiming to minimize the overall area of bounding boxes.
|
|
69
|
+
*
|
|
70
|
+
* This implementation is tailored for spreadsheet use, indexing objects associated
|
|
71
|
+
* with a zone and a sheet.
|
|
72
|
+
*
|
|
73
|
+
* It uses the RBush library under the hood. One 2D RBush R-tree per sheet.
|
|
74
|
+
* @see https://github.com/mourner/rbush
|
|
75
|
+
*/
|
|
76
|
+
export declare class SpreadsheetRTree<T> {
|
|
77
|
+
/**
|
|
78
|
+
* One 2D R-tree per sheet
|
|
79
|
+
*/
|
|
80
|
+
private rTrees;
|
|
81
|
+
/**
|
|
82
|
+
* Bulk-inserts the given items into the tree. Bulk insertion is usually ~2-3 times
|
|
83
|
+
* faster than inserting items one by one. After bulk loading (bulk insertion into
|
|
84
|
+
* an empty tree), subsequent query performance is also ~20-30% better.
|
|
85
|
+
*/
|
|
86
|
+
constructor(items?: RTreeItem[]);
|
|
87
|
+
insert(item: RTreeItem<T>): void;
|
|
88
|
+
search({ zone, sheetId }: RTreeBoundingBox): RTreeItem<T>[];
|
|
89
|
+
remove(item: RTreeItem<T>): void;
|
|
90
|
+
rtreeItemComparer(left: RTreeItem<T>, right: RTreeItem<T>): boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Data associated with a range to be indexed in a R-tree
|
|
94
|
+
*/
|
|
95
|
+
export interface RTreeItem<T = unknown> {
|
|
96
|
+
/**
|
|
97
|
+
* A bounding box to locate the item in the space
|
|
98
|
+
*/
|
|
99
|
+
boundingBox: RTreeBoundingBox;
|
|
100
|
+
/**
|
|
101
|
+
* Any arbitrary data associated with the bounding box
|
|
102
|
+
*/
|
|
103
|
+
data: T;
|
|
104
|
+
}
|
|
105
|
+
export interface RTreeBoundingBox {
|
|
106
|
+
sheetId: UID;
|
|
107
|
+
zone: Zone;
|
|
108
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { CellPosition, UID, Zone } from "../../../types";
|
|
2
|
+
/**
|
|
3
|
+
* Contains, for each cell, the array
|
|
4
|
+
* formulas that could potentially spread on it
|
|
5
|
+
* This is essentially a two way mapping between array formulas
|
|
6
|
+
* and their results.
|
|
7
|
+
*
|
|
8
|
+
* As we don't allow two array formulas to spread on the same cell, this structure
|
|
9
|
+
* is used to force the reevaluation of the potential spreaders of a cell when the
|
|
10
|
+
* content of this cell is modified. This structure should be updated each time
|
|
11
|
+
* an array formula is evaluated and try to spread on another cell.
|
|
12
|
+
*
|
|
13
|
+
*/
|
|
14
|
+
export declare class SpreadingRelation {
|
|
15
|
+
/**
|
|
16
|
+
* Internal structure:
|
|
17
|
+
* For something like
|
|
18
|
+
* - A2:'=SPLIT("KAYAK", "A")'
|
|
19
|
+
* - B1:'=TRANSPOSE(SPLIT("COYOTE", "O"))'
|
|
20
|
+
*
|
|
21
|
+
* Resulting in:
|
|
22
|
+
* ```
|
|
23
|
+
* -----------------
|
|
24
|
+
* | | A | B | C |
|
|
25
|
+
* |---+---+---+---|
|
|
26
|
+
* | 1 | | C | |
|
|
27
|
+
* | 2 | K | Y | K |
|
|
28
|
+
* | 3 | | T | |
|
|
29
|
+
* | 4 | | E | |
|
|
30
|
+
* -----------------
|
|
31
|
+
* ```
|
|
32
|
+
* We have `resultsToArrayFormulas` is an R-tree looking like:
|
|
33
|
+
* - (A2:C2) --> A2 meaning values in A2:C2 are the result of A2
|
|
34
|
+
* - (B1:B4) --> B1 meaning values in B1:B4 are the result of B1
|
|
35
|
+
*
|
|
36
|
+
* Note that B2 is part of both zones because it can be the result of
|
|
37
|
+
* A2 or B1.
|
|
38
|
+
* Using an R-tree allows for fast insertions while still having
|
|
39
|
+
* a relatively fast lookup.
|
|
40
|
+
*
|
|
41
|
+
* We have `arrayFormulasToResults` looking like:
|
|
42
|
+
* - (A2) --> A2:C2 meaning A2 spreads on the zone A2:C2
|
|
43
|
+
* - (B1) --> B1:B4 meaning B1 spreads on the zone B1:B4
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
private readonly resultsToArrayFormulas;
|
|
47
|
+
private readonly arrayFormulasToResults;
|
|
48
|
+
searchFormulaPositionsSpreadingOn(sheetId: UID, zone: Zone): Iterable<CellPosition>;
|
|
49
|
+
getArrayResultZone(formulasPosition: CellPosition): Zone | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Remove a spreading relation for a given array formula position
|
|
52
|
+
* and its result zone
|
|
53
|
+
*/
|
|
54
|
+
removeNode(position: CellPosition): void;
|
|
55
|
+
/**
|
|
56
|
+
* Create a spreading relation between two cells
|
|
57
|
+
*/
|
|
58
|
+
addRelation({ arrayFormulaPosition, resultZone: resultPosition, }: {
|
|
59
|
+
arrayFormulaPosition: CellPosition;
|
|
60
|
+
resultZone: Zone;
|
|
61
|
+
}): void;
|
|
62
|
+
isArrayFormula(position: CellPosition): boolean;
|
|
63
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Color, Command, Immutable } from "../../types";
|
|
2
|
+
import { UIPlugin, UIPluginConfig } from "../ui_plugin";
|
|
3
|
+
interface CustomColorState {
|
|
4
|
+
readonly customColors: Immutable<Record<Color, true>>;
|
|
5
|
+
readonly shouldUpdateColors: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* CustomColors plugin
|
|
9
|
+
* This plugins aims to compute and keep to custom colors used in the
|
|
10
|
+
* current spreadsheet
|
|
11
|
+
*/
|
|
12
|
+
export declare class CustomColorsPlugin extends UIPlugin<CustomColorState> {
|
|
13
|
+
private readonly customColors;
|
|
14
|
+
private readonly shouldUpdateColors;
|
|
15
|
+
static getters: readonly ["getCustomColors"];
|
|
16
|
+
constructor(config: UIPluginConfig);
|
|
17
|
+
handle(cmd: Command): void;
|
|
18
|
+
finalize(): void;
|
|
19
|
+
getCustomColors(): Color[];
|
|
20
|
+
private computeCustomColors;
|
|
21
|
+
private getColorsFromCells;
|
|
22
|
+
private getFormattingColors;
|
|
23
|
+
private getChartColors;
|
|
24
|
+
private getTableColors;
|
|
25
|
+
private getTableStyleElementColors;
|
|
26
|
+
private tryToAddColors;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CellPosition, Command, ExcelWorkbookData, Filter, FilterId, Table, UID, Zone } from "../../types/index";
|
|
2
|
+
import { UIPlugin } from "../ui_plugin";
|
|
3
|
+
export declare class DynamicTablesPlugin extends UIPlugin {
|
|
4
|
+
static getters: readonly ["canCreateDynamicTableOnZones", "doesZonesContainFilter", "getFilter", "getFilters", "getTable", "getTables", "getTablesOverlappingZones", "getFilterId", "getFilterHeaders", "isFilterHeader"];
|
|
5
|
+
tables: Record<UID, Table[]>;
|
|
6
|
+
handle(cmd: Command): void;
|
|
7
|
+
finalize(): void;
|
|
8
|
+
private computeTables;
|
|
9
|
+
getFilters(sheetId: UID): Filter[];
|
|
10
|
+
getTables(sheetId: UID): Table[];
|
|
11
|
+
getFilter(position: CellPosition): Filter | undefined;
|
|
12
|
+
getFilterId(position: CellPosition): FilterId | undefined;
|
|
13
|
+
getTable({ sheetId, col, row }: CellPosition): Table | undefined;
|
|
14
|
+
getTablesOverlappingZones(sheetId: UID, zones: Zone[]): Table[];
|
|
15
|
+
doesZonesContainFilter(sheetId: UID, zones: Zone[]): boolean;
|
|
16
|
+
getFilterHeaders(sheetId: UID): CellPosition[];
|
|
17
|
+
isFilterHeader({ sheetId, col, row }: CellPosition): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Check if we can create a dynamic table on the given zones.
|
|
20
|
+
* - The zones must be continuous
|
|
21
|
+
* - The union of the zones must be either:
|
|
22
|
+
* - A single cell that contains an array formula
|
|
23
|
+
* - All the spread cells of a single array formula
|
|
24
|
+
*/
|
|
25
|
+
canCreateDynamicTableOnZones(sheetId: UID, zones: Zone[]): boolean;
|
|
26
|
+
private coreTableToTable;
|
|
27
|
+
private getDynamicTableFilters;
|
|
28
|
+
private getDynamicTableFilterId;
|
|
29
|
+
/** Check if a table contains array formula, as we cannot have them in a table in Excel */
|
|
30
|
+
private isTableExcelExportable;
|
|
31
|
+
exportForExcel(data: ExcelWorkbookData): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Color, ExcelWorkbookData, Range, UID } from "../../types";
|
|
2
|
+
import { ChartRuntime } from "../../types/chart/chart";
|
|
3
|
+
import { CoreViewCommand } from "../../types/commands";
|
|
4
|
+
import { UIPlugin } from "../ui_plugin";
|
|
5
|
+
interface EvaluationChartStyle {
|
|
6
|
+
background: Color;
|
|
7
|
+
fontColor: Color;
|
|
8
|
+
}
|
|
9
|
+
interface EvaluationChartState {
|
|
10
|
+
charts: Record<UID, ChartRuntime | undefined>;
|
|
11
|
+
}
|
|
12
|
+
export declare class EvaluationChartPlugin extends UIPlugin<EvaluationChartState> {
|
|
13
|
+
static getters: readonly ["getChartRuntime", "getStyleOfSingleCellChart"];
|
|
14
|
+
charts: Record<UID, ChartRuntime | undefined>;
|
|
15
|
+
private createRuntimeChart;
|
|
16
|
+
handle(cmd: CoreViewCommand): void;
|
|
17
|
+
getChartRuntime(figureId: UID): ChartRuntime;
|
|
18
|
+
/**
|
|
19
|
+
* Get the background and textColor of a chart based on the color of the first cell of the main range of the chart.
|
|
20
|
+
*/
|
|
21
|
+
getStyleOfSingleCellChart(chartBackground: Color | undefined, mainRange: Range | undefined): EvaluationChartStyle;
|
|
22
|
+
exportForExcel(data: ExcelWorkbookData): void;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CellPosition, DataBarFill, Style } from "../../types/index";
|
|
2
|
+
import { UIPlugin } from "../ui_plugin";
|
|
3
|
+
import { CoreViewCommand } from "./../../types/commands";
|
|
4
|
+
export declare class EvaluationConditionalFormatPlugin extends UIPlugin {
|
|
5
|
+
static getters: readonly ["getConditionalIcon", "getCellConditionalFormatStyle", "getConditionalDataBar"];
|
|
6
|
+
private isStale;
|
|
7
|
+
private computedStyles;
|
|
8
|
+
private computedIcons;
|
|
9
|
+
private computedDataBars;
|
|
10
|
+
handle(cmd: CoreViewCommand): void;
|
|
11
|
+
finalize(): void;
|
|
12
|
+
getCellConditionalFormatStyle(position: CellPosition): Style | undefined;
|
|
13
|
+
getConditionalIcon({ sheetId, col, row }: CellPosition): string | undefined;
|
|
14
|
+
getConditionalDataBar({ sheetId, col, row }: CellPosition): DataBarFill | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Compute the styles according to the conditional formatting.
|
|
17
|
+
* This computation must happen after the cell values are computed if they change
|
|
18
|
+
*
|
|
19
|
+
* This result of the computation will be in the state.cell[XC].conditionalStyle and will be the union of all the style
|
|
20
|
+
* properties of the rules applied (in order).
|
|
21
|
+
* So if a cell has multiple conditional formatting applied to it, and each affect a different value of the style,
|
|
22
|
+
* the resulting style will have the combination of all those values.
|
|
23
|
+
* If multiple conditional formatting use the same style value, they will be applied in order so that the last applied wins
|
|
24
|
+
*/
|
|
25
|
+
private getComputedStyles;
|
|
26
|
+
private getComputedIcons;
|
|
27
|
+
private getComputedDataBars;
|
|
28
|
+
private parsePoint;
|
|
29
|
+
/** Compute the CF icons for the given range and CF rule, and apply in in the given computedIcons object */
|
|
30
|
+
private applyIcon;
|
|
31
|
+
private computeIcon;
|
|
32
|
+
private applyDataBar;
|
|
33
|
+
/** Compute the color scale for the given range and CF rule, and apply in in the given computedStyle object */
|
|
34
|
+
private applyColorScale;
|
|
35
|
+
private computeColorDiffUnits;
|
|
36
|
+
private colorCell;
|
|
37
|
+
/**
|
|
38
|
+
* Execute the predicate to know if a conditional formatting rule should be applied to a cell
|
|
39
|
+
*/
|
|
40
|
+
private rulePredicate;
|
|
41
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { CellPosition, CellValue, DataValidationCriterionType, DataValidationRule, HeaderIndex, Lazy, UID } from "../../types";
|
|
2
|
+
import { CoreViewCommand } from "../../types/commands";
|
|
3
|
+
import { UIPlugin } from "../ui_plugin";
|
|
4
|
+
interface InvalidValidationResult {
|
|
5
|
+
readonly isValid: false;
|
|
6
|
+
readonly rule: DataValidationRule;
|
|
7
|
+
readonly error: string;
|
|
8
|
+
}
|
|
9
|
+
interface ValidValidationResult {
|
|
10
|
+
readonly isValid: true;
|
|
11
|
+
}
|
|
12
|
+
type ValidationResult = ValidValidationResult | InvalidValidationResult;
|
|
13
|
+
type SheetValidationResult = {
|
|
14
|
+
[col: HeaderIndex]: Array<Lazy<ValidationResult>>;
|
|
15
|
+
};
|
|
16
|
+
export declare class EvaluationDataValidationPlugin extends UIPlugin {
|
|
17
|
+
static getters: readonly ["getDataValidationInvalidCriterionValueMessage", "getInvalidDataValidationMessage", "getValidationResultForCellValue", "isCellValidCheckbox", "isDataValidationInvalid"];
|
|
18
|
+
validationResults: Record<UID, SheetValidationResult>;
|
|
19
|
+
handle(cmd: CoreViewCommand): void;
|
|
20
|
+
isDataValidationInvalid(cellPosition: CellPosition): boolean;
|
|
21
|
+
getInvalidDataValidationMessage(cellPosition: CellPosition): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Check if the value is valid for the given criterion, and return an error message if not.
|
|
24
|
+
*
|
|
25
|
+
* The value must be canonicalized.
|
|
26
|
+
*/
|
|
27
|
+
getDataValidationInvalidCriterionValueMessage(criterionType: DataValidationCriterionType, value: string): string | undefined;
|
|
28
|
+
isCellValidCheckbox(cellPosition: CellPosition): boolean;
|
|
29
|
+
/** Get the validation result if the cell on the given position had the given value */
|
|
30
|
+
getValidationResultForCellValue(cellValue: CellValue, cellPosition: CellPosition): ValidationResult;
|
|
31
|
+
private getValidationResultForCell;
|
|
32
|
+
private computeSheetValidationResults;
|
|
33
|
+
private getRuleErrorForCellValue;
|
|
34
|
+
/** Get the offset of the cell inside the ranges of the rule. Throws an error if the cell isn't inside the rule. */
|
|
35
|
+
private getCellOffsetInRule;
|
|
36
|
+
private getEvaluatedCriterionValues;
|
|
37
|
+
}
|
|
38
|
+
export {};
|